From ffa2832e3345c7a405dfaabf1deb923c07d2627c Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Mon, 23 Mar 2015 14:57:35 -0500 Subject: [PATCH] Drop name-less label/break for now See #734 and #658. --- builtin.c | 12 +- docs/content/3.manual/manual.yml | 35 +- lexer.c | 385 +++--- lexer.h | 2 +- lexer.l | 2 - parser.c | 1936 +++++++++++++++--------------- parser.h | 58 +- parser.y | 29 +- tests/all.test | 14 +- 9 files changed, 1179 insertions(+), 1294 deletions(-) diff --git a/builtin.c b/builtin.c index 03c90814..462307dd 100644 --- a/builtin.c +++ b/builtin.c @@ -1253,16 +1253,16 @@ static const char* const jq_builtins[] = { "def paths: path(recurse(if (type|. == \"array\" or . == \"object\") then .[] else empty end))|select(length > 0);", "def paths(node_filter): . as $dot|paths|select(. as $p|$dot|getpath($p)|node_filter);", "def any(generator; condition):" - " [label | foreach generator as $i" + " [label $out | foreach generator as $i" " (false;" - " if . then break elif $i | condition then true else . end;" + " if . then break $out elif $i | condition then true else . end;" " if . then . else empty end)] | length == 1;", "def any(condition): any(.[]; condition);", "def any: any(.);", "def all(generator; condition): " - " [label | foreach generator as $i" + " [label $out | foreach generator as $i" " (true;" - " if .|not then break elif $i | condition then . else false end;" + " if .|not then break $out elif $i | condition then . else false end;" " if .|not then . else empty end)] | length == 0;", "def all(condition): all(.[]; condition);", "def all: all(.);", @@ -1373,8 +1373,8 @@ static const char* const jq_builtins[] = { " def _until: " " if cond then . else (next|_until) end;" " _until;", - "def limit($n; exp): if $n < 0 then exp else label | foreach exp as $item ([$n, null]; if .[0] < 1 then break else [.[0] -1, $item] end; .[1]) end;", - "def first(g): label | foreach g as $item ([false, null]; if .[0]==true then break else [true, $item] end; .[1]);", + "def limit($n; exp): if $n < 0 then exp else label $out | foreach exp as $item ([$n, null]; if .[0] < 1 then break $out else [.[0] -1, $item] end; .[1]) end;", + "def first(g): label $out | foreach g as $item ([false, null]; if .[0]==true then break $out else [true, $item] end; .[1]);", "def last(g): reduce g as $item (null; $item);", "def nth($n; g): if $n < 0 then error(\"nth doesn't support negative indices\") else last(limit($n + 1; g)) end;", "def first: .[0];", diff --git a/docs/content/3.manual/manual.yml b/docs/content/3.manual/manual.yml index 8312d516..1041f2ca 100644 --- a/docs/content/3.manual/manual.yml +++ b/docs/content/3.manual/manual.yml @@ -1820,41 +1820,26 @@ sections: # But if the error caught is not "break" then re-raise it. try repeat(exp) catch .=="break" then empty else error; - jq has a syntax for lexical labels to "break" or "go (back) to": + jq has a syntax for named lexical labels to "break" or "go (back) to": - label | ... break ... + label $out | ... break $out ... - The `break` builtin will cause the program to return to act as - though the nearest `label` (to the left) produced `empty`. + The `break $label_name` expression will cause the program to + to act as though the nearest (to the left) `label $label_name` + produced `empty`. - The `break2` builtin will return the program to the second - nearest `label`, then `empty`. - - The `break3` builtin will return the program to the third - nearest `label`, then `empty`. - - A variation on this is named labels: - - label $name | ... break $name - - The `break $name` form returns to the named label and produces - `empty`. - - In all cases the relationship between the `break` and - corresponding `label` is lexical: the label has to be - "visible" from the break. + The relationship between the `break` and corresponding `label` + is lexical: the label has to be "visible" from the break. To break out of a `reduce`, for example: - label | reduce .[] as $item (null; if .==false then break else ... end) + label $out | reduce .[] as $item (null; if .==false then break $out else ... end) The following jq program produces a syntax error: - break + break $out - because: - - jq: error: break used outside labeled control structure + because no label `$out` is visible. - title: "`?` operator" body: | diff --git a/lexer.c b/lexer.c index 15ad84ca..7350fe59 100644 --- a/lexer.c +++ b/lexer.c @@ -358,8 +358,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 49 -#define YY_END_OF_BUFFER 50 +#define YY_NUM_RULES 47 +#define YY_END_OF_BUFFER 48 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -367,24 +367,23 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[143] = +static yyconst flex_int16_t yy_accept[141] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 48, 47, 47, 48, 39, 1, 34, - 34, 35, 36, 34, 34, 34, 34, 34, 38, 34, - 34, 34, 48, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 34, 43, 43, 41, - 44, 47, 2, 1, 29, 27, 25, 26, 33, 38, - 46, 46, 17, 28, 0, 31, 3, 32, 37, 45, - 0, 45, 4, 45, 45, 45, 45, 45, 45, 8, - 45, 45, 45, 13, 45, 45, 45, 24, 43, 42, - 40, 42, 46, 0, 38, 30, 38, 0, 12, 45, + 0, 0, 48, 46, 45, 45, 46, 37, 1, 32, + 32, 33, 34, 32, 32, 32, 32, 32, 36, 32, + 32, 32, 46, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 32, 41, 41, 39, + 42, 45, 2, 1, 27, 25, 23, 24, 31, 36, + 44, 44, 17, 26, 0, 29, 3, 30, 35, 43, + 0, 43, 4, 43, 43, 43, 43, 43, 43, 8, + 43, 43, 43, 13, 43, 43, 43, 22, 41, 40, + 38, 40, 44, 0, 36, 28, 36, 0, 12, 43, - 45, 7, 45, 45, 14, 45, 45, 45, 45, 45, - 45, 18, 0, 42, 45, 45, 45, 11, 10, 45, - 45, 45, 45, 45, 9, 42, 21, 19, 45, 45, - 20, 45, 45, 42, 22, 23, 45, 5, 6, 15, - 16, 0 + 43, 7, 43, 43, 14, 43, 43, 43, 43, 43, + 43, 18, 0, 40, 43, 43, 43, 11, 10, 43, + 43, 43, 43, 43, 9, 40, 21, 19, 43, 43, + 20, 43, 43, 40, 43, 5, 6, 15, 16, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -393,16 +392,16 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 6, 7, 8, 9, 1, 1, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 18, 19, - 20, 18, 18, 18, 18, 18, 18, 21, 22, 23, - 24, 25, 26, 27, 28, 28, 28, 28, 29, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 30, 31, 32, 1, 33, 1, 34, 35, 36, 37, + 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 26, 26, 26, 27, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 28, 29, 30, 1, 31, 1, 32, 33, 34, 35, - 38, 39, 28, 40, 41, 28, 42, 43, 44, 45, - 46, 47, 28, 48, 49, 50, 51, 28, 28, 28, - 52, 28, 53, 54, 55, 1, 1, 1, 1, 1, + 36, 37, 26, 38, 39, 26, 40, 41, 42, 43, + 44, 45, 26, 46, 47, 48, 49, 26, 26, 26, + 50, 26, 51, 52, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -419,146 +418,140 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[56] = +static yyconst flex_int32_t yy_meta[54] = { 0, 1, 1, 2, 2, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 1, 5, 5, 5, - 6, 1, 1, 1, 1, 1, 1, 7, 7, 1, - 8, 1, 9, 7, 7, 7, 7, 7, 7, 7, + 1, 1, 1, 1, 1, 4, 1, 5, 6, 1, + 1, 1, 1, 1, 1, 7, 7, 1, 8, 1, + 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 1, 1, 1 + 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[156] = +static yyconst flex_int16_t yy_base[154] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 54, 317, 318, 59, 61, 292, 318, 0, 318, - 291, 318, 318, 290, 289, 288, 49, 49, 61, 287, - 286, 285, 0, 287, 37, 49, 54, 51, 50, 55, - 70, 62, 71, 73, 77, 79, 283, 0, 0, 318, - 92, 101, 318, 0, 318, 318, 318, 318, 104, 110, - 0, 92, 282, 318, 131, 318, 318, 318, 0, 284, - 283, 95, 280, 87, 85, 92, 113, 115, 97, 276, - 116, 120, 119, 272, 132, 126, 136, 318, 0, 259, - 318, 255, 0, 140, 147, 318, 152, 0, 262, 140, + 51, 52, 293, 294, 57, 59, 270, 294, 0, 294, + 269, 294, 294, 268, 267, 266, 47, 47, 50, 265, + 264, 263, 0, 265, 48, 51, 52, 37, 53, 56, + 66, 57, 60, 59, 63, 68, 261, 0, 0, 294, + 78, 90, 294, 0, 294, 294, 294, 294, 93, 94, + 0, 100, 260, 294, 104, 294, 294, 294, 0, 262, + 259, 88, 255, 97, 83, 105, 106, 109, 113, 251, + 107, 115, 116, 248, 119, 120, 117, 294, 0, 234, + 294, 231, 0, 240, 228, 294, 223, 0, 218, 118, - 147, 260, 152, 154, 248, 155, 156, 157, 158, 159, - 160, 243, 172, 229, 234, 164, 163, 232, 229, 165, - 166, 168, 169, 177, 227, 207, 196, 205, 183, 175, - 201, 180, 186, 190, 199, 179, 187, 176, 173, 117, - 53, 318, 227, 236, 242, 247, 252, 261, 270, 275, - 280, 282, 287, 291, 295 + 121, 213, 124, 122, 211, 127, 128, 130, 138, 141, + 143, 208, 154, 196, 196, 149, 146, 183, 182, 150, + 151, 152, 154, 157, 181, 165, 169, 166, 158, 156, + 164, 160, 162, 149, 161, 155, 82, 79, 71, 294, + 204, 213, 219, 224, 229, 238, 247, 252, 257, 259, + 264, 268, 272 } ; -static yyconst flex_int16_t yy_def[156] = +static yyconst flex_int16_t yy_def[154] = { 0, - 142, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 143, 143, 142, 142, 142, 142, 142, 142, 144, 142, - 142, 142, 142, 142, 142, 142, 145, 142, 142, 142, - 142, 142, 146, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 142, 148, 148, 142, - 149, 142, 142, 144, 142, 142, 142, 142, 142, 142, - 150, 150, 142, 142, 142, 142, 142, 142, 146, 147, - 142, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 142, 148, 142, - 142, 151, 150, 142, 150, 142, 142, 152, 147, 147, + 140, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 141, 141, 140, 140, 140, 140, 140, 140, 142, 140, + 140, 140, 140, 140, 140, 140, 143, 140, 140, 140, + 140, 140, 144, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 140, 146, 146, 140, + 147, 140, 140, 142, 140, 140, 140, 140, 140, 140, + 148, 148, 140, 140, 140, 140, 140, 140, 144, 145, + 140, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 140, 146, 140, + 140, 149, 148, 140, 148, 140, 140, 150, 145, 145, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 149, 153, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 154, 147, 147, 147, 147, - 147, 147, 147, 155, 147, 147, 147, 147, 147, 147, - 147, 0, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142 + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 147, 151, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 152, 145, 145, 145, 145, + 145, 145, 145, 153, 145, 145, 145, 145, 145, 0, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140 } ; -static yyconst flex_int16_t yy_nxt[374] = +static yyconst flex_int16_t yy_nxt[348] = { 0, 14, 15, 16, 14, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 20, 26, 27, 28, 29, 29, 29, - 20, 20, 30, 31, 32, 20, 33, 34, 34, 22, - 14, 23, 34, 35, 36, 37, 38, 39, 40, 34, - 41, 34, 42, 43, 34, 44, 34, 45, 34, 46, - 34, 34, 22, 47, 23, 49, 49, 71, 50, 50, - 52, 52, 52, 52, 59, 63, 60, 60, 60, 71, - 71, 71, 64, 71, 71, 71, 60, 62, 60, 60, - 60, 72, 71, 51, 51, 73, 62, 75, 76, 65, - 71, 71, 77, 71, 78, 82, 74, 71, 65, 71, + 23, 24, 25, 20, 26, 27, 28, 29, 20, 20, + 30, 31, 32, 20, 33, 34, 34, 22, 14, 23, + 34, 35, 36, 37, 38, 39, 40, 34, 41, 34, + 42, 43, 34, 44, 34, 45, 34, 46, 34, 34, + 22, 47, 23, 49, 49, 71, 50, 50, 52, 52, + 52, 52, 59, 63, 60, 60, 71, 60, 64, 71, + 71, 71, 76, 62, 71, 71, 65, 71, 71, 51, + 51, 71, 62, 75, 71, 65, 71, 91, 82, 71, + 72, 52, 52, 77, 73, 78, 74, 71, 85, 79, - 79, 91, 52, 52, 94, 71, 94, 71, 80, 95, - 95, 95, 71, 81, 85, 71, 83, 71, 86, 60, - 84, 60, 60, 60, 100, 60, 87, 60, 60, 60, - 102, 99, 65, 71, 101, 71, 71, 71, 65, 71, - 71, 65, 92, 94, 106, 94, 71, 65, 97, 97, - 97, 105, 71, 103, 108, 109, 71, 97, 97, 97, - 71, 104, 107, 111, 95, 95, 95, 71, 110, 97, - 97, 97, 71, 116, 71, 71, 71, 71, 71, 71, - 71, 142, 117, 71, 71, 71, 71, 112, 71, 71, - 118, 119, 120, 71, 122, 71, 71, 71, 129, 71, + 71, 71, 80, 83, 84, 86, 71, 81, 60, 60, + 60, 60, 94, 87, 94, 71, 94, 95, 94, 65, + 65, 97, 99, 71, 71, 71, 92, 71, 65, 65, + 101, 71, 100, 71, 71, 71, 71, 71, 71, 71, + 71, 102, 71, 105, 103, 71, 71, 108, 71, 116, + 109, 107, 104, 110, 117, 111, 71, 119, 106, 71, + 118, 71, 120, 140, 71, 122, 112, 71, 71, 71, + 71, 121, 71, 71, 71, 71, 71, 113, 71, 71, + 71, 129, 71, 128, 71, 125, 123, 71, 127, 124, + 133, 135, 131, 113, 132, 137, 130, 138, 139, 71, - 71, 121, 128, 71, 125, 127, 71, 71, 123, 124, - 131, 132, 133, 130, 135, 136, 71, 139, 137, 71, - 113, 71, 92, 140, 138, 71, 141, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 54, 113, 54, 54, - 54, 54, 54, 54, 54, 61, 61, 71, 61, 71, - 61, 69, 71, 69, 71, 69, 70, 70, 70, 113, - 70, 89, 89, 71, 89, 89, 89, 89, 71, 89, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 93, - 71, 93, 71, 93, 114, 113, 114, 114, 115, 113, - 115, 126, 71, 126, 126, 134, 71, 134, 134, 90, + 71, 71, 92, 136, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 54, 71, 54, 54, 54, 54, 54, + 54, 54, 61, 61, 113, 61, 71, 61, 69, 71, + 69, 71, 69, 70, 70, 70, 71, 70, 89, 89, + 97, 89, 89, 89, 89, 95, 89, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 93, 97, 93, 113, + 93, 114, 113, 114, 114, 115, 71, 115, 126, 71, + 126, 126, 134, 71, 134, 134, 90, 98, 90, 90, + 71, 96, 88, 71, 68, 67, 66, 58, 57, 56, + 55, 53, 140, 13, 140, 140, 140, 140, 140, 140, - 71, 90, 90, 98, 71, 96, 88, 71, 68, 67, - 66, 58, 57, 56, 55, 53, 142, 13, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142 + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140 } ; -static yyconst flex_int16_t yy_chk[374] = +static yyconst flex_int16_t yy_chk[348] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 11, 12, 35, 11, 12, - 15, 15, 16, 16, 27, 28, 27, 27, 27, 36, - 39, 38, 28, 141, 37, 40, 29, 27, 29, 29, - 29, 35, 42, 11, 12, 35, 27, 37, 38, 29, - 41, 43, 39, 44, 39, 42, 36, 45, 29, 46, + 1, 1, 1, 11, 12, 38, 11, 12, 15, 15, + 16, 16, 27, 28, 27, 29, 35, 29, 28, 36, + 37, 39, 38, 27, 40, 42, 29, 44, 43, 11, + 12, 45, 27, 37, 41, 29, 46, 51, 42, 139, + 35, 52, 52, 39, 35, 39, 36, 138, 45, 40, - 40, 51, 52, 52, 62, 75, 62, 74, 41, 62, - 62, 62, 76, 41, 45, 72, 43, 79, 46, 59, - 44, 59, 59, 59, 74, 60, 46, 60, 60, 60, - 76, 72, 59, 77, 75, 78, 81, 140, 60, 83, - 82, 59, 51, 65, 79, 65, 86, 60, 65, 65, - 65, 78, 85, 77, 82, 83, 87, 94, 94, 94, - 100, 77, 81, 86, 95, 95, 95, 101, 85, 97, - 97, 97, 103, 100, 104, 106, 107, 108, 109, 110, - 111, 113, 101, 117, 116, 120, 121, 87, 122, 123, - 103, 104, 106, 139, 108, 130, 138, 124, 120, 136, + 137, 75, 41, 43, 44, 46, 72, 41, 59, 60, + 59, 60, 62, 46, 62, 74, 65, 62, 65, 59, + 60, 65, 72, 76, 77, 81, 51, 78, 59, 60, + 75, 79, 74, 82, 83, 87, 100, 85, 86, 101, + 104, 76, 103, 78, 77, 106, 107, 82, 108, 100, + 83, 81, 77, 85, 101, 86, 109, 104, 79, 110, + 103, 111, 106, 113, 117, 108, 87, 116, 120, 121, + 122, 107, 123, 136, 130, 124, 129, 134, 132, 135, + 133, 120, 131, 117, 128, 111, 109, 127, 116, 110, + 124, 129, 122, 126, 123, 132, 121, 133, 135, 125, - 132, 107, 117, 129, 111, 116, 133, 137, 109, 110, - 122, 123, 124, 121, 127, 127, 127, 132, 129, 135, - 134, 131, 113, 133, 130, 128, 137, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 144, 126, 144, 144, - 144, 144, 144, 144, 144, 145, 145, 125, 145, 119, - 145, 146, 118, 146, 115, 146, 147, 147, 147, 114, - 147, 148, 148, 112, 148, 148, 148, 148, 105, 148, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 150, - 102, 150, 99, 150, 151, 92, 151, 151, 152, 90, - 152, 153, 84, 153, 153, 154, 80, 154, 154, 155, + 119, 118, 113, 130, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 142, 115, 142, 142, 142, 142, 142, + 142, 142, 143, 143, 114, 143, 112, 143, 144, 105, + 144, 102, 144, 145, 145, 145, 99, 145, 146, 146, + 97, 146, 146, 146, 146, 95, 146, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 148, 94, 148, 92, + 148, 149, 90, 149, 149, 150, 84, 150, 151, 80, + 151, 151, 152, 73, 152, 152, 153, 71, 153, 153, + 70, 63, 47, 34, 32, 31, 30, 26, 25, 24, + 21, 17, 13, 140, 140, 140, 140, 140, 140, 140, - 73, 155, 155, 71, 70, 63, 47, 34, 32, 31, - 30, 26, 25, 24, 21, 17, 13, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142 + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140 } ; /* The intent behind this definition is that it'll catch @@ -594,7 +587,7 @@ struct lexer_param; static int enter(int opening, int state, yyscan_t yyscanner); static int try_exit(int closing, int state, yyscan_t yyscanner); #define YY_NO_INPUT 1 -#line 598 "lexer.c" +#line 591 "lexer.c" #define INITIAL 0 #define IN_PAREN 1 @@ -850,7 +843,7 @@ YY_DECL #line 38 "lexer.l" -#line 854 "lexer.c" +#line 847 "lexer.c" yylval = yylval_param; @@ -907,13 +900,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 143 ) + if ( yy_current_state >= 141 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 318 ); + while ( yy_base[yy_current_state] != 294 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1045,124 +1038,114 @@ YY_RULE_SETUP case 22: YY_RULE_SETUP #line 62 "lexer.l" -{ return BREAK2; } +{ return SETPIPE; } YY_BREAK case 23: YY_RULE_SETUP #line 63 "lexer.l" -{ return BREAK3; } +{ return SETPLUS; } YY_BREAK case 24: YY_RULE_SETUP #line 64 "lexer.l" -{ return SETPIPE; } +{ return SETMINUS; } YY_BREAK case 25: YY_RULE_SETUP #line 65 "lexer.l" -{ return SETPLUS; } +{ return SETMULT; } YY_BREAK case 26: YY_RULE_SETUP #line 66 "lexer.l" -{ return SETMINUS; } +{ return SETDIV; } YY_BREAK case 27: YY_RULE_SETUP #line 67 "lexer.l" -{ return SETMULT; } +{ return SETMOD; } YY_BREAK case 28: YY_RULE_SETUP #line 68 "lexer.l" -{ return SETDIV; } +{ return SETDEFINEDOR; } YY_BREAK case 29: YY_RULE_SETUP #line 69 "lexer.l" -{ return SETMOD; } +{ return LESSEQ; } YY_BREAK case 30: YY_RULE_SETUP #line 70 "lexer.l" -{ return SETDEFINEDOR; } +{ return GREATEREQ; } YY_BREAK case 31: YY_RULE_SETUP #line 71 "lexer.l" -{ return LESSEQ; } +{ return REC; } YY_BREAK case 32: YY_RULE_SETUP #line 72 "lexer.l" -{ return GREATEREQ; } +{ return yytext[0];} YY_BREAK case 33: YY_RULE_SETUP -#line 73 "lexer.l" -{ return REC; } - YY_BREAK -case 34: -YY_RULE_SETUP #line 74 "lexer.l" -{ return yytext[0];} - YY_BREAK -case 35: -YY_RULE_SETUP -#line 76 "lexer.l" { return enter(yytext[0], YY_START, yyscanner); } YY_BREAK -case 36: +case 34: YY_RULE_SETUP -#line 80 "lexer.l" +#line 78 "lexer.l" { return try_exit(yytext[0], YY_START, yyscanner); } YY_BREAK -case 37: +case 35: YY_RULE_SETUP -#line 84 "lexer.l" +#line 82 "lexer.l" { yylval->literal = jv_string_sized(yytext + 1, yyleng - 1); return FORMAT; } YY_BREAK -case 38: +case 36: YY_RULE_SETUP -#line 88 "lexer.l" +#line 86 "lexer.l" { yylval->literal = jv_parse_sized(yytext, yyleng); return LITERAL; } YY_BREAK -case 39: +case 37: YY_RULE_SETUP -#line 92 "lexer.l" +#line 90 "lexer.l" { yy_push_state(IN_QQSTRING, yyscanner); return QQSTRING_START; } YY_BREAK -case 40: +case 38: YY_RULE_SETUP -#line 98 "lexer.l" +#line 96 "lexer.l" { return enter(QQSTRING_INTERP_START, YY_START, yyscanner); } YY_BREAK -case 41: +case 39: YY_RULE_SETUP -#line 101 "lexer.l" +#line 99 "lexer.l" { yy_pop_state(yyscanner); return QQSTRING_END; } YY_BREAK -case 42: -/* rule 42 can match eol */ +case 40: +/* rule 40 can match eol */ YY_RULE_SETUP -#line 105 "lexer.l" +#line 103 "lexer.l" { /* pass escapes to the json parser */ jv escapes = jv_string_fmt("\"%.*s\"", (int)yyleng, yytext); @@ -1171,50 +1154,50 @@ YY_RULE_SETUP return QQSTRING_TEXT; } YY_BREAK -case 43: -/* rule 43 can match eol */ +case 41: +/* rule 41 can match eol */ YY_RULE_SETUP -#line 112 "lexer.l" +#line 110 "lexer.l" { yylval->literal = jv_string_sized(yytext, yyleng); return QQSTRING_TEXT; } YY_BREAK -case 44: +case 42: YY_RULE_SETUP -#line 116 "lexer.l" +#line 114 "lexer.l" { return INVALID_CHARACTER; } YY_BREAK -case 45: +case 43: YY_RULE_SETUP -#line 122 "lexer.l" +#line 120 "lexer.l" { yylval->literal = jv_string(yytext); return IDENT;} YY_BREAK +case 44: +YY_RULE_SETUP +#line 121 "lexer.l" +{ yylval->literal = jv_string(yytext+1); return FIELD;} + YY_BREAK +case 45: +/* rule 45 can match eol */ +YY_RULE_SETUP +#line 123 "lexer.l" +{} + YY_BREAK case 46: YY_RULE_SETUP -#line 123 "lexer.l" -{ yylval->literal = jv_string(yytext+1); return FIELD;} - YY_BREAK -case 47: -/* rule 47 can match eol */ -YY_RULE_SETUP #line 125 "lexer.l" -{} - YY_BREAK -case 48: -YY_RULE_SETUP -#line 127 "lexer.l" { return INVALID_CHARACTER; } YY_BREAK -case 49: +case 47: YY_RULE_SETUP -#line 129 "lexer.l" +#line 127 "lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 1218 "lexer.c" +#line 1201 "lexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(IN_PAREN): case YY_STATE_EOF(IN_BRACKET): @@ -1513,7 +1496,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 143 ) + if ( yy_current_state >= 141 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1542,11 +1525,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 143 ) + if ( yy_current_state >= 141 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 142); + yy_is_jam = (yy_current_state == 140); return yy_is_jam ? 0 : yy_current_state; } @@ -2378,7 +2361,7 @@ static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 129 "lexer.l" +#line 127 "lexer.l" /* perhaps these should be calls... */ diff --git a/lexer.h b/lexer.h index 0eb85067..36b63351 100644 --- a/lexer.h +++ b/lexer.h @@ -354,7 +354,7 @@ extern int jq_yylex \ #undef YY_DECL #endif -#line 129 "lexer.l" +#line 127 "lexer.l" #line 361 "lexer.h" diff --git a/lexer.l b/lexer.l index 065ee72a..bde11fb9 100644 --- a/lexer.l +++ b/lexer.l @@ -59,8 +59,6 @@ struct lexer_param; "catch" { return CATCH; } "label" { return LABEL; } "break" { return BREAK; } -"break2" { return BREAK2; } -"break3" { return BREAK3; } "|=" { return SETPIPE; } "+=" { return SETPLUS; } "-=" { return SETMINUS; } diff --git a/parser.c b/parser.c index 1f8005ce..2c977428 100644 --- a/parser.c +++ b/parser.c @@ -154,21 +154,19 @@ struct lexer_param; CATCH = 282, LABEL = 283, BREAK = 284, - BREAK2 = 285, - BREAK3 = 286, - SETPIPE = 287, - SETPLUS = 288, - SETMINUS = 289, - SETMULT = 290, - SETDIV = 291, - SETDEFINEDOR = 292, - LESSEQ = 293, - GREATEREQ = 294, - QQSTRING_START = 295, - QQSTRING_TEXT = 296, - QQSTRING_INTERP_START = 297, - QQSTRING_INTERP_END = 298, - QQSTRING_END = 299 + SETPIPE = 285, + SETPLUS = 286, + SETMINUS = 287, + SETMULT = 288, + SETDIV = 289, + SETDEFINEDOR = 290, + LESSEQ = 291, + GREATEREQ = 292, + QQSTRING_START = 293, + QQSTRING_TEXT = 294, + QQSTRING_INTERP_START = 295, + QQSTRING_INTERP_END = 296, + QQSTRING_END = 297 }; #endif /* Tokens. */ @@ -199,21 +197,19 @@ struct lexer_param; #define CATCH 282 #define LABEL 283 #define BREAK 284 -#define BREAK2 285 -#define BREAK3 286 -#define SETPIPE 287 -#define SETPLUS 288 -#define SETMINUS 289 -#define SETMULT 290 -#define SETDIV 291 -#define SETDEFINEDOR 292 -#define LESSEQ 293 -#define GREATEREQ 294 -#define QQSTRING_START 295 -#define QQSTRING_TEXT 296 -#define QQSTRING_INTERP_START 297 -#define QQSTRING_INTERP_END 298 -#define QQSTRING_END 299 +#define SETPIPE 285 +#define SETPLUS 286 +#define SETMINUS 287 +#define SETMULT 288 +#define SETDIV 289 +#define SETDEFINEDOR 290 +#define LESSEQ 291 +#define GREATEREQ 292 +#define QQSTRING_START 293 +#define QQSTRING_TEXT 294 +#define QQSTRING_INTERP_START 295 +#define QQSTRING_INTERP_END 296 +#define QQSTRING_END 297 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -225,7 +221,7 @@ union YYSTYPE jv literal; block blk; -#line 229 "parser.c" /* yacc.c:355 */ +#line 225 "parser.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -252,7 +248,7 @@ int yyparse (block* answer, int* errors, struct locfile* locations, struct lexer #endif /* !YY_YY_PARSER_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 112 "parser.y" /* yacc.c:358 */ +#line 110 "parser.y" /* yacc.c:358 */ #include "lexer.h" struct lexer_param { @@ -297,8 +293,6 @@ int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, block* answer, int* errors, return tok; } -static unsigned int next_label = 0; - static block gen_dictpair(block k, block v) { return BLOCK(gen_subexp(k), gen_subexp(v), gen_op_simple(INSERT)); } @@ -410,7 +404,7 @@ static block gen_update(block object, block val, int optype) { } -#line 414 "parser.c" /* yacc.c:358 */ +#line 408 "parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -652,23 +646,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 29 +#define YYFINAL 27 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1871 +#define YYLAST 1845 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 66 +#define YYNTOKENS 64 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 21 /* YYNRULES -- Number of rules. */ -#define YYNRULES 123 +#define YYNRULES 120 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 256 +#define YYNSTATES 253 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 299 +#define YYMAXUTOK 297 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -680,16 +674,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 57, 54, 2, 2, - 58, 59, 52, 50, 46, 51, 61, 53, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 60, 56, - 48, 47, 49, 55, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 55, 52, 2, 2, + 56, 57, 50, 48, 44, 49, 59, 51, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 58, 54, + 46, 45, 47, 53, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 62, 2, 63, 2, 2, 2, 2, 2, 2, + 2, 60, 2, 61, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 64, 45, 65, 2, 2, 2, 2, + 2, 2, 2, 62, 43, 63, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -706,26 +700,26 @@ static const yytype_uint8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 + 35, 36, 37, 38, 39, 40, 41, 42 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 272, 272, 275, 280, 283, 293, 296, 301, 304, - 309, 313, 318, 323, 328, 333, 336, 341, 345, 349, - 354, 360, 372, 376, 380, 384, 388, 392, 396, 400, - 404, 408, 412, 416, 420, 424, 428, 432, 436, 440, - 444, 448, 452, 456, 460, 464, 468, 472, 476, 481, - 490, 497, 509, 523, 528, 534, 537, 542, 547, 554, - 554, 558, 558, 565, 568, 571, 577, 580, 585, 588, - 591, 597, 600, 603, 608, 613, 618, 626, 629, 632, - 635, 638, 641, 644, 647, 650, 654, 660, 663, 666, - 669, 672, 675, 678, 681, 684, 687, 690, 693, 696, - 699, 702, 705, 708, 715, 719, 731, 736, 737, 738, - 739, 742, 745, 750, 755, 758, 759, 760, 763, 766, - 769, 773, 777, 780 + 0, 268, 268, 271, 276, 279, 289, 292, 297, 300, + 305, 309, 314, 319, 324, 329, 332, 337, 341, 345, + 350, 362, 366, 370, 374, 378, 382, 386, 390, 394, + 398, 402, 406, 410, 414, 418, 422, 426, 430, 434, + 438, 442, 446, 450, 454, 458, 462, 466, 471, 480, + 487, 499, 513, 518, 524, 527, 532, 537, 544, 544, + 548, 548, 555, 558, 561, 567, 570, 575, 578, 581, + 587, 590, 593, 601, 605, 608, 611, 614, 617, 620, + 623, 626, 629, 633, 639, 642, 645, 648, 651, 654, + 657, 660, 663, 666, 669, 672, 675, 678, 681, 684, + 687, 694, 698, 710, 715, 716, 717, 718, 721, 724, + 729, 734, 737, 738, 739, 742, 745, 748, 752, 756, + 759 }; #endif @@ -739,15 +733,14 @@ static const char *const yytname[] = "\"as\"", "\"def\"", "\"module\"", "\"import\"", "\"if\"", "\"then\"", "\"else\"", "\"elif\"", "\"reduce\"", "\"foreach\"", "\"end\"", "\"and\"", "\"or\"", "\"try\"", "\"catch\"", "\"label\"", "\"break\"", - "\"break2\"", "\"break3\"", "\"|=\"", "\"+=\"", "\"-=\"", "\"*=\"", - "\"/=\"", "\"//=\"", "\"<=\"", "\">=\"", "QQSTRING_START", - "QQSTRING_TEXT", "QQSTRING_INTERP_START", "QQSTRING_INTERP_END", - "QQSTRING_END", "'|'", "','", "'='", "'<'", "'>'", "'+'", "'-'", "'*'", - "'/'", "'%'", "'?'", "';'", "'$'", "'('", "')'", "':'", "'.'", "'['", - "']'", "'{'", "'}'", "$accept", "TopLevel", "Module", "Imports", - "FuncDefs", "Exp", "Import", "FuncDef", "Params", "Param", "String", - "@1", "@2", "QQString", "ElseBody", "ExpD", "Term", "Args", "Arg", - "MkDict", "MkDictPair", YY_NULLPTR + "\"|=\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"//=\"", "\"<=\"", + "\">=\"", "QQSTRING_START", "QQSTRING_TEXT", "QQSTRING_INTERP_START", + "QQSTRING_INTERP_END", "QQSTRING_END", "'|'", "','", "'='", "'<'", "'>'", + "'+'", "'-'", "'*'", "'/'", "'%'", "'?'", "';'", "'$'", "'('", "')'", + "':'", "'.'", "'['", "']'", "'{'", "'}'", "$accept", "TopLevel", + "Module", "Imports", "FuncDefs", "Exp", "Import", "FuncDef", "Params", + "Param", "String", "@1", "@2", "QQString", "ElseBody", "ExpD", "Term", + "Args", "Arg", "MkDict", "MkDictPair", YY_NULLPTR }; #endif @@ -760,52 +753,52 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 124, 44, 61, 60, 62, - 43, 45, 42, 47, 37, 63, 59, 36, 40, 41, - 58, 46, 91, 93, 123, 125 + 295, 296, 297, 124, 44, 61, 60, 62, 43, 45, + 42, 47, 37, 63, 59, 36, 40, 41, 58, 46, + 91, 93, 123, 125 }; # endif -#define YYPACT_NINF -122 +#define YYPACT_NINF -97 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-122))) + (!!((Yystate) == (-97))) -#define YYTABLE_NINF -115 +#define YYTABLE_NINF -112 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-115))) + (!!((Yytable_value) == (-112))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 8, 851, 10, 0, 27, -41, -122, 12, -122, 35, - 851, 463, 463, 851, -44, 50, -122, -122, -122, 851, - 49, 421, 230, 357, 47, 1193, 851, -122, -2, -122, - -3, 851, 0, 851, -122, -122, 58, 1576, 33, 36, - 77, 851, 106, 107, -122, -19, -122, 56, 1065, -122, - 118, 12, 66, 59, -122, 918, -39, 63, 483, 64, - 60, 82, 851, 851, 851, 851, 851, 851, 851, 851, - 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, - 851, 851, 851, 851, 851, 851, -122, -122, 1734, 74, - 73, -3, 293, 120, -122, 1734, 851, -122, 1734, -35, - -122, -122, 51, 851, 545, 78, 79, 607, 1734, 86, - -122, -13, -122, -122, -122, -122, -122, -122, 92, -122, - 155, 75, 1097, 155, -122, 92, 1798, 1033, 1033, 1766, - 1816, 116, 1798, 1798, 1798, 1798, 1798, 1798, 1033, 1033, - 1734, 1766, 1798, 1033, 1033, -19, -19, 83, 83, 83, - -122, 133, 84, 80, 851, 87, 886, 52, -122, 851, - -122, 1, -122, 137, -9, -122, 1241, -122, 1529, 140, - 141, -122, -122, 851, -122, 851, -122, 100, -122, 155, - 102, 39, 88, 89, 102, -122, 111, -122, -122, 950, - -122, 668, 96, 729, 148, -122, -122, -122, 51, 115, - -122, 851, 851, -122, 119, 121, 1734, 1608, -122, 155, - 155, 155, 851, 123, 125, 982, -122, -122, 1289, 790, - -122, 851, 1655, 1702, 851, 851, -122, 102, 102, 102, - 1734, -122, -122, 126, -122, -122, 1337, 1385, -122, 851, - 1433, 1481, -122, -122, -122, 1529, 851, 851, -122, 1129, - 1014, -122, 851, -122, 1161, -122 + 9, 769, 14, 15, -23, -18, -97, 1, -97, 47, + 769, 452, 452, 769, -19, 28, -97, 769, 50, 412, + 227, 350, 49, 1151, 769, -97, -2, -97, 0, 769, + 15, 769, -97, -97, -54, 1518, 32, 35, 72, 98, + -97, 99, -97, 56, -97, 58, 1031, -97, 112, 1, + 63, 60, -97, 847, -36, 70, 472, 71, 67, 87, + 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, + 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, + 769, 769, 769, 769, -97, -97, 1668, 80, 79, 0, + 288, 123, -97, 1668, 769, -97, 1668, -44, -97, -97, + -3, 769, 532, 82, 83, 592, 100, -97, 2, -97, + -97, -97, -97, -97, -97, 89, -97, 154, 84, 1061, + 154, -97, 89, 1728, 1774, 1774, 1698, 1792, 1746, 1728, + 1728, 1728, 1728, 1728, 1728, 1774, 1774, 1668, 1698, 1728, + 1774, 1774, 56, 56, 95, 95, 95, -97, 138, 96, + 90, 769, 101, 802, 30, -97, 769, -97, 7, -97, + 149, -32, -97, 1197, -97, 1473, 153, 159, -97, -97, + 769, -97, 769, -97, 120, -97, 154, 122, 38, 108, + 110, 122, -97, 129, -97, -97, 892, -97, 118, 128, + 651, 171, -97, -97, -97, -3, 124, -97, 769, 769, + -97, 130, 132, 1668, 1548, -97, 154, 154, 154, 769, + 131, 137, 937, -97, -97, 1243, 710, -97, 769, 1593, + 1638, 769, 769, -97, 122, 122, 122, 1668, -97, -97, + 140, -97, -97, 1289, 1335, -97, 769, 1381, 1427, -97, + -97, -97, 1473, 769, 769, -97, 1091, 982, -97, 769, + -97, 1121, -97 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -813,48 +806,48 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 105, 82, 97, 99, 72, 0, - 0, 0, 0, 0, 0, 73, 74, 75, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 98, 48, 1, - 0, 8, 6, 0, 78, 61, 0, 0, 0, 0, - 18, 0, 0, 0, 63, 33, 104, 0, 0, 85, - 0, 0, 84, 0, 102, 0, 0, 121, 0, 120, - 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 6, 102, 79, 94, 96, 71, 0, + 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 47, 1, 0, 8, + 6, 0, 75, 60, 0, 0, 0, 0, 18, 0, + 73, 0, 62, 32, 101, 0, 0, 82, 0, 0, + 81, 0, 99, 0, 0, 118, 0, 117, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 5, 10, 81, - 0, 0, 0, 0, 3, 2, 8, 7, 113, 0, - 111, 63, 0, 0, 0, 0, 0, 0, 20, 0, - 76, 0, 107, 100, 86, 80, 108, 101, 0, 110, - 0, 0, 0, 0, 103, 0, 41, 42, 43, 26, - 25, 24, 28, 32, 35, 37, 40, 27, 46, 47, - 29, 30, 23, 44, 45, 31, 34, 36, 38, 39, - 77, 0, 83, 0, 0, 90, 0, 0, 9, 0, - 106, 0, 58, 0, 0, 55, 0, 16, 0, 0, - 0, 19, 17, 0, 64, 0, 60, 0, 117, 0, - 118, 70, 0, 0, 119, 116, 0, 79, 109, 0, - 89, 0, 88, 0, 0, 112, 62, 57, 0, 0, - 53, 0, 0, 15, 0, 0, 21, 0, 69, 0, - 0, 0, 0, 96, 95, 0, 87, 50, 0, 0, - 56, 0, 0, 0, 0, 0, 65, 68, 123, 122, - 11, 93, 92, 94, 51, 49, 0, 0, 67, 0, - 0, 0, 91, 52, 54, 0, 0, 0, 66, 0, - 0, 12, 0, 14, 0, 13 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 5, 10, 78, 0, 0, + 0, 0, 3, 2, 8, 7, 110, 0, 108, 62, + 0, 0, 0, 0, 0, 0, 0, 72, 0, 104, + 97, 83, 77, 105, 98, 0, 107, 0, 0, 0, + 0, 100, 0, 40, 41, 42, 25, 24, 23, 27, + 31, 34, 36, 39, 26, 45, 46, 28, 29, 22, + 43, 44, 30, 33, 35, 37, 38, 74, 0, 80, + 0, 0, 87, 0, 0, 9, 0, 103, 0, 57, + 0, 0, 54, 0, 16, 0, 0, 0, 19, 17, + 0, 63, 0, 59, 0, 114, 0, 115, 69, 0, + 0, 116, 113, 0, 76, 106, 0, 86, 0, 85, + 0, 0, 109, 61, 56, 0, 0, 52, 0, 0, + 15, 0, 0, 20, 0, 68, 0, 0, 0, 0, + 93, 92, 0, 84, 49, 0, 0, 55, 0, 0, + 0, 0, 0, 64, 67, 120, 119, 11, 90, 89, + 91, 50, 48, 0, 0, 66, 0, 0, 0, 88, + 51, 53, 0, 0, 0, 65, 0, 0, 12, 0, + 14, 0, 13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -122, -122, -122, 144, 91, -1, -122, -4, -122, -16, - -5, -122, -122, 90, -62, -121, -6, -122, 29, -110, - -122 + -97, -97, -97, 146, 91, -1, -97, -8, -97, -4, + -5, -97, -97, 97, -48, -88, -6, -97, 39, -96, + -97 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 31, 94, 88, 32, 26, 164, 165, - 27, 44, 101, 111, 203, 180, 28, 99, 100, 60, - 61 + -1, 2, 3, 29, 92, 86, 30, 24, 161, 162, + 25, 42, 99, 108, 200, 177, 26, 97, 98, 58, + 59 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -862,436 +855,430 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 25, 41, 184, 89, 51, 38, 39, 118, 178, 37, - 29, 90, 40, 42, 34, 185, 30, 52, 45, 59, - 48, 159, 55, 1, 160, 93, 119, 96, 174, 175, - 95, 176, 98, 83, 84, 85, 86, 18, 89, 36, - 108, 89, 174, 175, 89, 196, 105, 198, 56, 106, - 199, 57, 35, 46, 51, 162, 193, 122, 208, 91, - 92, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 33, 152, 18, 227, 228, - 229, 156, 96, 177, 91, 92, 57, 91, 92, 51, - 91, 92, 166, 168, 107, 58, 172, 43, 163, 194, - 109, 110, -114, 59, 181, 112, 102, 181, 103, 114, - 59, 115, 116, 120, 123, 124, 63, 64, 125, 150, - 151, 173, 18, 157, 182, 169, 170, 186, 86, 187, - 66, 197, 190, 188, 204, 205, 118, 209, 210, 211, - 58, 216, 219, 189, 74, 75, 212, -114, 98, 4, - 5, 6, 7, 8, 79, 80, 81, 82, 83, 84, - 85, 86, 206, 181, 207, 221, 97, 224, 231, 225, - 232, 242, 220, 248, 15, 16, 17, 158, 195, 0, - 215, 161, 218, 0, 0, 18, 0, 0, 0, 0, - 222, 223, 0, 181, 181, 181, 179, 0, 0, 0, - 0, 230, 20, 21, 0, 0, 22, 23, 236, 24, - 237, 0, 0, 240, 241, 0, 0, 0, 0, 0, - -71, 49, 0, 0, 50, -71, 0, 51, 245, -71, - -71, -71, -71, -71, 0, 249, 250, 0, -71, -71, - -71, 254, 0, -71, -71, -71, 0, -71, 0, 0, - 0, 0, -71, -71, -71, -71, -71, -71, -71, -71, - 18, 0, 0, -71, 0, -71, -71, -71, -71, -71, - -71, -71, -71, -71, -71, -71, -71, 0, 0, -71, - -71, -71, -71, -71, 153, -71, 0, 4, 5, 6, - 7, 8, 0, 0, 0, 0, 0, 9, 0, 0, - 10, 0, 0, 0, 11, 12, 0, 0, 0, 13, - 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 20, 21, 0, 154, 22, 23, 155, 24, 53, 0, - 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, - 0, 9, 0, 0, 10, 0, 0, 0, 11, 12, - 0, 0, 0, 13, 0, 14, 15, 16, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 20, 21, 0, 0, 22, 23, - 54, 24, 47, 0, 0, 4, 5, 6, 7, 8, - 0, 0, 0, 0, 0, 9, 0, 0, 10, 0, - 0, 0, 11, 12, 0, 0, 0, 13, 0, 14, - 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 4, 5, 6, - 7, 8, 19, 0, 0, 0, 0, 0, 20, 21, - 0, 0, 22, 23, 121, 24, 0, 4, 5, 6, - 7, 8, 15, 16, 17, 0, 0, 9, 0, 0, - 10, 0, 0, 18, 11, 12, 0, 0, 0, 13, - 0, 14, 15, 16, 17, 0, 0, 0, 0, 0, - 20, 21, 0, 18, 22, 23, 0, 24, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 20, 21, 0, 0, 22, 23, 167, 24, 0, 4, - 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, - 0, 0, 10, 0, 0, 0, 11, 12, 0, 0, - 0, 13, 0, 14, 15, 16, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 20, 21, 0, 0, 22, 23, 171, 24, - 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, - 0, 9, 0, 0, 10, 0, 0, 0, 11, 12, - 0, 0, 0, 13, 0, 14, 15, 16, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 20, 21, 0, 0, 22, 23, - 0, 24, 4, 5, 6, 7, 8, 0, 0, 0, + 23, 159, 100, 87, 101, 36, 37, 49, 115, 35, + 156, 88, 38, 157, 27, 50, 43, 57, 46, 175, + 53, 94, 195, 91, 1, 196, 182, 116, 93, 40, + 96, 28, 181, 31, 190, 32, 39, 87, 16, 33, + 87, 171, 172, 87, 173, 103, 171, 172, 104, 193, + 54, 34, 160, 55, 44, 119, 49, 89, 90, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 41, 149, 191, 94, 16, 205, 153, + 174, 89, 90, 55, 89, 90, 49, 89, 90, 105, + 163, 165, 106, 107, 169, 56, 81, 82, 83, 84, + 57, 178, -111, 111, 178, 109, 112, 57, 224, 225, + 226, 113, 4, 5, 6, 7, 8, 16, 117, 120, + 121, 122, 9, 147, 148, 10, 154, 166, 167, 11, + 12, 179, 183, 170, 13, 56, 14, 15, 84, 184, + 186, 185, -111, 194, 187, 96, 16, 201, 4, 5, + 6, 7, 8, 202, 115, 206, 207, 17, 208, 203, + 178, 204, 209, 18, 19, 216, 95, 20, 21, 211, + 22, 213, 218, 15, 228, 155, 221, 212, 222, 215, + 229, 217, 16, 239, 245, 192, 158, 219, 220, 0, + 178, 178, 178, 176, 0, 0, 0, 0, 227, 18, + 19, 0, 0, 20, 21, 233, 22, 234, 0, 0, + 237, 238, 0, 0, 0, 0, 0, -70, 47, 0, + 0, 48, -70, 0, 49, 242, -70, -70, -70, -70, + -70, 0, 246, 247, 0, -70, -70, -70, 251, 0, + -70, -70, -70, 0, -70, 0, 0, -70, -70, -70, + -70, -70, -70, -70, -70, 16, 0, 0, -70, 0, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, 0, 0, -70, -70, -70, -70, -70, 150, + -70, 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, 0, 10, 0, 0, 0, 11, - 12, 0, 0, 0, 13, 0, 14, 15, 16, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 0, 0, 0, 0, 20, 21, 0, 0, 22, - 23, 214, 24, 4, 5, 6, 7, 8, 0, 0, - 0, 0, 0, 9, 0, 0, 10, 0, 0, 0, - 11, 12, 0, 0, 0, 13, 0, 14, 15, 16, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 217, 20, 21, 0, 0, - 22, 23, 0, 24, 4, 5, 6, 7, 8, 0, + 12, 0, 0, 0, 13, 0, 14, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 18, 19, 0, 151, 20, 21, 152, + 22, 51, 0, 0, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, 0, 10, 0, 0, 0, 11, 12, 0, 0, 0, 13, 0, 14, 15, - 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 235, 20, 21, 0, - 0, 22, 23, 0, 24, 4, 5, 6, 7, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 18, 19, 0, 0, 20, + 21, 52, 22, 45, 0, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 9, 0, 0, 10, + 0, 0, 0, 11, 12, 0, 0, 0, 13, 0, + 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 4, 5, 6, 7, + 8, 17, 0, 0, 0, 0, 0, 18, 19, 0, + 0, 20, 21, 118, 22, 0, 4, 5, 6, 7, + 8, 15, 0, 0, 0, 0, 9, 0, 0, 10, + 16, 0, 0, 11, 12, 0, 0, 0, 13, 0, + 14, 15, 0, 0, 0, 0, 0, 18, 19, 0, + 16, 20, 21, 0, 22, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 18, 19, 0, + 0, 20, 21, 164, 22, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 9, 0, 0, 10, + 0, 0, 0, 11, 12, 0, 0, 0, 13, 0, + 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 18, 19, 0, + 0, 20, 21, 168, 22, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 9, 0, 0, 10, + 0, 0, 0, 11, 12, 0, 0, 0, 13, 0, + 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 18, 19, 0, + 0, 20, 21, 0, 22, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 9, 0, 0, 10, 0, 0, 0, 11, 12, 0, 0, 0, 13, 0, 14, - 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 62, 63, 64, 65, 0, - 0, 0, 19, 0, 0, 0, 0, 0, 20, 21, - 66, 67, 22, 23, 0, 24, 0, 0, 68, 69, - 70, 71, 72, 73, 74, 75, 0, 62, 63, 64, - 65, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 66, 67, 0, 0, 191, 0, 0, 192, - 68, 69, 70, 71, 72, 73, 74, 75, 0, 62, - 63, 64, 65, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 66, 67, 0, 0, 0, 0, - 0, 117, 68, 69, 70, 71, 72, 73, 74, 75, - 0, 62, 63, 64, 65, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 66, 67, 0, 0, - 0, 0, 0, 213, 68, 69, 70, 71, 72, 73, - 74, 75, 0, 62, 63, 64, 65, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 66, 67, - 0, 0, 0, -115, -115, 233, 68, 69, 70, 71, - 72, 73, 74, 75, 0, 0, 0, 0, 0, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 252, -115, -115, 253, 62, 63, 64, 65, 0, 0, - 0, -115, -115, 81, 82, 83, 84, 85, 86, 66, - 67, 0, 0, 0, 0, 0, 0, 68, 69, 70, - 71, 72, 73, 74, 75, 0, 62, 63, 64, 65, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 66, 67, 0, 113, 0, 0, 0, 0, 68, - 69, 70, 71, 72, 73, 74, 75, 0, 62, 63, - 64, 65, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 66, 67, 0, 183, 0, 0, 0, - 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 62, 63, 64, 65, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 66, 67, 0, 251, 0, - 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, - 75, 0, 62, 63, 64, 65, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 66, 67, 0, - 255, 0, 0, 0, 0, 68, 69, 70, 71, 72, - 73, 74, 75, 0, 0, 0, 0, 0, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 66, 67, 0, 0, 0, - 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, - 75, 0, 0, 0, 0, 0, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 200, 62, 63, - 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 67, 0, 0, 0, 0, 0, - 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 234, 62, 63, 64, 65, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 66, 67, 0, 0, 0, 0, 0, 0, 68, - 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, - 0, 0, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 243, 62, 63, 64, 65, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, - 67, 0, 0, 0, 0, 0, 0, 68, 69, 70, - 71, 72, 73, 74, 75, 0, 0, 0, 0, 0, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 244, 62, 63, 64, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 66, 67, 0, - 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, - 73, 74, 75, 0, 0, 0, 0, 0, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 246, - 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 66, 67, 0, 0, 0, - 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, - 75, 0, 0, 0, 0, 0, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 247, 62, 63, - 64, 65, 0, 0, 0, 0, 0, 0, 201, 202, - 0, 0, 0, 66, 67, 0, 0, 0, 0, 0, - 0, 68, 69, 70, 71, 72, 73, 74, 75, 0, - 0, 0, 0, 0, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 62, 63, 64, 65, 0, - 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, - 66, 67, 0, 0, 0, 0, 0, 0, 68, 69, - 70, 71, 72, 73, 74, 75, 0, 62, 63, 64, - 65, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 66, 67, 0, 0, 0, 0, 0, 0, - 68, 69, 70, 71, 72, 73, 74, 75, 0, 0, - 0, 226, 0, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 62, 63, 64, 65, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 238, 66, - 67, 0, 0, 0, 0, 0, 0, 68, 69, 70, - 71, 72, 73, 74, 75, 0, 0, 0, 0, 0, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 62, 63, 64, 65, 0, 0, 0, 0, 0, - 239, 0, 0, 0, 0, 0, 66, 67, 0, 0, - 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, - 74, 75, 0, 62, 63, 64, 65, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 66, 67, - 0, 0, 0, 0, 0, 0, 68, 69, 70, 71, - 72, 73, 74, 75, 0, 62, 63, 64, 65, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 66, 67, 0, 0, 0, 0, 0, 0, 68, 69, - 70, 71, 72, 73, 74, 75, 0, -115, 63, 64, - 0, 0, 0, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 66, 67, 0, 0, 63, 64, 0, 0, - -115, -115, -115, -115, -115, -115, 74, 75, 0, 0, - 0, 0, 0, 0, 0, -115, 79, 80, 81, 82, - 83, 84, 85, 86, 74, 75, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 80, 81, 82, 83, 84, - 85, 86 + 17, 0, 0, 0, 0, 214, 18, 19, 0, 0, + 20, 21, 0, 22, 4, 5, 6, 7, 8, 0, + 0, 0, 0, 0, 9, 0, 0, 10, 0, 0, + 0, 11, 12, 0, 0, 0, 13, 0, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 232, 18, 19, 0, 0, 20, + 21, 0, 22, 4, 5, 6, 7, 8, 0, 0, + 0, 0, 0, 9, 0, 0, 10, 0, 0, 0, + 11, 12, 0, 0, 0, 13, 0, 14, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, + 0, 60, 61, 62, 63, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 18, 19, 64, 65, 20, 21, + 0, 22, 66, 67, 68, 69, 70, 71, 72, 73, + 0, 0, 0, 0, 0, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 60, 61, 62, 63, + 188, 0, 0, 189, 0, 0, 0, 0, 0, 0, + 0, 64, 65, 0, 0, 0, 0, 66, 67, 68, + 69, 70, 71, 72, 73, 0, 0, 0, 0, 0, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 60, 61, 62, 63, 0, 0, 0, 114, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 0, 0, + 0, 0, 66, 67, 68, 69, 70, 71, 72, 73, + 0, 0, 0, 0, 0, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 60, 61, 62, 63, + 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, + 0, 64, 65, 0, 0, 0, 0, 66, 67, 68, + 69, 70, 71, 72, 73, 0, 0, 0, 0, 0, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 60, 61, 62, 63, 0, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 0, 0, + 0, 0, 66, 67, 68, 69, 70, 71, 72, 73, + 0, 0, 0, 0, 0, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 249, 0, 0, 250, + 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 0, 0, 0, + 0, 66, 67, 68, 69, 70, 71, 72, 73, 0, + 60, 61, 62, 63, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 64, 65, 0, 110, 0, + 0, 66, 67, 68, 69, 70, 71, 72, 73, 0, + 60, 61, 62, 63, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 64, 65, 0, 180, 0, + 0, 66, 67, 68, 69, 70, 71, 72, 73, 0, + 60, 61, 62, 63, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 64, 65, 0, 248, 0, + 0, 66, 67, 68, 69, 70, 71, 72, 73, 0, + 60, 61, 62, 63, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 64, 65, 0, 252, 0, + 0, 66, 67, 68, 69, 70, 71, 72, 73, 0, + 0, 0, 0, 0, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 60, 61, 62, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 65, 0, 0, 0, 0, 66, 67, 68, + 69, 70, 71, 72, 73, 0, 0, 0, 0, 0, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 197, 60, 61, 62, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 65, 0, + 0, 0, 0, 66, 67, 68, 69, 70, 71, 72, + 73, 0, 0, 0, 0, 0, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 231, 60, 61, + 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 64, 65, 0, 0, 0, 0, 66, + 67, 68, 69, 70, 71, 72, 73, 0, 0, 0, + 0, 0, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 240, 60, 61, 62, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, + 65, 0, 0, 0, 0, 66, 67, 68, 69, 70, + 71, 72, 73, 0, 0, 0, 0, 0, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 241, + 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 0, 0, 0, + 0, 66, 67, 68, 69, 70, 71, 72, 73, 0, + 0, 0, 0, 0, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 243, 60, 61, 62, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 65, 0, 0, 0, 0, 66, 67, 68, + 69, 70, 71, 72, 73, 0, 0, 0, 0, 0, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 244, 60, 61, 62, 63, 0, 0, 0, 0, + 0, 0, 198, 199, 0, 0, 0, 64, 65, 0, + 0, 0, 0, 66, 67, 68, 69, 70, 71, 72, + 73, 0, 0, 0, 0, 0, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 60, 61, 62, + 63, 0, 0, 0, 0, 0, 102, 0, 0, 0, + 0, 0, 64, 65, 0, 0, 0, 0, 66, 67, + 68, 69, 70, 71, 72, 73, 0, 60, 61, 62, + 63, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 64, 65, 0, 0, 0, 0, 66, 67, + 68, 69, 70, 71, 72, 73, 0, 0, 0, 223, + 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 60, 61, 62, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 235, 64, 65, 0, + 0, 0, 0, 66, 67, 68, 69, 70, 71, 72, + 73, 0, 0, 0, 0, 0, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 60, 61, 62, + 63, 0, 0, 0, 0, 0, 236, 0, 0, 0, + 0, 0, 64, 65, 0, 0, 0, 0, 66, 67, + 68, 69, 70, 71, 72, 73, 0, 60, 61, 62, + 63, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 64, 65, 0, 0, 0, 0, 66, 67, + 68, 69, 70, 71, 72, 73, 0, 60, 61, 62, + 63, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 64, 65, 0, 0, 0, 0, 66, 67, + 68, 69, 70, 71, 72, 73, 0, -112, 61, 62, + 0, 0, 0, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 64, 65, 0, 0, 61, 62, -112, -112, + -112, -112, -112, -112, 72, 73, 0, 0, 0, 0, + 64, 0, 0, -112, 77, 78, 79, 80, 81, 82, + 83, 84, 72, 73, -112, -112, 0, 0, 0, 0, + 0, 0, 77, 78, 79, 80, 81, 82, 83, 84, + 0, 0, 61, 62, 0, 0, 0, 0, 0, 0, + -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, + -112, -112, 79, 80, 81, 82, 83, 84, 72, 73, + 0, 0, 0, 0, 0, 0, 0, 0, 77, 78, + 79, 80, 81, 82, 83, 84 }; static const yytype_int16 yycheck[] = { - 1, 45, 123, 5, 7, 11, 12, 46, 118, 10, - 0, 13, 13, 57, 55, 125, 16, 22, 19, 24, - 21, 56, 23, 15, 59, 30, 65, 31, 41, 42, - 31, 44, 33, 52, 53, 54, 55, 40, 5, 4, - 41, 5, 41, 42, 5, 44, 13, 56, 1, 13, - 59, 4, 40, 4, 7, 4, 4, 58, 179, 61, - 62, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 1, 4, 56, 5, 58, 11, 12, 7, 44, 10, + 54, 13, 13, 57, 0, 20, 17, 22, 19, 115, + 21, 29, 54, 28, 15, 57, 122, 63, 29, 1, + 31, 16, 120, 56, 4, 53, 55, 5, 38, 38, + 5, 39, 40, 5, 42, 13, 39, 40, 13, 42, + 1, 4, 55, 4, 4, 56, 7, 59, 60, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 58, 91, 40, 209, 210, - 211, 92, 96, 1, 61, 62, 4, 61, 62, 7, - 61, 62, 103, 104, 27, 58, 107, 57, 57, 57, - 4, 4, 65, 118, 120, 59, 58, 123, 60, 1, - 125, 55, 63, 60, 60, 65, 10, 11, 46, 55, - 57, 45, 40, 13, 59, 57, 57, 4, 55, 55, - 24, 4, 55, 63, 4, 4, 46, 45, 60, 60, - 58, 55, 4, 154, 38, 39, 45, 65, 159, 4, - 5, 6, 7, 8, 48, 49, 50, 51, 52, 53, - 54, 55, 173, 179, 175, 60, 32, 58, 55, 58, - 55, 55, 198, 245, 29, 30, 31, 96, 159, -1, - 191, 101, 193, -1, -1, 40, -1, -1, -1, -1, - 201, 202, -1, 209, 210, 211, 51, -1, -1, -1, - -1, 212, 57, 58, -1, -1, 61, 62, 219, 64, - 221, -1, -1, 224, 225, -1, -1, -1, -1, -1, - 0, 1, -1, -1, 4, 5, -1, 7, 239, 9, - 10, 11, 12, 13, -1, 246, 247, -1, 18, 19, - 20, 252, -1, 23, 24, 25, -1, 27, -1, -1, - -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, 43, -1, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, -1, 59, - 60, 61, 62, 63, 1, 65, -1, 4, 5, 6, - 7, 8, -1, -1, -1, -1, -1, 14, -1, -1, - 17, -1, -1, -1, 21, 22, -1, -1, -1, 26, - -1, 28, 29, 30, 31, -1, -1, -1, -1, -1, - -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, - 57, 58, -1, 60, 61, 62, 63, 64, 1, -1, - -1, 4, 5, 6, 7, 8, -1, -1, -1, -1, - -1, 14, -1, -1, 17, -1, -1, -1, 21, 22, - -1, -1, -1, 26, -1, 28, 29, 30, 31, -1, - -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, - -1, -1, -1, -1, 57, 58, -1, -1, 61, 62, - 63, 64, 1, -1, -1, 4, 5, 6, 7, 8, - -1, -1, -1, -1, -1, 14, -1, -1, 17, -1, - -1, -1, 21, 22, -1, -1, -1, 26, -1, 28, - 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, 4, 5, 6, - 7, 8, 51, -1, -1, -1, -1, -1, 57, 58, - -1, -1, 61, 62, 1, 64, -1, 4, 5, 6, - 7, 8, 29, 30, 31, -1, -1, 14, -1, -1, - 17, -1, -1, 40, 21, 22, -1, -1, -1, 26, - -1, 28, 29, 30, 31, -1, -1, -1, -1, -1, - 57, 58, -1, 40, 61, 62, -1, 64, -1, -1, - -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, - 57, 58, -1, -1, 61, 62, 1, 64, -1, 4, - 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, - -1, -1, 17, -1, -1, -1, 21, 22, -1, -1, - -1, 26, -1, 28, 29, 30, 31, -1, -1, -1, - -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, - -1, -1, 57, 58, -1, -1, 61, 62, 1, 64, - -1, 4, 5, 6, 7, 8, -1, -1, -1, -1, - -1, 14, -1, -1, 17, -1, -1, -1, 21, 22, - -1, -1, -1, 26, -1, 28, 29, 30, 31, -1, - -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, - -1, -1, -1, -1, 57, 58, -1, -1, 61, 62, - -1, 64, 4, 5, 6, 7, 8, -1, -1, -1, + 81, 82, 83, 55, 89, 55, 94, 38, 176, 90, + 1, 59, 60, 4, 59, 60, 7, 59, 60, 27, + 101, 102, 4, 4, 105, 56, 50, 51, 52, 53, + 115, 117, 63, 1, 120, 57, 53, 122, 206, 207, + 208, 61, 4, 5, 6, 7, 8, 38, 58, 58, + 63, 44, 14, 53, 55, 17, 13, 55, 55, 21, + 22, 57, 4, 43, 26, 56, 28, 29, 53, 53, + 151, 61, 63, 4, 53, 156, 38, 4, 4, 5, + 6, 7, 8, 4, 44, 43, 58, 49, 58, 170, + 176, 172, 43, 55, 56, 4, 30, 59, 60, 61, + 62, 53, 58, 29, 53, 94, 56, 188, 56, 190, + 53, 195, 38, 53, 242, 156, 99, 198, 199, -1, + 206, 207, 208, 49, -1, -1, -1, -1, 209, 55, + 56, -1, -1, 59, 60, 216, 62, 218, -1, -1, + 221, 222, -1, -1, -1, -1, -1, 0, 1, -1, + -1, 4, 5, -1, 7, 236, 9, 10, 11, 12, + 13, -1, 243, 244, -1, 18, 19, 20, 249, -1, + 23, 24, 25, -1, 27, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, 38, -1, -1, 41, -1, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, -1, -1, 57, 58, 59, 60, 61, 1, + 63, -1, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, -1, -1, 17, -1, -1, -1, 21, - 22, -1, -1, -1, 26, -1, 28, 29, 30, 31, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, - -1, -1, -1, -1, -1, 57, 58, -1, -1, 61, - 62, 63, 64, 4, 5, 6, 7, 8, -1, -1, - -1, -1, -1, 14, -1, -1, 17, -1, -1, -1, - 21, 22, -1, -1, -1, 26, -1, 28, 29, 30, - 31, -1, -1, -1, -1, -1, -1, -1, -1, 40, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 51, -1, -1, -1, -1, 56, 57, 58, -1, -1, - 61, 62, -1, 64, 4, 5, 6, 7, 8, -1, + 22, -1, -1, -1, 26, -1, 28, 29, -1, -1, + -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, + -1, -1, -1, 55, 56, -1, 58, 59, 60, 61, + 62, 1, -1, -1, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, -1, -1, 17, -1, -1, -1, 21, 22, -1, -1, -1, 26, -1, 28, 29, - 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 51, -1, -1, -1, -1, 56, 57, 58, -1, - -1, 61, 62, -1, 64, 4, 5, 6, 7, 8, + -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, + -1, -1, -1, -1, -1, 55, 56, -1, -1, 59, + 60, 61, 62, 1, -1, -1, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 14, -1, -1, 17, + -1, -1, -1, 21, 22, -1, -1, -1, 26, -1, + 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, -1, -1, -1, 4, 5, 6, 7, + 8, 49, -1, -1, -1, -1, -1, 55, 56, -1, + -1, 59, 60, 1, 62, -1, 4, 5, 6, 7, + 8, 29, -1, -1, -1, -1, 14, -1, -1, 17, + 38, -1, -1, 21, 22, -1, -1, -1, 26, -1, + 28, 29, -1, -1, -1, -1, -1, 55, 56, -1, + 38, 59, 60, -1, 62, -1, -1, -1, -1, -1, + -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, + -1, 59, 60, 1, 62, -1, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 14, -1, -1, 17, + -1, -1, -1, 21, 22, -1, -1, -1, 26, -1, + 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, + -1, 59, 60, 1, 62, -1, 4, 5, 6, 7, + 8, -1, -1, -1, -1, -1, 14, -1, -1, 17, + -1, -1, -1, 21, 22, -1, -1, -1, 26, -1, + 28, 29, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, + -1, 59, 60, -1, 62, 4, 5, 6, 7, 8, -1, -1, -1, -1, -1, 14, -1, -1, 17, -1, -1, -1, 21, 22, -1, -1, -1, 26, -1, 28, - 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, 9, 10, 11, 12, -1, - -1, -1, 51, -1, -1, -1, -1, -1, 57, 58, - 24, 25, 61, 62, -1, 64, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, 9, 10, 11, - 12, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 24, 25, -1, -1, 60, -1, -1, 63, - 32, 33, 34, 35, 36, 37, 38, 39, -1, 9, - 10, 11, 12, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 24, 25, -1, -1, -1, -1, - -1, 63, 32, 33, 34, 35, 36, 37, 38, 39, - -1, 9, 10, 11, 12, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 24, 25, -1, -1, - -1, -1, -1, 63, 32, 33, 34, 35, 36, 37, - 38, 39, -1, 9, 10, 11, 12, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 24, 25, - -1, -1, -1, 10, 11, 63, 32, 33, 34, 35, - 36, 37, 38, 39, -1, -1, -1, -1, -1, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 38, 39, 59, 9, 10, 11, 12, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 24, - 25, -1, -1, -1, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, -1, 9, 10, 11, 12, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 24, 25, -1, 59, -1, -1, -1, -1, 32, - 33, 34, 35, 36, 37, 38, 39, -1, 9, 10, - 11, 12, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 24, 25, -1, 59, -1, -1, -1, - -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, - 9, 10, 11, 12, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 24, 25, -1, 59, -1, - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, - 39, -1, 9, 10, 11, 12, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 24, 25, -1, - 59, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, -1, -1, -1, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, - 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, - -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, - -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 9, 10, 11, 12, + 29, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 24, 25, -1, -1, -1, -1, -1, -1, 32, - 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, - -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 9, 10, 11, 12, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, - 25, -1, -1, -1, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 9, 10, 11, 12, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 24, 25, -1, - -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, - 37, 38, 39, -1, -1, -1, -1, -1, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 49, -1, -1, -1, -1, 54, 55, 56, -1, -1, + 59, 60, -1, 62, 4, 5, 6, 7, 8, -1, + -1, -1, -1, -1, 14, -1, -1, 17, -1, -1, + -1, 21, 22, -1, -1, -1, 26, -1, 28, 29, + -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, + -1, -1, -1, -1, 54, 55, 56, -1, -1, 59, + 60, -1, 62, 4, 5, 6, 7, 8, -1, -1, + -1, -1, -1, 14, -1, -1, 17, -1, -1, -1, + 21, 22, -1, -1, -1, 26, -1, 28, 29, -1, + -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, + -1, 9, 10, 11, 12, -1, -1, -1, 49, -1, + -1, -1, -1, -1, 55, 56, 24, 25, 59, 60, + -1, 62, 30, 31, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 9, 10, 11, 12, + 58, -1, -1, 61, -1, -1, -1, -1, -1, -1, + -1, 24, 25, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 9, 10, 11, 12, -1, -1, -1, 61, -1, + -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, + -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 9, 10, 11, 12, + -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, + -1, 24, 25, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 9, 10, 11, 12, -1, -1, -1, 61, -1, + -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, + -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, -1, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, -1, -1, 57, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, - -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, - 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, 19, 20, - -1, -1, -1, 24, 25, -1, -1, -1, -1, -1, - -1, 32, 33, 34, 35, 36, 37, 38, 39, -1, - -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 9, 10, 11, 12, -1, - -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, - 24, 25, -1, -1, -1, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, 9, 10, 11, - 12, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 24, 25, -1, -1, -1, -1, -1, -1, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - -1, 43, -1, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 9, 10, 11, 12, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, - 25, -1, -1, -1, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, + 9, 10, 11, 12, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 24, 25, -1, 57, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, + 9, 10, 11, 12, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 24, 25, -1, 57, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, + 9, 10, 11, 12, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 24, 25, -1, 57, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, + 9, 10, 11, 12, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 24, 25, -1, 57, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, + -1, -1, -1, -1, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, 25, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 24, 25, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + 37, -1, -1, -1, -1, -1, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 24, 25, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, + -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 9, 10, 11, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, + 25, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, 37, -1, -1, -1, -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 9, 10, 11, 12, -1, -1, -1, -1, -1, - 18, -1, -1, -1, -1, -1, 24, 25, -1, -1, - -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, -1, 9, 10, 11, 12, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 24, 25, - -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, - 36, 37, 38, 39, -1, 9, 10, 11, 12, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 24, 25, -1, -1, -1, -1, -1, -1, 32, 33, - 34, 35, 36, 37, 38, 39, -1, 9, 10, 11, - -1, -1, -1, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 24, 25, -1, -1, 10, 11, -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, 38, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55 + 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 24, 25, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, + -1, -1, -1, -1, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, 25, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, 19, 20, -1, -1, -1, 24, 25, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + 37, -1, -1, -1, -1, -1, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 9, 10, 11, + 12, -1, -1, -1, -1, -1, 18, -1, -1, -1, + -1, -1, 24, 25, -1, -1, -1, -1, 30, 31, + 32, 33, 34, 35, 36, 37, -1, 9, 10, 11, + 12, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 24, 25, -1, -1, -1, -1, 30, 31, + 32, 33, 34, 35, 36, 37, -1, -1, -1, 41, + -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 9, 10, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 23, 24, 25, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + 37, -1, -1, -1, -1, -1, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 9, 10, 11, + 12, -1, -1, -1, -1, -1, 18, -1, -1, -1, + -1, -1, 24, 25, -1, -1, -1, -1, 30, 31, + 32, 33, 34, 35, 36, 37, -1, 9, 10, 11, + 12, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 24, 25, -1, -1, -1, -1, 30, 31, + 32, 33, 34, 35, 36, 37, -1, 9, 10, 11, + 12, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 24, 25, -1, -1, -1, -1, 30, 31, + 32, 33, 34, 35, 36, 37, -1, 9, 10, 11, + -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 24, 25, -1, -1, 10, 11, 30, 31, + 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, + 24, -1, -1, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 36, 37, 10, 11, -1, -1, -1, -1, + -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, + -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, + 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, + 46, 47, 48, 49, 50, 51, 52, 53, 36, 37, + -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, + 48, 49, 50, 51, 52, 53 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 15, 67, 68, 4, 5, 6, 7, 8, 14, - 17, 21, 22, 26, 28, 29, 30, 31, 40, 51, - 57, 58, 61, 62, 64, 71, 73, 76, 82, 0, - 16, 69, 72, 58, 55, 40, 4, 71, 82, 82, - 71, 45, 57, 57, 77, 71, 4, 1, 71, 1, - 4, 7, 76, 1, 63, 71, 1, 4, 58, 76, - 85, 86, 9, 10, 11, 12, 24, 25, 32, 33, - 34, 35, 36, 37, 38, 39, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 71, 5, - 13, 61, 62, 76, 70, 71, 73, 69, 71, 83, - 84, 78, 58, 60, 18, 13, 13, 27, 71, 4, - 4, 79, 59, 59, 1, 55, 63, 63, 46, 65, - 60, 1, 71, 60, 65, 46, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 55, 57, 76, 1, 60, 63, 71, 13, 70, 56, - 59, 79, 4, 57, 74, 75, 71, 1, 71, 57, - 57, 1, 71, 45, 41, 42, 44, 1, 85, 51, - 81, 82, 59, 59, 81, 85, 4, 55, 63, 71, - 55, 60, 63, 4, 57, 84, 44, 4, 56, 59, - 56, 19, 20, 80, 4, 4, 71, 71, 81, 45, - 60, 60, 45, 63, 63, 71, 55, 56, 71, 4, - 75, 60, 71, 71, 58, 58, 43, 81, 81, 81, - 71, 55, 55, 63, 56, 56, 71, 71, 23, 18, - 71, 71, 55, 56, 56, 71, 56, 56, 80, 71, - 71, 59, 56, 59, 71, 59 + 0, 15, 65, 66, 4, 5, 6, 7, 8, 14, + 17, 21, 22, 26, 28, 29, 38, 49, 55, 56, + 59, 60, 62, 69, 71, 74, 80, 0, 16, 67, + 70, 56, 53, 38, 4, 69, 80, 80, 69, 55, + 1, 55, 75, 69, 4, 1, 69, 1, 4, 7, + 74, 1, 61, 69, 1, 4, 56, 74, 83, 84, + 9, 10, 11, 12, 24, 25, 30, 31, 32, 33, + 34, 35, 36, 37, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 69, 5, 13, 59, + 60, 74, 68, 69, 71, 67, 69, 81, 82, 76, + 56, 58, 18, 13, 13, 27, 4, 4, 77, 57, + 57, 1, 53, 61, 61, 44, 63, 58, 1, 69, + 58, 63, 44, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 53, 55, 74, + 1, 58, 61, 69, 13, 68, 54, 57, 77, 4, + 55, 72, 73, 69, 1, 69, 55, 55, 1, 69, + 43, 39, 40, 42, 1, 83, 49, 79, 80, 57, + 57, 79, 83, 4, 53, 61, 69, 53, 58, 61, + 4, 55, 82, 42, 4, 54, 57, 54, 19, 20, + 78, 4, 4, 69, 69, 79, 43, 58, 58, 43, + 61, 61, 69, 53, 54, 69, 4, 73, 58, 69, + 69, 56, 56, 41, 79, 79, 79, 69, 53, 53, + 61, 54, 54, 69, 69, 23, 18, 69, 69, 53, + 54, 54, 69, 54, 54, 78, 69, 69, 57, 54, + 57, 69, 57 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 66, 67, 67, 68, 68, 69, 69, 70, 70, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, - 72, 72, 72, 73, 73, 74, 74, 75, 75, 77, - 76, 78, 76, 79, 79, 79, 80, 80, 81, 81, - 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 83, 83, 84, 85, 85, 85, 85, 86, 86, - 86, 86, 86, 86 + 0, 64, 65, 65, 66, 66, 67, 67, 68, 68, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, + 70, 70, 71, 71, 72, 72, 73, 73, 75, 74, + 76, 74, 77, 77, 77, 78, 78, 79, 79, 79, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, + 82, 83, 83, 83, 83, 84, 84, 84, 84, 84, + 84 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1299,17 +1286,17 @@ static const yytype_uint8 yyr2[] = { 0, 2, 3, 3, 0, 3, 0, 2, 0, 2, 2, 6, 10, 12, 10, 5, 4, 4, 2, 4, - 3, 5, 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 1, 6, - 5, 6, 7, 5, 8, 1, 3, 2, 1, 0, - 4, 0, 5, 0, 2, 4, 5, 3, 3, 2, - 1, 1, 1, 1, 1, 1, 3, 3, 2, 4, - 3, 2, 1, 3, 2, 2, 3, 5, 4, 4, - 3, 7, 6, 6, 6, 5, 5, 1, 1, 1, - 3, 3, 2, 3, 2, 1, 4, 3, 3, 4, - 3, 1, 3, 1, 0, 1, 3, 3, 3, 3, - 1, 1, 5, 5 + 5, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 1, 6, 5, + 6, 7, 5, 8, 1, 3, 2, 1, 0, 4, + 0, 5, 0, 2, 4, 5, 3, 3, 2, 1, + 1, 1, 3, 2, 3, 2, 4, 3, 2, 1, + 3, 2, 2, 3, 5, 4, 4, 3, 7, 6, + 6, 6, 5, 5, 1, 1, 1, 3, 3, 2, + 3, 2, 1, 4, 3, 3, 4, 3, 1, 3, + 1, 0, 1, 3, 3, 3, 3, 1, 1, 5, + 5 }; @@ -1812,133 +1799,133 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 4: /* IDENT */ #line 35 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1816 "parser.c" /* yacc.c:1257 */ +#line 1803 "parser.c" /* yacc.c:1257 */ break; case 5: /* FIELD */ #line 35 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1822 "parser.c" /* yacc.c:1257 */ +#line 1809 "parser.c" /* yacc.c:1257 */ break; case 6: /* LITERAL */ #line 35 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1828 "parser.c" /* yacc.c:1257 */ +#line 1815 "parser.c" /* yacc.c:1257 */ break; case 7: /* FORMAT */ #line 35 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1834 "parser.c" /* yacc.c:1257 */ +#line 1821 "parser.c" /* yacc.c:1257 */ break; - case 41: /* QQSTRING_TEXT */ + case 39: /* QQSTRING_TEXT */ #line 35 "parser.y" /* yacc.c:1257 */ { jv_free(((*yyvaluep).literal)); } -#line 1840 "parser.c" /* yacc.c:1257 */ +#line 1827 "parser.c" /* yacc.c:1257 */ break; - case 68: /* Module */ + case 66: /* Module */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1846 "parser.c" /* yacc.c:1257 */ +#line 1833 "parser.c" /* yacc.c:1257 */ break; - case 69: /* Imports */ + case 67: /* Imports */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1852 "parser.c" /* yacc.c:1257 */ +#line 1839 "parser.c" /* yacc.c:1257 */ break; - case 70: /* FuncDefs */ + case 68: /* FuncDefs */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1858 "parser.c" /* yacc.c:1257 */ +#line 1845 "parser.c" /* yacc.c:1257 */ break; - case 71: /* Exp */ + case 69: /* Exp */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1864 "parser.c" /* yacc.c:1257 */ +#line 1851 "parser.c" /* yacc.c:1257 */ break; - case 72: /* Import */ + case 70: /* Import */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1870 "parser.c" /* yacc.c:1257 */ +#line 1857 "parser.c" /* yacc.c:1257 */ break; - case 73: /* FuncDef */ + case 71: /* FuncDef */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1876 "parser.c" /* yacc.c:1257 */ +#line 1863 "parser.c" /* yacc.c:1257 */ break; - case 74: /* Params */ + case 72: /* Params */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1882 "parser.c" /* yacc.c:1257 */ +#line 1869 "parser.c" /* yacc.c:1257 */ break; - case 75: /* Param */ + case 73: /* Param */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1888 "parser.c" /* yacc.c:1257 */ +#line 1875 "parser.c" /* yacc.c:1257 */ break; - case 76: /* String */ + case 74: /* String */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1894 "parser.c" /* yacc.c:1257 */ +#line 1881 "parser.c" /* yacc.c:1257 */ break; - case 79: /* QQString */ + case 77: /* QQString */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1900 "parser.c" /* yacc.c:1257 */ +#line 1887 "parser.c" /* yacc.c:1257 */ break; - case 80: /* ElseBody */ + case 78: /* ElseBody */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1906 "parser.c" /* yacc.c:1257 */ +#line 1893 "parser.c" /* yacc.c:1257 */ break; - case 81: /* ExpD */ + case 79: /* ExpD */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1912 "parser.c" /* yacc.c:1257 */ +#line 1899 "parser.c" /* yacc.c:1257 */ break; - case 82: /* Term */ + case 80: /* Term */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1918 "parser.c" /* yacc.c:1257 */ +#line 1905 "parser.c" /* yacc.c:1257 */ break; - case 83: /* Args */ + case 81: /* Args */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1924 "parser.c" /* yacc.c:1257 */ +#line 1911 "parser.c" /* yacc.c:1257 */ break; - case 84: /* Arg */ + case 82: /* Arg */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1930 "parser.c" /* yacc.c:1257 */ +#line 1917 "parser.c" /* yacc.c:1257 */ break; - case 85: /* MkDict */ + case 83: /* MkDict */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1936 "parser.c" /* yacc.c:1257 */ +#line 1923 "parser.c" /* yacc.c:1257 */ break; - case 86: /* MkDictPair */ + case 84: /* MkDictPair */ #line 36 "parser.y" /* yacc.c:1257 */ { block_free(((*yyvaluep).blk)); } -#line 1942 "parser.c" /* yacc.c:1257 */ +#line 1929 "parser.c" /* yacc.c:1257 */ break; @@ -2230,31 +2217,31 @@ yyreduce: switch (yyn) { case 2: -#line 272 "parser.y" /* yacc.c:1646 */ +#line 268 "parser.y" /* yacc.c:1646 */ { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); } -#line 2238 "parser.c" /* yacc.c:1646 */ +#line 2225 "parser.c" /* yacc.c:1646 */ break; case 3: -#line 275 "parser.y" /* yacc.c:1646 */ +#line 271 "parser.y" /* yacc.c:1646 */ { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2246 "parser.c" /* yacc.c:1646 */ +#line 2233 "parser.c" /* yacc.c:1646 */ break; case 4: -#line 280 "parser.y" /* yacc.c:1646 */ +#line 276 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2254 "parser.c" /* yacc.c:1646 */ +#line 2241 "parser.c" /* yacc.c:1646 */ break; case 5: -#line 283 "parser.y" /* yacc.c:1646 */ +#line 279 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); @@ -2263,368 +2250,358 @@ yyreduce: (yyval.blk) = gen_module((yyvsp[-1].blk)); } } -#line 2267 "parser.c" /* yacc.c:1646 */ +#line 2254 "parser.c" /* yacc.c:1646 */ break; case 6: -#line 293 "parser.y" /* yacc.c:1646 */ +#line 289 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2275 "parser.c" /* yacc.c:1646 */ +#line 2262 "parser.c" /* yacc.c:1646 */ break; case 7: -#line 296 "parser.y" /* yacc.c:1646 */ +#line 292 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2283 "parser.c" /* yacc.c:1646 */ +#line 2270 "parser.c" /* yacc.c:1646 */ break; case 8: -#line 301 "parser.y" /* yacc.c:1646 */ +#line 297 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2291 "parser.c" /* yacc.c:1646 */ +#line 2278 "parser.c" /* yacc.c:1646 */ break; case 9: -#line 304 "parser.y" /* yacc.c:1646 */ +#line 300 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_bind((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2299 "parser.c" /* yacc.c:1646 */ +#line 2286 "parser.c" /* yacc.c:1646 */ break; case 10: -#line 309 "parser.y" /* yacc.c:1646 */ +#line 305 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); } -#line 2307 "parser.c" /* yacc.c:1646 */ +#line 2294 "parser.c" /* yacc.c:1646 */ break; case 11: -#line 313 "parser.y" /* yacc.c:1646 */ +#line 309 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_var_binding((yyvsp[-5].blk), jv_string_value((yyvsp[-2].literal)), (yyvsp[0].blk)); jv_free((yyvsp[-2].literal)); } -#line 2316 "parser.c" /* yacc.c:1646 */ +#line 2303 "parser.c" /* yacc.c:1646 */ break; case 12: -#line 318 "parser.y" /* yacc.c:1646 */ +#line 314 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_reduce(jv_string_value((yyvsp[-5].literal)), (yyvsp[-8].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); jv_free((yyvsp[-5].literal)); } -#line 2325 "parser.c" /* yacc.c:1646 */ +#line 2312 "parser.c" /* yacc.c:1646 */ break; case 13: -#line 323 "parser.y" /* yacc.c:1646 */ +#line 319 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_foreach(jv_string_value((yyvsp[-7].literal)), (yyvsp[-10].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); jv_free((yyvsp[-7].literal)); } -#line 2334 "parser.c" /* yacc.c:1646 */ +#line 2321 "parser.c" /* yacc.c:1646 */ break; case 14: -#line 328 "parser.y" /* yacc.c:1646 */ +#line 324 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_foreach(jv_string_value((yyvsp[-5].literal)), (yyvsp[-8].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); jv_free((yyvsp[-5].literal)); } -#line 2343 "parser.c" /* yacc.c:1646 */ +#line 2330 "parser.c" /* yacc.c:1646 */ break; case 15: -#line 333 "parser.y" /* yacc.c:1646 */ +#line 329 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2351 "parser.c" /* yacc.c:1646 */ +#line 2338 "parser.c" /* yacc.c:1646 */ break; case 16: -#line 336 "parser.y" /* yacc.c:1646 */ +#line 332 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2360 "parser.c" /* yacc.c:1646 */ +#line 2347 "parser.c" /* yacc.c:1646 */ break; case 17: -#line 341 "parser.y" /* yacc.c:1646 */ +#line 337 "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 2369 "parser.c" /* yacc.c:1646 */ +#line 2356 "parser.c" /* yacc.c:1646 */ break; case 18: -#line 345 "parser.y" /* yacc.c:1646 */ +#line 341 "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 2378 "parser.c" /* yacc.c:1646 */ +#line 2365 "parser.c" /* yacc.c:1646 */ break; case 19: -#line 349 "parser.y" /* yacc.c:1646 */ +#line 345 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); } -#line 2387 "parser.c" /* yacc.c:1646 */ +#line 2374 "parser.c" /* yacc.c:1646 */ break; case 20: -#line 354 "parser.y" /* yacc.c:1646 */ - { - jv v = jv_string_fmt("*anonlabel%u", next_label++); - (yyval.blk) = gen_location((yyloc), locations, gen_label(jv_string_value(v), (yyvsp[0].blk))); - jv_free(v); -} -#line 2397 "parser.c" /* yacc.c:1646 */ - break; - - case 21: -#line 360 "parser.y" /* yacc.c:1646 */ +#line 350 "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 2408 "parser.c" /* yacc.c:1646 */ +#line 2385 "parser.c" /* yacc.c:1646 */ break; - case 22: -#line 372 "parser.y" /* yacc.c:1646 */ + case 21: +#line 362 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); } -#line 2416 "parser.c" /* yacc.c:1646 */ +#line 2393 "parser.c" /* yacc.c:1646 */ break; - case 23: -#line 376 "parser.y" /* yacc.c:1646 */ + case 22: +#line 366 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2424 "parser.c" /* yacc.c:1646 */ +#line 2401 "parser.c" /* yacc.c:1646 */ break; - case 24: -#line 380 "parser.y" /* yacc.c:1646 */ + case 23: +#line 370 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2432 "parser.c" /* yacc.c:1646 */ +#line 2409 "parser.c" /* yacc.c:1646 */ break; - case 25: -#line 384 "parser.y" /* yacc.c:1646 */ + case 24: +#line 374 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2440 "parser.c" /* yacc.c:1646 */ +#line 2417 "parser.c" /* yacc.c:1646 */ break; - case 26: -#line 388 "parser.y" /* yacc.c:1646 */ + case 25: +#line 378 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2448 "parser.c" /* yacc.c:1646 */ +#line 2425 "parser.c" /* yacc.c:1646 */ break; - case 27: -#line 392 "parser.y" /* yacc.c:1646 */ + case 26: +#line 382 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2456 "parser.c" /* yacc.c:1646 */ +#line 2433 "parser.c" /* yacc.c:1646 */ break; - case 28: -#line 396 "parser.y" /* yacc.c:1646 */ + case 27: +#line 386 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); } -#line 2464 "parser.c" /* yacc.c:1646 */ +#line 2441 "parser.c" /* yacc.c:1646 */ break; - case 29: -#line 400 "parser.y" /* yacc.c:1646 */ + case 28: +#line 390 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2472 "parser.c" /* yacc.c:1646 */ +#line 2449 "parser.c" /* yacc.c:1646 */ break; - case 30: -#line 404 "parser.y" /* yacc.c:1646 */ + case 29: +#line 394 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2480 "parser.c" /* yacc.c:1646 */ +#line 2457 "parser.c" /* yacc.c:1646 */ break; - case 31: -#line 408 "parser.y" /* yacc.c:1646 */ + case 30: +#line 398 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2488 "parser.c" /* yacc.c:1646 */ +#line 2465 "parser.c" /* yacc.c:1646 */ break; - case 32: -#line 412 "parser.y" /* yacc.c:1646 */ + case 31: +#line 402 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); } -#line 2496 "parser.c" /* yacc.c:1646 */ +#line 2473 "parser.c" /* yacc.c:1646 */ break; - case 33: -#line 416 "parser.y" /* yacc.c:1646 */ + case 32: +#line 406 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2504 "parser.c" /* yacc.c:1646 */ +#line 2481 "parser.c" /* yacc.c:1646 */ break; - case 34: -#line 420 "parser.y" /* yacc.c:1646 */ + case 33: +#line 410 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2512 "parser.c" /* yacc.c:1646 */ +#line 2489 "parser.c" /* yacc.c:1646 */ break; - case 35: -#line 424 "parser.y" /* yacc.c:1646 */ + case 34: +#line 414 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); } -#line 2520 "parser.c" /* yacc.c:1646 */ +#line 2497 "parser.c" /* yacc.c:1646 */ break; - case 36: -#line 428 "parser.y" /* yacc.c:1646 */ + case 35: +#line 418 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2528 "parser.c" /* yacc.c:1646 */ +#line 2505 "parser.c" /* yacc.c:1646 */ break; - case 37: -#line 432 "parser.y" /* yacc.c:1646 */ + case 36: +#line 422 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); } -#line 2536 "parser.c" /* yacc.c:1646 */ +#line 2513 "parser.c" /* yacc.c:1646 */ break; - case 38: -#line 436 "parser.y" /* yacc.c:1646 */ + case 37: +#line 426 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } -#line 2544 "parser.c" /* yacc.c:1646 */ +#line 2521 "parser.c" /* yacc.c:1646 */ break; - case 39: -#line 440 "parser.y" /* yacc.c:1646 */ + case 38: +#line 430 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } -#line 2552 "parser.c" /* yacc.c:1646 */ +#line 2529 "parser.c" /* yacc.c:1646 */ break; - case 40: -#line 444 "parser.y" /* yacc.c:1646 */ + case 39: +#line 434 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); } -#line 2560 "parser.c" /* yacc.c:1646 */ +#line 2537 "parser.c" /* yacc.c:1646 */ break; - case 41: -#line 448 "parser.y" /* yacc.c:1646 */ + case 40: +#line 438 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); } -#line 2568 "parser.c" /* yacc.c:1646 */ +#line 2545 "parser.c" /* yacc.c:1646 */ break; - case 42: -#line 452 "parser.y" /* yacc.c:1646 */ + case 41: +#line 442 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); } -#line 2576 "parser.c" /* yacc.c:1646 */ +#line 2553 "parser.c" /* yacc.c:1646 */ break; - case 43: -#line 456 "parser.y" /* yacc.c:1646 */ + case 42: +#line 446 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); } -#line 2584 "parser.c" /* yacc.c:1646 */ +#line 2561 "parser.c" /* yacc.c:1646 */ break; - case 44: -#line 460 "parser.y" /* yacc.c:1646 */ + case 43: +#line 450 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); } -#line 2592 "parser.c" /* yacc.c:1646 */ +#line 2569 "parser.c" /* yacc.c:1646 */ break; - case 45: -#line 464 "parser.y" /* yacc.c:1646 */ + case 44: +#line 454 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); } -#line 2600 "parser.c" /* yacc.c:1646 */ +#line 2577 "parser.c" /* yacc.c:1646 */ break; - case 46: -#line 468 "parser.y" /* yacc.c:1646 */ + case 45: +#line 458 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); } -#line 2608 "parser.c" /* yacc.c:1646 */ +#line 2585 "parser.c" /* yacc.c:1646 */ break; - case 47: -#line 472 "parser.y" /* yacc.c:1646 */ + case 46: +#line 462 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); } -#line 2616 "parser.c" /* yacc.c:1646 */ +#line 2593 "parser.c" /* yacc.c:1646 */ break; - case 48: -#line 476 "parser.y" /* yacc.c:1646 */ + case 47: +#line 466 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2624 "parser.c" /* yacc.c:1646 */ +#line 2601 "parser.c" /* yacc.c:1646 */ break; - case 49: -#line 481 "parser.y" /* yacc.c:1646 */ + case 48: +#line 471 "parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-4].blk)); // XXX Make gen_import take only blocks and the int is_data so we @@ -2634,11 +2611,11 @@ yyreduce: jv_free((yyvsp[-1].literal)); jv_free(v); } -#line 2638 "parser.c" /* yacc.c:1646 */ +#line 2615 "parser.c" /* yacc.c:1646 */ break; - case 50: -#line 490 "parser.y" /* yacc.c:1646 */ + case 49: +#line 480 "parser.y" /* yacc.c:1646 */ { jv v = block_const((yyvsp[-3].blk)); (yyval.blk) = gen_import(jv_string_value(v), gen_noop(), jv_string_value((yyvsp[-1].literal)), 0); @@ -2646,11 +2623,11 @@ yyreduce: jv_free((yyvsp[-1].literal)); jv_free(v); } -#line 2650 "parser.c" /* yacc.c:1646 */ +#line 2627 "parser.c" /* yacc.c:1646 */ break; - case 51: -#line 497 "parser.y" /* yacc.c:1646 */ + case 50: +#line 487 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); @@ -2663,11 +2640,11 @@ yyreduce: block_free((yyvsp[-4].blk)); jv_free((yyvsp[-2].literal)); } -#line 2667 "parser.c" /* yacc.c:1646 */ +#line 2644 "parser.c" /* yacc.c:1646 */ break; - case 52: -#line 509 "parser.y" /* yacc.c:1646 */ + case 51: +#line 499 "parser.y" /* yacc.c:1646 */ { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yyloc), "Module metadata must be constant."); @@ -2680,203 +2657,173 @@ yyreduce: block_free((yyvsp[-5].blk)); jv_free((yyvsp[-2].literal)); } -#line 2684 "parser.c" /* yacc.c:1646 */ +#line 2661 "parser.c" /* yacc.c:1646 */ break; - case 53: -#line 523 "parser.y" /* yacc.c:1646 */ + case 52: +#line 513 "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 2693 "parser.c" /* yacc.c:1646 */ +#line 2670 "parser.c" /* yacc.c:1646 */ break; - case 54: -#line 528 "parser.y" /* yacc.c:1646 */ + case 53: +#line 518 "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 2702 "parser.c" /* yacc.c:1646 */ +#line 2679 "parser.c" /* yacc.c:1646 */ break; - case 55: -#line 534 "parser.y" /* yacc.c:1646 */ + case 54: +#line 524 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2710 "parser.c" /* yacc.c:1646 */ +#line 2687 "parser.c" /* yacc.c:1646 */ break; - case 56: -#line 537 "parser.y" /* yacc.c:1646 */ + case 55: +#line 527 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2718 "parser.c" /* yacc.c:1646 */ +#line 2695 "parser.c" /* yacc.c:1646 */ break; - case 57: -#line 542 "parser.y" /* yacc.c:1646 */ + case 56: +#line 532 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2727 "parser.c" /* yacc.c:1646 */ +#line 2704 "parser.c" /* yacc.c:1646 */ break; - case 58: -#line 547 "parser.y" /* yacc.c:1646 */ + case 57: +#line 537 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 2736 "parser.c" /* yacc.c:1646 */ +#line 2713 "parser.c" /* yacc.c:1646 */ + break; + + case 58: +#line 544 "parser.y" /* yacc.c:1646 */ + { (yyval.literal) = jv_string("text"); } +#line 2719 "parser.c" /* yacc.c:1646 */ break; case 59: -#line 554 "parser.y" /* yacc.c:1646 */ - { (yyval.literal) = jv_string("text"); } -#line 2742 "parser.c" /* yacc.c:1646 */ - break; - - case 60: -#line 554 "parser.y" /* yacc.c:1646 */ +#line 544 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } +#line 2728 "parser.c" /* yacc.c:1646 */ + break; + + case 60: +#line 548 "parser.y" /* yacc.c:1646 */ + { (yyval.literal) = (yyvsp[-1].literal); } +#line 2734 "parser.c" /* yacc.c:1646 */ + break; + + case 61: +#line 548 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = (yyvsp[-1].blk); + jv_free((yyvsp[-2].literal)); +} +#line 2743 "parser.c" /* yacc.c:1646 */ + break; + + case 62: +#line 555 "parser.y" /* yacc.c:1646 */ + { + (yyval.blk) = gen_const(jv_string("")); +} #line 2751 "parser.c" /* yacc.c:1646 */ break; - case 61: -#line 558 "parser.y" /* yacc.c:1646 */ - { (yyval.literal) = (yyvsp[-1].literal); } -#line 2757 "parser.c" /* yacc.c:1646 */ - break; - - case 62: -#line 558 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = (yyvsp[-1].blk); - jv_free((yyvsp[-2].literal)); -} -#line 2766 "parser.c" /* yacc.c:1646 */ - break; - case 63: -#line 565 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_const(jv_string("")); -} -#line 2774 "parser.c" /* yacc.c:1646 */ - break; - - case 64: -#line 568 "parser.y" /* yacc.c:1646 */ +#line 558 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); } -#line 2782 "parser.c" /* yacc.c:1646 */ +#line 2759 "parser.c" /* yacc.c:1646 */ break; - case 65: -#line 571 "parser.y" /* yacc.c:1646 */ + case 64: +#line 561 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); } -#line 2790 "parser.c" /* yacc.c:1646 */ +#line 2767 "parser.c" /* yacc.c:1646 */ break; - case 66: -#line 577 "parser.y" /* yacc.c:1646 */ + case 65: +#line 567 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 2798 "parser.c" /* yacc.c:1646 */ +#line 2775 "parser.c" /* yacc.c:1646 */ break; - case 67: -#line 580 "parser.y" /* yacc.c:1646 */ + case 66: +#line 570 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 2806 "parser.c" /* yacc.c:1646 */ +#line 2783 "parser.c" /* yacc.c:1646 */ break; - case 68: -#line 585 "parser.y" /* yacc.c:1646 */ + case 67: +#line 575 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2814 "parser.c" /* yacc.c:1646 */ +#line 2791 "parser.c" /* yacc.c:1646 */ break; - case 69: -#line 588 "parser.y" /* yacc.c:1646 */ + case 68: +#line 578 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 2822 "parser.c" /* yacc.c:1646 */ +#line 2799 "parser.c" /* yacc.c:1646 */ break; - case 70: -#line 591 "parser.y" /* yacc.c:1646 */ + case 69: +#line 581 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 2830 "parser.c" /* yacc.c:1646 */ +#line 2807 "parser.c" /* yacc.c:1646 */ break; - case 71: -#line 597 "parser.y" /* yacc.c:1646 */ + case 70: +#line 587 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 2838 "parser.c" /* yacc.c:1646 */ +#line 2815 "parser.c" /* yacc.c:1646 */ break; - case 72: -#line 600 "parser.y" /* yacc.c:1646 */ + case 71: +#line 590 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_call("recurse", gen_noop()); } -#line 2846 "parser.c" /* yacc.c:1646 */ +#line 2823 "parser.c" /* yacc.c:1646 */ break; - case 73: -#line 603 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_location((yyloc), locations, - BLOCK(gen_op_unbound(LOADV, "*1"), // impossible symbol - gen_call("error", gen_noop()))); -} -#line 2856 "parser.c" /* yacc.c:1646 */ - break; - - case 74: -#line 608 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_location((yyloc), locations, - BLOCK(gen_op_unbound(LOADV, "*2"), // impossible symbol - gen_call("error", gen_noop()))); -} -#line 2866 "parser.c" /* yacc.c:1646 */ - break; - - case 75: -#line 613 "parser.y" /* yacc.c:1646 */ - { - (yyval.blk) = gen_location((yyloc), locations, - BLOCK(gen_op_unbound(LOADV, "*3"), // impossible symbol - gen_call("error", gen_noop()))); -} -#line 2876 "parser.c" /* yacc.c:1646 */ - break; - - case 76: -#line 618 "parser.y" /* yacc.c:1646 */ + case 72: +#line 593 "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, @@ -2885,222 +2832,231 @@ yyreduce: jv_free(v); jv_free((yyvsp[0].literal)); } -#line 2889 "parser.c" /* yacc.c:1646 */ +#line 2836 "parser.c" /* yacc.c:1646 */ break; - case 77: -#line 626 "parser.y" /* yacc.c:1646 */ + case 73: +#line 601 "parser.y" /* yacc.c:1646 */ + { + FAIL((yyloc), "break requires a label to break to"); + (yyval.blk) = gen_noop(); +} +#line 2845 "parser.c" /* yacc.c:1646 */ + break; + + case 74: +#line 605 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } -#line 2897 "parser.c" /* yacc.c:1646 */ +#line 2853 "parser.c" /* yacc.c:1646 */ break; - case 78: -#line 629 "parser.y" /* yacc.c:1646 */ + case 75: +#line 608 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); } -#line 2905 "parser.c" /* yacc.c:1646 */ +#line 2861 "parser.c" /* yacc.c:1646 */ break; - case 79: -#line 632 "parser.y" /* yacc.c:1646 */ + case 76: +#line 611 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2913 "parser.c" /* yacc.c:1646 */ +#line 2869 "parser.c" /* yacc.c:1646 */ break; - case 80: -#line 635 "parser.y" /* yacc.c:1646 */ + case 77: +#line 614 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } -#line 2921 "parser.c" /* yacc.c:1646 */ +#line 2877 "parser.c" /* yacc.c:1646 */ break; - case 81: -#line 638 "parser.y" /* yacc.c:1646 */ + case 78: +#line 617 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } -#line 2929 "parser.c" /* yacc.c:1646 */ +#line 2885 "parser.c" /* yacc.c:1646 */ break; - case 82: -#line 641 "parser.y" /* yacc.c:1646 */ + case 79: +#line 620 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } -#line 2937 "parser.c" /* yacc.c:1646 */ +#line 2893 "parser.c" /* yacc.c:1646 */ break; - case 83: -#line 644 "parser.y" /* yacc.c:1646 */ + case 80: +#line 623 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 2945 "parser.c" /* yacc.c:1646 */ +#line 2901 "parser.c" /* yacc.c:1646 */ break; - case 84: -#line 647 "parser.y" /* yacc.c:1646 */ + case 81: +#line 626 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); } -#line 2953 "parser.c" /* yacc.c:1646 */ +#line 2909 "parser.c" /* yacc.c:1646 */ break; - case 85: -#line 650 "parser.y" /* yacc.c:1646 */ + case 82: +#line 629 "parser.y" /* yacc.c:1646 */ { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 2962 "parser.c" /* yacc.c:1646 */ +#line 2918 "parser.c" /* yacc.c:1646 */ break; - case 86: -#line 654 "parser.y" /* yacc.c:1646 */ + case 83: +#line 633 "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 2972 "parser.c" /* yacc.c:1646 */ +#line 2928 "parser.c" /* yacc.c:1646 */ break; - case 87: -#line 660 "parser.y" /* yacc.c:1646 */ + case 84: +#line 639 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } -#line 2980 "parser.c" /* yacc.c:1646 */ +#line 2936 "parser.c" /* yacc.c:1646 */ break; - case 88: -#line 663 "parser.y" /* yacc.c:1646 */ + case 85: +#line 642 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 2988 "parser.c" /* yacc.c:1646 */ +#line 2944 "parser.c" /* yacc.c:1646 */ break; - case 89: -#line 666 "parser.y" /* yacc.c:1646 */ + case 86: +#line 645 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } -#line 2996 "parser.c" /* yacc.c:1646 */ +#line 2952 "parser.c" /* yacc.c:1646 */ break; - case 90: -#line 669 "parser.y" /* yacc.c:1646 */ + case 87: +#line 648 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } -#line 3004 "parser.c" /* yacc.c:1646 */ +#line 2960 "parser.c" /* yacc.c:1646 */ break; - case 91: -#line 672 "parser.y" /* yacc.c:1646 */ + case 88: +#line 651 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } -#line 3012 "parser.c" /* yacc.c:1646 */ +#line 2968 "parser.c" /* yacc.c:1646 */ break; - case 92: -#line 675 "parser.y" /* yacc.c:1646 */ + case 89: +#line 654 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } -#line 3020 "parser.c" /* yacc.c:1646 */ +#line 2976 "parser.c" /* yacc.c:1646 */ break; - case 93: -#line 678 "parser.y" /* yacc.c:1646 */ + case 90: +#line 657 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } -#line 3028 "parser.c" /* yacc.c:1646 */ +#line 2984 "parser.c" /* yacc.c:1646 */ break; - case 94: -#line 681 "parser.y" /* yacc.c:1646 */ + case 91: +#line 660 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } -#line 3036 "parser.c" /* yacc.c:1646 */ +#line 2992 "parser.c" /* yacc.c:1646 */ break; - case 95: -#line 684 "parser.y" /* yacc.c:1646 */ + case 92: +#line 663 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } -#line 3044 "parser.c" /* yacc.c:1646 */ +#line 3000 "parser.c" /* yacc.c:1646 */ break; - case 96: -#line 687 "parser.y" /* yacc.c:1646 */ + case 93: +#line 666 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } -#line 3052 "parser.c" /* yacc.c:1646 */ +#line 3008 "parser.c" /* yacc.c:1646 */ break; - case 97: -#line 690 "parser.y" /* yacc.c:1646 */ + case 94: +#line 669 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const((yyvsp[0].literal)); } -#line 3060 "parser.c" /* yacc.c:1646 */ +#line 3016 "parser.c" /* yacc.c:1646 */ break; - case 98: -#line 693 "parser.y" /* yacc.c:1646 */ + case 95: +#line 672 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3068 "parser.c" /* yacc.c:1646 */ +#line 3024 "parser.c" /* yacc.c:1646 */ break; - case 99: -#line 696 "parser.y" /* yacc.c:1646 */ + case 96: +#line 675 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } -#line 3076 "parser.c" /* yacc.c:1646 */ +#line 3032 "parser.c" /* yacc.c:1646 */ break; - case 100: -#line 699 "parser.y" /* yacc.c:1646 */ + case 97: +#line 678 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[-1].blk); } -#line 3084 "parser.c" /* yacc.c:1646 */ +#line 3040 "parser.c" /* yacc.c:1646 */ break; - case 101: -#line 702 "parser.y" /* yacc.c:1646 */ + case 98: +#line 681 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_collect((yyvsp[-1].blk)); } -#line 3092 "parser.c" /* yacc.c:1646 */ +#line 3048 "parser.c" /* yacc.c:1646 */ break; - case 102: -#line 705 "parser.y" /* yacc.c:1646 */ + case 99: +#line 684 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_const(jv_array()); } -#line 3100 "parser.c" /* yacc.c:1646 */ +#line 3056 "parser.c" /* yacc.c:1646 */ break; - case 103: -#line 708 "parser.y" /* yacc.c:1646 */ + case 100: +#line 687 "parser.y" /* yacc.c:1646 */ { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL) @@ -3108,20 +3064,20 @@ yyreduce: else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3112 "parser.c" /* yacc.c:1646 */ +#line 3068 "parser.c" /* yacc.c:1646 */ break; - case 104: -#line 715 "parser.y" /* yacc.c:1646 */ + case 101: +#line 694 "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 3121 "parser.c" /* yacc.c:1646 */ +#line 3077 "parser.c" /* yacc.c:1646 */ break; - case 105: -#line 719 "parser.y" /* yacc.c:1646 */ + case 102: +#line 698 "parser.y" /* yacc.c:1646 */ { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0) @@ -3134,143 +3090,143 @@ yyreduce: (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3138 "parser.c" /* yacc.c:1646 */ +#line 3094 "parser.c" /* yacc.c:1646 */ break; - case 106: -#line 731 "parser.y" /* yacc.c:1646 */ + case 103: +#line 710 "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 3148 "parser.c" /* yacc.c:1646 */ +#line 3104 "parser.c" /* yacc.c:1646 */ + break; + + case 104: +#line 715 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = gen_noop(); } +#line 3110 "parser.c" /* yacc.c:1646 */ + break; + + case 105: +#line 716 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = gen_noop(); } +#line 3116 "parser.c" /* yacc.c:1646 */ + break; + + case 106: +#line 717 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[-3].blk); } +#line 3122 "parser.c" /* yacc.c:1646 */ break; case 107: -#line 736 "parser.y" /* yacc.c:1646 */ +#line 718 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_noop(); } -#line 3154 "parser.c" /* yacc.c:1646 */ +#line 3128 "parser.c" /* yacc.c:1646 */ break; case 108: -#line 737 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = gen_noop(); } -#line 3160 "parser.c" /* yacc.c:1646 */ - break; - - case 109: -#line 738 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[-3].blk); } -#line 3166 "parser.c" /* yacc.c:1646 */ - break; - - case 110: -#line 739 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = gen_noop(); } -#line 3172 "parser.c" /* yacc.c:1646 */ - break; - - case 111: -#line 742 "parser.y" /* yacc.c:1646 */ +#line 721 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3180 "parser.c" /* yacc.c:1646 */ +#line 3136 "parser.c" /* yacc.c:1646 */ break; - case 112: -#line 745 "parser.y" /* yacc.c:1646 */ + case 109: +#line 724 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3188 "parser.c" /* yacc.c:1646 */ +#line 3144 "parser.c" /* yacc.c:1646 */ break; - case 113: -#line 750 "parser.y" /* yacc.c:1646 */ + case 110: +#line 729 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_lambda((yyvsp[0].blk)); } -#line 3196 "parser.c" /* yacc.c:1646 */ +#line 3152 "parser.c" /* yacc.c:1646 */ break; - case 114: -#line 755 "parser.y" /* yacc.c:1646 */ + case 111: +#line 734 "parser.y" /* yacc.c:1646 */ { (yyval.blk)=gen_noop(); } -#line 3204 "parser.c" /* yacc.c:1646 */ +#line 3160 "parser.c" /* yacc.c:1646 */ + break; + + case 112: +#line 737 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[0].blk); } +#line 3166 "parser.c" /* yacc.c:1646 */ + break; + + case 113: +#line 738 "parser.y" /* yacc.c:1646 */ + { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } +#line 3172 "parser.c" /* yacc.c:1646 */ + break; + + case 114: +#line 739 "parser.y" /* yacc.c:1646 */ + { (yyval.blk) = (yyvsp[0].blk); } +#line 3178 "parser.c" /* yacc.c:1646 */ break; case 115: -#line 758 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[0].blk); } -#line 3210 "parser.c" /* yacc.c:1646 */ - break; - - case 116: -#line 759 "parser.y" /* yacc.c:1646 */ - { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3216 "parser.c" /* yacc.c:1646 */ - break; - - case 117: -#line 760 "parser.y" /* yacc.c:1646 */ - { (yyval.blk) = (yyvsp[0].blk); } -#line 3222 "parser.c" /* yacc.c:1646 */ - break; - - case 118: -#line 763 "parser.y" /* yacc.c:1646 */ +#line 742 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3230 "parser.c" /* yacc.c:1646 */ +#line 3186 "parser.c" /* yacc.c:1646 */ break; - case 119: -#line 766 "parser.y" /* yacc.c:1646 */ + case 116: +#line 745 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3238 "parser.c" /* yacc.c:1646 */ +#line 3194 "parser.c" /* yacc.c:1646 */ break; - case 120: -#line 769 "parser.y" /* yacc.c:1646 */ + case 117: +#line 748 "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 3247 "parser.c" /* yacc.c:1646 */ +#line 3203 "parser.c" /* yacc.c:1646 */ break; - case 121: -#line 773 "parser.y" /* yacc.c:1646 */ + case 118: +#line 752 "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 3256 "parser.c" /* yacc.c:1646 */ +#line 3212 "parser.c" /* yacc.c:1646 */ break; - case 122: -#line 777 "parser.y" /* yacc.c:1646 */ + case 119: +#line 756 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3264 "parser.c" /* yacc.c:1646 */ +#line 3220 "parser.c" /* yacc.c:1646 */ break; - case 123: -#line 780 "parser.y" /* yacc.c:1646 */ + case 120: +#line 759 "parser.y" /* yacc.c:1646 */ { (yyval.blk) = (yyvsp[0].blk); } -#line 3270 "parser.c" /* yacc.c:1646 */ +#line 3226 "parser.c" /* yacc.c:1646 */ break; -#line 3274 "parser.c" /* yacc.c:1646 */ +#line 3230 "parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3505,7 +3461,7 @@ yyreturn: #endif return yyresult; } -#line 781 "parser.y" /* yacc.c:1906 */ +#line 760 "parser.y" /* yacc.c:1906 */ int jq_parse(struct locfile* locations, block* answer) { diff --git a/parser.h b/parser.h index 4be9d406..55dace4e 100644 --- a/parser.h +++ b/parser.h @@ -92,21 +92,19 @@ struct lexer_param; CATCH = 282, LABEL = 283, BREAK = 284, - BREAK2 = 285, - BREAK3 = 286, - SETPIPE = 287, - SETPLUS = 288, - SETMINUS = 289, - SETMULT = 290, - SETDIV = 291, - SETDEFINEDOR = 292, - LESSEQ = 293, - GREATEREQ = 294, - QQSTRING_START = 295, - QQSTRING_TEXT = 296, - QQSTRING_INTERP_START = 297, - QQSTRING_INTERP_END = 298, - QQSTRING_END = 299 + SETPIPE = 285, + SETPLUS = 286, + SETMINUS = 287, + SETMULT = 288, + SETDIV = 289, + SETDEFINEDOR = 290, + LESSEQ = 291, + GREATEREQ = 292, + QQSTRING_START = 293, + QQSTRING_TEXT = 294, + QQSTRING_INTERP_START = 295, + QQSTRING_INTERP_END = 296, + QQSTRING_END = 297 }; #endif /* Tokens. */ @@ -137,21 +135,19 @@ struct lexer_param; #define CATCH 282 #define LABEL 283 #define BREAK 284 -#define BREAK2 285 -#define BREAK3 286 -#define SETPIPE 287 -#define SETPLUS 288 -#define SETMINUS 289 -#define SETMULT 290 -#define SETDIV 291 -#define SETDEFINEDOR 292 -#define LESSEQ 293 -#define GREATEREQ 294 -#define QQSTRING_START 295 -#define QQSTRING_TEXT 296 -#define QQSTRING_INTERP_START 297 -#define QQSTRING_INTERP_END 298 -#define QQSTRING_END 299 +#define SETPIPE 285 +#define SETPLUS 286 +#define SETMINUS 287 +#define SETMULT 288 +#define SETDIV 289 +#define SETDEFINEDOR 290 +#define LESSEQ 291 +#define GREATEREQ 292 +#define QQSTRING_START 293 +#define QQSTRING_TEXT 294 +#define QQSTRING_INTERP_START 295 +#define QQSTRING_INTERP_END 296 +#define QQSTRING_END 297 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -163,7 +159,7 @@ union YYSTYPE jv literal; block blk; -#line 167 "parser.h" /* yacc.c:1909 */ +#line 163 "parser.h" /* yacc.c:1909 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/parser.y b/parser.y index d551c0e3..03b80599 100644 --- a/parser.y +++ b/parser.y @@ -72,8 +72,6 @@ struct lexer_param; %token CATCH "catch" %token LABEL "label" %token BREAK "break" -%token BREAK2 "break2" -%token BREAK3 "break3" %token SETPIPE "|=" %token SETPLUS "+=" %token SETMINUS "-=" @@ -153,8 +151,6 @@ int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, block* answer, int* errors, return tok; } -static unsigned int next_label = 0; - static block gen_dictpair(block k, block v) { return BLOCK(gen_subexp(k), gen_subexp(v), gen_op_simple(INSERT)); } @@ -351,12 +347,6 @@ Term "as" '$' IDENT '|' Exp { $$ = $2; } | -"label" '|' Exp { - jv v = jv_string_fmt("*anonlabel%u", next_label++); - $$ = gen_location(@$, locations, gen_label(jv_string_value(v), $3)); - jv_free(v); -} | - "label" '$' IDENT '|' Exp { jv v = jv_string_fmt("*label-%s", jv_string_value($3)); $$ = gen_location(@$, locations, gen_label(jv_string_value(v), $5)); @@ -600,21 +590,6 @@ Term: REC { $$ = gen_call("recurse", gen_noop()); } | -BREAK { - $$ = gen_location(@$, locations, - BLOCK(gen_op_unbound(LOADV, "*1"), // impossible symbol - gen_call("error", gen_noop()))); -} | -BREAK2 { - $$ = gen_location(@$, locations, - BLOCK(gen_op_unbound(LOADV, "*2"), // impossible symbol - gen_call("error", gen_noop()))); -} | -BREAK3 { - $$ = gen_location(@$, locations, - BLOCK(gen_op_unbound(LOADV, "*3"), // impossible symbol - gen_call("error", gen_noop()))); -} | BREAK '$' IDENT { jv v = jv_string_fmt("*label-%s", jv_string_value($3)); // impossible symbol $$ = gen_location(@$, locations, @@ -623,6 +598,10 @@ BREAK '$' IDENT { jv_free(v); jv_free($3); } | +BREAK error { + FAIL(@$, "break requires a label to break to"); + $$ = gen_noop(); +} | Term FIELD '?' { $$ = gen_index_opt($1, gen_const($2)); } | diff --git a/tests/all.test b/tests/all.test index 857a6dca..ba3bb6ee 100644 --- a/tests/all.test +++ b/tests/all.test @@ -247,10 +247,6 @@ null 1 [1,2,4,8,16,32,64] -[label | while(.<100; .*2|if . > 10 then break else . end)] -1 -[1,2,4,8] - [(label $here | .[] | if .>1 then break $here else . end), "hi!"] [0,1,2] [0,1,"hi!"] @@ -259,14 +255,6 @@ null [0,2,1] [0,"hi!"] -(label | (label | 2 | break2)), 1 -null -1 - -%%FAIL -break -jq: error: break used outside labeled control structure - %%FAIL . as $foo | break $foo jq: error: *label-foo/0 is not defined @@ -275,7 +263,7 @@ jq: error: *label-foo/0 is not defined [1,2,3,4,5] [1,2,6,24,120] -[label | foreach .[] as $item ([3, null]; if .[0] < 1 then break else [.[0] -1, $item] end; .[1])] +[label $out | foreach .[] as $item ([3, null]; if .[0] < 1 then break $out else [.[0] -1, $item] end; .[1])] [11,22,33,44,55,66,77,88,99] [11,22,33]