aboutsummaryrefslogtreecommitdiff
path: root/gen
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-08-15 21:41:29 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2023-08-15 21:41:29 +0300
commitbad9ab7479d66dfdb1c8e2d18c23fbcff9ec394b (patch)
treed43dd3a26685c9adc8201dfe1a4035418175c1eb /gen
parent5ffc39352ef0195697953e9318b8a17c79e7ae84 (diff)
downloadek-bad9ab7479d66dfdb1c8e2d18c23fbcff9ec394b.tar.gz
ek-bad9ab7479d66dfdb1c8e2d18c23fbcff9ec394b.zip
updates to syntax
Diffstat (limited to 'gen')
-rw-r--r--gen/gen_lexer.c787
-rw-r--r--gen/gen_lexer.h2
-rw-r--r--gen/gen_parser.c3802
-rw-r--r--gen/gen_parser.h157
4 files changed, 2596 insertions, 2152 deletions
diff --git a/gen/gen_lexer.c b/gen/gen_lexer.c
index 1484b6b..fbd1d94 100644
--- a/gen/gen_lexer.c
+++ b/gen/gen_lexer.c
@@ -339,8 +339,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
yyg->yy_hold_char = *yy_cp; \
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 94
-#define YY_END_OF_BUFFER 95
+#define YY_NUM_RULES 97
+#define YY_END_OF_BUFFER 98
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -348,33 +348,33 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[224] =
+static const flex_int16_t yy_accept[231] =
{ 0,
- 0, 0, 0, 0, 95, 93, 92, 92, 20, 93,
- 93, 27, 36, 35, 10, 11, 25, 23, 17, 24,
- 16, 26, 89, 89, 19, 18, 42, 41, 43, 22,
- 91, 14, 15, 28, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 12, 38, 13, 40, 6, 8, 5, 7, 92, 46,
- 0, 88, 0, 21, 54, 37, 57, 0, 0, 0,
- 0, 51, 89, 89, 52, 0, 2, 1, 53, 90,
- 89, 0, 0, 9, 49, 44, 47, 48, 45, 50,
- 91, 55, 29, 62, 91, 91, 91, 91, 79, 91,
+ 0, 0, 0, 0, 98, 96, 95, 95, 20, 96,
+ 96, 27, 37, 36, 10, 11, 25, 23, 17, 24,
+ 16, 26, 91, 91, 19, 18, 43, 42, 44, 35,
+ 22, 93, 14, 15, 28, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 12, 39, 13, 41, 6, 8, 5, 7, 95,
+ 47, 0, 90, 0, 21, 55, 38, 58, 0, 0,
+ 0, 0, 52, 91, 91, 53, 0, 2, 1, 54,
+ 92, 91, 0, 0, 9, 50, 45, 48, 49, 46,
+ 51, 0, 94, 93, 56, 29, 63, 93, 93, 93,
- 91, 91, 91, 91, 91, 72, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 58, 39,
- 6, 5, 4, 3, 30, 0, 0, 0, 0, 0,
- 61, 1, 0, 90, 0, 90, 89, 89, 59, 60,
- 56, 91, 91, 91, 91, 91, 91, 91, 91, 77,
- 91, 91, 90, 80, 63, 91, 91, 91, 91, 91,
- 91, 91, 34, 32, 0, 0, 0, 0, 0, 91,
- 76, 91, 91, 91, 91, 74, 91, 84, 91, 73,
- 91, 91, 91, 91, 91, 91, 91, 91, 32, 33,
- 31, 0, 90, 86, 81, 91, 64, 91, 71, 91,
+ 93, 80, 93, 93, 93, 93, 93, 93, 73, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 59, 40, 6, 5, 4, 3, 30, 0, 0,
+ 0, 0, 0, 62, 1, 0, 92, 0, 92, 91,
+ 91, 60, 61, 57, 93, 93, 93, 93, 93, 93,
+ 93, 93, 78, 93, 93, 92, 81, 64, 93, 93,
+ 93, 93, 93, 93, 93, 34, 32, 0, 0, 0,
+ 0, 0, 93, 77, 93, 93, 93, 93, 93, 75,
+ 93, 85, 93, 74, 93, 93, 93, 93, 93, 93,
+ 93, 93, 32, 33, 31, 0, 92, 87, 82, 93,
- 91, 91, 91, 91, 91, 91, 91, 65, 78, 91,
- 85, 83, 68, 82, 70, 66, 75, 91, 69, 91,
- 67, 87, 0
+ 93, 65, 93, 72, 93, 93, 93, 93, 93, 93,
+ 93, 93, 66, 79, 93, 93, 86, 84, 69, 83,
+ 71, 67, 76, 93, 70, 93, 89, 68, 88, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -385,14 +385,14 @@ static const YY_CHAR yy_ec[256] =
1, 2, 4, 5, 6, 1, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
20, 20, 20, 20, 20, 20, 21, 22, 23, 24,
- 25, 26, 1, 27, 28, 28, 28, 28, 29, 30,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 32,
- 31, 31, 31, 31, 31, 31, 31, 33, 31, 31,
- 34, 35, 36, 37, 31, 1, 38, 39, 40, 41,
+ 25, 26, 27, 28, 29, 29, 29, 29, 30, 31,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 33,
+ 32, 32, 32, 32, 32, 32, 32, 34, 32, 32,
+ 35, 36, 37, 38, 32, 1, 39, 40, 41, 42,
- 42, 43, 44, 45, 46, 31, 47, 48, 49, 50,
- 51, 52, 31, 53, 54, 55, 56, 31, 57, 58,
- 59, 60, 61, 62, 63, 64, 1, 1, 1, 1,
+ 43, 44, 45, 46, 47, 32, 48, 49, 50, 51,
+ 52, 53, 32, 54, 55, 56, 57, 32, 58, 59,
+ 60, 61, 62, 63, 64, 65, 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,
@@ -409,130 +409,181 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static const YY_CHAR yy_meta[65] =
+static const YY_CHAR yy_meta[66] =
{ 0,
- 1, 1, 2, 1, 1, 1, 1, 1, 3, 1,
- 1, 4, 1, 1, 1, 1, 4, 5, 5, 5,
- 5, 1, 1, 1, 1, 1, 1, 5, 5, 5,
- 6, 6, 6, 1, 1, 1, 1, 5, 5, 5,
- 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 1, 1, 1, 1
+ 1, 2, 3, 2, 1, 1, 1, 1, 4, 1,
+ 1, 5, 1, 1, 1, 1, 5, 6, 6, 6,
+ 6, 1, 1, 1, 1, 1, 1, 1, 6, 6,
+ 6, 2, 2, 2, 1, 1, 1, 1, 6, 6,
+ 6, 6, 6, 6, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 1, 1, 1, 1
} ;
-static const flex_int16_t yy_base[234] =
+static const flex_int16_t yy_base[241] =
{ 0,
- 0, 0, 62, 63, 367, 368, 65, 67, 341, 66,
- 359, 339, 64, 328, 368, 368, 368, 63, 368, 72,
- 346, 61, 84, 90, 339, 368, 52, 69, 73, 368,
- 0, 368, 368, 82, 306, 306, 74, 45, 66, 307,
- 306, 77, 300, 317, 298, 311, 75, 293, 301, 305,
- 368, 60, 368, 368, 0, 368, 101, 337, 126, 368,
- 126, 368, 345, 368, 368, 368, 368, 338, 115, 120,
- 127, 368, 139, 146, 368, 330, 368, 0, 368, 185,
- 161, 0, 131, 368, 320, 368, 368, 368, 368, 319,
- 0, 368, 318, 0, 300, 287, 290, 296, 0, 284,
+ 0, 0, 63, 64, 317, 830, 66, 68, 287, 67,
+ 300, 269, 65, 257, 830, 830, 830, 64, 830, 73,
+ 275, 62, 81, 88, 265, 830, 53, 70, 85, 830,
+ 830, 110, 830, 830, 80, 120, 123, 126, 129, 133,
+ 139, 142, 145, 148, 151, 154, 157, 160, 164, 183,
+ 167, 830, 113, 830, 830, 0, 830, 122, 274, 114,
+ 830, 83, 830, 262, 830, 830, 830, 830, 250, 179,
+ 207, 224, 830, 230, 236, 830, 231, 830, 0, 830,
+ 277, 242, 0, 155, 830, 214, 830, 830, 830, 830,
+ 192, 199, 830, 206, 830, 190, 218, 227, 233, 265,
- 298, 280, 280, 281, 278, 0, 280, 288, 275, 279,
- 289, 272, 266, 272, 278, 271, 276, 275, 368, 368,
- 0, 139, 368, 368, 368, 311, 165, 177, 310, 0,
- 368, 0, 150, 169, 198, 368, 169, 157, 368, 368,
- 368, 280, 275, 137, 178, 274, 273, 265, 271, 0,
- 261, 260, 0, 0, 0, 254, 267, 252, 252, 264,
- 254, 256, 368, 368, 213, 216, 294, 177, 223, 255,
- 0, 246, 254, 246, 248, 0, 256, 0, 243, 0,
- 242, 241, 241, 246, 240, 189, 226, 232, 368, 368,
- 368, 227, 231, 0, 0, 217, 0, 197, 0, 187,
+ 269, 272, 275, 278, 281, 297, 300, 307, 320, 323,
+ 329, 332, 338, 341, 344, 347, 353, 356, 362, 365,
+ 375, 830, 830, 0, 176, 830, 830, 830, 205, 352,
+ 296, 197, 0, 830, 0, 364, 373, 405, 830, 179,
+ 161, 830, 830, 830, 393, 407, 425, 431, 434, 439,
+ 442, 445, 449, 452, 455, 458, 461, 464, 469, 481,
+ 487, 491, 494, 497, 506, 830, 830, 493, 310, 195,
+ 200, 501, 525, 528, 531, 536, 539, 548, 554, 557,
+ 561, 564, 567, 572, 575, 578, 582, 586, 589, 595,
+ 604, 607, 830, 830, 830, 594, 598, 620, 636, 639,
- 171, 173, 167, 153, 162, 160, 151, 0, 0, 137,
- 0, 0, 0, 0, 0, 0, 0, 120, 0, 110,
- 0, 0, 368, 252, 258, 264, 266, 272, 278, 284,
- 139, 288, 132
+ 642, 649, 654, 657, 660, 663, 666, 669, 672, 675,
+ 679, 682, 685, 690, 696, 699, 702, 705, 712, 721,
+ 727, 730, 733, 736, 739, 742, 745, 748, 754, 830,
+ 785, 791, 797, 802, 808, 814, 820, 114, 823, 80
} ;
-static const flex_int16_t yy_def[234] =
+static const flex_int16_t yy_def[241] =
{ 0,
- 223, 1, 224, 224, 223, 223, 223, 223, 223, 225,
- 223, 223, 223, 226, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 227, 223, 223, 223, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 223, 223, 223, 223, 228, 223, 223, 223, 223, 223,
- 225, 223, 225, 223, 223, 223, 223, 223, 229, 223,
- 223, 223, 223, 223, 223, 223, 223, 230, 223, 223,
- 223, 231, 223, 223, 223, 223, 223, 223, 223, 223,
- 227, 223, 223, 227, 227, 227, 227, 227, 227, 227,
+ 230, 1, 231, 231, 230, 230, 230, 230, 230, 232,
+ 230, 230, 230, 233, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 234, 230, 230, 230, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 230, 230, 230, 230, 235, 230, 230, 230, 230,
+ 230, 232, 230, 232, 230, 230, 230, 230, 230, 236,
+ 230, 230, 230, 230, 230, 230, 230, 230, 237, 230,
+ 230, 230, 238, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 234, 230, 230, 234, 234, 234, 234,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 223, 223,
- 228, 223, 223, 223, 223, 223, 223, 223, 232, 233,
- 223, 230, 223, 223, 223, 223, 231, 223, 223, 223,
- 223, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 223, 223, 223, 223, 232, 233, 223, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 223, 223,
- 223, 223, 223, 227, 227, 227, 227, 227, 227, 227,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 230, 230, 235, 230, 230, 230, 230, 230, 230,
+ 230, 239, 240, 230, 237, 230, 230, 230, 230, 238,
+ 230, 230, 230, 230, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 230, 230, 230, 230, 239,
+ 240, 230, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 230, 230, 230, 230, 230, 234, 234, 234,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
- 227, 227, 0, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 0,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230
} ;
-static const flex_int16_t yy_nxt[433] =
+static const flex_int16_t yy_nxt[896] =
{ 0,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 24,
- 24, 25, 26, 27, 28, 29, 30, 31, 31, 31,
- 31, 31, 31, 32, 6, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 31, 42, 31, 31, 43, 44,
- 31, 45, 46, 47, 48, 49, 50, 31, 31, 31,
- 51, 52, 53, 54, 56, 56, 59, 59, 59, 59,
- 62, 66, 77, 57, 57, 85, 86, 78, 58, 58,
- 70, 71, 71, 71, 119, 79, 98, 72, 67, 73,
- 74, 74, 74, 87, 88, 99, 75, 89, 90, 80,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 32,
+ 32, 32, 32, 32, 33, 6, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 32, 43, 32, 32, 44,
+ 45, 32, 46, 47, 48, 49, 50, 51, 32, 32,
+ 32, 52, 53, 54, 55, 57, 57, 60, 60, 60,
+ 60, 63, 67, 78, 58, 58, 86, 87, 79, 59,
+ 59, 71, 72, 72, 72, 171, 80, 63, 73, 68,
+ 74, 75, 75, 75, 88, 89, 81, 76, 82, 82,
- 63, 81, 81, 81, 74, 80, 92, 74, 74, 74,
- 74, 96, 122, 100, 101, 102, 82, 123, 93, 106,
- 113, 120, 83, 103, 97, 107, 108, 59, 59, 114,
- 62, 115, 127, 127, 127, 80, 168, 71, 71, 71,
- 71, 82, 80, 137, 71, 71, 71, 71, 138, 138,
- 122, 222, 130, 128, 80, 123, 74, 74, 74, 74,
- 63, 80, 221, 74, 74, 74, 74, 134, 134, 134,
- 134, 130, 129, 164, 138, 138, 80, 130, 81, 81,
- 81, 74, 165, 165, 165, 163, 134, 134, 134, 134,
- 172, 173, 220, 219, 166, 166, 130, 133, 136, 133,
+ 82, 75, 64, 81, 95, 75, 75, 75, 75, 90,
+ 91, 92, 92, 93, 83, 60, 60, 96, 64, 140,
+ 84, 92, 92, 93, 92, 92, 93, 92, 92, 93,
+ 92, 92, 93, 125, 92, 92, 93, 122, 126, 83,
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 92,
+ 92, 93, 92, 92, 93, 92, 92, 93, 92, 92,
+ 93, 92, 92, 93, 99, 92, 92, 93, 92, 92,
+ 93, 101, 141, 141, 97, 123, 98, 100, 141, 141,
+ 102, 103, 104, 105, 92, 92, 93, 125, 109, 113,
+ 107, 106, 126, 108, 110, 111, 130, 130, 130, 115,
- 169, 218, 134, 134, 134, 134, 217, 216, 169, 215,
- 133, 136, 133, 135, 136, 134, 134, 134, 134, 174,
- 169, 189, 214, 175, 190, 213, 135, 136, 169, 206,
- 165, 165, 165, 166, 166, 192, 212, 192, 211, 207,
- 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
- 193, 193, 55, 55, 55, 55, 55, 55, 61, 61,
- 61, 61, 61, 61, 68, 68, 210, 68, 68, 68,
- 91, 91, 121, 209, 121, 208, 121, 121, 126, 205,
- 126, 126, 126, 126, 132, 204, 132, 132, 132, 132,
- 167, 203, 167, 202, 201, 200, 199, 198, 197, 196,
+ 92, 92, 93, 195, 112, 166, 116, 92, 92, 93,
+ 114, 172, 121, 166, 144, 117, 143, 118, 131, 92,
+ 92, 93, 81, 119, 72, 72, 72, 72, 92, 92,
+ 93, 172, 172, 120, 92, 92, 93, 132, 142, 81,
+ 133, 72, 72, 72, 72, 81, 134, 75, 75, 75,
+ 75, 81, 172, 75, 75, 75, 75, 81, 128, 82,
+ 82, 82, 75, 133, 230, 133, 92, 92, 93, 145,
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 92,
+ 92, 93, 92, 92, 93, 127, 85, 146, 133, 136,
+ 77, 136, 70, 66, 137, 137, 137, 137, 92, 92,
- 195, 194, 191, 188, 187, 186, 185, 184, 183, 182,
- 181, 180, 179, 178, 177, 176, 171, 170, 163, 163,
- 162, 161, 160, 159, 158, 157, 156, 155, 153, 154,
- 153, 152, 151, 150, 149, 148, 147, 146, 145, 144,
- 143, 142, 141, 140, 139, 131, 125, 223, 124, 118,
- 117, 116, 112, 111, 110, 109, 105, 104, 95, 94,
- 84, 76, 69, 65, 64, 60, 223, 5, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
+ 93, 92, 92, 93, 166, 65, 138, 139, 92, 92,
+ 93, 61, 148, 169, 169, 147, 230, 150, 194, 138,
+ 139, 92, 92, 93, 92, 92, 93, 169, 169, 149,
+ 92, 92, 93, 92, 92, 93, 230, 151, 230, 92,
+ 92, 93, 92, 92, 93, 92, 92, 93, 92, 92,
+ 93, 230, 152, 153, 92, 92, 93, 92, 92, 93,
+ 167, 230, 154, 92, 92, 93, 92, 92, 93, 168,
+ 168, 168, 156, 230, 230, 155, 92, 92, 93, 230,
+ 158, 137, 137, 137, 137, 230, 230, 157, 156, 230,
+ 137, 137, 137, 137, 92, 92, 93, 230, 230, 159,
+
+ 230, 230, 162, 139, 230, 230, 161, 160, 92, 92,
+ 93, 164, 230, 230, 163, 230, 139, 136, 230, 136,
+ 230, 165, 137, 137, 137, 137, 92, 92, 93, 230,
+ 230, 173, 92, 92, 93, 92, 92, 93, 230, 230,
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 174,
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 92,
+ 92, 93, 92, 92, 93, 92, 92, 93, 230, 177,
+ 92, 92, 93, 178, 230, 230, 180, 179, 230, 175,
+ 176, 181, 92, 92, 93, 230, 230, 183, 92, 92,
+ 93, 182, 92, 92, 93, 92, 92, 93, 92, 92,
+
+ 93, 193, 230, 184, 230, 230, 185, 92, 92, 93,
+ 168, 168, 168, 196, 230, 196, 230, 230, 197, 197,
+ 197, 197, 230, 187, 230, 186, 92, 92, 93, 92,
+ 92, 93, 92, 92, 93, 230, 190, 92, 92, 93,
+ 92, 92, 93, 188, 230, 230, 189, 230, 191, 92,
+ 92, 93, 230, 230, 192, 92, 92, 93, 92, 92,
+ 93, 230, 92, 92, 93, 92, 92, 93, 92, 92,
+ 93, 230, 198, 92, 92, 93, 92, 92, 93, 92,
+ 92, 93, 200, 92, 92, 93, 199, 92, 92, 93,
+ 92, 92, 93, 230, 230, 201, 92, 92, 93, 230,
+
+ 230, 202, 204, 230, 203, 92, 92, 93, 92, 92,
+ 93, 197, 197, 197, 197, 197, 197, 197, 197, 230,
+ 205, 92, 92, 93, 230, 230, 209, 230, 206, 210,
+ 230, 207, 230, 208, 230, 230, 211, 92, 92, 93,
+ 92, 92, 93, 92, 92, 93, 212, 230, 230, 214,
+ 92, 92, 93, 230, 213, 92, 92, 93, 92, 92,
+ 93, 92, 92, 93, 92, 92, 93, 92, 92, 93,
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 230,
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 215,
+ 216, 92, 92, 93, 230, 230, 217, 92, 92, 93,
+
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 230,
+ 218, 230, 221, 92, 92, 93, 220, 230, 219, 230,
+ 223, 224, 92, 92, 93, 225, 230, 222, 92, 92,
+ 93, 92, 92, 93, 92, 92, 93, 92, 92, 93,
+ 92, 92, 93, 92, 92, 93, 92, 92, 93, 92,
+ 92, 93, 226, 230, 227, 92, 92, 93, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 228,
+ 230, 230, 230, 230, 229, 56, 56, 56, 56, 56,
+ 56, 62, 62, 62, 62, 62, 62, 69, 69, 69,
+
+ 230, 69, 69, 94, 94, 230, 230, 94, 124, 124,
+ 230, 124, 230, 124, 129, 129, 230, 129, 129, 129,
+ 135, 135, 230, 135, 135, 135, 170, 230, 170, 5,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223
} ;
-static const flex_int16_t yy_chk[433] =
+static const flex_int16_t yy_chk[896] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -540,48 +591,99 @@ static const flex_int16_t yy_chk[433] =
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, 3, 4, 7, 7, 8, 8,
- 10, 13, 22, 3, 4, 27, 27, 22, 3, 4,
- 18, 18, 18, 18, 52, 22, 38, 18, 13, 20,
- 20, 20, 20, 28, 28, 38, 20, 29, 29, 23,
+ 1, 1, 1, 1, 1, 3, 4, 7, 7, 8,
+ 8, 10, 13, 22, 3, 4, 27, 27, 22, 3,
+ 4, 18, 18, 18, 18, 240, 22, 62, 18, 13,
+ 20, 20, 20, 20, 28, 28, 23, 20, 23, 23,
+
+ 23, 23, 10, 24, 35, 24, 24, 24, 24, 29,
+ 29, 32, 32, 32, 23, 60, 60, 35, 62, 238,
+ 23, 36, 36, 36, 37, 37, 37, 38, 38, 38,
+ 39, 39, 39, 58, 40, 40, 40, 53, 58, 23,
+ 41, 41, 41, 42, 42, 42, 43, 43, 43, 44,
+ 44, 44, 45, 45, 45, 46, 46, 46, 47, 47,
+ 47, 48, 48, 48, 38, 49, 49, 49, 51, 51,
+ 51, 39, 84, 84, 36, 53, 37, 38, 141, 141,
+ 39, 40, 40, 40, 50, 50, 50, 125, 43, 45,
+ 41, 40, 125, 42, 43, 43, 70, 70, 70, 47,
+
+ 92, 92, 92, 170, 44, 132, 48, 94, 94, 94,
+ 46, 140, 51, 129, 96, 48, 91, 48, 70, 97,
+ 97, 97, 71, 49, 71, 71, 71, 71, 98, 98,
+ 98, 140, 171, 50, 99, 99, 99, 70, 86, 72,
+ 71, 72, 72, 72, 72, 74, 77, 74, 74, 74,
+ 74, 75, 171, 75, 75, 75, 75, 82, 69, 82,
+ 82, 82, 82, 74, 64, 71, 100, 100, 100, 98,
+ 101, 101, 101, 102, 102, 102, 103, 103, 103, 104,
+ 104, 104, 105, 105, 105, 59, 25, 99, 74, 81,
+ 21, 81, 14, 12, 81, 81, 81, 81, 106, 106,
+
+ 106, 107, 107, 107, 131, 11, 81, 81, 108, 108,
+ 108, 9, 101, 131, 131, 100, 5, 104, 169, 81,
+ 81, 109, 109, 109, 110, 110, 110, 169, 169, 103,
+ 111, 111, 111, 112, 112, 112, 0, 105, 0, 113,
+ 113, 113, 114, 114, 114, 115, 115, 115, 116, 116,
+ 116, 0, 106, 107, 117, 117, 117, 118, 118, 118,
+ 130, 0, 108, 119, 119, 119, 120, 120, 120, 130,
+ 130, 130, 111, 0, 0, 110, 121, 121, 121, 0,
+ 114, 136, 136, 136, 136, 0, 0, 112, 113, 0,
+ 137, 137, 137, 137, 145, 145, 145, 0, 0, 115,
+
+ 0, 0, 118, 137, 0, 0, 117, 116, 146, 146,
+ 146, 120, 0, 0, 119, 0, 137, 138, 0, 138,
+ 0, 121, 138, 138, 138, 138, 147, 147, 147, 0,
+ 0, 145, 148, 148, 148, 149, 149, 149, 0, 0,
+ 150, 150, 150, 151, 151, 151, 152, 152, 152, 146,
+ 153, 153, 153, 154, 154, 154, 155, 155, 155, 156,
+ 156, 156, 157, 157, 157, 158, 158, 158, 0, 148,
+ 159, 159, 159, 148, 0, 0, 149, 148, 0, 147,
+ 147, 150, 160, 160, 160, 0, 0, 152, 161, 161,
+ 161, 151, 162, 162, 162, 163, 163, 163, 164, 164,
- 10, 23, 23, 23, 23, 24, 34, 24, 24, 24,
- 24, 37, 57, 39, 39, 39, 23, 57, 34, 42,
- 47, 52, 23, 39, 37, 42, 42, 59, 59, 47,
- 61, 47, 69, 69, 69, 70, 233, 70, 70, 70,
- 70, 23, 71, 231, 71, 71, 71, 71, 83, 83,
- 122, 220, 70, 69, 73, 122, 73, 73, 73, 73,
- 61, 74, 218, 74, 74, 74, 74, 133, 133, 133,
- 133, 73, 69, 127, 138, 138, 81, 70, 81, 81,
- 81, 81, 127, 127, 127, 128, 134, 134, 134, 134,
- 144, 144, 210, 207, 128, 128, 73, 80, 134, 80,
+ 164, 168, 0, 154, 0, 0, 155, 165, 165, 165,
+ 168, 168, 168, 172, 0, 172, 0, 0, 172, 172,
+ 172, 172, 0, 160, 0, 159, 173, 173, 173, 174,
+ 174, 174, 175, 175, 175, 0, 163, 176, 176, 176,
+ 177, 177, 177, 161, 0, 0, 162, 0, 164, 178,
+ 178, 178, 0, 0, 165, 179, 179, 179, 180, 180,
+ 180, 0, 181, 181, 181, 182, 182, 182, 183, 183,
+ 183, 0, 173, 184, 184, 184, 185, 185, 185, 186,
+ 186, 186, 176, 187, 187, 187, 175, 188, 188, 188,
+ 189, 189, 189, 0, 0, 177, 190, 190, 190, 0,
- 137, 206, 80, 80, 80, 80, 205, 204, 168, 203,
- 135, 134, 135, 80, 80, 135, 135, 135, 135, 145,
- 137, 165, 202, 145, 166, 201, 80, 80, 168, 186,
- 165, 165, 165, 166, 166, 169, 200, 169, 198, 186,
- 169, 169, 169, 169, 192, 192, 192, 192, 193, 193,
- 193, 193, 224, 224, 224, 224, 224, 224, 225, 225,
- 225, 225, 225, 225, 226, 226, 196, 226, 226, 226,
- 227, 227, 228, 188, 228, 187, 228, 228, 229, 185,
- 229, 229, 229, 229, 230, 184, 230, 230, 230, 230,
- 232, 183, 232, 182, 181, 179, 177, 175, 174, 173,
+ 0, 178, 181, 0, 179, 191, 191, 191, 192, 192,
+ 192, 196, 196, 196, 196, 197, 197, 197, 197, 0,
+ 183, 198, 198, 198, 0, 0, 188, 0, 185, 189,
+ 0, 186, 0, 187, 0, 0, 190, 199, 199, 199,
+ 200, 200, 200, 201, 201, 201, 190, 0, 0, 192,
+ 202, 202, 202, 0, 191, 203, 203, 203, 204, 204,
+ 204, 205, 205, 205, 206, 206, 206, 207, 207, 207,
+ 208, 208, 208, 209, 209, 209, 210, 210, 210, 0,
+ 211, 211, 211, 212, 212, 212, 213, 213, 213, 200,
+ 201, 214, 214, 214, 0, 0, 203, 215, 215, 215,
- 172, 170, 167, 162, 161, 160, 159, 158, 157, 156,
- 152, 151, 149, 148, 147, 146, 143, 142, 129, 126,
- 118, 117, 116, 115, 114, 113, 112, 111, 110, 109,
- 108, 107, 105, 104, 103, 102, 101, 100, 98, 97,
- 96, 95, 93, 90, 85, 76, 68, 63, 58, 50,
- 49, 48, 46, 45, 44, 43, 41, 40, 36, 35,
- 25, 21, 14, 12, 11, 9, 5, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
+ 216, 216, 216, 217, 217, 217, 218, 218, 218, 0,
+ 205, 0, 208, 219, 219, 219, 207, 0, 206, 0,
+ 210, 211, 220, 220, 220, 212, 0, 209, 221, 221,
+ 221, 222, 222, 222, 223, 223, 223, 224, 224, 224,
+ 225, 225, 225, 226, 226, 226, 227, 227, 227, 228,
+ 228, 228, 215, 0, 216, 229, 229, 229, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 224,
+ 0, 0, 0, 0, 226, 231, 231, 231, 231, 231,
+ 231, 232, 232, 232, 232, 232, 232, 233, 233, 233,
+
+ 0, 233, 233, 234, 234, 0, 0, 234, 235, 235,
+ 0, 235, 0, 235, 236, 236, 0, 236, 236, 236,
+ 237, 237, 0, 237, 237, 237, 239, 0, 239, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
+ 230, 230, 230, 230, 230
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223
} ;
/* The intent behind this definition is that it'll catch
@@ -619,9 +721,9 @@ static void update_yylloc(struct parser *parser, YYLTYPE *lloc, const char *text
}
#define YY_USER_ACTION update_yylloc(parser, yylloc, yytext);
-#line 623 "gen/gen_lexer.c"
+#line 725 "gen/gen_lexer.c"
-#line 625 "gen/gen_lexer.c"
+#line 727 "gen/gen_lexer.c"
#define INITIAL 0
#define SC_COMMENT 1
@@ -880,9 +982,9 @@ YY_DECL
}
{
-#line 48 "src/lexer.l"
+#line 49 "src/lexer.l"
-#line 886 "gen/gen_lexer.c"
+#line 988 "gen/gen_lexer.c"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -909,13 +1011,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 >= 224 )
+ if ( yy_current_state >= 231 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 368 );
+ while ( yy_base[yy_current_state] != 830 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -941,23 +1043,23 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 49 "src/lexer.l"
+#line 50 "src/lexer.l"
{/* skip line comments */}
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 51 "src/lexer.l"
+#line 52 "src/lexer.l"
{BEGIN(SC_COMMENT);}
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 53 "src/lexer.l"
+#line 54 "src/lexer.l"
{++parser->comment_nesting;}
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 54 "src/lexer.l"
+#line 55 "src/lexer.l"
{
if (parser->comment_nesting)
--parser->comment_nesting;
@@ -967,135 +1069,135 @@ YY_RULE_SETUP
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 61 "src/lexer.l"
+#line 62 "src/lexer.l"
{}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 62 "src/lexer.l"
+#line 63 "src/lexer.l"
{}
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 63 "src/lexer.l"
+#line 64 "src/lexer.l"
{}
YY_BREAK
case 8:
/* rule 8 can match eol */
YY_RULE_SETUP
-#line 64 "src/lexer.l"
+#line 65 "src/lexer.l"
{}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 67 "src/lexer.l"
+#line 68 "src/lexer.l"
{return SCOPE;}
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 68 "src/lexer.l"
+#line 69 "src/lexer.l"
{return LPAREN;}
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 69 "src/lexer.l"
+#line 70 "src/lexer.l"
{return RPAREN;}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 70 "src/lexer.l"
+#line 71 "src/lexer.l"
{return LBRACE;}
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 71 "src/lexer.l"
+#line 72 "src/lexer.l"
{return RBRACE;}
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 72 "src/lexer.l"
+#line 73 "src/lexer.l"
{return LBRACKET;}
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 73 "src/lexer.l"
+#line 74 "src/lexer.l"
{return RBRACKET;}
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 74 "src/lexer.l"
+#line 75 "src/lexer.l"
{return DOT;}
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 75 "src/lexer.l"
+#line 76 "src/lexer.l"
{return COMMA;}
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 76 "src/lexer.l"
+#line 77 "src/lexer.l"
{return SEMICOLON;}
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 77 "src/lexer.l"
+#line 78 "src/lexer.l"
{return COLON;}
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 78 "src/lexer.l"
+#line 79 "src/lexer.l"
{return BANG;}
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 79 "src/lexer.l"
+#line 80 "src/lexer.l"
{return PASTE;}
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 80 "src/lexer.l"
+#line 81 "src/lexer.l"
{return AT;}
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 82 "src/lexer.l"
+#line 83 "src/lexer.l"
{return PLUS;}
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 83 "src/lexer.l"
+#line 84 "src/lexer.l"
{return MINUS;}
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 84 "src/lexer.l"
+#line 85 "src/lexer.l"
{return STAR;}
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 85 "src/lexer.l"
+#line 86 "src/lexer.l"
{return DIV;}
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 86 "src/lexer.l"
+#line 87 "src/lexer.l"
{return REM;}
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 87 "src/lexer.l"
+#line 88 "src/lexer.l"
{return XOR;}
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 88 "src/lexer.l"
+#line 89 "src/lexer.l"
{return POW;}
YY_BREAK
case 30:
/* rule 30 can match eol */
YY_RULE_SETUP
-#line 90 "src/lexer.l"
+#line 91 "src/lexer.l"
{
/* regular character constant, 'a' */
yylval->integer = yytext[1];
@@ -1104,7 +1206,7 @@ YY_RULE_SETUP
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 96 "src/lexer.l"
+#line 97 "src/lexer.l"
{
/* hex character constant, '\xef' */
/* handling is slightly different from C, here it's more or less just
@@ -1115,7 +1217,7 @@ YY_RULE_SETUP
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 104 "src/lexer.l"
+#line 105 "src/lexer.l"
{
/* octal character constant, '\033' */
yylval->integer = strtoll(yytext + 2, NULL, 8);
@@ -1124,7 +1226,7 @@ YY_RULE_SETUP
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 110 "src/lexer.l"
+#line 111 "src/lexer.l"
{
/* binary character constant, '\b101' */
yylval->integer = strtoll(yytext + 3, NULL, 2);
@@ -1133,7 +1235,7 @@ YY_RULE_SETUP
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 116 "src/lexer.l"
+#line 117 "src/lexer.l"
{
/* escaped character constant */
yylval->integer = match_escape(yytext[2]);
@@ -1142,273 +1244,283 @@ YY_RULE_SETUP
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 122 "src/lexer.l"
-{return SQUOTE;}
+#line 123 "src/lexer.l"
+{return QUESTION;}
YY_BREAK
case 36:
YY_RULE_SETUP
#line 124 "src/lexer.l"
-{return AND;}
+{return SQUOTE;}
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 125 "src/lexer.l"
-{return LAND;}
+#line 126 "src/lexer.l"
+{return AND;}
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 126 "src/lexer.l"
-{return OR;}
+#line 127 "src/lexer.l"
+{return LAND;}
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 127 "src/lexer.l"
-{return LOR;}
+#line 128 "src/lexer.l"
+{return OR;}
YY_BREAK
case 40:
YY_RULE_SETUP
#line 129 "src/lexer.l"
-{return TILDE;}
+{return LOR;}
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 130 "src/lexer.l"
-{return TO;}
+#line 131 "src/lexer.l"
+{return TILDE;}
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 131 "src/lexer.l"
-{return LT;}
+#line 132 "src/lexer.l"
+{return TO;}
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 132 "src/lexer.l"
-{return GT;}
+#line 133 "src/lexer.l"
+{return LT;}
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 133 "src/lexer.l"
-{return LE;}
+#line 134 "src/lexer.l"
+{return GT;}
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 134 "src/lexer.l"
-{return GE;}
+#line 135 "src/lexer.l"
+{return LE;}
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 135 "src/lexer.l"
-{return NE;}
+#line 136 "src/lexer.l"
+{return GE;}
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 136 "src/lexer.l"
-{return EQ;}
+#line 137 "src/lexer.l"
+{return NE;}
YY_BREAK
case 48:
YY_RULE_SETUP
#line 138 "src/lexer.l"
-{return FATARROW;}
+{return EQ;}
YY_BREAK
case 49:
YY_RULE_SETUP
#line 140 "src/lexer.l"
-{return LSHIFT;}
+{return FATARROW;}
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 141 "src/lexer.l"
-{return RSHIFT;}
+#line 142 "src/lexer.l"
+{return LSHIFT;}
YY_BREAK
case 51:
YY_RULE_SETUP
#line 143 "src/lexer.l"
-{return PLUSSELF;}
+{return RSHIFT;}
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 144 "src/lexer.l"
-{return MINUSSELF;}
+#line 145 "src/lexer.l"
+{return PLUSSELF;}
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 145 "src/lexer.l"
-{return DIVSELF;}
+#line 146 "src/lexer.l"
+{return MINUSSELF;}
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 146 "src/lexer.l"
-{return REMSELF;}
+#line 147 "src/lexer.l"
+{return DIVSELF;}
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 147 "src/lexer.l"
-{return XORSELF;}
+#line 148 "src/lexer.l"
+{return REMSELF;}
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 148 "src/lexer.l"
-{return POWSELF;}
+#line 149 "src/lexer.l"
+{return XORSELF;}
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 149 "src/lexer.l"
-{return ORSELF;}
+#line 150 "src/lexer.l"
+{return POWSELF;}
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 150 "src/lexer.l"
+#line 151 "src/lexer.l"
{return ORSELF;}
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 151 "src/lexer.l"
-{return LSHIFTSELF;}
+#line 152 "src/lexer.l"
+{return ORSELF;}
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 152 "src/lexer.l"
-{return RSHIFTSELF;}
+#line 153 "src/lexer.l"
+{return LSHIFTSELF;}
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 153 "src/lexer.l"
-{return ELLIPSIS;}
+#line 154 "src/lexer.l"
+{return RSHIFTSELF;}
YY_BREAK
case 62:
YY_RULE_SETUP
#line 155 "src/lexer.l"
-{return AS;}
+{return ELLIPSIS;}
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 156 "src/lexer.l"
-{return PUB;}
+#line 157 "src/lexer.l"
+{return AS;}
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 157 "src/lexer.l"
-{return DEFER;}
+#line 158 "src/lexer.l"
+{return PUB;}
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 158 "src/lexer.l"
-{return UNION;}
+#line 159 "src/lexer.l"
+{return DEFER;}
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 159 "src/lexer.l"
-{return STRUCT;}
+#line 160 "src/lexer.l"
+{return UNION;}
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 160 "src/lexer.l"
-{return TYPEDEF;}
+#line 161 "src/lexer.l"
+{return STRUCT;}
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 161 "src/lexer.l"
-{return IMPORT;}
+#line 162 "src/lexer.l"
+{return TYPEDEF;}
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 162 "src/lexer.l"
-{return TYPEOF;}
+#line 163 "src/lexer.l"
+{return IMPORT;}
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 163 "src/lexer.l"
-{return SIZEOF;}
+#line 164 "src/lexer.l"
+{return TYPEOF;}
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 164 "src/lexer.l"
-{return EMBED;}
+#line 165 "src/lexer.l"
+{return SIZEOF;}
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 165 "src/lexer.l"
-{return IF;}
+#line 166 "src/lexer.l"
+{return EMBED;}
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 166 "src/lexer.l"
-{return GOTO;}
+#line 167 "src/lexer.l"
+{return IF;}
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 167 "src/lexer.l"
-{return ELSE;}
+#line 168 "src/lexer.l"
+{return GOTO;}
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 168 "src/lexer.l"
-{return SWITCH;}
+#line 169 "src/lexer.l"
+{return ELSE;}
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 169 "src/lexer.l"
-{return CASE;}
+#line 170 "src/lexer.l"
+{return SWITCH;}
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 170 "src/lexer.l"
-{return FOR;}
+#line 171 "src/lexer.l"
+{return CASE;}
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 171 "src/lexer.l"
-{return WHILE;}
+#line 172 "src/lexer.l"
+{return FOR;}
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 172 "src/lexer.l"
-{return DO;}
+#line 173 "src/lexer.l"
+{return WHILE;}
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 173 "src/lexer.l"
-{return MUT;}
+#line 174 "src/lexer.l"
+{return DO;}
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 174 "src/lexer.l"
-{return CONST;}
+#line 175 "src/lexer.l"
+{return MUT;}
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 175 "src/lexer.l"
-{return RETURN;}
+#line 176 "src/lexer.l"
+{return CONST;}
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 176 "src/lexer.l"
-{return EXTERN;}
+#line 177 "src/lexer.l"
+{return RETURN;}
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 177 "src/lexer.l"
-{return ENUM;}
+#line 178 "src/lexer.l"
+{return EXTERN;}
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 178 "src/lexer.l"
-{return DEFINE;}
+#line 179 "src/lexer.l"
+{return ENUM;}
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 179 "src/lexer.l"
-{return BREAK;}
+#line 180 "src/lexer.l"
+{return DEFINE;}
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 180 "src/lexer.l"
-{return CONTINUE;}
+#line 181 "src/lexer.l"
+{return BREAK;}
YY_BREAK
case 88:
-/* rule 88 can match eol */
YY_RULE_SETUP
#line 182 "src/lexer.l"
+{return CONTINUE;}
+ YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 183 "src/lexer.l"
+{return DEFAULT;}
+ YY_BREAK
+case 90:
+/* rule 90 can match eol */
+YY_RULE_SETUP
+#line 185 "src/lexer.l"
{
/* seems risky, I know, but letting the parser choose when to allocate a
* new string seems to help with syntax error cleanup */
@@ -1416,39 +1528,52 @@ YY_RULE_SETUP
return STRING;
}
YY_BREAK
-case 89:
+case 91:
YY_RULE_SETUP
-#line 189 "src/lexer.l"
+#line 192 "src/lexer.l"
{
yylval->integer = strtoll(yytext, 0, 0);
return INT;
}
YY_BREAK
-case 90:
+case 92:
YY_RULE_SETUP
-#line 194 "src/lexer.l"
+#line 197 "src/lexer.l"
{
yylval->dbl = strtod(yytext, 0);
return FLOAT;
}
YY_BREAK
-case 91:
+case 93:
YY_RULE_SETUP
-#line 199 "src/lexer.l"
+#line 202 "src/lexer.l"
{
yylval->str = yytext;
return ID;
}
YY_BREAK
-case 92:
-/* rule 92 can match eol */
+case 94:
+/* rule 94 can match eol */
+YY_RULE_SETUP
+#line 207 "src/lexer.l"
+{
+ /* strip trailing '!' */
+ char *s = yytext + strlen(yytext);
+ s[-1] = '\0';
+
+ yylval->str = yytext;
+ return APPLY;
+}
+ YY_BREAK
+case 95:
+/* rule 95 can match eol */
YY_RULE_SETUP
-#line 205 "src/lexer.l"
+#line 217 "src/lexer.l"
{/* skip whitespace */}
YY_BREAK
-case 93:
+case 96:
YY_RULE_SETUP
-#line 207 "src/lexer.l"
+#line 219 "src/lexer.l"
{
struct src_issue issue;
issue.level = SRC_ERROR;
@@ -1459,12 +1584,12 @@ YY_RULE_SETUP
parser->failed = true;
}
YY_BREAK
-case 94:
+case 97:
YY_RULE_SETUP
-#line 216 "src/lexer.l"
+#line 228 "src/lexer.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 1468 "gen/gen_lexer.c"
+#line 1593 "gen/gen_lexer.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(SC_COMMENT):
yyterminate();
@@ -1764,7 +1889,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 >= 224 )
+ if ( yy_current_state >= 231 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1793,11 +1918,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 >= 224 )
+ if ( yy_current_state >= 231 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 223);
+ yy_is_jam = (yy_current_state == 230);
(void)yyg;
return yy_is_jam ? 0 : yy_current_state;
@@ -2596,6 +2721,6 @@ void yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
-#line 216 "src/lexer.l"
+#line 228 "src/lexer.l"
diff --git a/gen/gen_lexer.h b/gen/gen_lexer.h
index 5d2c6d9..731a8c2 100644
--- a/gen/gen_lexer.h
+++ b/gen/gen_lexer.h
@@ -485,7 +485,7 @@ extern int yylex (yyscan_t yyscanner);
#undef yyTABLES_NAME
#endif
-#line 216 "src/lexer.l"
+#line 228 "src/lexer.l"
#line 492 "gen/gen_lexer.h"
diff --git a/gen/gen_parser.c b/gen/gen_parser.c
index 1657ddb..d923fb3 100644
--- a/gen/gen_parser.c
+++ b/gen/gen_parser.c
@@ -116,144 +116,151 @@ enum yysymbol_kind_t
YYSYMBOL_FLOAT = 4, /* FLOAT */
YYSYMBOL_STRING = 5, /* STRING */
YYSYMBOL_ID = 6, /* ID */
- YYSYMBOL_SQUOTE = 7, /* "'" */
- YYSYMBOL_TO = 8, /* "=" */
- YYSYMBOL_ELLIPSIS = 9, /* "..." */
- YYSYMBOL_SEMICOLON = 10, /* ";" */
- YYSYMBOL_COLON = 11, /* ":" */
- YYSYMBOL_BANG = 12, /* "!" */
- YYSYMBOL_TYPEOF = 13, /* "typeof" */
- YYSYMBOL_SIZEOF = 14, /* "sizeof" */
- YYSYMBOL_PASTE = 15, /* "##" */
- YYSYMBOL_STAR = 16, /* "*" */
- YYSYMBOL_DIV = 17, /* "/" */
- YYSYMBOL_REM = 18, /* "%" */
- YYSYMBOL_MINUS = 19, /* "-" */
- YYSYMBOL_PLUS = 20, /* "+" */
- YYSYMBOL_POW = 21, /* "^^" */
- YYSYMBOL_XOR = 22, /* "^" */
- YYSYMBOL_AND = 23, /* "&" */
- YYSYMBOL_OR = 24, /* "|" */
- YYSYMBOL_LAND = 25, /* "&&" */
- YYSYMBOL_LOR = 26, /* "||" */
- YYSYMBOL_TILDE = 27, /* "~" */
- YYSYMBOL_LT = 28, /* "<" */
- YYSYMBOL_GT = 29, /* ">" */
- YYSYMBOL_LE = 30, /* "<=" */
- YYSYMBOL_GE = 31, /* ">=" */
- YYSYMBOL_NE = 32, /* "!=" */
- YYSYMBOL_EQ = 33, /* "==" */
- YYSYMBOL_LSHIFT = 34, /* "<<" */
- YYSYMBOL_RSHIFT = 35, /* ">>" */
- YYSYMBOL_PLUSSELF = 36, /* "+=" */
- YYSYMBOL_MINUSSELF = 37, /* "-=" */
- YYSYMBOL_STARSELF = 38, /* "*=" */
- YYSYMBOL_DIVSELF = 39, /* "/=" */
- YYSYMBOL_REMSELF = 40, /* "%=" */
- YYSYMBOL_XORSELF = 41, /* "^=" */
- YYSYMBOL_POWSELF = 42, /* "^^=" */
- YYSYMBOL_ANDSELF = 43, /* "&=" */
- YYSYMBOL_ORSELF = 44, /* "|=" */
- YYSYMBOL_LSHIFTSELF = 45, /* "<<=" */
- YYSYMBOL_RSHIFTSELF = 46, /* ">>=" */
- YYSYMBOL_AT = 47, /* "@" */
- YYSYMBOL_COMMA = 48, /* "," */
- YYSYMBOL_PUB = 49, /* "pub" */
- YYSYMBOL_STRUCT = 50, /* "struct" */
- YYSYMBOL_UNION = 51, /* "union" */
- YYSYMBOL_TYPEDEF = 52, /* "typedef" */
- YYSYMBOL_IMPORT = 53, /* "import" */
- YYSYMBOL_DEFER = 54, /* "defer" */
- YYSYMBOL_GOTO = 55, /* "goto" */
- YYSYMBOL_EMBED = 56, /* "embed" */
- YYSYMBOL_IF = 57, /* "if" */
- YYSYMBOL_ELSE = 58, /* "else" */
- YYSYMBOL_BREAK = 59, /* "break" */
- YYSYMBOL_CONTINUE = 60, /* "continue" */
- YYSYMBOL_SWITCH = 61, /* "switch" */
- YYSYMBOL_CASE = 62, /* "case" */
- YYSYMBOL_FOR = 63, /* "for" */
- YYSYMBOL_WHILE = 64, /* "while" */
- YYSYMBOL_DO = 65, /* "do" */
- YYSYMBOL_MUT = 66, /* "mut" */
- YYSYMBOL_RETURN = 67, /* "return" */
- YYSYMBOL_CONST = 68, /* "const" */
- YYSYMBOL_EXTERN = 69, /* "extern" */
- YYSYMBOL_ENUM = 70, /* "enum" */
- YYSYMBOL_DEFINE = 71, /* "define" */
- YYSYMBOL_LPAREN = 72, /* "(" */
- YYSYMBOL_RPAREN = 73, /* ")" */
- YYSYMBOL_LBRACE = 74, /* "{" */
- YYSYMBOL_RBRACE = 75, /* "}" */
- YYSYMBOL_LBRACKET = 76, /* "[" */
- YYSYMBOL_RBRACKET = 77, /* "]" */
- YYSYMBOL_AS = 78, /* "as" */
- YYSYMBOL_DOT = 79, /* "." */
- YYSYMBOL_SCOPE = 80, /* "::" */
- YYSYMBOL_FATARROW = 81, /* "=>" */
- YYSYMBOL_YYACCEPT = 82, /* $accept */
- YYSYMBOL_id = 83, /* id */
- YYSYMBOL_var = 84, /* var */
- YYSYMBOL_embed = 85, /* embed */
- YYSYMBOL_import = 86, /* import */
- YYSYMBOL_assign = 87, /* assign */
- YYSYMBOL_binary_op = 88, /* binary_op */
- YYSYMBOL_unary_op = 89, /* unary_op */
- YYSYMBOL_arg = 90, /* arg */
- YYSYMBOL_arg_list = 91, /* arg_list */
- YYSYMBOL_param_decl = 92, /* param_decl */
- YYSYMBOL_decl_list = 93, /* decl_list */
- YYSYMBOL_call = 94, /* call */
- YYSYMBOL_defer = 95, /* defer */
- YYSYMBOL_expr = 96, /* expr */
- YYSYMBOL_while = 97, /* while */
- YYSYMBOL_do_while = 98, /* do_while */
- YYSYMBOL_goto = 99, /* goto */
- YYSYMBOL_statement = 100, /* statement */
- YYSYMBOL_statement_list = 101, /* statement_list */
- YYSYMBOL_body = 102, /* body */
- YYSYMBOL_macro_list = 103, /* macro_list */
- YYSYMBOL_macro = 104, /* macro */
- YYSYMBOL_expr_list = 105, /* expr_list */
- YYSYMBOL_struct_init = 106, /* struct_init */
- YYSYMBOL_struct_inits = 107, /* struct_inits */
- YYSYMBOL_struct_construct = 108, /* struct_construct */
- YYSYMBOL_init_expr = 109, /* init_expr */
- YYSYMBOL_cond = 110, /* cond */
- YYSYMBOL_expr_if = 111, /* expr_if */
- YYSYMBOL_if = 112, /* if */
- YYSYMBOL_for = 113, /* for */
- YYSYMBOL_case = 114, /* case */
- YYSYMBOL_case_list = 115, /* case_list */
- YYSYMBOL_switch = 116, /* switch */
- YYSYMBOL_const_for = 117, /* const_for */
- YYSYMBOL_const_if = 118, /* const_if */
- YYSYMBOL_const = 119, /* const */
- YYSYMBOL_func_sign = 120, /* func_sign */
- YYSYMBOL_variadic_sign = 121, /* variadic_sign */
- YYSYMBOL_type = 122, /* type */
- YYSYMBOL_var_decl = 123, /* var_decl */
- YYSYMBOL_var_init = 124, /* var_init */
- YYSYMBOL_proc = 125, /* proc */
- YYSYMBOL_lambda = 126, /* lambda */
- YYSYMBOL_struct_elem = 127, /* struct_elem */
- YYSYMBOL_struct_list = 128, /* struct_list */
- YYSYMBOL_union = 129, /* union */
- YYSYMBOL_generic = 130, /* generic */
- YYSYMBOL_generic_list = 131, /* generic_list */
- YYSYMBOL_struct = 132, /* struct */
- YYSYMBOL_template_elem = 133, /* template_elem */
- YYSYMBOL_template_list = 134, /* template_list */
- YYSYMBOL_type_list = 135, /* type_list */
- YYSYMBOL_type_alias = 136, /* type_alias */
- YYSYMBOL_type_template = 137, /* type_template */
- YYSYMBOL_enum_val = 138, /* enum_val */
- YYSYMBOL_enum_list = 139, /* enum_list */
- YYSYMBOL_enum = 140, /* enum */
- YYSYMBOL_top_if = 141, /* top_if */
- YYSYMBOL_top = 142, /* top */
- YYSYMBOL_unit = 143, /* unit */
- YYSYMBOL_input = 144 /* input */
+ YYSYMBOL_APPLY = 7, /* APPLY */
+ YYSYMBOL_QUESTION = 8, /* "?" */
+ YYSYMBOL_SQUOTE = 9, /* "'" */
+ YYSYMBOL_TO = 10, /* "=" */
+ YYSYMBOL_ELLIPSIS = 11, /* "..." */
+ YYSYMBOL_SEMICOLON = 12, /* ";" */
+ YYSYMBOL_COLON = 13, /* ":" */
+ YYSYMBOL_BANG = 14, /* "!" */
+ YYSYMBOL_TYPEOF = 15, /* "typeof" */
+ YYSYMBOL_SIZEOF = 16, /* "sizeof" */
+ YYSYMBOL_PASTE = 17, /* "##" */
+ YYSYMBOL_STAR = 18, /* "*" */
+ YYSYMBOL_DIV = 19, /* "/" */
+ YYSYMBOL_REM = 20, /* "%" */
+ YYSYMBOL_MINUS = 21, /* "-" */
+ YYSYMBOL_PLUS = 22, /* "+" */
+ YYSYMBOL_POW = 23, /* "^^" */
+ YYSYMBOL_XOR = 24, /* "^" */
+ YYSYMBOL_AND = 25, /* "&" */
+ YYSYMBOL_OR = 26, /* "|" */
+ YYSYMBOL_LAND = 27, /* "&&" */
+ YYSYMBOL_LOR = 28, /* "||" */
+ YYSYMBOL_TILDE = 29, /* "~" */
+ YYSYMBOL_LT = 30, /* "<" */
+ YYSYMBOL_GT = 31, /* ">" */
+ YYSYMBOL_LE = 32, /* "<=" */
+ YYSYMBOL_GE = 33, /* ">=" */
+ YYSYMBOL_NE = 34, /* "!=" */
+ YYSYMBOL_EQ = 35, /* "==" */
+ YYSYMBOL_LSHIFT = 36, /* "<<" */
+ YYSYMBOL_RSHIFT = 37, /* ">>" */
+ YYSYMBOL_PLUSSELF = 38, /* "+=" */
+ YYSYMBOL_MINUSSELF = 39, /* "-=" */
+ YYSYMBOL_STARSELF = 40, /* "*=" */
+ YYSYMBOL_DIVSELF = 41, /* "/=" */
+ YYSYMBOL_REMSELF = 42, /* "%=" */
+ YYSYMBOL_XORSELF = 43, /* "^=" */
+ YYSYMBOL_POWSELF = 44, /* "^^=" */
+ YYSYMBOL_ANDSELF = 45, /* "&=" */
+ YYSYMBOL_ORSELF = 46, /* "|=" */
+ YYSYMBOL_LSHIFTSELF = 47, /* "<<=" */
+ YYSYMBOL_RSHIFTSELF = 48, /* ">>=" */
+ YYSYMBOL_AT = 49, /* "@" */
+ YYSYMBOL_COMMA = 50, /* "," */
+ YYSYMBOL_PUB = 51, /* "pub" */
+ YYSYMBOL_STRUCT = 52, /* "struct" */
+ YYSYMBOL_UNION = 53, /* "union" */
+ YYSYMBOL_TYPEDEF = 54, /* "typedef" */
+ YYSYMBOL_IMPORT = 55, /* "import" */
+ YYSYMBOL_DEFER = 56, /* "defer" */
+ YYSYMBOL_GOTO = 57, /* "goto" */
+ YYSYMBOL_EMBED = 58, /* "embed" */
+ YYSYMBOL_IF = 59, /* "if" */
+ YYSYMBOL_ELSE = 60, /* "else" */
+ YYSYMBOL_BREAK = 61, /* "break" */
+ YYSYMBOL_CONTINUE = 62, /* "continue" */
+ YYSYMBOL_DEFAULT = 63, /* "default" */
+ YYSYMBOL_SWITCH = 64, /* "switch" */
+ YYSYMBOL_CASE = 65, /* "case" */
+ YYSYMBOL_FOR = 66, /* "for" */
+ YYSYMBOL_WHILE = 67, /* "while" */
+ YYSYMBOL_DO = 68, /* "do" */
+ YYSYMBOL_MUT = 69, /* "mut" */
+ YYSYMBOL_RETURN = 70, /* "return" */
+ YYSYMBOL_CONST = 71, /* "const" */
+ YYSYMBOL_EXTERN = 72, /* "extern" */
+ YYSYMBOL_ENUM = 73, /* "enum" */
+ YYSYMBOL_DEFINE = 74, /* "define" */
+ YYSYMBOL_LPAREN = 75, /* "(" */
+ YYSYMBOL_RPAREN = 76, /* ")" */
+ YYSYMBOL_LBRACE = 77, /* "{" */
+ YYSYMBOL_RBRACE = 78, /* "}" */
+ YYSYMBOL_LBRACKET = 79, /* "[" */
+ YYSYMBOL_RBRACKET = 80, /* "]" */
+ YYSYMBOL_AS = 81, /* "as" */
+ YYSYMBOL_DOT = 82, /* "." */
+ YYSYMBOL_SCOPE = 83, /* "::" */
+ YYSYMBOL_FATARROW = 84, /* "=>" */
+ YYSYMBOL_YYACCEPT = 85, /* $accept */
+ YYSYMBOL_id = 86, /* id */
+ YYSYMBOL_apply = 87, /* apply */
+ YYSYMBOL_var = 88, /* var */
+ YYSYMBOL_embed = 89, /* embed */
+ YYSYMBOL_import = 90, /* import */
+ YYSYMBOL_assign = 91, /* assign */
+ YYSYMBOL_binop = 92, /* binop */
+ YYSYMBOL_unop = 93, /* unop */
+ YYSYMBOL_arg = 94, /* arg */
+ YYSYMBOL_args = 95, /* args */
+ YYSYMBOL_param_decl = 96, /* param_decl */
+ YYSYMBOL_decls = 97, /* decls */
+ YYSYMBOL_defer = 98, /* defer */
+ YYSYMBOL_const_binop = 99, /* const_binop */
+ YYSYMBOL_const_unop = 100, /* const_unop */
+ YYSYMBOL_const_expr = 101, /* const_expr */
+ YYSYMBOL_expr = 102, /* expr */
+ YYSYMBOL_while = 103, /* while */
+ YYSYMBOL_do_while = 104, /* do_while */
+ YYSYMBOL_goto = 105, /* goto */
+ YYSYMBOL_statelet = 106, /* statelet */
+ YYSYMBOL_statement = 107, /* statement */
+ YYSYMBOL_statements = 108, /* statements */
+ YYSYMBOL_body = 109, /* body */
+ YYSYMBOL_references = 110, /* references */
+ YYSYMBOL_macro = 111, /* macro */
+ YYSYMBOL_exprs = 112, /* exprs */
+ YYSYMBOL_construct_arg = 113, /* construct_arg */
+ YYSYMBOL_construct_args = 114, /* construct_args */
+ YYSYMBOL_construct = 115, /* construct */
+ YYSYMBOL_if = 116, /* if */
+ YYSYMBOL_for = 117, /* for */
+ YYSYMBOL_case = 118, /* case */
+ YYSYMBOL_cases = 119, /* cases */
+ YYSYMBOL_switch = 120, /* switch */
+ YYSYMBOL_const_for = 121, /* const_for */
+ YYSYMBOL_const_if = 122, /* const_if */
+ YYSYMBOL_const = 123, /* const */
+ YYSYMBOL_simple_sign = 124, /* simple_sign */
+ YYSYMBOL_func_sign = 125, /* func_sign */
+ YYSYMBOL_type = 126, /* type */
+ YYSYMBOL_var_decl = 127, /* var_decl */
+ YYSYMBOL_var_init = 128, /* var_init */
+ YYSYMBOL_proc = 129, /* proc */
+ YYSYMBOL_lambda = 130, /* lambda */
+ YYSYMBOL_struct_elem = 131, /* struct_elem */
+ YYSYMBOL_members = 132, /* members */
+ YYSYMBOL_union = 133, /* union */
+ YYSYMBOL_generic = 134, /* generic */
+ YYSYMBOL_generics = 135, /* generics */
+ YYSYMBOL_struct = 136, /* struct */
+ YYSYMBOL_template_elem = 137, /* template_elem */
+ YYSYMBOL_template_elems = 138, /* template_elems */
+ YYSYMBOL_types = 139, /* types */
+ YYSYMBOL_alias = 140, /* alias */
+ YYSYMBOL_template = 141, /* template */
+ YYSYMBOL_enum_val = 142, /* enum_val */
+ YYSYMBOL_enums = 143, /* enums */
+ YYSYMBOL_enum = 144, /* enum */
+ YYSYMBOL_top_if = 145, /* top_if */
+ YYSYMBOL_top_var_decl = 146, /* top_var_decl */
+ YYSYMBOL_top_var_init = 147, /* top_var_init */
+ YYSYMBOL_top_var = 148, /* top_var */
+ YYSYMBOL_top = 149, /* top */
+ YYSYMBOL_unit = 150, /* unit */
+ YYSYMBOL_input = 151 /* input */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -582,21 +589,21 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 61
+#define YYFINAL 69
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2064
+#define YYLAST 2267
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 82
+#define YYNTOKENS 85
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 63
+#define YYNNTS 67
/* YYNRULES -- Number of rules. */
-#define YYNRULES 219
+#define YYNRULES 253
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 438
+#define YYNSTATES 501
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 336
+#define YYMAXUTOK 339
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -643,35 +650,39 @@ static const yytype_int8 yytranslate[] =
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 154, 154, 160, 161, 164, 167, 170, 171, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 198, 201, 202, 203, 204, 205, 206, 209, 210,
- 211, 212, 213, 216, 217, 218, 221, 222, 225, 227,
- 228, 229, 230, 234, 235, 238, 242, 243, 244, 245,
- 246, 247, 248, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 267, 270, 276, 278,
- 279, 280, 281, 282, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 317, 318, 321, 322, 325, 326, 329, 333,
- 340, 346, 347, 350, 351, 357, 358, 361, 364, 365,
- 366, 367, 370, 371, 375, 376, 379, 380, 381, 384,
- 387, 390, 391, 394, 397, 404, 408, 413, 421, 423,
- 427, 430, 432, 434, 436, 440, 441, 448, 449, 453,
- 456, 460, 464, 468, 471, 476, 480, 481, 484, 485,
- 489, 495, 499, 505, 508, 511, 512, 515, 518, 523,
- 524, 525, 528, 531, 538, 539, 540, 541, 544, 545,
- 548, 549, 552, 557, 560, 566, 567, 570, 571, 572,
- 575, 576, 582, 586, 590, 598, 599, 600, 601, 602,
- 603, 604, 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 617, 618, 633, 634, 637, 638
+ 0, 165, 165, 171, 177, 178, 181, 184, 187, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 214, 217, 218, 219, 220, 221, 222, 225, 226,
+ 227, 228, 229, 232, 233, 234, 237, 238, 241, 244,
+ 245, 246, 247, 250, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 274, 275, 276, 279, 280, 281, 282,
+ 283, 284, 288, 289, 290, 291, 292, 293, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 314, 315, 316, 319, 322,
+ 328, 331, 332, 333, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 368, 371, 372, 373, 376, 377, 380,
+ 381, 385, 389, 396, 402, 403, 406, 407, 413, 414,
+ 417, 420, 421, 422, 426, 429, 431, 436, 437, 440,
+ 444, 451, 455, 460, 468, 469, 472, 475, 476, 477,
+ 478, 481, 482, 489, 490, 494, 497, 501, 505, 508,
+ 513, 517, 518, 521, 522, 526, 532, 536, 542, 543,
+ 546, 549, 550, 553, 556, 561, 564, 565, 568, 571,
+ 578, 579, 580, 581, 584, 585, 588, 589, 592, 597,
+ 600, 606, 607, 610, 611, 612, 615, 616, 622, 626,
+ 630, 636, 640, 641, 644, 645, 646, 649, 650, 655,
+ 656, 657, 658, 659, 660, 661, 662, 663, 664, 665,
+ 666, 667, 668, 669, 670, 671, 672, 673, 677, 678,
+ 693, 694, 697, 698
};
#endif
@@ -688,29 +699,29 @@ static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
static const char *const yytname[] =
{
"\"end of file\"", "error", "\"invalid token\"", "INT", "FLOAT",
- "STRING", "ID", "\"'\"", "\"=\"", "\"...\"", "\";\"", "\":\"", "\"!\"",
- "\"typeof\"", "\"sizeof\"", "\"##\"", "\"*\"", "\"/\"", "\"%\"", "\"-\"",
- "\"+\"", "\"^^\"", "\"^\"", "\"&\"", "\"|\"", "\"&&\"", "\"||\"",
- "\"~\"", "\"<\"", "\">\"", "\"<=\"", "\">=\"", "\"!=\"", "\"==\"",
- "\"<<\"", "\">>\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"%=\"",
- "\"^=\"", "\"^^=\"", "\"&=\"", "\"|=\"", "\"<<=\"", "\">>=\"", "\"@\"",
- "\",\"", "\"pub\"", "\"struct\"", "\"union\"", "\"typedef\"",
+ "STRING", "ID", "APPLY", "\"?\"", "\"'\"", "\"=\"", "\"...\"", "\";\"",
+ "\":\"", "\"!\"", "\"typeof\"", "\"sizeof\"", "\"##\"", "\"*\"", "\"/\"",
+ "\"%\"", "\"-\"", "\"+\"", "\"^^\"", "\"^\"", "\"&\"", "\"|\"", "\"&&\"",
+ "\"||\"", "\"~\"", "\"<\"", "\">\"", "\"<=\"", "\">=\"", "\"!=\"",
+ "\"==\"", "\"<<\"", "\">>\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"",
+ "\"%=\"", "\"^=\"", "\"^^=\"", "\"&=\"", "\"|=\"", "\"<<=\"", "\">>=\"",
+ "\"@\"", "\",\"", "\"pub\"", "\"struct\"", "\"union\"", "\"typedef\"",
"\"import\"", "\"defer\"", "\"goto\"", "\"embed\"", "\"if\"", "\"else\"",
- "\"break\"", "\"continue\"", "\"switch\"", "\"case\"", "\"for\"",
- "\"while\"", "\"do\"", "\"mut\"", "\"return\"", "\"const\"",
+ "\"break\"", "\"continue\"", "\"default\"", "\"switch\"", "\"case\"",
+ "\"for\"", "\"while\"", "\"do\"", "\"mut\"", "\"return\"", "\"const\"",
"\"extern\"", "\"enum\"", "\"define\"", "\"(\"", "\")\"", "\"{\"",
"\"}\"", "\"[\"", "\"]\"", "\"as\"", "\".\"", "\"::\"", "\"=>\"",
- "$accept", "id", "var", "embed", "import", "assign", "binary_op",
- "unary_op", "arg", "arg_list", "param_decl", "decl_list", "call",
- "defer", "expr", "while", "do_while", "goto", "statement",
- "statement_list", "body", "macro_list", "macro", "expr_list",
- "struct_init", "struct_inits", "struct_construct", "init_expr", "cond",
- "expr_if", "if", "for", "case", "case_list", "switch", "const_for",
- "const_if", "const", "func_sign", "variadic_sign", "type", "var_decl",
- "var_init", "proc", "lambda", "struct_elem", "struct_list", "union",
- "generic", "generic_list", "struct", "template_elem", "template_list",
- "type_list", "type_alias", "type_template", "enum_val", "enum_list",
- "enum", "top_if", "top", "unit", "input", YY_NULLPTR
+ "$accept", "id", "apply", "var", "embed", "import", "assign", "binop",
+ "unop", "arg", "args", "param_decl", "decls", "defer", "const_binop",
+ "const_unop", "const_expr", "expr", "while", "do_while", "goto",
+ "statelet", "statement", "statements", "body", "references", "macro",
+ "exprs", "construct_arg", "construct_args", "construct", "if", "for",
+ "case", "cases", "switch", "const_for", "const_if", "const",
+ "simple_sign", "func_sign", "type", "var_decl", "var_init", "proc",
+ "lambda", "struct_elem", "members", "union", "generic", "generics",
+ "struct", "template_elem", "template_elems", "types", "alias",
+ "template", "enum_val", "enums", "enum", "top_if", "top_var_decl",
+ "top_var_init", "top_var", "top", "unit", "input", YY_NULLPTR
};
static const char *
@@ -720,12 +731,12 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-225)
+#define YYPACT_NINF (-284)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF (-220)
+#define YYTABLE_NINF (-254)
#define yytable_value_is_error(Yyn) \
0
@@ -734,50 +745,57 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 653, -225, -225, -225, 429, 27, 27, 27, 42, 3,
- 27, 27, 27, 246, 60, 64, -225, 100, -225, -225,
- -225, -225, 79, -225, -225, 214, -225, 113, 124, 134,
- -225, -225, -225, -225, 144, -225, -225, 99, 112, 149,
- -225, 1187, -225, 107, 71, 126, 49, 1187, 46, 65,
- 30, 524, -38, -225, 122, -225, -225, -225, 1053, -225,
- -225, -225, -225, -225, -225, 27, 27, 27, 27, 51,
- -225, -225, -225, -225, 1187, 27, 1187, 1187, 1187, 1187,
- 1187, -225, 127, 130, 1187, 27, 38, 92, -225, -225,
- -225, -225, -225, -225, 1280, -225, 30, -225, 38, 27,
- 22, -225, -225, 137, 1053, -225, 1053, -225, -225, 38,
- 25, 165, 31, -225, 173, 38, 1344, 38, 38, 823,
- -225, 1217, 604, 1985, 140, -225, -225, 38, 181, 157,
- 194, -225, 221, 159, 164, 182, -225, 170, 233, -225,
- 29, 186, 137, -225, 137, 137, 314, 1449, 137, 1187,
- 263, 81, 1408, 100, 196, 224, 197, -225, 975, 38,
- 1131, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
- 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
- 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
- 334, 38, 27, 97, 202, 269, 230, 204, 122, 55,
- -225, -225, 207, 38, 38, 38, 27, -225, 168, 38,
- -225, 38, 239, 208, -225, -225, -225, 27, 1217, 280,
- 283, 1187, 1085, 1187, 122, 1007, 103, -225, 70, 284,
- 288, 1472, -225, -225, 289, 747, 226, -225, -225, -225,
- -225, -225, -225, -225, 293, -225, -225, 1161, 1985, 122,
- 27, 256, 231, -225, 38, -225, 27, 234, 27, -225,
- 235, -225, -225, 295, -225, -225, -225, 1536, 237, -225,
- -225, 27, 107, 1187, -225, 220, 268, 238, -225, -225,
- -225, 1985, -225, 110, 110, 110, 314, 314, 712, 556,
- 1449, 1441, 1377, 1313, 913, 913, 913, 913, 837, 837,
- 332, 332, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985,
- 1985, 1985, 244, -225, -225, 27, 1187, 27, -225, -225,
- 27, 122, -225, -225, 240, -225, 250, -225, -225, 38,
- -225, -225, 122, -225, -225, 1600, 315, 1664, 260, -225,
- 316, 1187, 27, -225, -225, -225, -225, -225, -225, -225,
- -225, -225, -225, 254, 275, 328, 604, -225, -225, -225,
- 27, -225, 27, -225, -225, -225, -225, 122, -225, 1085,
- -225, 281, 266, 1985, -225, 270, -225, 38, -225, -225,
- 296, 291, 1187, -225, 1187, -225, 1664, 335, -225, -16,
- 1053, -225, 282, 297, -225, -225, 33, -225, 122, 272,
- 74, 1187, 291, 298, 1729, 1793, 300, 1187, -225, -225,
- -225, -225, -225, 334, -225, -225, -225, -225, -225, 1857,
- -225, -225, 1187, -225, 95, 1921, 122, 299, 899, 1664,
- -225, -225, 1187, -225, -225, -225, -225, -225
+ 614, -284, -284, -284, 137, 27, 27, 27, 19, 533,
+ 27, 27, 27, 775, -284, -284, -284, -284, -284, -284,
+ -284, -284, -284, 29, -284, -284, 523, -284, 53, -284,
+ -284, -284, -284, -284, -284, -284, -284, -284, 33, 54,
+ 350, -284, -284, -284, 533, 533, 533, 533, -284, -284,
+ -284, 2068, -48, 42, -21, -284, 28, 1352, -48, 400,
+ 574, 121, -17, -10, -284, 1, -284, 533, -284, -284,
+ 27, 27, 27, 27, 56, -284, -284, 45, -284, 1940,
+ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
+ 533, 533, 533, 533, 533, 533, 533, 533, 533, 815,
+ 121, -284, 326, 27, 36, 533, -284, -284, -284, -284,
+ 1352, 27, 1157, 1352, 1352, 1352, 1352, 39, 1352, 1352,
+ 1184, 27, 693, -4, 57, -284, -284, -284, -284, 2003,
+ -284, -284, -284, -284, -284, 533, -284, 533, -284, -284,
+ 326, 331, 89, 41, -284, 95, 771, 326, 999, -284,
+ 2150, 326, 99, 62, 822, -284, 138, 78, 84, 85,
+ -284, 665, 156, -284, 23, 96, -284, -284, -284, -284,
+ 45, 45, 2170, 1293, 1399, 330, 2210, 2190, 1204, 1204,
+ 1204, 1204, 2230, 2230, 180, 180, 97, -46, 100, 168,
+ 129, 106, 1, 143, 37, 1011, -7, -284, 801, -7,
+ -7, 232, 615, -7, 182, 1443, 1509, 372, 1575, 118,
+ 194, 130, 132, -284, 693, 1246, 1352, 1352, 1352, 1352,
+ 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
+ 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
+ 1352, 1352, 1352, 1352, 1352, 1352, 1273, 1352, 693, 27,
+ 2150, 2150, 160, 326, 326, -284, 326, 27, -284, 503,
+ 326, -284, 163, 157, -284, -284, 1352, 27, -284, -284,
+ 1379, 1352, 1, 1352, 67, -284, 259, -284, -284, -284,
+ 1906, -284, -284, -284, 226, 914, 161, -284, -284, -284,
+ -284, 194, -284, -284, -284, -284, -284, -284, 27, 165,
+ 27, -284, 166, -284, -284, 228, -284, -284, -284, 187,
+ 27, 1352, 27, -284, -284, 27, 27, 1, 771, 27,
+ 1906, 205, 183, 188, 198, 79, 612, 649, -284, -284,
+ 1352, -284, 80, -284, 1352, -284, 389, 213, 193, 1906,
+ -284, 1972, -24, -24, -24, 232, 232, 1478, 2037, 615,
+ 1875, 1611, 1544, 1743, 1743, 1743, 1743, 1677, 1677, 878,
+ 878, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
+ 1972, -284, 199, 1642, -284, -284, -284, -284, -284, -284,
+ 195, -284, 201, -284, 326, -284, 1906, -284, 272, 1443,
+ 219, 1906, 533, 27, -284, -284, -284, -284, -284, -284,
+ -284, 27, -284, 27, -284, -36, 209, 1906, -284, -284,
+ 212, -284, -284, 280, 801, -284, -284, -28, 278, 533,
+ 79, 214, 1352, 1352, 1906, -284, 1, -284, 1379, -284,
+ -284, -284, 326, -284, -284, 1352, -284, 1352, 2102, 282,
+ 223, 227, 815, -284, -284, 1, 1352, -284, -284, -284,
+ 1078, 2128, -284, -284, 1906, 1906, -284, -284, 221, 1708,
+ 1774, 244, 1352, -284, -284, 231, -284, 1906, -284, 1078,
+ -284, 1352, -284, -27, 1840, 1, -284, -284, 1443, -284,
+ -284, 1352, -284, -284, -284, 109, 1352, 234, 416, 1352,
+ 237, 326, 533, 1906, 533, -7, 693, 1090, 1809, 326,
+ 693
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -785,74 +803,81 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 215, 2, 195, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 200, 3, 4, 197,
- 199, 198, 0, 204, 196, 0, 218, 0, 0, 0,
- 209, 208, 207, 206, 0, 212, 205, 0, 0, 0,
- 6, 0, 201, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 147, 145, 0, 157, 213, 202, 0, 203,
- 217, 1, 214, 210, 211, 0, 0, 0, 0, 0,
- 182, 60, 61, 62, 0, 0, 0, 0, 0, 0,
- 0, 59, 0, 0, 0, 0, 0, 56, 74, 64,
- 67, 68, 65, 66, 0, 75, 0, 162, 0, 0,
- 0, 148, 150, 153, 0, 155, 0, 156, 144, 0,
- 147, 52, 0, 48, 51, 0, 0, 0, 0, 0,
- 161, 0, 0, 118, 120, 158, 119, 0, 171, 0,
- 0, 164, 0, 0, 0, 0, 184, 0, 0, 177,
- 179, 0, 41, 58, 39, 70, 38, 40, 42, 0,
- 0, 56, 0, 0, 0, 107, 0, 73, 0, 0,
+ 0, 249, 2, 248, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 236, 233, 230, 232, 231, 237,
+ 238, 229, 234, 227, 228, 235, 0, 252, 0, 244,
+ 243, 242, 241, 240, 245, 246, 239, 247, 0, 0,
+ 0, 7, 78, 79, 0, 0, 0, 0, 77, 80,
+ 81, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 173, 0, 171, 0, 223, 0, 251, 1,
+ 0, 0, 0, 0, 0, 208, 74, 73, 75, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 0, 0, 0, 0, 176, 85, 86, 87,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 185, 189, 0, 0, 0,
- 159, 160, 0, 0, 0, 0, 0, 141, 0, 0,
- 151, 0, 181, 0, 154, 101, 100, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 105, 56, 0,
- 0, 0, 91, 92, 0, 0, 0, 99, 94, 86,
- 89, 93, 90, 95, 0, 97, 98, 0, 122, 0,
- 0, 116, 0, 113, 0, 169, 0, 0, 166, 172,
- 0, 167, 174, 0, 176, 178, 183, 0, 0, 63,
- 69, 0, 0, 0, 54, 56, 47, 0, 45, 44,
- 72, 7, 8, 11, 12, 13, 10, 9, 15, 14,
- 16, 18, 17, 19, 32, 33, 34, 35, 36, 37,
- 20, 21, 22, 23, 24, 25, 26, 29, 27, 28,
- 30, 31, 0, 71, 57, 0, 0, 188, 191, 110,
- 0, 0, 143, 50, 0, 142, 0, 49, 152, 0,
- 149, 78, 0, 82, 83, 0, 0, 0, 0, 81,
- 0, 0, 0, 139, 138, 88, 85, 84, 79, 87,
- 102, 104, 96, 0, 0, 0, 0, 117, 121, 170,
- 0, 165, 0, 175, 55, 5, 106, 0, 43, 0,
- 53, 192, 0, 186, 187, 0, 108, 0, 140, 180,
- 126, 0, 0, 76, 0, 80, 0, 0, 123, 0,
- 0, 115, 0, 0, 163, 46, 0, 190, 0, 0,
- 0, 0, 132, 0, 0, 0, 135, 0, 124, 125,
- 114, 173, 168, 0, 194, 109, 146, 127, 128, 0,
- 131, 133, 0, 77, 0, 112, 0, 0, 0, 0,
- 136, 137, 0, 134, 193, 130, 129, 111
+ 0, 0, 0, 82, 0, 102, 89, 95, 96, 178,
+ 106, 104, 105, 103, 174, 0, 221, 0, 222, 170,
+ 0, 173, 52, 0, 48, 51, 0, 0, 0, 186,
+ 224, 0, 197, 0, 0, 190, 0, 0, 0, 0,
+ 210, 0, 0, 203, 205, 0, 76, 56, 57, 58,
+ 55, 54, 60, 59, 61, 63, 62, 64, 67, 68,
+ 69, 70, 71, 72, 65, 66, 0, 0, 0, 211,
+ 215, 0, 0, 140, 0, 0, 41, 84, 0, 39,
+ 98, 38, 40, 42, 0, 0, 0, 82, 0, 0,
+ 0, 0, 0, 101, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 225, 226, 0, 0, 0, 182, 0, 0, 167, 0,
+ 0, 179, 207, 0, 132, 131, 0, 0, 114, 115,
+ 0, 0, 0, 113, 0, 138, 82, 117, 116, 128,
+ 111, 122, 123, 118, 136, 0, 0, 130, 124, 120,
+ 121, 4, 5, 125, 126, 127, 129, 195, 0, 0,
+ 192, 198, 0, 193, 200, 0, 202, 204, 209, 218,
+ 0, 0, 214, 217, 143, 0, 0, 0, 0, 0,
+ 146, 149, 0, 0, 151, 0, 0, 0, 88, 107,
+ 0, 97, 0, 100, 0, 94, 82, 47, 0, 45,
+ 44, 8, 11, 12, 13, 10, 9, 15, 14, 16,
+ 18, 17, 19, 32, 33, 34, 35, 36, 37, 20,
+ 21, 22, 23, 24, 25, 26, 29, 27, 28, 30,
+ 31, 91, 0, 0, 99, 83, 169, 180, 181, 50,
+ 0, 168, 0, 49, 0, 175, 53, 110, 0, 0,
+ 0, 112, 0, 0, 165, 164, 119, 133, 134, 137,
+ 196, 0, 191, 0, 201, 0, 0, 212, 213, 139,
+ 0, 141, 177, 0, 0, 150, 6, 0, 0, 0,
+ 158, 0, 0, 0, 183, 189, 0, 43, 0, 93,
+ 90, 92, 0, 166, 206, 0, 108, 0, 0, 0,
+ 0, 0, 0, 220, 216, 0, 0, 148, 152, 153,
+ 0, 0, 157, 159, 184, 185, 188, 46, 0, 0,
+ 0, 161, 0, 199, 194, 0, 142, 147, 156, 0,
+ 172, 0, 109, 0, 145, 0, 219, 155, 0, 162,
+ 163, 0, 160, 154, 144, 0, 0, 173, 0, 0,
+ 173, 0, 0, 178, 0, 178, 0, 0, 0, 0,
+ 0
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -225, 0, -3, -225, 4, -225, -225, -225, 133, 6,
- -225, -66, -225, -225, 287, -225, -225, -225, -225, -216,
- -30, -84, 5, -56, -225, 24, 218, -43, 161, -224,
- -19, -225, -225, -20, -225, -225, -36, -225, -17, -225,
- 439, 427, -62, 385, -225, -225, -65, 23, -225, -46,
- 10, -225, 251, 66, 13, 14, -225, -120, 16, 1,
- -225, -23, -225
+ -284, 0, 222, -284, -284, 4, -284, -284, -284, 51,
+ -243, -284, -84, -284, -284, -284, 136, 528, -284, -284,
+ -284, -284, -284, -283, 88, -120, 11, -170, -284, -91,
+ -284, -92, -284, -284, -89, -284, -284, -144, -284, -38,
+ -284, 357, 445, 233, 335, -284, -284, -56, 32, -284,
+ -53, 14, -284, 179, -26, 17, 18, -284, -139, 21,
+ -44, -284, -284, 360, -284, 2, -284
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- 0, 87, 14, 88, 15, 89, 90, 91, 276, 277,
- 111, 112, 92, 93, 123, 232, 233, 234, 235, 236,
- 237, 156, 16, 426, 251, 252, 124, 278, 249, 126,
- 239, 240, 402, 403, 241, 343, 344, 242, 53, 54,
- 55, 17, 18, 19, 95, 132, 133, 20, 128, 129,
- 21, 140, 141, 213, 22, 23, 196, 197, 24, 42,
- 25, 26, 27
+ 0, 123, 124, 277, 125, 14, 126, 127, 128, 337,
+ 338, 142, 143, 279, 49, 50, 51, 280, 281, 282,
+ 283, 284, 285, 286, 287, 194, 15, 475, 321, 322,
+ 130, 131, 289, 420, 421, 132, 394, 395, 290, 64,
+ 65, 255, 155, 292, 16, 133, 156, 157, 17, 152,
+ 153, 18, 164, 165, 263, 19, 20, 190, 191, 21,
+ 22, 23, 24, 25, 26, 27, 28
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -860,528 +885,583 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 13, 28, 60, 135, 13, 37, 38, 39, 29, 30,
- 43, 44, 45, 52, 33, 125, 199, 34, 35, 350,
- 36, 134, 154, 353, 120, 13, 97, 32, 2, 101,
- 193, 2, 46, 2, 117, 2, 2, 46, 47, 52,
- 206, 121, 118, 47, 2, 46, 52, 40, 52, 52,
- 110, 47, 2, 46, 104, 2, 46, 2, 119, 47,
- 41, 200, 47, 201, 320, 127, 130, 127, 130, 137,
- 56, 2, 46, 106, 57, 143, 2, 46, 47, 253,
- 6, 345, 98, 47, 151, 155, 52, 2, 46, 59,
- 41, 203, 139, 204, 47, 198, 110, 117, 52, 195,
- 155, 51, 6, 108, 207, 118, 51, 413, 58, 52,
- 52, 109, 208, 61, 51, 52, 229, 52, 52, 228,
- 263, 96, 51, 230, 238, 51, 136, 52, 321, 243,
- 52, 218, 244, 245, 62, 246, 48, 52, 49, 323,
- 137, 51, 158, 327, 63, 99, 51, 48, 119, 49,
- 159, 52, 341, 158, 64, 2, 46, 51, 275, 52,
- 341, 159, 47, 139, 158, 409, 342, 312, 319, 119,
- 207, 65, 159, 66, 2, 46, 2, 46, 208, 96,
- 262, 47, 340, 47, 67, 154, 68, 366, 191, 192,
- 13, 52, 314, 361, 338, 372, 119, 374, 100, 149,
- 2, 46, 150, 52, 52, 110, 324, 47, 52, 110,
- 359, 52, 435, 205, -216, 1, 192, 331, 254, 354,
- 2, 209, 275, 69, 3, 51, 2, 46, 52, 256,
- 257, 258, 229, 47, 259, 228, 203, 260, 204, 230,
- 238, 325, 96, 264, 51, 243, 51, 151, 244, 245,
- 355, 246, 2, 46, 52, 367, 127, 261, 130, 47,
- 203, 266, 204, 4, 5, 6, 7, 8, 268, 270,
- 51, 155, 271, 275, 272, 52, 315, 316, 317, 318,
- 322, 330, 9, 10, 11, 12, 203, 329, 204, -216,
- 333, 376, 158, 334, 346, 392, 51, 393, 347, 349,
- 159, 351, 380, 352, 356, 363, 357, 383, 360, 362,
- 365, 370, 48, 253, 49, 195, 369, 195, 50, 371,
- 375, 377, 51, 378, 384, 382, 385, 388, 94, 52,
- 161, 162, 163, 389, 103, 1, 390, 394, 116, 396,
- 2, 397, 387, 398, 3, 416, 407, 410, 161, 162,
- 163, 164, 165, 401, 400, 336, 406, 411, 424, 408,
- 130, 142, 130, 144, 145, 146, 147, 148, 415, 275,
- 417, 152, 412, 421, 434, 395, 437, 52, 282, 332,
- 391, 418, 420, 4, 5, 6, 7, 8, 431, 31,
- 427, 265, 191, 192, 430, 379, 433, 414, 0, 436,
- 0, 0, 9, 10, 11, 12, 231, 0, 248, 0,
- 191, 192, 0, 13, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 229, 0, 0, 228, 0,
- 0, 0, 230, 238, 0, 2, 267, 0, 243, 0,
- 0, 244, 245, 0, 246, 0, 0, 281, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 114, 70, 5,
- 6, 7, 8, 0, 0, 102, 0, 105, 107, 113,
- 0, 0, 0, 131, 0, 131, 138, 0, 10, 11,
- 12, 0, 0, 0, 0, 248, 0, 0, 335, 0,
- 337, 153, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 231, 114, 0, 157, 0, 71, 72, 73,
- 2, 74, 0, 75, 152, 113, 76, 194, 77, 0,
- 0, 0, 0, 78, 0, 0, 0, 79, 202, 0,
- 0, 80, 0, 0, 210, 0, 212, 214, 0, 0,
- 147, 0, 0, 0, 0, 0, 255, 138, 0, 0,
- 0, 81, 161, 162, 163, 164, 165, 0, 82, 168,
- 83, 0, 0, 0, 0, 279, 0, 0, 0, 0,
- 178, 179, 0, 0, 0, 0, 84, 0, 280, 0,
- 85, 115, 86, 373, 0, 0, 0, 71, 72, 73,
- 2, 74, 0, 75, 0, 0, 76, 0, 77, 0,
- 0, 0, 0, 78, 0, 0, 0, 79, 386, 0,
- 313, 80, 114, 0, 191, 192, 114, 0, 0, 0,
- 0, 0, 105, 107, 113, 0, 0, 326, 113, 279,
- 328, 81, 0, -219, 1, 0, 0, 0, 82, 2,
- 83, 121, 0, 3, 0, 0, 0, 0, 0, 404,
- 0, 405, 0, 0, 153, 0, 84, 0, 122, 0,
- 85, 0, 86, 250, 0, 131, 0, 0, 419, 0,
- 0, 0, 0, 358, 425, 0, 0, 0, 0, 0,
- 368, 0, 4, 5, 6, 7, 8, 0, 0, 429,
- 0, 0, 0, 0, 0, 231, 0, 0, 0, 425,
- 0, 9, 10, 11, 12, 0, 0, 0, 161, 162,
- 163, 164, 165, 0, 167, 168, 169, 170, 171, 0,
- 172, 173, 174, 175, 176, 177, 178, 179, 215, 0,
- 71, 72, 73, 2, 74, 0, 75, 216, 0, 76,
- 0, 77, 0, 0, 0, 0, 78, 0, 212, 0,
- 79, 0, 0, 0, 80, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 131, 0, 131,
- 191, 192, 0, 0, 81, 0, 279, 5, 0, 7,
- 8, 82, 217, 83, 218, 0, 219, 220, 221, -103,
- 222, 223, 224, 0, 225, 226, 399, 11, 12, 84,
- 0, 119, -103, 85, 215, 86, 71, 72, 73, 2,
- 74, 0, 75, 216, 0, 76, 0, 77, 0, 0,
- 0, 0, 78, 0, 0, 0, 79, 0, 0, 0,
- 80, 0, 0, 161, 162, 163, 164, 165, 0, 167,
- 168, 169, 0, 0, 0, 172, 173, 174, 175, 0,
- 81, 178, 179, 5, 0, 7, 8, 82, 217, 83,
- 218, 0, 219, 220, 221, 0, 222, 223, 224, 0,
- 225, 226, 0, 11, 12, 84, 0, 119, 227, 85,
- 215, 86, 71, 72, 73, 2, 74, 0, 75, 216,
- 0, 76, 0, 77, 0, 191, 192, 0, 78, 0,
- 0, 0, 79, 0, 0, 0, 80, 0, 0, 161,
- 162, 163, 164, 165, 0, 167, 168, 169, 0, 0,
- 0, 0, 0, 0, 0, 0, 81, 178, 179, 5,
- 0, 7, 8, 82, 217, 83, 218, 0, 219, 220,
- 221, 0, 222, 223, 224, 0, 225, 226, 0, 11,
- 12, 84, 0, 119, 0, 85, 0, 86, 71, 72,
- 73, 2, 74, 0, 75, 0, 0, 76, 0, 77,
- 0, 191, 192, 0, 78, 0, 0, 0, 273, 0,
- 0, 0, 80, 0, 0, 0, 0, 0, 0, 0,
- 71, 72, 73, 2, 74, 0, 75, 339, 0, 76,
- 0, 77, 81, 0, 0, 0, 78, 0, 0, 82,
- 79, 83, 121, 0, 80, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 84, 274, 122,
- 0, 85, 0, 86, 81, 0, 71, 72, 73, 2,
- 74, 82, 75, 83, 121, 76, 0, 77, 0, 0,
- 0, 0, 78, 0, 0, 0, 79, 0, 0, 84,
- 80, 122, 0, 85, 0, 86, 0, 0, 71, 72,
- 73, 2, 74, 0, 75, 0, 0, 76, 0, 77,
- 81, 0, 0, 0, 78, 0, 0, 82, 273, 83,
- 121, 0, 80, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 84, 0, 122, 0, 85,
- 0, 86, 81, 0, 71, 72, 73, 2, 74, 82,
- 75, 83, 121, 76, 0, 77, 0, 0, 0, 0,
- 78, 0, 0, 0, 79, 0, 0, 84, 80, 122,
- 0, 85, 0, 86, 71, 72, 73, 2, 74, 0,
- 75, 0, 0, 76, 0, 77, 0, 0, 81, 0,
- 78, 0, 0, 0, 79, 82, 0, 83, 80, 0,
- 71, 72, 73, 2, 74, 0, 75, 0, 0, 76,
- 0, 77, 0, 84, 0, 122, 78, 85, 81, 86,
- 79, 0, 0, 0, 80, 82, 0, 83, 121, 0,
- 71, 72, 73, 2, 74, 0, 75, 0, 0, 76,
- 0, 77, 0, 84, 81, 0, 78, 85, 0, 86,
- 79, 82, 0, 83, 80, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
- 0, 0, 0, 85, 81, 86, 0, 0, 0, 0,
- 0, 82, 0, 83, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 160, 247,
- 0, 0, 0, 85, 0, 86, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 0, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 0, 186, 187, 188, 189, 0, 0, 161,
- 162, 163, 164, 165, 0, 167, 168, 169, 170, 0,
- 0, 172, 173, 174, 175, 176, 177, 178, 179, 0,
- 0, 0, 160, 0, 190, 0, 0, 0, 191, 192,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 0, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 0, 186, 187, 188,
- 189, 191, 192, 161, 162, 163, 164, 165, 0, 167,
- 168, 169, 0, 0, 0, 172, 173, 174, 175, 176,
- 177, 178, 179, 0, 0, 0, 160, 0, 0, 0,
- 0, 211, 191, 192, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 0, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 0, 186, 187, 188, 189, 191, 192, 161, 162, 163,
- 164, 165, 0, 167, 168, 161, 162, 163, 164, 165,
- 0, 0, 0, 0, 0, 178, 179, 0, 0, 0,
- 160, 269, 348, 178, 179, 0, 191, 192, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 0,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 0, 186, 187, 188, 189, 191,
- 192, 0, 0, 0, 0, 0, 0, 191, 192, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 160, 0, 0, 0, 0, 0,
- 191, 192, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 0, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 0, 186,
- 187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 160, 364,
- 0, 0, 0, 0, 191, 192, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 0, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 0, 186, 187, 188, 189, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 160, 0, 381, 0, 0, 0, 191, 192,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 0, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 0, 186, 187, 188,
- 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 160, 119, 422,
- 0, 0, 191, 192, 0, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 0, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 0, 186, 187, 188, 189, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 160, 0, 423, 0, 0, 0, 191, 192, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 0, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 0, 186, 187, 188, 189,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 160, 0, 0, 428, 0,
- 0, 191, 192, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 0, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 0,
- 186, 187, 188, 189, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
- 0, 0, 0, 0, 0, 191, 192, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 0, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 0, 186, 187, 188, 189, 0, 432,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 160, 0, 0, 0, 0, 0, 191,
- 192, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 0, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 0, 186, 187,
- 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 191, 192
+ 13, 212, 398, 372, 13, 38, 39, 40, 29, 48,
+ 52, 53, 54, 62, 101, 30, 187, 159, 33, 158,
+ 134, 34, 35, 9, 41, 36, 13, 100, 68, 2,
+ 258, 118, 392, 2, 2, 55, 32, 56, 259, 67,
+ 487, 442, 2, 57, 48, 48, 48, 48, 316, 148,
+ 148, 246, 257, 69, 104, 102, 62, 248, 249, 62,
+ 62, 141, 2, 80, 81, 82, 146, 48, 246, 147,
+ 151, 154, 151, 154, 161, 249, 6, 58, 148, 214,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 13,
+ 141, 186, 487, 189, 193, 48, 163, 105, 70, 6,
+ 71, 197, 192, 317, 204, 2, 55, 258, 485, 103,
+ 207, 193, 490, 305, 486, 259, 392, 2, 55, 72,
+ 485, 73, 215, 393, 160, 48, 486, 48, 299, 256,
+ 487, 487, 418, 2, 419, 260, 62, 487, 276, 298,
+ 300, 487, 278, 149, 487, 100, 301, 148, 58, 288,
+ 302, 487, 293, 303, 161, 294, 295, 468, 306, 296,
+ 58, 406, 379, 408, 308, 309, 383, 310, 311, 312,
+ 76, 77, 78, 79, 313, 457, 477, 323, 492, 5,
+ 6, 7, 8, 315, 329, 409, 163, 139, 80, 81,
+ 82, 83, 84, 150, 330, 140, 331, 62, 209, 10,
+ 11, 12, 332, 384, 490, 336, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 63, 376, 385, 397, 399,
+ 404, 195, 401, 403, 402, 400, 336, 405, 490, 375,
+ 217, 218, 219, 487, 487, 414, 141, 380, 417, 487,
+ 141, 415, 63, 428, 416, 2, 55, 387, 56, 429,
+ 336, 250, 396, 251, 57, 430, 62, 433, 63, 432,
+ 314, 63, 63, 63, 435, 276, 437, 444, 445, 278,
+ 446, 450, 453, 324, 426, 462, 288, 470, 151, 293,
+ 154, 463, 294, 295, 473, 464, 296, 246, 58, 476,
+ 189, 484, 189, 248, 249, 193, 410, 491, 62, 413,
+ 496, 388, 63, 447, 63, 449, 62, 62, 326, 480,
+ 327, 452, 2, 55, 336, 485, 487, 2, 55, 31,
+ 485, 486, 214, 307, 63, 440, 486, 441, 80, 81,
+ 82, 83, 84, 211, 86, 87, 2, 55, 434, 485,
+ 390, 443, 63, 63, 37, 486, 97, 98, 63, 63,
+ 66, 0, 0, 63, 0, 58, 63, 0, 2, 55,
+ 58, 56, 0, 63, 487, 0, 0, 57, 0, 0,
+ 0, 0, 48, 439, 0, 2, 55, 75, 485, 58,
+ 253, 154, 254, 154, 486, 411, 2, 55, 0, 56,
+ 135, 0, 0, 106, 491, 57, 136, 138, 144, 48,
+ 425, 58, 2, 55, 0, 488, 0, 74, 336, 63,
+ 0, 489, 487, 0, 0, 0, 63, 0, 58, 0,
+ 0, 326, 13, 327, 465, 0, 0, 0, 0, 58,
+ 276, 0, 0, 0, 278, 214, 0, 144, 253, 188,
+ 254, 288, 0, 0, 293, 58, 0, 294, 295, 276,
+ 63, 296, 214, 278, 0, 63, 63, 436, 63, 213,
+ 288, 63, 63, 293, 0, 487, 294, 295, 490, 0,
+ 296, 487, 48, 0, 48, 494, 490, 252, 63, 487,
+ 490, 0, 0, 261, 262, 448, 145, 0, 297, 2,
+ 55, 0, 485, 0, 456, 0, 0, 0, 486, 162,
+ 0, 0, 0, -250, 1, 0, 461, 0, 438, 2,
+ 0, 0, 0, 466, 0, 3, 42, 43, 0, 2,
+ 63, 0, 0, 0, 0, 145, 0, 44, 63, 63,
+ 0, 0, 58, 0, 45, 451, 0, 0, 63, 0,
+ 0, 479, 46, 482, 0, 210, 483, 0, 0, 0,
+ 0, 333, 0, 0, 4, 5, 6, 7, 8, 381,
+ 2, 55, 9, 56, 137, 129, 0, 0, 0, 57,
+ 0, 0, 0, 291, 0, 10, 11, 12, 0, 0,
+ 0, -250, 0, 0, 0, 374, 63, 0, 47, 162,
+ 377, 378, 0, 144, -253, 1, 382, 144, 2, 55,
+ 2, 56, 422, 58, 0, 0, 3, 57, 497, 0,
+ 498, 0, 0, 217, 218, 219, 220, 221, 196, 0,
+ 199, 200, 201, 202, 203, 0, 205, 206, 208, 0,
+ 0, 234, 235, 0, 63, 2, 55, 0, 56, 423,
+ 340, 58, 0, 0, 57, 4, 5, 6, 7, 8,
+ 0, 2, 55, 9, 485, 412, 0, 304, 0, 0,
+ 486, 0, 0, 377, 378, 0, 10, 11, 12, 0,
+ 246, 340, 0, 0, 0, 0, 248, 249, 58, 2,
+ 55, 145, 488, 0, 0, 145, 0, 63, 489, 0,
+ 63, 0, 0, 63, 58, 340, 0, 0, 63, 0,
+ 0, 63, 63, 0, 0, 0, 320, 0, 0, 0,
+ 291, 0, 0, 0, 253, 0, 254, 0, 0, 0,
+ 100, 262, 58, 339, 341, 342, 343, 344, 345, 346,
+ 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
+ 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 368, 369, 370, 339, 373, 0, 2, 55, 427,
+ 56, 2, 55, 0, 56, 0, 57, 0, 0, 458,
+ 57, 0, 0, 0, 386, 0, 0, 0, 339, 389,
+ 0, 391, 0, 0, 107, 108, 109, 2, 55, 0,
+ 110, 0, 111, 0, 0, 112, 1, 113, 0, 0,
+ 58, 2, 114, 0, 58, 0, 115, 3, 2, 55,
+ 116, 485, 0, 0, 0, 0, 0, 486, 0, 407,
+ 0, 0, 106, 0, 59, 106, 60, 0, 261, 0,
+ 61, 0, 0, 261, 0, 0, 412, 412, 424, 117,
+ 118, 0, 202, 0, 0, 119, 4, 5, 6, 7,
+ 8, 58, 0, 340, 9, 0, 120, 0, 0, 0,
+ 121, 0, 122, 319, 0, 0, 0, 10, 11, 12,
+ 0, 253, 0, 254, 0, 291, 217, 218, 219, 220,
+ 221, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 291, 264, 0, 107, 108, 109,
+ 2, 55, 0, 110, 0, 111, 265, 0, 112, 0,
+ 113, 0, 0, 0, 0, 114, 0, 0, 0, 115,
+ 0, 0, 320, 116, 0, 0, 0, 0, 0, 0,
+ 454, 455, 0, 246, 0, 0, 339, 0, 0, 248,
+ 249, 0, 0, 459, 0, 460, 5, 0, 7, 8,
+ 266, 267, 117, 118, 467, 268, 269, -135, 119, -135,
+ 270, 271, 272, 0, 273, 274, 0, 11, 12, 120,
+ 474, 148, -135, 121, 0, 122, 0, 0, 0, 478,
+ 264, 0, 107, 108, 109, 2, 55, 0, 110, 474,
+ 111, 265, 0, 112, 493, 113, 0, 495, 0, 0,
+ 114, 0, 0, 0, 115, 0, 0, 0, 116, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 0, 91, 92, 93, 94, 95, 96, 97, 98, 0,
+ 0, 5, 0, 7, 8, 266, 267, 117, 118, 0,
+ 268, 269, 0, 119, 0, 270, 271, 272, 0, 273,
+ 274, 0, 11, 12, 120, 0, 148, 275, 121, 264,
+ 122, 107, 108, 109, 2, 55, 0, 110, 0, 111,
+ 265, 318, 112, 0, 113, 0, 0, 0, 0, 114,
+ 0, 0, 0, 115, 0, 0, 0, 116, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 5, 0, 7, 8, 266, 267, 117, 118, 0, 268,
+ 269, 0, 119, 0, 270, 271, 272, 0, 273, 274,
+ 0, 11, 12, 120, 0, 148, 0, 121, 0, 122,
+ 107, 108, 109, 2, 55, 0, 110, 0, 111, 0,
+ 499, 112, 0, 113, 0, 0, 0, 0, 114, 0,
+ 0, 0, 115, 0, 0, 0, 116, 107, 108, 109,
+ 2, 55, 0, 110, 0, 111, 0, 0, 112, 0,
+ 113, 0, 0, 0, 0, 114, 0, 0, 0, 115,
+ 0, 0, 0, 116, 0, 117, 118, 0, 0, 0,
+ 0, 119, 80, 81, 82, 83, 84, 0, 86, 87,
+ 88, 0, 120, 0, 198, 0, 121, 0, 122, 0,
+ 97, 98, 117, 118, 0, 0, 0, 0, 119, 107,
+ 108, 109, 2, 55, 0, 110, 0, 111, 0, 120,
+ 112, 148, 113, 121, 0, 122, 0, 114, 0, 0,
+ 0, 334, 0, 0, 0, 116, 107, 108, 109, 2,
+ 55, 0, 110, 0, 111, 0, 0, 112, 0, 113,
+ 0, 0, 0, 0, 114, 0, 0, 0, 334, 0,
+ 0, 0, 116, 0, 117, 118, 0, 0, 0, 0,
+ 119, 80, 81, 82, 83, 84, 0, 0, 87, 0,
+ 0, 120, 335, 0, 0, 121, 0, 122, 0, 97,
+ 98, 117, 118, 0, 0, 0, 0, 119, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 120, 371,
+ 0, 0, 121, 0, 122, 107, 108, 109, 2, 55,
+ 0, 110, 0, 111, 0, 0, 112, 0, 113, 0,
+ 0, 0, 0, 114, 0, 0, 0, 115, 0, 0,
+ 0, 116, 107, 108, 109, 2, 55, 0, 110, 0,
+ 111, 0, 0, 112, 0, 113, 0, 0, 0, 0,
+ 114, 0, 0, 0, 334, 0, 0, 0, 116, 0,
+ 117, 118, 0, 0, 0, 0, 119, 80, 81, 82,
+ 83, 84, 0, 0, 0, 0, 0, 120, 0, 0,
+ 0, 121, 0, 122, 0, 97, 98, 117, 118, 0,
+ 0, 0, 0, 119, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 216, 120, 0, 0, 0, 121, 0,
+ 122, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 0, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 0, 242, 243,
+ 244, 245, 0, 0, 0, 0, 217, 218, 219, 220,
+ 221, 0, 223, 224, 225, 226, 227, 0, 228, 229,
+ 230, 231, 232, 233, 234, 235, 0, 0, 246, 216,
+ 148, 0, 247, 0, 248, 249, 0, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 0, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 246, 242, 243, 244, 245, 0, 248,
+ 249, 0, 217, 218, 219, 220, 221, 0, 223, 224,
+ 225, 226, 0, 0, 228, 229, 230, 231, 232, 233,
+ 234, 235, 0, 0, 246, 216, 325, 0, 247, 0,
+ 248, 249, 0, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 0, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 246,
+ 242, 243, 244, 245, 0, 248, 249, 0, 0, 217,
+ 218, 219, 220, 221, 0, 223, 224, 225, 0, 0,
+ 0, 228, 229, 230, 231, 232, 233, 234, 235, 0,
+ 246, 328, 216, 0, 247, 0, 248, 249, 0, 0,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 0, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 246, 242, 243, 244,
+ 245, 0, 248, 249, 0, 217, 218, 219, 220, 221,
+ 0, 223, 224, 225, 0, 0, 0, 228, 229, 230,
+ 231, 0, 0, 234, 235, 0, 0, 246, 216, 0,
+ 471, 247, 431, 248, 249, 0, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 0, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 246, 242, 243, 244, 245, 0, 248, 249,
+ 0, 217, 218, 219, 220, 221, 0, 223, 224, 225,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 234,
+ 235, 0, 0, 246, 216, 0, 472, 247, 0, 248,
+ 249, 0, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 0, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 246, 242,
+ 243, 244, 245, 0, 248, 249, 0, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 0, 91,
+ 92, 93, 94, 95, 96, 97, 98, 0, 0, 246,
+ 216, 0, 0, 247, 0, 248, 249, 0, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 0,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 0, 242, 243, 244, 245, 500,
+ 481, 0, 0, 217, 218, 219, 220, 221, 0, 223,
+ 224, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 234, 235, 0, 0, 246, 216, 0, 0, 247,
+ 0, 248, 249, 0, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 0, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 246, 242, 243, 244, 245, 0, 248, 249, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 0, 0,
+ 0, 246, 216, 0, 0, 247, 0, 248, 249, 0,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 0, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 166, 242, 243, 244,
+ 245, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 0, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 246, 242, 243,
+ 244, 245, 0, 248, 249, 217, 218, 219, 220, 221,
+ 0, 0, 224, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 234, 235, 0, 0, 0, 246, 0,
+ 0, 0, 247, 0, 248, 249, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 0, 91, 92,
+ 93, 94, 95, 96, 97, 98, 0, 0, 0, 0,
+ 0, 0, 246, 0, 0, 0, 0, 0, 248, 249,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 0, 91, 92, 93, 94, 95, 96, 97, 98,
+ 0, 469, 0, 0, 0, 99, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 0, 91, 92,
+ 93, 94, 95, 96, 97, 98, 0, 0, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 148,
+ 91, 92, 93, 94, 95, 96, 97, 98, 80, 81,
+ 82, 83, 84, 0, 86, 87, 88, 89, 90, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 80, 81,
+ 82, 83, 84, 0, 86, 87, 88, 89, 0, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 80, 81,
+ 82, 83, 84, 0, 86, 87, 88, 0, 0, 0,
+ 91, 92, 93, 94, 95, 96, 97, 98, 80, 81,
+ 82, 83, 84, 0, 86, 87, 88, 0, 0, 0,
+ 91, 92, 93, 94, 0, 0, 97, 98
};
static const yytype_int16 yycheck[] =
{
- 0, 4, 25, 68, 4, 5, 6, 7, 4, 4,
- 10, 11, 12, 13, 4, 58, 100, 4, 4, 235,
- 4, 67, 84, 247, 54, 25, 43, 4, 6, 46,
- 96, 6, 7, 6, 72, 6, 6, 7, 13, 39,
- 9, 57, 80, 13, 6, 7, 46, 5, 48, 49,
- 50, 13, 6, 7, 8, 6, 7, 6, 74, 13,
- 57, 104, 13, 106, 9, 65, 66, 67, 68, 69,
- 10, 6, 7, 8, 10, 75, 6, 7, 13, 122,
- 51, 11, 11, 13, 84, 85, 86, 6, 7, 10,
- 57, 66, 69, 68, 13, 73, 96, 72, 98, 99,
- 100, 76, 51, 73, 73, 80, 76, 74, 8, 109,
- 110, 81, 81, 0, 76, 115, 119, 117, 118, 119,
- 137, 72, 76, 119, 119, 76, 75, 127, 73, 119,
- 130, 57, 119, 119, 10, 119, 66, 137, 68, 205,
- 140, 76, 72, 209, 10, 74, 76, 66, 74, 68,
- 80, 151, 57, 72, 10, 6, 7, 76, 158, 159,
- 57, 80, 13, 140, 72, 389, 63, 190, 198, 74,
- 73, 72, 80, 74, 6, 7, 6, 7, 81, 72,
- 10, 13, 225, 13, 72, 247, 74, 271, 78, 79,
- 190, 191, 192, 258, 224, 315, 74, 317, 72, 72,
- 6, 7, 72, 203, 204, 205, 206, 13, 208, 209,
- 256, 211, 428, 48, 0, 1, 79, 217, 78, 249,
- 6, 48, 222, 74, 10, 76, 6, 7, 228, 48,
- 73, 10, 235, 13, 75, 235, 66, 73, 68, 235,
- 235, 73, 72, 10, 76, 235, 76, 247, 235, 235,
- 250, 235, 6, 7, 254, 272, 256, 75, 258, 13,
- 66, 75, 68, 49, 50, 51, 52, 53, 5, 73,
- 76, 271, 48, 273, 77, 275, 74, 8, 48, 75,
- 73, 73, 68, 69, 70, 71, 66, 48, 68, 75,
- 10, 321, 72, 10, 10, 360, 76, 362, 10, 10,
- 80, 75, 332, 10, 48, 10, 75, 337, 74, 74,
- 73, 73, 66, 356, 68, 315, 48, 317, 72, 75,
- 320, 81, 76, 73, 64, 10, 10, 73, 41, 329,
- 16, 17, 18, 58, 47, 1, 8, 367, 51, 58,
- 6, 75, 342, 73, 10, 73, 11, 390, 16, 17,
- 18, 19, 20, 62, 58, 222, 386, 75, 58, 389,
- 360, 74, 362, 76, 77, 78, 79, 80, 398, 369,
- 400, 84, 75, 75, 75, 369, 432, 377, 160, 218,
- 356, 400, 402, 49, 50, 51, 52, 53, 424, 4,
- 413, 140, 78, 79, 424, 329, 426, 396, -1, 429,
- -1, -1, 68, 69, 70, 71, 119, -1, 121, -1,
- 78, 79, -1, 413, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 428, -1, -1, 428, -1,
- -1, -1, 428, 428, -1, 6, 149, -1, 428, -1,
- -1, 428, 428, -1, 428, -1, -1, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 50, 39, 50,
- 51, 52, 53, -1, -1, 46, -1, 48, 49, 50,
- -1, -1, -1, 66, -1, 68, 69, -1, 69, 70,
- 71, -1, -1, -1, -1, 218, -1, -1, 221, -1,
- 223, 84, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 235, 96, -1, 86, -1, 3, 4, 5,
- 6, 7, -1, 9, 247, 96, 12, 98, 14, -1,
- -1, -1, -1, 19, -1, -1, -1, 23, 109, -1,
- -1, 27, -1, -1, 115, -1, 117, 118, -1, -1,
- 273, -1, -1, -1, -1, -1, 127, 140, -1, -1,
- -1, 47, 16, 17, 18, 19, 20, -1, 54, 23,
- 56, -1, -1, -1, -1, 158, -1, -1, -1, -1,
- 34, 35, -1, -1, -1, -1, 72, -1, 159, -1,
- 76, 77, 78, 316, -1, -1, -1, 3, 4, 5,
- 6, 7, -1, 9, -1, -1, 12, -1, 14, -1,
- -1, -1, -1, 19, -1, -1, -1, 23, 341, -1,
- 191, 27, 205, -1, 78, 79, 209, -1, -1, -1,
- -1, -1, 203, 204, 205, -1, -1, 208, 209, 222,
- 211, 47, -1, 0, 1, -1, -1, -1, 54, 6,
- 56, 57, -1, 10, -1, -1, -1, -1, -1, 382,
- -1, 384, -1, -1, 247, -1, 72, -1, 74, -1,
- 76, -1, 78, 79, -1, 258, -1, -1, 401, -1,
- -1, -1, -1, 254, 407, -1, -1, -1, -1, -1,
- 273, -1, 49, 50, 51, 52, 53, -1, -1, 422,
- -1, -1, -1, -1, -1, 428, -1, -1, -1, 432,
- -1, 68, 69, 70, 71, -1, -1, -1, 16, 17,
- 18, 19, 20, -1, 22, 23, 24, 25, 26, -1,
- 28, 29, 30, 31, 32, 33, 34, 35, 1, -1,
- 3, 4, 5, 6, 7, -1, 9, 10, -1, 12,
- -1, 14, -1, -1, -1, -1, 19, -1, 329, -1,
- 23, -1, -1, -1, 27, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 360, -1, 362,
- 78, 79, -1, -1, 47, -1, 369, 50, -1, 52,
- 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
- 63, 64, 65, -1, 67, 68, 377, 70, 71, 72,
- -1, 74, 75, 76, 1, 78, 3, 4, 5, 6,
- 7, -1, 9, 10, -1, 12, -1, 14, -1, -1,
- -1, -1, 19, -1, -1, -1, 23, -1, -1, -1,
- 27, -1, -1, 16, 17, 18, 19, 20, -1, 22,
- 23, 24, -1, -1, -1, 28, 29, 30, 31, -1,
- 47, 34, 35, 50, -1, 52, 53, 54, 55, 56,
- 57, -1, 59, 60, 61, -1, 63, 64, 65, -1,
- 67, 68, -1, 70, 71, 72, -1, 74, 75, 76,
- 1, 78, 3, 4, 5, 6, 7, -1, 9, 10,
- -1, 12, -1, 14, -1, 78, 79, -1, 19, -1,
- -1, -1, 23, -1, -1, -1, 27, -1, -1, 16,
- 17, 18, 19, 20, -1, 22, 23, 24, -1, -1,
- -1, -1, -1, -1, -1, -1, 47, 34, 35, 50,
- -1, 52, 53, 54, 55, 56, 57, -1, 59, 60,
- 61, -1, 63, 64, 65, -1, 67, 68, -1, 70,
- 71, 72, -1, 74, -1, 76, -1, 78, 3, 4,
- 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
- -1, 78, 79, -1, 19, -1, -1, -1, 23, -1,
- -1, -1, 27, -1, -1, -1, -1, -1, -1, -1,
- 3, 4, 5, 6, 7, -1, 9, 10, -1, 12,
- -1, 14, 47, -1, -1, -1, 19, -1, -1, 54,
- 23, 56, 57, -1, 27, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 72, 73, 74,
- -1, 76, -1, 78, 47, -1, 3, 4, 5, 6,
- 7, 54, 9, 56, 57, 12, -1, 14, -1, -1,
- -1, -1, 19, -1, -1, -1, 23, -1, -1, 72,
- 27, 74, -1, 76, -1, 78, -1, -1, 3, 4,
- 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
- 47, -1, -1, -1, 19, -1, -1, 54, 23, 56,
- 57, -1, 27, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 72, -1, 74, -1, 76,
- -1, 78, 47, -1, 3, 4, 5, 6, 7, 54,
- 9, 56, 57, 12, -1, 14, -1, -1, -1, -1,
- 19, -1, -1, -1, 23, -1, -1, 72, 27, 74,
- -1, 76, -1, 78, 3, 4, 5, 6, 7, -1,
- 9, -1, -1, 12, -1, 14, -1, -1, 47, -1,
- 19, -1, -1, -1, 23, 54, -1, 56, 27, -1,
- 3, 4, 5, 6, 7, -1, 9, -1, -1, 12,
- -1, 14, -1, 72, -1, 74, 19, 76, 47, 78,
- 23, -1, -1, -1, 27, 54, -1, 56, 57, -1,
- 3, 4, 5, 6, 7, -1, 9, -1, -1, 12,
- -1, 14, -1, 72, 47, -1, 19, 76, -1, 78,
- 23, 54, -1, 56, 27, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 72,
- -1, -1, -1, 76, 47, 78, -1, -1, -1, -1,
- -1, 54, -1, 56, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 8, 72,
- -1, -1, -1, 76, -1, 78, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, -1, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, -1, 43, 44, 45, 46, -1, -1, 16,
- 17, 18, 19, 20, -1, 22, 23, 24, 25, -1,
- -1, 28, 29, 30, 31, 32, 33, 34, 35, -1,
- -1, -1, 8, -1, 74, -1, -1, -1, 78, 79,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, -1, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, -1, 43, 44, 45,
- 46, 78, 79, 16, 17, 18, 19, 20, -1, 22,
- 23, 24, -1, -1, -1, 28, 29, 30, 31, 32,
- 33, 34, 35, -1, -1, -1, 8, -1, -1, -1,
- -1, 77, 78, 79, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, -1, 28, 29, 30, 31,
+ 0, 121, 285, 246, 4, 5, 6, 7, 4, 9,
+ 10, 11, 12, 13, 52, 4, 100, 73, 4, 72,
+ 58, 4, 4, 59, 5, 4, 26, 75, 26, 6,
+ 76, 59, 59, 6, 6, 7, 4, 9, 84, 10,
+ 40, 77, 6, 15, 44, 45, 46, 47, 11, 77,
+ 77, 75, 11, 0, 75, 13, 56, 81, 82, 59,
+ 60, 61, 6, 18, 19, 20, 83, 67, 75, 79,
+ 70, 71, 72, 73, 74, 82, 53, 49, 77, 83,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 99, 102, 103, 104, 105, 74, 79, 75, 53,
+ 77, 111, 76, 76, 75, 6, 7, 76, 9, 77,
+ 120, 121, 122, 161, 15, 84, 59, 6, 7, 75,
+ 9, 77, 75, 66, 78, 135, 15, 137, 76, 50,
+ 140, 141, 63, 6, 65, 50, 146, 147, 148, 50,
+ 12, 151, 148, 65, 154, 75, 78, 77, 49, 148,
+ 76, 161, 148, 78, 164, 148, 148, 450, 12, 148,
+ 49, 310, 256, 312, 78, 78, 260, 77, 10, 50,
+ 44, 45, 46, 47, 78, 428, 469, 5, 79, 52,
+ 53, 54, 55, 50, 76, 315, 164, 76, 18, 19,
+ 20, 21, 22, 67, 10, 84, 76, 207, 120, 72,
+ 73, 74, 80, 50, 214, 215, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 13, 76, 80, 12, 78,
+ 12, 105, 77, 77, 300, 298, 246, 60, 248, 249,
+ 18, 19, 20, 253, 254, 50, 256, 257, 60, 259,
+ 260, 78, 40, 50, 76, 6, 7, 267, 9, 76,
+ 270, 135, 13, 137, 15, 76, 276, 76, 56, 84,
+ 192, 59, 60, 61, 12, 285, 67, 78, 76, 285,
+ 10, 13, 78, 205, 332, 13, 285, 76, 298, 285,
+ 300, 78, 285, 285, 60, 78, 285, 75, 49, 78,
+ 310, 481, 312, 81, 82, 315, 316, 83, 318, 319,
+ 83, 270, 100, 414, 102, 417, 326, 327, 69, 473,
+ 71, 420, 6, 7, 334, 9, 336, 6, 7, 4,
+ 9, 15, 83, 164, 122, 401, 15, 403, 18, 19,
+ 20, 21, 22, 120, 24, 25, 6, 7, 384, 9,
+ 272, 405, 140, 141, 4, 15, 36, 37, 146, 147,
+ 13, -1, -1, 151, -1, 49, 154, -1, 6, 7,
+ 49, 9, -1, 161, 384, -1, -1, 15, -1, -1,
+ -1, -1, 392, 393, -1, 6, 7, 40, 9, 49,
+ 69, 401, 71, 403, 15, 317, 6, 7, -1, 9,
+ 10, -1, -1, 56, 83, 15, 59, 60, 61, 419,
+ 332, 49, 6, 7, -1, 9, -1, 77, 428, 207,
+ -1, 15, 432, -1, -1, -1, 214, -1, 49, -1,
+ -1, 69, 442, 71, 442, -1, -1, -1, -1, 49,
+ 450, -1, -1, -1, 450, 83, -1, 100, 69, 102,
+ 71, 450, -1, -1, 450, 49, -1, 450, 450, 469,
+ 248, 450, 83, 469, -1, 253, 254, 389, 256, 122,
+ 469, 259, 260, 469, -1, 485, 469, 469, 488, -1,
+ 469, 491, 492, -1, 494, 79, 496, 140, 276, 499,
+ 500, -1, -1, 146, 147, 417, 61, -1, 151, 6,
+ 7, -1, 9, -1, 426, -1, -1, -1, 15, 74,
+ -1, -1, -1, 0, 1, -1, 438, -1, 392, 6,
+ -1, -1, -1, 445, -1, 12, 3, 4, -1, 6,
+ 318, -1, -1, -1, -1, 100, -1, 14, 326, 327,
+ -1, -1, 49, -1, 21, 419, -1, -1, 336, -1,
+ -1, 473, 29, 475, -1, 120, 478, -1, -1, -1,
+ -1, 214, -1, -1, 51, 52, 53, 54, 55, 76,
+ 6, 7, 59, 9, 10, 57, -1, -1, -1, 15,
+ -1, -1, -1, 148, -1, 72, 73, 74, -1, -1,
+ -1, 78, -1, -1, -1, 248, 384, -1, 75, 164,
+ 253, 254, -1, 256, 0, 1, 259, 260, 6, 7,
+ 6, 9, 10, 49, -1, -1, 12, 15, 492, -1,
+ 494, -1, -1, 18, 19, 20, 21, 22, 110, -1,
+ 112, 113, 114, 115, 116, -1, 118, 119, 120, -1,
+ -1, 36, 37, -1, 432, 6, 7, -1, 9, 10,
+ 215, 49, -1, -1, 15, 51, 52, 53, 54, 55,
+ -1, 6, 7, 59, 9, 318, -1, 12, -1, -1,
+ 15, -1, -1, 326, 327, -1, 72, 73, 74, -1,
+ 75, 246, -1, -1, -1, -1, 81, 82, 49, 6,
+ 7, 256, 9, -1, -1, 260, -1, 485, 15, -1,
+ 488, -1, -1, 491, 49, 270, -1, -1, 496, -1,
+ -1, 499, 500, -1, -1, -1, 198, -1, -1, -1,
+ 285, -1, -1, -1, 69, -1, 71, -1, -1, -1,
+ 75, 384, 49, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, -1, 6, 7, 334,
+ 9, 6, 7, -1, 9, -1, 15, -1, -1, 432,
+ 15, -1, -1, -1, 266, -1, -1, -1, 270, 271,
+ -1, 273, -1, -1, 3, 4, 5, 6, 7, -1,
+ 9, -1, 11, -1, -1, 14, 1, 16, -1, -1,
+ 49, 6, 21, -1, 49, -1, 25, 12, 6, 7,
+ 29, 9, -1, -1, -1, -1, -1, 15, -1, 311,
+ -1, -1, 485, -1, 69, 488, 71, -1, 491, -1,
+ 75, -1, -1, 496, -1, -1, 499, 500, 330, 58,
+ 59, -1, 334, -1, -1, 64, 51, 52, 53, 54,
+ 55, 49, -1, 428, 59, -1, 75, -1, -1, -1,
+ 79, -1, 81, 82, -1, -1, -1, 72, 73, 74,
+ -1, 69, -1, 71, -1, 450, 18, 19, 20, 21,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 469, 1, -1, 3, 4, 5,
+ 6, 7, -1, 9, -1, 11, 12, -1, 14, -1,
+ 16, -1, -1, -1, -1, 21, -1, -1, -1, 25,
+ -1, -1, 414, 29, -1, -1, -1, -1, -1, -1,
+ 422, 423, -1, 75, -1, -1, 428, -1, -1, 81,
+ 82, -1, -1, 435, -1, 437, 52, -1, 54, 55,
+ 56, 57, 58, 59, 446, 61, 62, 63, 64, 65,
+ 66, 67, 68, -1, 70, 71, -1, 73, 74, 75,
+ 462, 77, 78, 79, -1, 81, -1, -1, -1, 471,
+ 1, -1, 3, 4, 5, 6, 7, -1, 9, 481,
+ 11, 12, -1, 14, 486, 16, -1, 489, -1, -1,
+ 21, -1, -1, -1, 25, -1, -1, -1, 29, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ -1, 30, 31, 32, 33, 34, 35, 36, 37, -1,
+ -1, 52, -1, 54, 55, 56, 57, 58, 59, -1,
+ 61, 62, -1, 64, -1, 66, 67, 68, -1, 70,
+ 71, -1, 73, 74, 75, -1, 77, 78, 79, 1,
+ 81, 3, 4, 5, 6, 7, -1, 9, -1, 11,
+ 12, 80, 14, -1, 16, -1, -1, -1, -1, 21,
+ -1, -1, -1, 25, -1, -1, -1, 29, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, -1,
+ 30, 31, 32, 33, 34, 35, 36, 37, -1, -1,
+ 52, -1, 54, 55, 56, 57, 58, 59, -1, 61,
+ 62, -1, 64, -1, 66, 67, 68, -1, 70, 71,
+ -1, 73, 74, 75, -1, 77, -1, 79, -1, 81,
+ 3, 4, 5, 6, 7, -1, 9, -1, 11, -1,
+ 80, 14, -1, 16, -1, -1, -1, -1, 21, -1,
+ -1, -1, 25, -1, -1, -1, 29, 3, 4, 5,
+ 6, 7, -1, 9, -1, 11, -1, -1, 14, -1,
+ 16, -1, -1, -1, -1, 21, -1, -1, -1, 25,
+ -1, -1, -1, 29, -1, 58, 59, -1, -1, -1,
+ -1, 64, 18, 19, 20, 21, 22, -1, 24, 25,
+ 26, -1, 75, -1, 77, -1, 79, -1, 81, -1,
+ 36, 37, 58, 59, -1, -1, -1, -1, 64, 3,
+ 4, 5, 6, 7, -1, 9, -1, 11, -1, 75,
+ 14, 77, 16, 79, -1, 81, -1, 21, -1, -1,
+ -1, 25, -1, -1, -1, 29, 3, 4, 5, 6,
+ 7, -1, 9, -1, 11, -1, -1, 14, -1, 16,
+ -1, -1, -1, -1, 21, -1, -1, -1, 25, -1,
+ -1, -1, 29, -1, 58, 59, -1, -1, -1, -1,
+ 64, 18, 19, 20, 21, 22, -1, -1, 25, -1,
+ -1, 75, 76, -1, -1, 79, -1, 81, -1, 36,
+ 37, 58, 59, -1, -1, -1, -1, 64, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
+ -1, -1, 79, -1, 81, 3, 4, 5, 6, 7,
+ -1, 9, -1, 11, -1, -1, 14, -1, 16, -1,
+ -1, -1, -1, 21, -1, -1, -1, 25, -1, -1,
+ -1, 29, 3, 4, 5, 6, 7, -1, 9, -1,
+ 11, -1, -1, 14, -1, 16, -1, -1, -1, -1,
+ 21, -1, -1, -1, 25, -1, -1, -1, 29, -1,
+ 58, 59, -1, -1, -1, -1, 64, 18, 19, 20,
+ 21, 22, -1, -1, -1, -1, -1, 75, -1, -1,
+ -1, 79, -1, 81, -1, 36, 37, 58, 59, -1,
+ -1, -1, -1, 64, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 10, 75, -1, -1, -1, 79, -1,
+ 81, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, -1, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, -1, 45, 46,
+ 47, 48, -1, -1, -1, -1, 18, 19, 20, 21,
+ 22, -1, 24, 25, 26, 27, 28, -1, 30, 31,
+ 32, 33, 34, 35, 36, 37, -1, -1, 75, 10,
+ 77, -1, 79, -1, 81, 82, -1, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, -1, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 75, 45, 46, 47, 48, -1, 81,
+ 82, -1, 18, 19, 20, 21, 22, -1, 24, 25,
+ 26, 27, -1, -1, 30, 31, 32, 33, 34, 35,
+ 36, 37, -1, -1, 75, 10, 77, -1, 79, -1,
+ 81, 82, -1, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, -1, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 75,
+ 45, 46, 47, 48, -1, 81, 82, -1, -1, 18,
+ 19, 20, 21, 22, -1, 24, 25, 26, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, 37, -1,
+ 75, 76, 10, -1, 79, -1, 81, 82, -1, -1,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 75, 45, 46, 47,
+ 48, -1, 81, 82, -1, 18, 19, 20, 21, 22,
+ -1, 24, 25, 26, -1, -1, -1, 30, 31, 32,
+ 33, -1, -1, 36, 37, -1, -1, 75, 10, -1,
+ 12, 79, 80, 81, 82, -1, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, -1, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- -1, 43, 44, 45, 46, 78, 79, 16, 17, 18,
- 19, 20, -1, 22, 23, 16, 17, 18, 19, 20,
- -1, -1, -1, -1, -1, 34, 35, -1, -1, -1,
- 8, 73, 10, 34, 35, -1, 78, 79, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, -1, 43, 44, 45, 46, 78,
- 79, -1, -1, -1, -1, -1, -1, 78, 79, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 8, -1, -1, -1, -1, -1,
- 78, 79, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, -1, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, -1, 43,
- 44, 45, 46, -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, 8, 73,
- -1, -1, -1, -1, 78, 79, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, -1, 28, 29,
+ 42, 43, 75, 45, 46, 47, 48, -1, 81, 82,
+ -1, 18, 19, 20, 21, 22, -1, 24, 25, 26,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 36,
+ 37, -1, -1, 75, 10, -1, 12, 79, -1, 81,
+ 82, -1, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, -1, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 75, 45,
+ 46, 47, 48, -1, 81, 82, -1, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, -1, 30,
+ 31, 32, 33, 34, 35, 36, 37, -1, -1, 75,
+ 10, -1, -1, 79, -1, 81, 82, -1, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, -1,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, -1, 43, 44, 45, 46, -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, 8, -1, 74, -1, -1, -1, 78, 79,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, -1, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, -1, 43, 44, 45,
- 46, -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, 8, 74, 10,
- -1, -1, 78, 79, -1, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, -1, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, -1, 43, 44, 45, 46, -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, 8, -1, 10, -1, -1, -1, 78, 79, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- -1, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, -1, 43, 44, 45, 46,
- -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, 8, -1, -1, 11, -1,
- -1, 78, 79, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, -1, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, -1,
- 43, 44, 45, 46, -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, 8,
- -1, -1, -1, -1, -1, 78, 79, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, -1, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, -1, 43, 44, 45, 46, -1, 48,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 8, -1, -1, -1, -1, -1, 78,
- 79, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, -1, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, -1, 43, 44,
- 45, 46, -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, 78, 79
+ 40, 41, 42, 43, -1, 45, 46, 47, 48, 80,
+ 50, -1, -1, 18, 19, 20, 21, 22, -1, 24,
+ 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 36, 37, -1, -1, 75, 10, -1, -1, 79,
+ -1, 81, 82, -1, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, -1, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 75, 45, 46, 47, 48, -1, 81, 82, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, -1,
+ 30, 31, 32, 33, 34, 35, 36, 37, -1, -1,
+ -1, 75, 10, -1, -1, 79, -1, 81, 82, -1,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 76, 45, 46, 47,
+ 48, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, -1, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 75, 45, 46,
+ 47, 48, -1, 81, 82, 18, 19, 20, 21, 22,
+ -1, -1, 25, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 36, 37, -1, -1, -1, 75, -1,
+ -1, -1, 79, -1, 81, 82, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, -1, 30, 31,
+ 32, 33, 34, 35, 36, 37, -1, -1, -1, -1,
+ -1, -1, 75, -1, -1, -1, -1, -1, 81, 82,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ -1, 13, -1, -1, -1, 77, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, -1, 30, 31,
+ 32, 33, 34, 35, 36, 37, -1, -1, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 77,
+ 30, 31, 32, 33, 34, 35, 36, 37, 18, 19,
+ 20, 21, 22, -1, 24, 25, 26, 27, 28, -1,
+ 30, 31, 32, 33, 34, 35, 36, 37, 18, 19,
+ 20, 21, 22, -1, 24, 25, 26, 27, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, 37, 18, 19,
+ 20, 21, 22, -1, 24, 25, 26, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, 37, 18, 19,
+ 20, 21, 22, -1, 24, 25, 26, -1, -1, -1,
+ 30, 31, 32, 33, -1, -1, 36, 37
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 1, 6, 10, 49, 50, 51, 52, 53, 68,
- 69, 70, 71, 83, 84, 86, 104, 123, 124, 125,
- 129, 132, 136, 137, 140, 142, 143, 144, 84, 86,
- 104, 125, 129, 132, 136, 137, 140, 83, 83, 83,
- 5, 57, 141, 83, 83, 83, 7, 13, 66, 68,
- 72, 76, 83, 120, 121, 122, 10, 10, 8, 10,
- 143, 0, 10, 10, 10, 72, 74, 72, 74, 74,
- 122, 3, 4, 5, 7, 9, 12, 14, 19, 23,
- 27, 47, 54, 56, 72, 76, 78, 83, 85, 87,
- 88, 89, 94, 95, 96, 126, 72, 120, 11, 74,
- 72, 120, 122, 96, 8, 122, 8, 122, 73, 81,
- 83, 92, 93, 122, 123, 77, 96, 72, 80, 74,
- 102, 57, 74, 96, 108, 109, 111, 83, 130, 131,
- 83, 123, 127, 128, 131, 128, 75, 83, 123, 129,
- 133, 134, 96, 83, 96, 96, 96, 96, 96, 72,
- 72, 83, 96, 123, 124, 83, 103, 122, 72, 80,
- 8, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 43, 44, 45, 46,
- 74, 78, 79, 93, 122, 83, 138, 139, 73, 103,
- 109, 109, 122, 66, 68, 48, 9, 73, 81, 48,
- 122, 77, 122, 135, 122, 1, 10, 55, 57, 59,
- 60, 61, 63, 64, 65, 67, 68, 75, 83, 84,
- 86, 96, 97, 98, 99, 100, 101, 102, 104, 112,
- 113, 116, 119, 132, 136, 137, 140, 72, 96, 110,
- 79, 106, 107, 109, 78, 122, 48, 73, 10, 75,
- 73, 75, 10, 120, 10, 134, 75, 96, 5, 73,
- 73, 48, 77, 23, 73, 83, 90, 91, 109, 123,
- 122, 96, 108, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 143, 122, 83, 74, 8, 48, 75, 102,
- 9, 73, 73, 93, 83, 73, 122, 93, 122, 48,
- 73, 83, 110, 10, 10, 96, 90, 96, 102, 10,
- 109, 57, 63, 117, 118, 11, 10, 10, 10, 10,
- 101, 75, 10, 111, 102, 83, 48, 75, 122, 131,
- 74, 128, 74, 10, 73, 73, 103, 120, 123, 48,
- 73, 75, 139, 96, 139, 83, 102, 81, 73, 135,
- 102, 74, 10, 102, 64, 10, 96, 83, 73, 58,
- 8, 107, 128, 128, 102, 91, 58, 75, 73, 122,
- 58, 62, 114, 115, 96, 96, 102, 11, 102, 111,
- 109, 75, 75, 74, 141, 102, 73, 102, 112, 96,
- 115, 75, 10, 10, 58, 96, 105, 143, 11, 96,
- 102, 118, 48, 102, 75, 101, 102, 105
+ 0, 1, 6, 12, 51, 52, 53, 54, 55, 59,
+ 72, 73, 74, 86, 90, 111, 129, 133, 136, 140,
+ 141, 144, 145, 146, 147, 148, 149, 150, 151, 90,
+ 111, 129, 133, 136, 140, 141, 144, 148, 86, 86,
+ 86, 5, 3, 4, 14, 21, 29, 75, 86, 99,
+ 100, 101, 86, 86, 86, 7, 9, 15, 49, 69,
+ 71, 75, 86, 87, 124, 125, 126, 10, 150, 0,
+ 75, 77, 75, 77, 77, 126, 101, 101, 101, 101,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 30, 31, 32, 33, 34, 35, 36, 37, 77,
+ 75, 124, 13, 77, 75, 79, 126, 3, 4, 5,
+ 9, 11, 14, 16, 21, 25, 29, 58, 59, 64,
+ 75, 79, 81, 86, 87, 89, 91, 92, 93, 102,
+ 115, 116, 120, 130, 124, 10, 126, 10, 126, 76,
+ 84, 86, 96, 97, 126, 127, 83, 79, 77, 109,
+ 101, 86, 134, 135, 86, 127, 131, 132, 135, 132,
+ 78, 86, 127, 133, 137, 138, 76, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 150, 97, 126, 86,
+ 142, 143, 76, 86, 110, 101, 102, 86, 77, 102,
+ 102, 102, 102, 102, 75, 102, 102, 86, 102, 109,
+ 127, 128, 110, 126, 83, 75, 10, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 45, 46, 47, 48, 75, 79, 81, 82,
+ 101, 101, 126, 69, 71, 126, 50, 11, 76, 84,
+ 50, 126, 126, 139, 1, 12, 56, 57, 61, 62,
+ 66, 67, 68, 70, 71, 78, 86, 88, 90, 98,
+ 102, 103, 104, 105, 106, 107, 108, 109, 111, 117,
+ 123, 127, 128, 136, 140, 141, 144, 126, 50, 76,
+ 12, 78, 76, 78, 12, 124, 12, 138, 78, 78,
+ 77, 10, 50, 78, 109, 50, 11, 76, 80, 82,
+ 102, 113, 114, 5, 109, 77, 69, 71, 76, 76,
+ 10, 76, 80, 126, 25, 76, 86, 94, 95, 102,
+ 127, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 76, 95, 102, 126, 86, 76, 126, 126, 97,
+ 86, 76, 126, 97, 50, 80, 102, 86, 94, 102,
+ 109, 102, 59, 66, 121, 122, 13, 12, 108, 78,
+ 135, 77, 132, 77, 12, 60, 143, 102, 143, 110,
+ 86, 109, 126, 86, 50, 78, 76, 60, 63, 65,
+ 118, 119, 10, 10, 102, 109, 124, 127, 50, 76,
+ 76, 80, 84, 76, 139, 12, 109, 67, 101, 86,
+ 132, 132, 77, 145, 78, 76, 10, 114, 109, 116,
+ 13, 101, 119, 78, 102, 102, 109, 95, 126, 102,
+ 102, 109, 13, 78, 78, 150, 109, 102, 108, 13,
+ 76, 12, 12, 60, 102, 112, 78, 108, 102, 109,
+ 122, 50, 109, 109, 112, 9, 15, 86, 9, 15,
+ 86, 83, 79, 102, 79, 102, 83, 101, 101, 80,
+ 80
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_uint8 yyr1[] =
{
- 0, 82, 83, 84, 84, 85, 86, 87, 87, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 89, 89,
- 89, 89, 89, 90, 90, 90, 91, 91, 92, 93,
- 93, 93, 93, 94, 94, 95, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 97, 98, 99, 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100, 100, 101, 101, 102, 102, 103, 103, 104, 104,
- 104, 105, 105, 106, 106, 107, 107, 108, 109, 109,
- 109, 109, 110, 110, 111, 111, 112, 112, 112, 113,
- 114, 115, 115, 116, 117, 118, 118, 118, 119, 119,
- 120, 120, 120, 120, 120, 121, 121, 122, 122, 122,
- 122, 122, 122, 122, 122, 123, 123, 123, 124, 124,
- 124, 125, 125, 126, 127, 128, 128, 129, 129, 130,
- 131, 131, 132, 132, 133, 133, 133, 133, 134, 134,
- 135, 135, 136, 137, 137, 138, 138, 139, 139, 139,
- 140, 140, 141, 141, 141, 142, 142, 142, 142, 142,
- 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
- 142, 142, 142, 142, 142, 142, 143, 143, 144, 144
+ 0, 85, 86, 87, 88, 88, 89, 90, 91, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 93, 93,
+ 93, 93, 93, 94, 94, 94, 95, 95, 96, 97,
+ 97, 97, 97, 98, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 100, 100, 100, 101, 101, 101, 101,
+ 101, 101, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 103, 104,
+ 105, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 107, 108, 108, 108, 109, 109, 110,
+ 110, 111, 111, 111, 112, 112, 113, 113, 114, 114,
+ 115, 116, 116, 116, 117, 118, 118, 119, 119, 120,
+ 121, 122, 122, 122, 123, 123, 124, 124, 124, 124,
+ 124, 125, 125, 126, 126, 126, 126, 126, 126, 126,
+ 127, 127, 127, 128, 128, 128, 129, 129, 130, 130,
+ 131, 132, 132, 133, 133, 134, 135, 135, 136, 136,
+ 137, 137, 137, 137, 138, 138, 139, 139, 140, 141,
+ 141, 142, 142, 143, 143, 143, 144, 144, 145, 145,
+ 145, 146, 146, 146, 147, 147, 147, 148, 148, 149,
+ 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+ 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
+ 150, 150, 151, 151
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
static const yytype_int8 yyr2[] =
{
- 0, 2, 1, 1, 1, 4, 2, 3, 3, 3,
+ 0, 2, 1, 1, 1, 1, 4, 2, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 2, 2,
2, 2, 2, 2, 1, 1, 3, 1, 1, 3,
- 3, 1, 1, 4, 3, 4, 1, 3, 2, 1,
- 1, 1, 1, 3, 1, 1, 1, 1, 1, 3,
- 2, 3, 3, 2, 1, 1, 3, 5, 2, 2,
- 3, 2, 2, 2, 2, 2, 1, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 2, 1, 3, 2, 3, 1, 6, 8,
- 5, 3, 1, 1, 4, 3, 1, 3, 1, 1,
- 1, 3, 1, 3, 5, 5, 3, 5, 5, 7,
- 4, 2, 1, 5, 5, 3, 5, 5, 2, 2,
- 5, 3, 4, 4, 2, 1, 7, 1, 2, 4,
- 2, 3, 4, 2, 3, 3, 3, 2, 3, 4,
- 4, 3, 3, 5, 1, 3, 2, 5, 8, 2,
- 3, 1, 5, 8, 2, 3, 2, 1, 2, 1,
- 3, 1, 3, 5, 4, 1, 3, 3, 2, 1,
- 7, 5, 5, 9, 7, 1, 1, 1, 1, 1,
- 1, 2, 2, 2, 1, 2, 2, 2, 2, 2,
- 3, 3, 2, 2, 3, 1, 1, 2, 1, 0
+ 3, 1, 1, 2, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 2, 2, 2, 3, 1, 1, 1,
+ 1, 1, 1, 3, 2, 1, 1, 1, 3, 1,
+ 4, 3, 4, 4, 3, 1, 1, 3, 2, 3,
+ 3, 2, 1, 1, 1, 1, 1, 3, 3, 5,
+ 2, 1, 2, 1, 1, 1, 1, 1, 1, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 2, 1, 1, 3, 2, 3,
+ 1, 6, 8, 5, 3, 1, 1, 4, 3, 1,
+ 4, 3, 5, 5, 7, 4, 3, 2, 1, 5,
+ 5, 3, 5, 5, 2, 2, 5, 3, 4, 4,
+ 2, 1, 7, 1, 2, 4, 2, 5, 2, 3,
+ 3, 3, 2, 3, 4, 4, 3, 3, 5, 4,
+ 1, 3, 2, 5, 8, 2, 3, 1, 5, 8,
+ 2, 3, 2, 1, 2, 1, 3, 1, 3, 5,
+ 4, 1, 3, 3, 2, 1, 7, 5, 5, 9,
+ 7, 3, 3, 2, 3, 4, 4, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 2, 1, 0
};
@@ -1945,393 +2025,423 @@ yydestruct (const char *yymsg,
switch (yykind)
{
case YYSYMBOL_INT: /* INT */
-#line 149 "src/parser.y"
+#line 159 "src/parser.y"
{}
-#line 1951 "gen/gen_parser.c"
+#line 2031 "gen/gen_parser.c"
break;
case YYSYMBOL_FLOAT: /* FLOAT */
-#line 149 "src/parser.y"
+#line 159 "src/parser.y"
{}
-#line 1957 "gen/gen_parser.c"
+#line 2037 "gen/gen_parser.c"
break;
case YYSYMBOL_STRING: /* STRING */
-#line 149 "src/parser.y"
+#line 159 "src/parser.y"
{}
-#line 1963 "gen/gen_parser.c"
+#line 2043 "gen/gen_parser.c"
break;
case YYSYMBOL_ID: /* ID */
-#line 149 "src/parser.y"
+#line 159 "src/parser.y"
+ {}
+#line 2049 "gen/gen_parser.c"
+ break;
+
+ case YYSYMBOL_APPLY: /* APPLY */
+#line 159 "src/parser.y"
{}
-#line 1969 "gen/gen_parser.c"
+#line 2055 "gen/gen_parser.c"
break;
case YYSYMBOL_id: /* id */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 1975 "gen/gen_parser.c"
+#line 2061 "gen/gen_parser.c"
+ break;
+
+ case YYSYMBOL_apply: /* apply */
+#line 160 "src/parser.y"
+ { destroy_ast_tree(((*yyvaluep).node)); }
+#line 2067 "gen/gen_parser.c"
break;
case YYSYMBOL_var: /* var */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 1981 "gen/gen_parser.c"
+#line 2073 "gen/gen_parser.c"
break;
case YYSYMBOL_embed: /* embed */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 1987 "gen/gen_parser.c"
+#line 2079 "gen/gen_parser.c"
break;
case YYSYMBOL_import: /* import */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 1993 "gen/gen_parser.c"
+#line 2085 "gen/gen_parser.c"
break;
case YYSYMBOL_assign: /* assign */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 1999 "gen/gen_parser.c"
+#line 2091 "gen/gen_parser.c"
break;
- case YYSYMBOL_binary_op: /* binary_op */
-#line 150 "src/parser.y"
+ case YYSYMBOL_binop: /* binop */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2005 "gen/gen_parser.c"
+#line 2097 "gen/gen_parser.c"
break;
- case YYSYMBOL_unary_op: /* unary_op */
-#line 150 "src/parser.y"
+ case YYSYMBOL_unop: /* unop */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2011 "gen/gen_parser.c"
+#line 2103 "gen/gen_parser.c"
break;
case YYSYMBOL_arg: /* arg */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2017 "gen/gen_parser.c"
+#line 2109 "gen/gen_parser.c"
break;
- case YYSYMBOL_arg_list: /* arg_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_args: /* args */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2023 "gen/gen_parser.c"
+#line 2115 "gen/gen_parser.c"
break;
case YYSYMBOL_param_decl: /* param_decl */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2029 "gen/gen_parser.c"
+#line 2121 "gen/gen_parser.c"
break;
- case YYSYMBOL_decl_list: /* decl_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_decls: /* decls */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2035 "gen/gen_parser.c"
+#line 2127 "gen/gen_parser.c"
break;
- case YYSYMBOL_call: /* call */
-#line 150 "src/parser.y"
+ case YYSYMBOL_defer: /* defer */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2041 "gen/gen_parser.c"
+#line 2133 "gen/gen_parser.c"
break;
- case YYSYMBOL_defer: /* defer */
-#line 150 "src/parser.y"
+ case YYSYMBOL_const_binop: /* const_binop */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2047 "gen/gen_parser.c"
+#line 2139 "gen/gen_parser.c"
break;
- case YYSYMBOL_expr: /* expr */
-#line 150 "src/parser.y"
+ case YYSYMBOL_const_unop: /* const_unop */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2053 "gen/gen_parser.c"
+#line 2145 "gen/gen_parser.c"
break;
- case YYSYMBOL_while: /* while */
-#line 150 "src/parser.y"
+ case YYSYMBOL_const_expr: /* const_expr */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2059 "gen/gen_parser.c"
+#line 2151 "gen/gen_parser.c"
break;
- case YYSYMBOL_do_while: /* do_while */
-#line 150 "src/parser.y"
+ case YYSYMBOL_expr: /* expr */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2065 "gen/gen_parser.c"
+#line 2157 "gen/gen_parser.c"
break;
- case YYSYMBOL_goto: /* goto */
-#line 150 "src/parser.y"
+ case YYSYMBOL_while: /* while */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2071 "gen/gen_parser.c"
+#line 2163 "gen/gen_parser.c"
break;
- case YYSYMBOL_statement: /* statement */
-#line 150 "src/parser.y"
+ case YYSYMBOL_do_while: /* do_while */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2077 "gen/gen_parser.c"
+#line 2169 "gen/gen_parser.c"
break;
- case YYSYMBOL_statement_list: /* statement_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_goto: /* goto */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2083 "gen/gen_parser.c"
+#line 2175 "gen/gen_parser.c"
break;
- case YYSYMBOL_body: /* body */
-#line 150 "src/parser.y"
+ case YYSYMBOL_statelet: /* statelet */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2089 "gen/gen_parser.c"
+#line 2181 "gen/gen_parser.c"
break;
- case YYSYMBOL_macro_list: /* macro_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_statement: /* statement */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2095 "gen/gen_parser.c"
+#line 2187 "gen/gen_parser.c"
break;
- case YYSYMBOL_macro: /* macro */
-#line 150 "src/parser.y"
+ case YYSYMBOL_statements: /* statements */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2101 "gen/gen_parser.c"
+#line 2193 "gen/gen_parser.c"
break;
- case YYSYMBOL_expr_list: /* expr_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_body: /* body */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2107 "gen/gen_parser.c"
+#line 2199 "gen/gen_parser.c"
break;
- case YYSYMBOL_struct_init: /* struct_init */
-#line 150 "src/parser.y"
+ case YYSYMBOL_references: /* references */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2113 "gen/gen_parser.c"
+#line 2205 "gen/gen_parser.c"
break;
- case YYSYMBOL_struct_inits: /* struct_inits */
-#line 150 "src/parser.y"
+ case YYSYMBOL_macro: /* macro */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2119 "gen/gen_parser.c"
+#line 2211 "gen/gen_parser.c"
break;
- case YYSYMBOL_struct_construct: /* struct_construct */
-#line 150 "src/parser.y"
+ case YYSYMBOL_exprs: /* exprs */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2125 "gen/gen_parser.c"
+#line 2217 "gen/gen_parser.c"
break;
- case YYSYMBOL_init_expr: /* init_expr */
-#line 150 "src/parser.y"
+ case YYSYMBOL_construct_arg: /* construct_arg */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2131 "gen/gen_parser.c"
+#line 2223 "gen/gen_parser.c"
break;
- case YYSYMBOL_cond: /* cond */
-#line 150 "src/parser.y"
+ case YYSYMBOL_construct_args: /* construct_args */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2137 "gen/gen_parser.c"
+#line 2229 "gen/gen_parser.c"
break;
- case YYSYMBOL_expr_if: /* expr_if */
-#line 150 "src/parser.y"
+ case YYSYMBOL_construct: /* construct */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2143 "gen/gen_parser.c"
+#line 2235 "gen/gen_parser.c"
break;
case YYSYMBOL_if: /* if */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2149 "gen/gen_parser.c"
+#line 2241 "gen/gen_parser.c"
break;
case YYSYMBOL_for: /* for */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2155 "gen/gen_parser.c"
+#line 2247 "gen/gen_parser.c"
break;
case YYSYMBOL_case: /* case */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2161 "gen/gen_parser.c"
+#line 2253 "gen/gen_parser.c"
break;
- case YYSYMBOL_case_list: /* case_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_cases: /* cases */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2167 "gen/gen_parser.c"
+#line 2259 "gen/gen_parser.c"
break;
case YYSYMBOL_switch: /* switch */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2173 "gen/gen_parser.c"
+#line 2265 "gen/gen_parser.c"
break;
case YYSYMBOL_const_for: /* const_for */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2179 "gen/gen_parser.c"
+#line 2271 "gen/gen_parser.c"
break;
case YYSYMBOL_const_if: /* const_if */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2185 "gen/gen_parser.c"
+#line 2277 "gen/gen_parser.c"
break;
case YYSYMBOL_const: /* const */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2191 "gen/gen_parser.c"
+#line 2283 "gen/gen_parser.c"
break;
- case YYSYMBOL_func_sign: /* func_sign */
-#line 150 "src/parser.y"
+ case YYSYMBOL_simple_sign: /* simple_sign */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2197 "gen/gen_parser.c"
+#line 2289 "gen/gen_parser.c"
break;
- case YYSYMBOL_variadic_sign: /* variadic_sign */
-#line 150 "src/parser.y"
+ case YYSYMBOL_func_sign: /* func_sign */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2203 "gen/gen_parser.c"
+#line 2295 "gen/gen_parser.c"
break;
case YYSYMBOL_type: /* type */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2209 "gen/gen_parser.c"
+#line 2301 "gen/gen_parser.c"
break;
case YYSYMBOL_var_decl: /* var_decl */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2215 "gen/gen_parser.c"
+#line 2307 "gen/gen_parser.c"
break;
case YYSYMBOL_var_init: /* var_init */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2221 "gen/gen_parser.c"
+#line 2313 "gen/gen_parser.c"
break;
case YYSYMBOL_proc: /* proc */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2227 "gen/gen_parser.c"
+#line 2319 "gen/gen_parser.c"
break;
case YYSYMBOL_lambda: /* lambda */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2233 "gen/gen_parser.c"
+#line 2325 "gen/gen_parser.c"
break;
case YYSYMBOL_struct_elem: /* struct_elem */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2239 "gen/gen_parser.c"
+#line 2331 "gen/gen_parser.c"
break;
- case YYSYMBOL_struct_list: /* struct_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_members: /* members */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2245 "gen/gen_parser.c"
+#line 2337 "gen/gen_parser.c"
break;
case YYSYMBOL_union: /* union */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2251 "gen/gen_parser.c"
+#line 2343 "gen/gen_parser.c"
break;
case YYSYMBOL_generic: /* generic */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2257 "gen/gen_parser.c"
+#line 2349 "gen/gen_parser.c"
break;
- case YYSYMBOL_generic_list: /* generic_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_generics: /* generics */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2263 "gen/gen_parser.c"
+#line 2355 "gen/gen_parser.c"
break;
case YYSYMBOL_struct: /* struct */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2269 "gen/gen_parser.c"
+#line 2361 "gen/gen_parser.c"
break;
case YYSYMBOL_template_elem: /* template_elem */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2275 "gen/gen_parser.c"
+#line 2367 "gen/gen_parser.c"
break;
- case YYSYMBOL_template_list: /* template_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_template_elems: /* template_elems */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2281 "gen/gen_parser.c"
+#line 2373 "gen/gen_parser.c"
break;
- case YYSYMBOL_type_list: /* type_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_types: /* types */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2287 "gen/gen_parser.c"
+#line 2379 "gen/gen_parser.c"
break;
- case YYSYMBOL_type_alias: /* type_alias */
-#line 150 "src/parser.y"
+ case YYSYMBOL_alias: /* alias */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2293 "gen/gen_parser.c"
+#line 2385 "gen/gen_parser.c"
break;
- case YYSYMBOL_type_template: /* type_template */
-#line 150 "src/parser.y"
+ case YYSYMBOL_template: /* template */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2299 "gen/gen_parser.c"
+#line 2391 "gen/gen_parser.c"
break;
case YYSYMBOL_enum_val: /* enum_val */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2305 "gen/gen_parser.c"
+#line 2397 "gen/gen_parser.c"
break;
- case YYSYMBOL_enum_list: /* enum_list */
-#line 150 "src/parser.y"
+ case YYSYMBOL_enums: /* enums */
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2311 "gen/gen_parser.c"
+#line 2403 "gen/gen_parser.c"
break;
case YYSYMBOL_enum: /* enum */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2317 "gen/gen_parser.c"
+#line 2409 "gen/gen_parser.c"
break;
case YYSYMBOL_top_if: /* top_if */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2323 "gen/gen_parser.c"
+#line 2415 "gen/gen_parser.c"
+ break;
+
+ case YYSYMBOL_top_var_decl: /* top_var_decl */
+#line 160 "src/parser.y"
+ { destroy_ast_tree(((*yyvaluep).node)); }
+#line 2421 "gen/gen_parser.c"
+ break;
+
+ case YYSYMBOL_top_var_init: /* top_var_init */
+#line 160 "src/parser.y"
+ { destroy_ast_tree(((*yyvaluep).node)); }
+#line 2427 "gen/gen_parser.c"
+ break;
+
+ case YYSYMBOL_top_var: /* top_var */
+#line 160 "src/parser.y"
+ { destroy_ast_tree(((*yyvaluep).node)); }
+#line 2433 "gen/gen_parser.c"
break;
case YYSYMBOL_top: /* top */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2329 "gen/gen_parser.c"
+#line 2439 "gen/gen_parser.c"
break;
case YYSYMBOL_unit: /* unit */
-#line 150 "src/parser.y"
+#line 160 "src/parser.y"
{ destroy_ast_tree(((*yyvaluep).node)); }
-#line 2335 "gen/gen_parser.c"
+#line 2445 "gen/gen_parser.c"
break;
default:
@@ -2635,615 +2745,803 @@ yyreduce:
switch (yyn)
{
case 2: /* id: ID */
-#line 154 "src/parser.y"
- {
+#line 165 "src/parser.y"
+ {
(yyval.node) = gen_id(strdup((yyvsp[0].str)));
(yyval.node)->loc = to_src_loc(&yylloc);
}
-#line 2644 "gen/gen_parser.c"
+#line 2754 "gen/gen_parser.c"
break;
- case 3: /* var: var_decl */
-#line 160 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 2650 "gen/gen_parser.c"
+ case 3: /* apply: APPLY */
+#line 171 "src/parser.y"
+ {
+ (yyval.node) = gen_id(strdup((yyvsp[0].str)));
+ (yyval.node)->loc = to_src_loc(&yylloc);
+ }
+#line 2763 "gen/gen_parser.c"
break;
- case 4: /* var: var_init */
-#line 161 "src/parser.y"
+ case 4: /* var: var_decl */
+#line 177 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 2656 "gen/gen_parser.c"
+#line 2769 "gen/gen_parser.c"
break;
- case 5: /* embed: "embed" "(" STRING ")" */
-#line 164 "src/parser.y"
- { (yyval.node) = gen_embed(clone_string((yyvsp[-1].str))); }
-#line 2662 "gen/gen_parser.c"
+ case 5: /* var: var_init */
+#line 178 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 2775 "gen/gen_parser.c"
break;
- case 6: /* import: "import" STRING */
-#line 167 "src/parser.y"
- { (yyval.node) = gen_import(clone_string((yyvsp[0].str))); }
-#line 2668 "gen/gen_parser.c"
+ case 6: /* embed: "embed" "(" STRING ")" */
+#line 181 "src/parser.y"
+ { (yyval.node) = gen_embed(clone_string((yyvsp[-1].str))); }
+#line 2781 "gen/gen_parser.c"
break;
- case 7: /* assign: expr "=" expr */
-#line 170 "src/parser.y"
- { (yyval.node) = gen_assign((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2674 "gen/gen_parser.c"
+ case 7: /* import: "import" STRING */
+#line 184 "src/parser.y"
+ { (yyval.node) = gen_import(clone_string((yyvsp[0].str))); }
+#line 2787 "gen/gen_parser.c"
break;
- case 8: /* assign: expr "=" struct_construct */
-#line 171 "src/parser.y"
- { (yyval.node) = gen_assign((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2680 "gen/gen_parser.c"
+ case 8: /* assign: expr "=" expr */
+#line 187 "src/parser.y"
+ { (yyval.node) = gen_assign((yyvsp[-2].node), (yyvsp[0].node)); }
+#line 2793 "gen/gen_parser.c"
break;
- case 9: /* binary_op: expr "+" expr */
-#line 174 "src/parser.y"
- { (yyval.node) = gen_binop(AST_ADD, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2686 "gen/gen_parser.c"
+ case 9: /* binop: expr "+" expr */
+#line 190 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_ADD, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 2799 "gen/gen_parser.c"
break;
- case 10: /* binary_op: expr "-" expr */
-#line 175 "src/parser.y"
+ case 10: /* binop: expr "-" expr */
+#line 191 "src/parser.y"
{ (yyval.node) = gen_binop(AST_SUB, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2692 "gen/gen_parser.c"
+#line 2805 "gen/gen_parser.c"
break;
- case 11: /* binary_op: expr "*" expr */
-#line 176 "src/parser.y"
+ case 11: /* binop: expr "*" expr */
+#line 192 "src/parser.y"
{ (yyval.node) = gen_binop(AST_MUL, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2698 "gen/gen_parser.c"
+#line 2811 "gen/gen_parser.c"
break;
- case 12: /* binary_op: expr "/" expr */
-#line 177 "src/parser.y"
+ case 12: /* binop: expr "/" expr */
+#line 193 "src/parser.y"
{ (yyval.node) = gen_binop(AST_DIV, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2704 "gen/gen_parser.c"
+#line 2817 "gen/gen_parser.c"
break;
- case 13: /* binary_op: expr "%" expr */
-#line 178 "src/parser.y"
+ case 13: /* binop: expr "%" expr */
+#line 194 "src/parser.y"
{ (yyval.node) = gen_binop(AST_REM, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2710 "gen/gen_parser.c"
+#line 2823 "gen/gen_parser.c"
break;
- case 14: /* binary_op: expr "^" expr */
-#line 179 "src/parser.y"
+ case 14: /* binop: expr "^" expr */
+#line 195 "src/parser.y"
{ (yyval.node) = gen_binop(AST_XOR, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2716 "gen/gen_parser.c"
+#line 2829 "gen/gen_parser.c"
break;
- case 15: /* binary_op: expr "^^" expr */
-#line 180 "src/parser.y"
+ case 15: /* binop: expr "^^" expr */
+#line 196 "src/parser.y"
{ (yyval.node) = gen_binop(AST_POW, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2722 "gen/gen_parser.c"
+#line 2835 "gen/gen_parser.c"
break;
- case 16: /* binary_op: expr "&" expr */
-#line 181 "src/parser.y"
+ case 16: /* binop: expr "&" expr */
+#line 197 "src/parser.y"
{ (yyval.node) = gen_binop(AST_AND, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2728 "gen/gen_parser.c"
+#line 2841 "gen/gen_parser.c"
break;
- case 17: /* binary_op: expr "&&" expr */
-#line 182 "src/parser.y"
+ case 17: /* binop: expr "&&" expr */
+#line 198 "src/parser.y"
{ (yyval.node) = gen_binop(AST_LAND, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2734 "gen/gen_parser.c"
+#line 2847 "gen/gen_parser.c"
break;
- case 18: /* binary_op: expr "|" expr */
-#line 183 "src/parser.y"
+ case 18: /* binop: expr "|" expr */
+#line 199 "src/parser.y"
{ (yyval.node) = gen_binop(AST_OR, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2740 "gen/gen_parser.c"
+#line 2853 "gen/gen_parser.c"
break;
- case 19: /* binary_op: expr "||" expr */
-#line 184 "src/parser.y"
+ case 19: /* binop: expr "||" expr */
+#line 200 "src/parser.y"
{ (yyval.node) = gen_binop(AST_LOR, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2746 "gen/gen_parser.c"
+#line 2859 "gen/gen_parser.c"
break;
- case 20: /* binary_op: expr "<<" expr */
-#line 185 "src/parser.y"
+ case 20: /* binop: expr "<<" expr */
+#line 201 "src/parser.y"
{ (yyval.node) = gen_binop(AST_LSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2752 "gen/gen_parser.c"
+#line 2865 "gen/gen_parser.c"
break;
- case 21: /* binary_op: expr ">>" expr */
-#line 186 "src/parser.y"
+ case 21: /* binop: expr ">>" expr */
+#line 202 "src/parser.y"
{ (yyval.node) = gen_binop(AST_RSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2758 "gen/gen_parser.c"
+#line 2871 "gen/gen_parser.c"
break;
- case 22: /* binary_op: expr "+=" expr */
-#line 187 "src/parser.y"
+ case 22: /* binop: expr "+=" expr */
+#line 203 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_ADD, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2764 "gen/gen_parser.c"
+#line 2877 "gen/gen_parser.c"
break;
- case 23: /* binary_op: expr "-=" expr */
-#line 188 "src/parser.y"
+ case 23: /* binop: expr "-=" expr */
+#line 204 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_SUB, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2770 "gen/gen_parser.c"
+#line 2883 "gen/gen_parser.c"
break;
- case 24: /* binary_op: expr "*=" expr */
-#line 189 "src/parser.y"
+ case 24: /* binop: expr "*=" expr */
+#line 205 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_MUL, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2776 "gen/gen_parser.c"
+#line 2889 "gen/gen_parser.c"
break;
- case 25: /* binary_op: expr "/=" expr */
-#line 190 "src/parser.y"
+ case 25: /* binop: expr "/=" expr */
+#line 206 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_DIV, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2782 "gen/gen_parser.c"
+#line 2895 "gen/gen_parser.c"
break;
- case 26: /* binary_op: expr "%=" expr */
-#line 191 "src/parser.y"
+ case 26: /* binop: expr "%=" expr */
+#line 207 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_REM, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2788 "gen/gen_parser.c"
+#line 2901 "gen/gen_parser.c"
break;
- case 27: /* binary_op: expr "&=" expr */
-#line 192 "src/parser.y"
+ case 27: /* binop: expr "&=" expr */
+#line 208 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_AND, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2794 "gen/gen_parser.c"
+#line 2907 "gen/gen_parser.c"
break;
- case 28: /* binary_op: expr "|=" expr */
-#line 193 "src/parser.y"
+ case 28: /* binop: expr "|=" expr */
+#line 209 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_OR, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2800 "gen/gen_parser.c"
+#line 2913 "gen/gen_parser.c"
break;
- case 29: /* binary_op: expr "^=" expr */
-#line 194 "src/parser.y"
+ case 29: /* binop: expr "^=" expr */
+#line 210 "src/parser.y"
{ (yyval.node) = gen_binop(AST_ASSIGN_XOR, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2806 "gen/gen_parser.c"
+#line 2919 "gen/gen_parser.c"
break;
- case 30: /* binary_op: expr "<<=" expr */
-#line 195 "src/parser.y"
+ case 30: /* binop: expr "<<=" expr */
+#line 211 "src/parser.y"
{
(yyval.node) = gen_binop(AST_ASSIGN_LSHIFT, (yyvsp[-2].node), (yyvsp[0].node));
}
-#line 2814 "gen/gen_parser.c"
+#line 2927 "gen/gen_parser.c"
break;
- case 31: /* binary_op: expr ">>=" expr */
-#line 198 "src/parser.y"
+ case 31: /* binop: expr ">>=" expr */
+#line 214 "src/parser.y"
{
(yyval.node) = gen_binop(AST_ASSIGN_RSHIFT, (yyvsp[-2].node), (yyvsp[0].node));
}
-#line 2822 "gen/gen_parser.c"
+#line 2935 "gen/gen_parser.c"
break;
- case 32: /* binary_op: expr "<" expr */
-#line 201 "src/parser.y"
+ case 32: /* binop: expr "<" expr */
+#line 217 "src/parser.y"
{ (yyval.node) = gen_binop(AST_LT, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2828 "gen/gen_parser.c"
+#line 2941 "gen/gen_parser.c"
break;
- case 33: /* binary_op: expr ">" expr */
-#line 202 "src/parser.y"
+ case 33: /* binop: expr ">" expr */
+#line 218 "src/parser.y"
{ (yyval.node) = gen_binop(AST_GT, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2834 "gen/gen_parser.c"
+#line 2947 "gen/gen_parser.c"
break;
- case 34: /* binary_op: expr "<=" expr */
-#line 203 "src/parser.y"
+ case 34: /* binop: expr "<=" expr */
+#line 219 "src/parser.y"
{ (yyval.node) = gen_binop(AST_LE, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2840 "gen/gen_parser.c"
+#line 2953 "gen/gen_parser.c"
break;
- case 35: /* binary_op: expr ">=" expr */
-#line 204 "src/parser.y"
+ case 35: /* binop: expr ">=" expr */
+#line 220 "src/parser.y"
{ (yyval.node) = gen_binop(AST_GE, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2846 "gen/gen_parser.c"
+#line 2959 "gen/gen_parser.c"
break;
- case 36: /* binary_op: expr "!=" expr */
-#line 205 "src/parser.y"
+ case 36: /* binop: expr "!=" expr */
+#line 221 "src/parser.y"
{ (yyval.node) = gen_binop(AST_NE, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2852 "gen/gen_parser.c"
+#line 2965 "gen/gen_parser.c"
break;
- case 37: /* binary_op: expr "==" expr */
-#line 206 "src/parser.y"
+ case 37: /* binop: expr "==" expr */
+#line 222 "src/parser.y"
{ (yyval.node) = gen_binop(AST_EQ, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2858 "gen/gen_parser.c"
+#line 2971 "gen/gen_parser.c"
break;
- case 38: /* unary_op: "-" expr */
-#line 209 "src/parser.y"
+ case 38: /* unop: "-" expr */
+#line 225 "src/parser.y"
{ (yyval.node) = gen_unop(AST_NEG, (yyvsp[0].node)); }
-#line 2864 "gen/gen_parser.c"
+#line 2977 "gen/gen_parser.c"
break;
- case 39: /* unary_op: "!" expr */
-#line 210 "src/parser.y"
+ case 39: /* unop: "!" expr */
+#line 226 "src/parser.y"
{ (yyval.node) = gen_unop(AST_LNOT, (yyvsp[0].node)); }
-#line 2870 "gen/gen_parser.c"
+#line 2983 "gen/gen_parser.c"
break;
- case 40: /* unary_op: "&" expr */
-#line 211 "src/parser.y"
+ case 40: /* unop: "&" expr */
+#line 227 "src/parser.y"
{ (yyval.node) = gen_unop(AST_REF, (yyvsp[0].node)); }
-#line 2876 "gen/gen_parser.c"
+#line 2989 "gen/gen_parser.c"
break;
- case 41: /* unary_op: "'" expr */
-#line 212 "src/parser.y"
+ case 41: /* unop: "'" expr */
+#line 228 "src/parser.y"
{ (yyval.node) = gen_unop(AST_DEREF, (yyvsp[0].node)); }
-#line 2882 "gen/gen_parser.c"
+#line 2995 "gen/gen_parser.c"
break;
- case 42: /* unary_op: "~" expr */
-#line 213 "src/parser.y"
+ case 42: /* unop: "~" expr */
+#line 229 "src/parser.y"
{ (yyval.node) = gen_unop(AST_NOT, (yyvsp[0].node)); }
-#line 2888 "gen/gen_parser.c"
+#line 3001 "gen/gen_parser.c"
break;
case 43: /* arg: "&" var_decl */
-#line 216 "src/parser.y"
- { (yyval.node) = gen_unop(AST_REF, (yyvsp[0].node)); }
-#line 2894 "gen/gen_parser.c"
+#line 232 "src/parser.y"
+ { (yyval.node) = gen_unop(AST_REF, (yyvsp[0].node)); }
+#line 3007 "gen/gen_parser.c"
break;
case 44: /* arg: var_decl */
-#line 217 "src/parser.y"
+#line 233 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 2900 "gen/gen_parser.c"
+#line 3013 "gen/gen_parser.c"
break;
- case 45: /* arg: init_expr */
-#line 218 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 2906 "gen/gen_parser.c"
+ case 45: /* arg: expr */
+#line 234 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3019 "gen/gen_parser.c"
break;
- case 46: /* arg_list: arg "," arg_list */
-#line 221 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 2912 "gen/gen_parser.c"
+ case 46: /* args: arg "," args */
+#line 237 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
+#line 3025 "gen/gen_parser.c"
break;
- case 47: /* arg_list: arg */
-#line 222 "src/parser.y"
+ case 47: /* args: arg */
+#line 238 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 2918 "gen/gen_parser.c"
+#line 3031 "gen/gen_parser.c"
break;
case 48: /* param_decl: type */
-#line 225 "src/parser.y"
- { (yyval.node) = gen_var(NULL, (yyvsp[0].node), NULL); }
-#line 2924 "gen/gen_parser.c"
+#line 241 "src/parser.y"
+ { (yyval.node) = gen_var(NULL, (yyvsp[0].node), NULL); }
+#line 3037 "gen/gen_parser.c"
break;
- case 49: /* decl_list: var_decl "," decl_list */
-#line 227 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 2930 "gen/gen_parser.c"
+ case 49: /* decls: var_decl "," decls */
+#line 244 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
+#line 3043 "gen/gen_parser.c"
break;
- case 50: /* decl_list: param_decl "," decl_list */
-#line 228 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 2936 "gen/gen_parser.c"
+ case 50: /* decls: param_decl "," decls */
+#line 245 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
+#line 3049 "gen/gen_parser.c"
break;
- case 51: /* decl_list: var_decl */
-#line 229 "src/parser.y"
+ case 51: /* decls: var_decl */
+#line 246 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 2942 "gen/gen_parser.c"
+#line 3055 "gen/gen_parser.c"
break;
- case 52: /* decl_list: param_decl */
-#line 230 "src/parser.y"
+ case 52: /* decls: param_decl */
+#line 247 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 2948 "gen/gen_parser.c"
+#line 3061 "gen/gen_parser.c"
break;
- case 53: /* call: id "(" arg_list ")" */
-#line 234 "src/parser.y"
- { (yyval.node) = gen_call((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 2954 "gen/gen_parser.c"
+ case 53: /* defer: "defer" expr */
+#line 250 "src/parser.y"
+ { (yyval.node) = gen_defer((yyvsp[0].node)); }
+#line 3067 "gen/gen_parser.c"
break;
- case 54: /* call: id "(" ")" */
-#line 235 "src/parser.y"
- { (yyval.node) = gen_call((yyvsp[-2].node), NULL); }
-#line 2960 "gen/gen_parser.c"
+ case 54: /* const_binop: const_expr "+" const_expr */
+#line 253 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_ADD, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3073 "gen/gen_parser.c"
break;
- case 55: /* defer: "defer" "(" expr ")" */
-#line 238 "src/parser.y"
- { (yyval.node) = gen_defer((yyvsp[-1].node)); }
-#line 2966 "gen/gen_parser.c"
+ case 55: /* const_binop: const_expr "-" const_expr */
+#line 254 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_SUB, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3079 "gen/gen_parser.c"
break;
- case 56: /* expr: id */
-#line 242 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 2972 "gen/gen_parser.c"
+ case 56: /* const_binop: const_expr "*" const_expr */
+#line 255 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_MUL, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3085 "gen/gen_parser.c"
break;
- case 57: /* expr: expr "." id */
-#line 243 "src/parser.y"
- { (yyval.node) = gen_dot((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 2978 "gen/gen_parser.c"
+ case 57: /* const_binop: const_expr "/" const_expr */
+#line 256 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_DIV, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3091 "gen/gen_parser.c"
break;
- case 58: /* expr: "..." id */
-#line 244 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 2984 "gen/gen_parser.c"
+ case 58: /* const_binop: const_expr "%" const_expr */
+#line 257 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_REM, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3097 "gen/gen_parser.c"
break;
- case 59: /* expr: "@" */
-#line 245 "src/parser.y"
- { (yyval.node) = gen_last(); }
-#line 2990 "gen/gen_parser.c"
+ case 59: /* const_binop: const_expr "^" const_expr */
+#line 258 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_XOR, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3103 "gen/gen_parser.c"
break;
- case 60: /* expr: INT */
-#line 246 "src/parser.y"
+ case 60: /* const_binop: const_expr "^^" const_expr */
+#line 259 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_POW, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3109 "gen/gen_parser.c"
+ break;
+
+ case 61: /* const_binop: const_expr "&" const_expr */
+#line 260 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_AND, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3115 "gen/gen_parser.c"
+ break;
+
+ case 62: /* const_binop: const_expr "&&" const_expr */
+#line 261 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_LAND, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3121 "gen/gen_parser.c"
+ break;
+
+ case 63: /* const_binop: const_expr "|" const_expr */
+#line 262 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_OR, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3127 "gen/gen_parser.c"
+ break;
+
+ case 64: /* const_binop: const_expr "||" const_expr */
+#line 263 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_LOR, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3133 "gen/gen_parser.c"
+ break;
+
+ case 65: /* const_binop: const_expr "<<" const_expr */
+#line 264 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_LSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3139 "gen/gen_parser.c"
+ break;
+
+ case 66: /* const_binop: const_expr ">>" const_expr */
+#line 265 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_RSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3145 "gen/gen_parser.c"
+ break;
+
+ case 67: /* const_binop: const_expr "<" const_expr */
+#line 266 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_LT, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3151 "gen/gen_parser.c"
+ break;
+
+ case 68: /* const_binop: const_expr ">" const_expr */
+#line 267 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_GT, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3157 "gen/gen_parser.c"
+ break;
+
+ case 69: /* const_binop: const_expr "<=" const_expr */
+#line 268 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_LE, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3163 "gen/gen_parser.c"
+ break;
+
+ case 70: /* const_binop: const_expr ">=" const_expr */
+#line 269 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_GE, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3169 "gen/gen_parser.c"
+ break;
+
+ case 71: /* const_binop: const_expr "!=" const_expr */
+#line 270 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_NE, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3175 "gen/gen_parser.c"
+ break;
+
+ case 72: /* const_binop: const_expr "==" const_expr */
+#line 271 "src/parser.y"
+ { (yyval.node) = gen_binop(AST_EQ, (yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3181 "gen/gen_parser.c"
+ break;
+
+ case 73: /* const_unop: "-" const_expr */
+#line 274 "src/parser.y"
+ { (yyval.node) = gen_unop(AST_NEG, (yyvsp[0].node)); }
+#line 3187 "gen/gen_parser.c"
+ break;
+
+ case 74: /* const_unop: "!" const_expr */
+#line 275 "src/parser.y"
+ { (yyval.node) = gen_unop(AST_LNOT, (yyvsp[0].node)); }
+#line 3193 "gen/gen_parser.c"
+ break;
+
+ case 75: /* const_unop: "~" const_expr */
+#line 276 "src/parser.y"
+ { (yyval.node) = gen_unop(AST_NOT, (yyvsp[0].node)); }
+#line 3199 "gen/gen_parser.c"
+ break;
+
+ case 76: /* const_expr: "(" const_expr ")" */
+#line 279 "src/parser.y"
+ { (yyval.node) = (yyvsp[-1].node); }
+#line 3205 "gen/gen_parser.c"
+ break;
+
+ case 77: /* const_expr: id */
+#line 280 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3211 "gen/gen_parser.c"
+ break;
+
+ case 78: /* const_expr: INT */
+#line 281 "src/parser.y"
+ { (yyval.node) = gen_int((yyvsp[0].integer)); }
+#line 3217 "gen/gen_parser.c"
+ break;
+
+ case 79: /* const_expr: FLOAT */
+#line 282 "src/parser.y"
+ { (yyval.node) = gen_float((yyvsp[0].dbl)); }
+#line 3223 "gen/gen_parser.c"
+ break;
+
+ case 80: /* const_expr: const_binop */
+#line 283 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3229 "gen/gen_parser.c"
+ break;
+
+ case 81: /* const_expr: const_unop */
+#line 284 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3235 "gen/gen_parser.c"
+ break;
+
+ case 82: /* expr: id */
+#line 288 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3241 "gen/gen_parser.c"
+ break;
+
+ case 83: /* expr: expr "." id */
+#line 289 "src/parser.y"
+ { (yyval.node) = gen_dot((yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3247 "gen/gen_parser.c"
+ break;
+
+ case 84: /* expr: "..." id */
+#line 290 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3253 "gen/gen_parser.c"
+ break;
+
+ case 85: /* expr: INT */
+#line 291 "src/parser.y"
{ (yyval.node) = gen_int((yyvsp[0].integer)); (yyval.node)->loc = to_src_loc(&yylloc); }
-#line 2996 "gen/gen_parser.c"
+#line 3259 "gen/gen_parser.c"
break;
- case 61: /* expr: FLOAT */
-#line 247 "src/parser.y"
+ case 86: /* expr: FLOAT */
+#line 292 "src/parser.y"
{ (yyval.node) = gen_float((yyvsp[0].dbl)); (yyval.node)->loc = to_src_loc(&yylloc); }
-#line 3002 "gen/gen_parser.c"
+#line 3265 "gen/gen_parser.c"
break;
- case 62: /* expr: STRING */
-#line 248 "src/parser.y"
+ case 87: /* expr: STRING */
+#line 293 "src/parser.y"
{
(yyval.node) = gen_string(clone_string((yyvsp[0].str)));
(yyval.node)->loc = to_src_loc(&yylloc);
}
-#line 3011 "gen/gen_parser.c"
+#line 3274 "gen/gen_parser.c"
break;
- case 63: /* expr: "(" expr ")" */
-#line 252 "src/parser.y"
+ case 88: /* expr: "(" expr ")" */
+#line 297 "src/parser.y"
{ (yyval.node) = (yyvsp[-1].node); }
-#line 3017 "gen/gen_parser.c"
+#line 3280 "gen/gen_parser.c"
break;
- case 64: /* expr: assign */
-#line 253 "src/parser.y"
+ case 89: /* expr: assign */
+#line 298 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3023 "gen/gen_parser.c"
+#line 3286 "gen/gen_parser.c"
break;
- case 65: /* expr: call */
-#line 254 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3029 "gen/gen_parser.c"
+ case 90: /* expr: expr "(" args ")" */
+#line 299 "src/parser.y"
+ { (yyval.node) = gen_call((yyvsp[-3].node), (yyvsp[-1].node)); }
+#line 3292 "gen/gen_parser.c"
break;
- case 66: /* expr: defer */
-#line 255 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3035 "gen/gen_parser.c"
+ case 91: /* expr: expr "(" ")" */
+#line 300 "src/parser.y"
+ { (yyval.node) = gen_call((yyvsp[-2].node), NULL); }
+#line 3298 "gen/gen_parser.c"
break;
- case 67: /* expr: binary_op */
-#line 256 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3041 "gen/gen_parser.c"
+ case 92: /* expr: expr "[" expr "]" */
+#line 301 "src/parser.y"
+ { (yyval.node) = gen_call((yyvsp[-3].node), (yyvsp[-1].node)); /** @todo add arr access */}
+#line 3304 "gen/gen_parser.c"
break;
- case 68: /* expr: unary_op */
-#line 257 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3047 "gen/gen_parser.c"
+ case 93: /* expr: apply "(" args ")" */
+#line 302 "src/parser.y"
+ { (yyval.node) = gen_call((yyvsp[-3].node), (yyvsp[-1].node)); /* macro call */}
+#line 3310 "gen/gen_parser.c"
break;
- case 69: /* expr: "(" var_init ")" */
-#line 258 "src/parser.y"
+ case 94: /* expr: apply "(" ")" */
+#line 303 "src/parser.y"
+ { (yyval.node) = gen_call((yyvsp[-2].node), NULL); /* macro call */}
+#line 3316 "gen/gen_parser.c"
+ break;
+
+ case 95: /* expr: binop */
+#line 304 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3322 "gen/gen_parser.c"
+ break;
+
+ case 96: /* expr: unop */
+#line 305 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3328 "gen/gen_parser.c"
+ break;
+
+ case 97: /* expr: "(" var_init ")" */
+#line 306 "src/parser.y"
{ (yyval.node) = (yyvsp[-1].node); }
-#line 3053 "gen/gen_parser.c"
+#line 3334 "gen/gen_parser.c"
break;
- case 70: /* expr: "sizeof" expr */
-#line 259 "src/parser.y"
+ case 98: /* expr: "sizeof" expr */
+#line 307 "src/parser.y"
{ (yyval.node) = gen_sizeof((yyvsp[0].node)); }
-#line 3059 "gen/gen_parser.c"
+#line 3340 "gen/gen_parser.c"
break;
- case 71: /* expr: expr "as" type */
-#line 260 "src/parser.y"
+ case 99: /* expr: expr "as" type */
+#line 308 "src/parser.y"
{ (yyval.node) = gen_cast((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3065 "gen/gen_parser.c"
+#line 3346 "gen/gen_parser.c"
break;
- case 72: /* expr: id "::" type */
-#line 261 "src/parser.y"
+ case 100: /* expr: id "::" type */
+#line 309 "src/parser.y"
{ (yyval.node) = gen_fetch((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3071 "gen/gen_parser.c"
+#line 3352 "gen/gen_parser.c"
break;
- case 73: /* expr: "as" type */
-#line 262 "src/parser.y"
+ case 101: /* expr: "as" type */
+#line 310 "src/parser.y"
{ (yyval.node) = gen_as((yyvsp[0].node)); }
-#line 3077 "gen/gen_parser.c"
+#line 3358 "gen/gen_parser.c"
break;
- case 74: /* expr: embed */
-#line 263 "src/parser.y"
+ case 102: /* expr: embed */
+#line 311 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3083 "gen/gen_parser.c"
+#line 3364 "gen/gen_parser.c"
break;
- case 75: /* expr: lambda */
-#line 264 "src/parser.y"
+ case 103: /* expr: lambda */
+#line 312 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3089 "gen/gen_parser.c"
+#line 3370 "gen/gen_parser.c"
break;
- case 76: /* while: "while" expr body */
-#line 267 "src/parser.y"
- { (yyval.node) = gen_while((yyvsp[-1].node), (yyvsp[0].node)); }
-#line 3095 "gen/gen_parser.c"
+ case 104: /* expr: if */
+#line 313 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3376 "gen/gen_parser.c"
break;
- case 77: /* do_while: "do" body "while" expr ";" */
-#line 270 "src/parser.y"
+ case 105: /* expr: switch */
+#line 314 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3382 "gen/gen_parser.c"
+ break;
+
+ case 106: /* expr: construct */
+#line 315 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3388 "gen/gen_parser.c"
+ break;
+
+ case 107: /* expr: "(" body ")" */
+#line 316 "src/parser.y"
+ { (yyval.node) = (yyvsp[-1].node); }
+#line 3394 "gen/gen_parser.c"
+ break;
+
+ case 108: /* while: "while" expr body */
+#line 319 "src/parser.y"
+ { (yyval.node) = gen_while((yyvsp[-1].node), (yyvsp[0].node)); }
+#line 3400 "gen/gen_parser.c"
+ break;
+
+ case 109: /* do_while: "do" body "while" expr ";" */
+#line 322 "src/parser.y"
{
(yyval.node) = gen_while((yyvsp[-3].node), (yyvsp[-1].node));
ast_set_flags((yyval.node), AST_FLAG_DELAYED);
}
-#line 3104 "gen/gen_parser.c"
- break;
-
- case 78: /* goto: "goto" id */
-#line 276 "src/parser.y"
- { (yyval.node) = gen_goto(gen_label((yyvsp[0].node))); }
-#line 3110 "gen/gen_parser.c"
+#line 3409 "gen/gen_parser.c"
break;
- case 79: /* statement: expr ";" */
-#line 278 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3116 "gen/gen_parser.c"
+ case 110: /* goto: "goto" id */
+#line 328 "src/parser.y"
+ { (yyval.node) = gen_goto(gen_label((yyvsp[0].node))); }
+#line 3415 "gen/gen_parser.c"
break;
- case 80: /* statement: "return" init_expr ";" */
-#line 279 "src/parser.y"
- { (yyval.node) = gen_return((yyvsp[-1].node)); }
-#line 3122 "gen/gen_parser.c"
+ case 111: /* statelet: expr */
+#line 331 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3421 "gen/gen_parser.c"
break;
- case 81: /* statement: "return" ";" */
-#line 280 "src/parser.y"
- { (yyval.node) = gen_return(NULL); }
-#line 3128 "gen/gen_parser.c"
+ case 112: /* statelet: "return" expr */
+#line 332 "src/parser.y"
+ { (yyval.node) = gen_return((yyvsp[0].node)); }
+#line 3427 "gen/gen_parser.c"
break;
- case 82: /* statement: "break" ";" */
-#line 281 "src/parser.y"
- { (yyval.node) = gen_ctrl(AST_CTRL_BREAK, to_src_loc(&yylloc)); }
-#line 3134 "gen/gen_parser.c"
+ case 113: /* statelet: "return" */
+#line 333 "src/parser.y"
+ { (yyval.node) = gen_return(NULL); }
+#line 3433 "gen/gen_parser.c"
break;
- case 83: /* statement: "continue" ";" */
-#line 282 "src/parser.y"
- { (yyval.node) = gen_ctrl(AST_CTRL_CONTINUE,
- to_src_loc(&yylloc)); }
-#line 3141 "gen/gen_parser.c"
+ case 114: /* statelet: "break" */
+#line 334 "src/parser.y"
+ { (yyval.node) = gen_ctrl(AST_CTRL_BREAK, to_src_loc(&yylloc)); }
+#line 3439 "gen/gen_parser.c"
break;
- case 84: /* statement: import ";" */
-#line 284 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3147 "gen/gen_parser.c"
+ case 115: /* statelet: "continue" */
+#line 335 "src/parser.y"
+ { (yyval.node) = gen_ctrl(AST_CTRL_CONTINUE, to_src_loc(&yylloc)); }
+#line 3445 "gen/gen_parser.c"
break;
- case 85: /* statement: var ";" */
-#line 285 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3153 "gen/gen_parser.c"
+ case 116: /* statelet: import */
+#line 336 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3451 "gen/gen_parser.c"
break;
- case 86: /* statement: if */
-#line 286 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3159 "gen/gen_parser.c"
+ case 117: /* statelet: var */
+#line 337 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3457 "gen/gen_parser.c"
break;
- case 87: /* statement: goto ";" */
-#line 287 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3165 "gen/gen_parser.c"
+ case 118: /* statelet: goto */
+#line 338 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3463 "gen/gen_parser.c"
break;
- case 88: /* statement: id ":" */
-#line 288 "src/parser.y"
+ case 119: /* statelet: id ":" */
+#line 339 "src/parser.y"
{ (yyval.node) = gen_label((yyvsp[-1].node)); }
-#line 3171 "gen/gen_parser.c"
+#line 3469 "gen/gen_parser.c"
break;
- case 89: /* statement: for */
-#line 289 "src/parser.y"
+ case 120: /* statelet: for */
+#line 340 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3177 "gen/gen_parser.c"
+#line 3475 "gen/gen_parser.c"
break;
- case 90: /* statement: const */
-#line 290 "src/parser.y"
+ case 121: /* statelet: const */
+#line 341 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3183 "gen/gen_parser.c"
+#line 3481 "gen/gen_parser.c"
break;
- case 91: /* statement: while */
-#line 291 "src/parser.y"
+ case 122: /* statelet: while */
+#line 342 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3189 "gen/gen_parser.c"
+#line 3487 "gen/gen_parser.c"
break;
- case 92: /* statement: do_while */
-#line 292 "src/parser.y"
+ case 123: /* statelet: do_while */
+#line 343 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3195 "gen/gen_parser.c"
- break;
-
- case 93: /* statement: switch */
-#line 293 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3201 "gen/gen_parser.c"
+#line 3493 "gen/gen_parser.c"
break;
- case 94: /* statement: macro */
-#line 294 "src/parser.y"
+ case 124: /* statelet: macro */
+#line 344 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3207 "gen/gen_parser.c"
+#line 3499 "gen/gen_parser.c"
break;
- case 95: /* statement: struct */
-#line 295 "src/parser.y"
+ case 125: /* statelet: struct */
+#line 345 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3213 "gen/gen_parser.c"
+#line 3505 "gen/gen_parser.c"
break;
- case 96: /* statement: type_alias ";" */
-#line 296 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3219 "gen/gen_parser.c"
+ case 126: /* statelet: alias */
+#line 346 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3511 "gen/gen_parser.c"
break;
- case 97: /* statement: type_template */
-#line 297 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3225 "gen/gen_parser.c"
+ case 127: /* statelet: template */
+#line 347 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3517 "gen/gen_parser.c"
break;
- case 98: /* statement: enum */
-#line 298 "src/parser.y"
+ case 128: /* statelet: defer */
+#line 348 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3523 "gen/gen_parser.c"
+ break;
+
+ case 129: /* statelet: enum */
+#line 349 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3231 "gen/gen_parser.c"
+#line 3529 "gen/gen_parser.c"
break;
- case 99: /* statement: body */
-#line 299 "src/parser.y"
+ case 130: /* statelet: body */
+#line 350 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3237 "gen/gen_parser.c"
+#line 3535 "gen/gen_parser.c"
break;
- case 100: /* statement: ";" */
-#line 300 "src/parser.y"
+ case 131: /* statelet: ";" */
+#line 351 "src/parser.y"
{ (yyval.node) = gen_empty(); }
-#line 3243 "gen/gen_parser.c"
+#line 3541 "gen/gen_parser.c"
break;
- case 101: /* statement: error */
-#line 301 "src/parser.y"
+ case 132: /* statelet: error */
+#line 352 "src/parser.y"
{
/* TODO: figure out how to destroy any and all possible ast nodes we
* may have generated up until the error */
@@ -3258,56 +3556,68 @@ yyreduce:
yyclearin;
yyerrok;
}
-#line 3262 "gen/gen_parser.c"
+#line 3560 "gen/gen_parser.c"
break;
- case 102: /* statement_list: statement statement_list */
-#line 317 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); }
-#line 3268 "gen/gen_parser.c"
+ case 133: /* statement: statelet ";" */
+#line 368 "src/parser.y"
+ { (yyval.node) = (yyvsp[-1].node); }
+#line 3566 "gen/gen_parser.c"
break;
- case 103: /* statement_list: statement */
-#line 318 "src/parser.y"
+ case 134: /* statements: statement statements */
+#line 371 "src/parser.y"
+ { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); }
+#line 3572 "gen/gen_parser.c"
+ break;
+
+ case 135: /* statements: statement */
+#line 372 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3274 "gen/gen_parser.c"
+#line 3578 "gen/gen_parser.c"
+ break;
+
+ case 136: /* statements: statelet */
+#line 373 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3584 "gen/gen_parser.c"
break;
- case 104: /* body: "{" statement_list "}" */
-#line 321 "src/parser.y"
+ case 137: /* body: "{" statements "}" */
+#line 376 "src/parser.y"
{ (yyval.node) = gen_block((yyvsp[-1].node)); }
-#line 3280 "gen/gen_parser.c"
+#line 3590 "gen/gen_parser.c"
break;
- case 105: /* body: "{" "}" */
-#line 322 "src/parser.y"
+ case 138: /* body: "{" "}" */
+#line 377 "src/parser.y"
{ (yyval.node) = gen_block(gen_empty()); }
-#line 3286 "gen/gen_parser.c"
+#line 3596 "gen/gen_parser.c"
break;
- case 106: /* macro_list: id "," macro_list */
-#line 325 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyval.node)->next = (yyvsp[0].node); }
-#line 3292 "gen/gen_parser.c"
+ case 139: /* references: id "," references */
+#line 380 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyval.node)->next = (yyvsp[0].node); }
+#line 3602 "gen/gen_parser.c"
break;
- case 107: /* macro_list: id */
-#line 326 "src/parser.y"
+ case 140: /* references: id */
+#line 381 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3298 "gen/gen_parser.c"
+#line 3608 "gen/gen_parser.c"
break;
- case 108: /* macro: "define" id "(" macro_list ")" body */
-#line 329 "src/parser.y"
- {
+ case 141: /* macro: "define" id "(" references ")" body */
+#line 385 "src/parser.y"
+ {
(yyval.node) = gen_macro((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node));
ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC);
}
-#line 3307 "gen/gen_parser.c"
+#line 3617 "gen/gen_parser.c"
break;
- case 109: /* macro: "define" id "(" macro_list "..." id ")" body */
-#line 333 "src/parser.y"
+ case 142: /* macro: "define" id "(" references "..." id ")" body */
+#line 389 "src/parser.y"
{
/* TODO: the location data of the variadic ID is way off */
ast_append((yyvsp[-4].node), (yyvsp[-2].node));
@@ -3315,731 +3625,737 @@ yyreduce:
ast_set_flags((yyval.node), AST_FLAG_VARIADIC);
ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC);
}
-#line 3319 "gen/gen_parser.c"
+#line 3629 "gen/gen_parser.c"
break;
- case 110: /* macro: "define" id "(" ")" body */
-#line 340 "src/parser.y"
+ case 143: /* macro: "define" id "(" ")" body */
+#line 396 "src/parser.y"
{
(yyval.node) = gen_macro((yyvsp[-3].node), NULL, (yyvsp[0].node));
ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC);
}
-#line 3328 "gen/gen_parser.c"
+#line 3638 "gen/gen_parser.c"
break;
- case 111: /* expr_list: expr "," expr_list */
-#line 346 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 3334 "gen/gen_parser.c"
+ case 144: /* exprs: expr "," exprs */
+#line 402 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
+#line 3644 "gen/gen_parser.c"
break;
- case 112: /* expr_list: expr */
-#line 347 "src/parser.y"
+ case 145: /* exprs: expr */
+#line 403 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3340 "gen/gen_parser.c"
+#line 3650 "gen/gen_parser.c"
break;
- case 113: /* struct_init: init_expr */
-#line 350 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3346 "gen/gen_parser.c"
+ case 146: /* construct_arg: expr */
+#line 406 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3656 "gen/gen_parser.c"
break;
- case 114: /* struct_init: "." id "=" init_expr */
-#line 351 "src/parser.y"
- {
+ case 147: /* construct_arg: "." id "=" expr */
+#line 407 "src/parser.y"
+ {
(yyval.node) = gen_var((yyvsp[-2].node), NULL, (yyvsp[0].node));
ast_set_flags((yyval.node), AST_FLAG_MEMBER);
}
-#line 3355 "gen/gen_parser.c"
+#line 3665 "gen/gen_parser.c"
break;
- case 115: /* struct_inits: struct_init "," struct_inits */
-#line 357 "src/parser.y"
+ case 148: /* construct_args: construct_arg "," construct_args */
+#line 413 "src/parser.y"
{ (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 3361 "gen/gen_parser.c"
- break;
-
- case 116: /* struct_inits: struct_init */
-#line 358 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3367 "gen/gen_parser.c"
+#line 3671 "gen/gen_parser.c"
break;
- case 117: /* struct_construct: "{" struct_inits "}" */
-#line 361 "src/parser.y"
- { (yyval.node) = gen_init((yyvsp[-1].node)); }
-#line 3373 "gen/gen_parser.c"
- break;
-
- case 118: /* init_expr: expr */
-#line 364 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3379 "gen/gen_parser.c"
- break;
-
- case 119: /* init_expr: expr_if */
-#line 365 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3385 "gen/gen_parser.c"
- break;
-
- case 120: /* init_expr: struct_construct */
-#line 366 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3391 "gen/gen_parser.c"
- break;
-
- case 121: /* init_expr: struct_construct "as" type */
-#line 367 "src/parser.y"
- { (yyval.node) = gen_cast((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3397 "gen/gen_parser.c"
- break;
-
- case 122: /* cond: expr */
-#line 370 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3403 "gen/gen_parser.c"
- break;
-
- case 123: /* cond: "(" expr_if ")" */
-#line 371 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3409 "gen/gen_parser.c"
- break;
-
- case 124: /* expr_if: "if" cond body "else" body */
-#line 375 "src/parser.y"
- { (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3415 "gen/gen_parser.c"
+ case 149: /* construct_args: construct_arg */
+#line 414 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3677 "gen/gen_parser.c"
break;
- case 125: /* expr_if: "if" cond body "else" expr_if */
-#line 376 "src/parser.y"
- { (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3421 "gen/gen_parser.c"
+ case 150: /* construct: "!" "{" construct_args "}" */
+#line 417 "src/parser.y"
+ { (yyval.node) = gen_init((yyvsp[-1].node)); }
+#line 3683 "gen/gen_parser.c"
break;
- case 126: /* if: "if" cond body */
-#line 379 "src/parser.y"
- { (yyval.node) = gen_if((yyvsp[-1].node), (yyvsp[0].node), NULL); }
-#line 3427 "gen/gen_parser.c"
+ case 151: /* if: "if" expr body */
+#line 420 "src/parser.y"
+ { (yyval.node) = gen_if((yyvsp[-1].node), (yyvsp[0].node), NULL); }
+#line 3689 "gen/gen_parser.c"
break;
- case 127: /* if: "if" cond body "else" body */
-#line 380 "src/parser.y"
+ case 152: /* if: "if" expr body "else" body */
+#line 421 "src/parser.y"
{ (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3433 "gen/gen_parser.c"
+#line 3695 "gen/gen_parser.c"
break;
- case 128: /* if: "if" cond body "else" if */
-#line 381 "src/parser.y"
+ case 153: /* if: "if" expr body "else" if */
+#line 422 "src/parser.y"
{ (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3439 "gen/gen_parser.c"
+#line 3701 "gen/gen_parser.c"
break;
- case 129: /* for: "for" arg ";" expr ";" expr body */
-#line 384 "src/parser.y"
- { (yyval.node) = gen_for((yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node)); }
-#line 3445 "gen/gen_parser.c"
+ case 154: /* for: "for" arg ";" expr ";" expr body */
+#line 426 "src/parser.y"
+ { (yyval.node) = gen_for((yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node)); }
+#line 3707 "gen/gen_parser.c"
break;
- case 130: /* case: "case" expr ":" statement_list */
-#line 387 "src/parser.y"
- { (yyval.node) = gen_case((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3451 "gen/gen_parser.c"
+ case 155: /* case: "case" const_expr ":" statements */
+#line 429 "src/parser.y"
+ {
+ (yyval.node) = gen_case((yyvsp[-2].node), (yyvsp[0].node)); }
+#line 3714 "gen/gen_parser.c"
break;
- case 131: /* case_list: case case_list */
-#line 390 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); }
-#line 3457 "gen/gen_parser.c"
+ case 156: /* case: "default" ":" statements */
+#line 431 "src/parser.y"
+ {
+ (yyval.node) = gen_case(NULL, (yyvsp[0].node));
+ }
+#line 3722 "gen/gen_parser.c"
break;
- case 132: /* case_list: case */
-#line 391 "src/parser.y"
+ case 157: /* cases: case cases */
+#line 436 "src/parser.y"
+ { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); }
+#line 3728 "gen/gen_parser.c"
+ break;
+
+ case 158: /* cases: case */
+#line 437 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3463 "gen/gen_parser.c"
+#line 3734 "gen/gen_parser.c"
break;
- case 133: /* switch: "switch" expr "{" case_list "}" */
-#line 394 "src/parser.y"
- { (yyval.node) = gen_switch((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3469 "gen/gen_parser.c"
+ case 159: /* switch: "switch" expr "{" cases "}" */
+#line 440 "src/parser.y"
+ { (yyval.node) = gen_switch((yyvsp[-3].node), (yyvsp[-1].node)); }
+#line 3740 "gen/gen_parser.c"
break;
- case 134: /* const_for: "for" id ":" expr_list body */
-#line 397 "src/parser.y"
- {
+ case 160: /* const_for: "for" id ":" exprs body */
+#line 444 "src/parser.y"
+ {
/* TODO: should id be a separate rule? */
(yyval.node) = gen_for((yyvsp[-3].node), NULL, (yyvsp[-1].node), (yyvsp[0].node));
ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC);
}
-#line 3479 "gen/gen_parser.c"
+#line 3750 "gen/gen_parser.c"
break;
- case 135: /* const_if: "if" expr body */
-#line 404 "src/parser.y"
- {
+ case 161: /* const_if: "if" const_expr body */
+#line 451 "src/parser.y"
+ {
(yyval.node) = gen_if((yyvsp[-1].node), (yyvsp[0].node), NULL);
ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC);
}
-#line 3488 "gen/gen_parser.c"
+#line 3759 "gen/gen_parser.c"
break;
- case 136: /* const_if: "if" expr body "else" body */
-#line 408 "src/parser.y"
- {
+ case 162: /* const_if: "if" const_expr body "else" body */
+#line 455 "src/parser.y"
+ {
(yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node));
ast_set_flags((yyvsp[-2].node), AST_FLAG_UNHYGIENIC);
ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC);
}
-#line 3498 "gen/gen_parser.c"
+#line 3769 "gen/gen_parser.c"
break;
- case 137: /* const_if: "if" expr body "else" const_if */
-#line 413 "src/parser.y"
- {
+ case 163: /* const_if: "if" const_expr body "else" const_if */
+#line 460 "src/parser.y"
+ {
(yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node));
ast_set_flags((yyvsp[-2].node), AST_FLAG_UNHYGIENIC);
}
-#line 3507 "gen/gen_parser.c"
+#line 3778 "gen/gen_parser.c"
break;
- case 138: /* const: "const" const_if */
-#line 421 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST);
- }
-#line 3514 "gen/gen_parser.c"
+ case 164: /* const: "const" const_if */
+#line 468 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); }
+#line 3784 "gen/gen_parser.c"
break;
- case 139: /* const: "const" const_for */
-#line 423 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST);
- }
-#line 3521 "gen/gen_parser.c"
+ case 165: /* const: "const" const_for */
+#line 469 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); }
+#line 3790 "gen/gen_parser.c"
break;
- case 140: /* func_sign: "(" decl_list "=>" type ")" */
-#line 427 "src/parser.y"
- {
+ case 166: /* simple_sign: "(" decls "=>" type ")" */
+#line 472 "src/parser.y"
+ {
(yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-3].node), (yyvsp[-1].node));
}
-#line 3529 "gen/gen_parser.c"
+#line 3798 "gen/gen_parser.c"
break;
- case 141: /* func_sign: "(" decl_list ")" */
-#line 430 "src/parser.y"
- { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-1].node), NULL);
- }
-#line 3536 "gen/gen_parser.c"
+ case 167: /* simple_sign: "(" decls ")" */
+#line 475 "src/parser.y"
+ { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-1].node), NULL); }
+#line 3804 "gen/gen_parser.c"
break;
- case 142: /* func_sign: "(" decl_list "=>" ")" */
-#line 432 "src/parser.y"
- { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-2].node), NULL);
- }
-#line 3543 "gen/gen_parser.c"
+ case 168: /* simple_sign: "(" decls "=>" ")" */
+#line 476 "src/parser.y"
+ { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-2].node), NULL); }
+#line 3810 "gen/gen_parser.c"
break;
- case 143: /* func_sign: "(" "=>" type ")" */
-#line 434 "src/parser.y"
- { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, NULL, (yyvsp[-1].node));
- }
-#line 3550 "gen/gen_parser.c"
+ case 169: /* simple_sign: "(" "=>" type ")" */
+#line 477 "src/parser.y"
+ { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, NULL, (yyvsp[-1].node)); }
+#line 3816 "gen/gen_parser.c"
break;
- case 144: /* func_sign: "(" ")" */
-#line 436 "src/parser.y"
- { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, NULL, NULL);
- }
-#line 3557 "gen/gen_parser.c"
+ case 170: /* simple_sign: "(" ")" */
+#line 478 "src/parser.y"
+ { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, NULL, NULL); }
+#line 3822 "gen/gen_parser.c"
break;
- case 145: /* variadic_sign: func_sign */
-#line 440 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3563 "gen/gen_parser.c"
+ case 171: /* func_sign: simple_sign */
+#line 481 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3828 "gen/gen_parser.c"
break;
- case 146: /* variadic_sign: "(" decl_list "..." id "=>" type ")" */
-#line 441 "src/parser.y"
- {
+ case 172: /* func_sign: "(" decls "..." id "=>" type ")" */
+#line 482 "src/parser.y"
+ {
ast_append((yyvsp[-5].node), (yyvsp[-3].node));
(yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-5].node), (yyvsp[-1].node));
ast_set_flags((yyval.node), AST_FLAG_VARIADIC);
}
-#line 3573 "gen/gen_parser.c"
+#line 3838 "gen/gen_parser.c"
break;
- case 147: /* type: id */
-#line 448 "src/parser.y"
- { (yyval.node) = gen_type(AST_TYPE_ID, (yyvsp[0].node), NULL, NULL); }
-#line 3579 "gen/gen_parser.c"
+ case 173: /* type: id */
+#line 489 "src/parser.y"
+ { (yyval.node) = gen_type(AST_TYPE_ID, (yyvsp[0].node), NULL, NULL); }
+#line 3844 "gen/gen_parser.c"
break;
- case 148: /* type: "'" func_sign */
-#line 449 "src/parser.y"
- {
+ case 174: /* type: "@" simple_sign */
+#line 490 "src/parser.y"
+ {
(yyval.node) = gen_type(AST_TYPE_POINTER, NULL, NULL, NULL);
(yyval.node)->_type.next = (yyvsp[0].node);
}
-#line 3588 "gen/gen_parser.c"
+#line 3853 "gen/gen_parser.c"
break;
- case 149: /* type: id "(" type_list ")" */
-#line 453 "src/parser.y"
- {
+ case 175: /* type: apply "[" types "]" */
+#line 494 "src/parser.y"
+ {
(yyval.node) = gen_type(AST_TYPE_GENERIC, (yyvsp[-3].node), (yyvsp[-1].node), NULL);
}
-#line 3596 "gen/gen_parser.c"
+#line 3861 "gen/gen_parser.c"
break;
- case 150: /* type: "'" type */
-#line 456 "src/parser.y"
+ case 176: /* type: "'" type */
+#line 497 "src/parser.y"
{
(yyval.node) = gen_type(AST_TYPE_POINTER, NULL, NULL, NULL);
(yyval.node)->_type.next = (yyvsp[0].node);
}
-#line 3605 "gen/gen_parser.c"
+#line 3870 "gen/gen_parser.c"
break;
- case 151: /* type: "[" "]" type */
-#line 460 "src/parser.y"
- {
- (yyval.node) = gen_type(AST_TYPE_ARR, NULL, NULL, NULL);
- (yyval.node)->_type.next = (yyvsp[0].node);
- }
-#line 3614 "gen/gen_parser.c"
- break;
-
- case 152: /* type: "[" expr "]" type */
-#line 464 "src/parser.y"
- {
+ case 177: /* type: "'" "[" const_expr "]" type */
+#line 501 "src/parser.y"
+ {
(yyval.node) = gen_type(AST_TYPE_ARR, NULL, (yyvsp[-2].node), NULL);
(yyval.node)->_type.next = (yyvsp[0].node);
}
-#line 3623 "gen/gen_parser.c"
+#line 3879 "gen/gen_parser.c"
break;
- case 153: /* type: "typeof" expr */
-#line 468 "src/parser.y"
+ case 178: /* type: "typeof" expr */
+#line 505 "src/parser.y"
{
(yyval.node) = gen_type(AST_TYPE_TYPEOF, NULL, (yyvsp[0].node), NULL);
}
-#line 3631 "gen/gen_parser.c"
+#line 3887 "gen/gen_parser.c"
break;
- case 154: /* type: id "::" type */
-#line 471 "src/parser.y"
+ case 179: /* type: id "::" type */
+#line 508 "src/parser.y"
{
(yyval.node) = gen_type(AST_TYPE_MEMBER, (yyvsp[-2].node), (yyvsp[0].node), NULL);
}
-#line 3639 "gen/gen_parser.c"
+#line 3895 "gen/gen_parser.c"
break;
- case 155: /* var_decl: id "mut" type */
-#line 476 "src/parser.y"
+ case 180: /* var_decl: id "mut" type */
+#line 513 "src/parser.y"
{
(yyval.node) = gen_var((yyvsp[-2].node), (yyvsp[0].node), NULL);
ast_set_flags((yyval.node), AST_FLAG_MUTABLE);
}
-#line 3648 "gen/gen_parser.c"
+#line 3904 "gen/gen_parser.c"
break;
- case 156: /* var_decl: id "const" type */
-#line 480 "src/parser.y"
+ case 181: /* var_decl: id "const" type */
+#line 517 "src/parser.y"
{ (yyval.node) = gen_var((yyvsp[-2].node), (yyvsp[0].node), NULL); }
-#line 3654 "gen/gen_parser.c"
+#line 3910 "gen/gen_parser.c"
break;
- case 157: /* var_decl: id type */
-#line 481 "src/parser.y"
+ case 182: /* var_decl: id type */
+#line 518 "src/parser.y"
{ (yyval.node) = gen_var((yyvsp[-1].node), (yyvsp[0].node), NULL); }
-#line 3660 "gen/gen_parser.c"
+#line 3916 "gen/gen_parser.c"
break;
- case 158: /* var_init: var_decl "=" init_expr */
-#line 484 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->_var.init = (yyvsp[0].node); }
-#line 3666 "gen/gen_parser.c"
+ case 183: /* var_init: var_decl "=" expr */
+#line 521 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->_var.init = (yyvsp[0].node); }
+#line 3922 "gen/gen_parser.c"
break;
- case 159: /* var_init: id "mut" "=" init_expr */
-#line 485 "src/parser.y"
- {
+ case 184: /* var_init: id "mut" "=" expr */
+#line 522 "src/parser.y"
+ {
(yyval.node) = gen_var((yyvsp[-3].node), NULL, (yyvsp[0].node));
ast_set_flags((yyval.node), AST_FLAG_UNTYPED | AST_FLAG_MUTABLE);
}
-#line 3675 "gen/gen_parser.c"
+#line 3931 "gen/gen_parser.c"
break;
- case 160: /* var_init: id "const" "=" init_expr */
-#line 489 "src/parser.y"
- {
+ case 185: /* var_init: id "const" "=" expr */
+#line 526 "src/parser.y"
+ {
(yyval.node) = gen_var((yyvsp[-3].node), NULL, (yyvsp[0].node));
ast_set_flags((yyval.node), AST_FLAG_UNTYPED);
}
-#line 3684 "gen/gen_parser.c"
+#line 3940 "gen/gen_parser.c"
break;
- case 161: /* proc: id variadic_sign body */
-#line 495 "src/parser.y"
+ case 186: /* proc: id func_sign body */
+#line 532 "src/parser.y"
{
(yyval.node) = gen_proc((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node));
ast_set_flags((yyval.node), (yyvsp[-1].node)->flags);
}
-#line 3693 "gen/gen_parser.c"
+#line 3949 "gen/gen_parser.c"
break;
- case 162: /* proc: "extern" id func_sign */
-#line 499 "src/parser.y"
- {
+ case 187: /* proc: "extern" id simple_sign */
+#line 536 "src/parser.y"
+ {
(yyval.node) = gen_proc((yyvsp[-1].node), (yyvsp[0].node), NULL);
ast_set_flags((yyval.node), AST_FLAG_EXTERN);
}
-#line 3702 "gen/gen_parser.c"
+#line 3958 "gen/gen_parser.c"
break;
- case 163: /* lambda: "[" macro_list "]" func_sign body */
-#line 505 "src/parser.y"
- { (yyval.node) = gen_lambda((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node)); }
-#line 3708 "gen/gen_parser.c"
+ case 188: /* lambda: "[" references "]" simple_sign body */
+#line 542 "src/parser.y"
+ { (yyval.node) = gen_lambda((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node)); }
+#line 3964 "gen/gen_parser.c"
break;
- case 164: /* struct_elem: var_decl */
-#line 508 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3714 "gen/gen_parser.c"
+ case 189: /* lambda: "[" references "]" body */
+#line 543 "src/parser.y"
+ { (yyval.node) = gen_lambda((yyvsp[-2].node), NULL, (yyvsp[0].node)); }
+#line 3970 "gen/gen_parser.c"
break;
- case 165: /* struct_list: struct_elem ";" struct_list */
-#line 511 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 3720 "gen/gen_parser.c"
+ case 190: /* struct_elem: var_decl */
+#line 546 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 3976 "gen/gen_parser.c"
break;
- case 166: /* struct_list: struct_elem ";" */
-#line 512 "src/parser.y"
+ case 191: /* members: struct_elem ";" members */
+#line 549 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
+#line 3982 "gen/gen_parser.c"
+ break;
+
+ case 192: /* members: struct_elem ";" */
+#line 550 "src/parser.y"
{ (yyval.node) = (yyvsp[-1].node); }
-#line 3726 "gen/gen_parser.c"
+#line 3988 "gen/gen_parser.c"
break;
- case 167: /* union: "union" id "{" struct_list "}" */
-#line 515 "src/parser.y"
- {
+ case 193: /* union: "union" id "{" members "}" */
+#line 553 "src/parser.y"
+ {
(yyval.node) = gen_union((yyvsp[-3].node), NULL, (yyvsp[-1].node));
}
-#line 3734 "gen/gen_parser.c"
+#line 3996 "gen/gen_parser.c"
break;
- case 168: /* union: "union" id "(" generic_list ")" "{" struct_list "}" */
-#line 518 "src/parser.y"
- {
+ case 194: /* union: "union" id "(" generics ")" "{" members "}" */
+#line 556 "src/parser.y"
+ {
(yyval.node) = gen_union((yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-1].node));
}
-#line 3742 "gen/gen_parser.c"
+#line 4004 "gen/gen_parser.c"
break;
- case 169: /* generic: id type */
-#line 523 "src/parser.y"
- { (yyval.node) = gen_alias((yyvsp[-1].node), (yyvsp[0].node)); }
-#line 3748 "gen/gen_parser.c"
+ case 195: /* generic: id type */
+#line 561 "src/parser.y"
+ { (yyval.node) = gen_alias((yyvsp[-1].node), (yyvsp[0].node)); }
+#line 4010 "gen/gen_parser.c"
break;
- case 170: /* generic_list: generic "," generic_list */
-#line 524 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyval.node)->next = (yyvsp[0].node); }
-#line 3754 "gen/gen_parser.c"
+ case 196: /* generics: generic "," generics */
+#line 564 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyval.node)->next = (yyvsp[0].node); }
+#line 4016 "gen/gen_parser.c"
break;
- case 171: /* generic_list: generic */
-#line 525 "src/parser.y"
+ case 197: /* generics: generic */
+#line 565 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3760 "gen/gen_parser.c"
+#line 4022 "gen/gen_parser.c"
break;
- case 172: /* struct: "struct" id "{" struct_list "}" */
-#line 528 "src/parser.y"
- {
+ case 198: /* struct: "struct" id "{" members "}" */
+#line 568 "src/parser.y"
+ {
(yyval.node) = gen_struct((yyvsp[-3].node), NULL, (yyvsp[-1].node));
}
-#line 3768 "gen/gen_parser.c"
+#line 4030 "gen/gen_parser.c"
break;
- case 173: /* struct: "struct" id "(" generic_list ")" "{" struct_list "}" */
-#line 531 "src/parser.y"
- {
+ case 199: /* struct: "struct" id "(" generics ")" "{" members "}" */
+#line 571 "src/parser.y"
+ {
(yyval.node) = gen_struct((yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-1].node));
}
-#line 3776 "gen/gen_parser.c"
+#line 4038 "gen/gen_parser.c"
break;
- case 174: /* template_elem: id ";" */
-#line 538 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3782 "gen/gen_parser.c"
+ case 200: /* template_elem: id ";" */
+#line 578 "src/parser.y"
+ { (yyval.node) = (yyvsp[-1].node); }
+#line 4044 "gen/gen_parser.c"
break;
- case 175: /* template_elem: id func_sign ";" */
-#line 539 "src/parser.y"
- { (yyval.node) = gen_proc((yyvsp[-2].node), (yyvsp[-1].node), NULL); }
-#line 3788 "gen/gen_parser.c"
+ case 201: /* template_elem: id simple_sign ";" */
+#line 579 "src/parser.y"
+ { (yyval.node) = gen_proc((yyvsp[-2].node), (yyvsp[-1].node), NULL); }
+#line 4050 "gen/gen_parser.c"
break;
- case 176: /* template_elem: var_decl ";" */
-#line 540 "src/parser.y"
+ case 202: /* template_elem: var_decl ";" */
+#line 580 "src/parser.y"
{ (yyval.node) = (yyvsp[-1].node); }
-#line 3794 "gen/gen_parser.c"
+#line 4056 "gen/gen_parser.c"
break;
- case 177: /* template_elem: union */
-#line 541 "src/parser.y"
+ case 203: /* template_elem: union */
+#line 581 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3800 "gen/gen_parser.c"
+#line 4062 "gen/gen_parser.c"
break;
- case 178: /* template_list: template_elem template_list */
-#line 544 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); }
-#line 3806 "gen/gen_parser.c"
+ case 204: /* template_elems: template_elem template_elems */
+#line 584 "src/parser.y"
+ { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); }
+#line 4068 "gen/gen_parser.c"
break;
- case 179: /* template_list: template_elem */
-#line 545 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3812 "gen/gen_parser.c"
+ case 205: /* template_elems: template_elem */
+#line 585 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 4074 "gen/gen_parser.c"
break;
- case 180: /* type_list: type "," type_list */
-#line 548 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 3818 "gen/gen_parser.c"
+ case 206: /* types: type "," types */
+#line 588 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
+#line 4080 "gen/gen_parser.c"
break;
- case 181: /* type_list: type */
-#line 549 "src/parser.y"
+ case 207: /* types: type */
+#line 589 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3824 "gen/gen_parser.c"
+#line 4086 "gen/gen_parser.c"
break;
- case 182: /* type_alias: "typedef" id type */
-#line 552 "src/parser.y"
- { (yyval.node) = gen_alias((yyvsp[-1].node), (yyvsp[0].node)); }
-#line 3830 "gen/gen_parser.c"
+ case 208: /* alias: "typedef" id type */
+#line 592 "src/parser.y"
+ { (yyval.node) = gen_alias((yyvsp[-1].node), (yyvsp[0].node)); }
+#line 4092 "gen/gen_parser.c"
break;
- case 183: /* type_template: "typedef" id "{" template_list "}" */
-#line 557 "src/parser.y"
- {
+ case 209: /* template: "typedef" id "{" template_elems "}" */
+#line 597 "src/parser.y"
+ {
(yyval.node) = gen_template((yyvsp[-3].node), (yyvsp[-1].node));
}
-#line 3838 "gen/gen_parser.c"
+#line 4100 "gen/gen_parser.c"
break;
- case 184: /* type_template: "typedef" id "{" "}" */
-#line 560 "src/parser.y"
+ case 210: /* template: "typedef" id "{" "}" */
+#line 600 "src/parser.y"
{
/* should match anything, but doesn't implement anything */
(yyval.node) = gen_template((yyvsp[-2].node), NULL);
}
-#line 3847 "gen/gen_parser.c"
+#line 4109 "gen/gen_parser.c"
break;
- case 185: /* enum_val: id */
-#line 566 "src/parser.y"
+ case 211: /* enum_val: id */
+#line 606 "src/parser.y"
{ (yyval.node) = gen_val((yyvsp[0].node), NULL); }
-#line 3853 "gen/gen_parser.c"
+#line 4115 "gen/gen_parser.c"
break;
- case 186: /* enum_val: id "=" expr */
-#line 567 "src/parser.y"
+ case 212: /* enum_val: id "=" expr */
+#line 607 "src/parser.y"
{ (yyval.node) = gen_val((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3859 "gen/gen_parser.c"
+#line 4121 "gen/gen_parser.c"
break;
- case 187: /* enum_list: enum_val "," enum_list */
-#line 570 "src/parser.y"
- { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
-#line 3865 "gen/gen_parser.c"
+ case 213: /* enums: enum_val "," enums */
+#line 610 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); }
+#line 4127 "gen/gen_parser.c"
break;
- case 188: /* enum_list: enum_val "," */
-#line 571 "src/parser.y"
+ case 214: /* enums: enum_val "," */
+#line 611 "src/parser.y"
{ (yyval.node) = (yyvsp[-1].node); }
-#line 3871 "gen/gen_parser.c"
+#line 4133 "gen/gen_parser.c"
break;
- case 189: /* enum_list: enum_val */
-#line 572 "src/parser.y"
+ case 215: /* enums: enum_val */
+#line 612 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3877 "gen/gen_parser.c"
+#line 4139 "gen/gen_parser.c"
break;
- case 190: /* enum: "enum" id ":" type "{" enum_list "}" */
-#line 575 "src/parser.y"
+ case 216: /* enum: "enum" id ":" type "{" enums "}" */
+#line 615 "src/parser.y"
{ (yyval.node) = gen_enum((yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3883 "gen/gen_parser.c"
+#line 4145 "gen/gen_parser.c"
break;
- case 191: /* enum: "enum" id "{" enum_list "}" */
-#line 576 "src/parser.y"
- {
+ case 217: /* enum: "enum" id "{" enums "}" */
+#line 616 "src/parser.y"
+ {
(yyval.node) = gen_enum((yyvsp[-3].node), NULL, (yyvsp[-1].node));
ast_set_flags((yyval.node), AST_FLAG_UNTYPED);
}
-#line 3892 "gen/gen_parser.c"
+#line 4154 "gen/gen_parser.c"
break;
- case 192: /* top_if: "if" expr "{" unit "}" */
-#line 582 "src/parser.y"
- {
+ case 218: /* top_if: "if" const_expr "{" unit "}" */
+#line 622 "src/parser.y"
+ {
(yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-1].node), NULL);
ast_set_flags((yyval.node), AST_FLAG_UNHYGIENIC);
}
-#line 3901 "gen/gen_parser.c"
+#line 4163 "gen/gen_parser.c"
break;
- case 193: /* top_if: "if" expr "{" unit "}" "else" "{" unit "}" */
-#line 586 "src/parser.y"
- {
+ case 219: /* top_if: "if" const_expr "{" unit "}" "else" "{" unit "}" */
+#line 626 "src/parser.y"
+ {
(yyval.node) = gen_if((yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-1].node));
ast_set_flags((yyval.node), AST_FLAG_UNHYGIENIC);
}
-#line 3910 "gen/gen_parser.c"
+#line 4172 "gen/gen_parser.c"
break;
- case 194: /* top_if: "if" expr "{" unit "}" "else" top_if */
-#line 590 "src/parser.y"
- {
+ case 220: /* top_if: "if" const_expr "{" unit "}" "else" top_if */
+#line 630 "src/parser.y"
+ {
(yyval.node) = gen_if((yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node));
ast_set_flags((yyval.node), AST_FLAG_UNHYGIENIC);
}
-#line 3919 "gen/gen_parser.c"
+#line 4181 "gen/gen_parser.c"
+ break;
+
+ case 221: /* top_var_decl: id "mut" type */
+#line 636 "src/parser.y"
+ {
+ (yyval.node) = gen_var((yyvsp[-2].node), (yyvsp[0].node), NULL);
+ ast_set_flags((yyval.node), AST_FLAG_MUTABLE);
+ }
+#line 4190 "gen/gen_parser.c"
+ break;
+
+ case 222: /* top_var_decl: id "const" type */
+#line 640 "src/parser.y"
+ { (yyval.node) = gen_var((yyvsp[-2].node), (yyvsp[0].node), NULL); }
+#line 4196 "gen/gen_parser.c"
+ break;
+
+ case 223: /* top_var_decl: id type */
+#line 641 "src/parser.y"
+ { (yyval.node) = gen_var((yyvsp[-1].node), (yyvsp[0].node), NULL); }
+#line 4202 "gen/gen_parser.c"
+ break;
+
+ case 224: /* top_var_init: top_var_decl "=" const_expr */
+#line 644 "src/parser.y"
+ { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->_var.init = (yyvsp[0].node); }
+#line 4208 "gen/gen_parser.c"
break;
- case 195: /* top: ";" */
-#line 598 "src/parser.y"
- { (yyval.node) = gen_empty(); }
-#line 3925 "gen/gen_parser.c"
+ case 225: /* top_var_init: id "mut" "=" const_expr */
+#line 645 "src/parser.y"
+ { (yyval.node) = (yyvsp[-3].node); (yyvsp[-3].node)->_var.init = (yyvsp[0].node); }
+#line 4214 "gen/gen_parser.c"
+ break;
+
+ case 226: /* top_var_init: id "const" "=" const_expr */
+#line 646 "src/parser.y"
+ { (yyval.node) = (yyvsp[-3].node); (yyvsp[-3].node)->_var.init = (yyvsp[0].node); }
+#line 4220 "gen/gen_parser.c"
+ break;
+
+ case 227: /* top_var: top_var_decl */
+#line 649 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 4226 "gen/gen_parser.c"
break;
- case 196: /* top: enum */
-#line 599 "src/parser.y"
+ case 228: /* top_var: top_var_init */
+#line 650 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 4232 "gen/gen_parser.c"
+ break;
+
+ case 229: /* top: enum */
+#line 655 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3931 "gen/gen_parser.c"
+#line 4238 "gen/gen_parser.c"
break;
- case 197: /* top: proc */
-#line 600 "src/parser.y"
+ case 230: /* top: proc */
+#line 656 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3937 "gen/gen_parser.c"
+#line 4244 "gen/gen_parser.c"
break;
- case 198: /* top: struct */
-#line 601 "src/parser.y"
+ case 231: /* top: struct */
+#line 657 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3943 "gen/gen_parser.c"
+#line 4250 "gen/gen_parser.c"
break;
- case 199: /* top: union */
-#line 602 "src/parser.y"
+ case 232: /* top: union */
+#line 658 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3949 "gen/gen_parser.c"
+#line 4256 "gen/gen_parser.c"
break;
- case 200: /* top: macro */
-#line 603 "src/parser.y"
+ case 233: /* top: macro */
+#line 659 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); }
-#line 3955 "gen/gen_parser.c"
+#line 4262 "gen/gen_parser.c"
break;
- case 201: /* top: "const" top_if */
-#line 604 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); }
-#line 3961 "gen/gen_parser.c"
+ case 234: /* top: top_if */
+#line 660 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); }
+#line 4268 "gen/gen_parser.c"
break;
- case 202: /* top: import ";" */
-#line 605 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3967 "gen/gen_parser.c"
+ case 235: /* top: top_var */
+#line 661 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); }
+#line 4274 "gen/gen_parser.c"
break;
- case 203: /* top: type_alias ";" */
-#line 606 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 3973 "gen/gen_parser.c"
+ case 236: /* top: import */
+#line 662 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 4280 "gen/gen_parser.c"
break;
- case 204: /* top: type_template */
-#line 607 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 3979 "gen/gen_parser.c"
+ case 237: /* top: alias */
+#line 663 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 4286 "gen/gen_parser.c"
+ break;
+
+ case 238: /* top: template */
+#line 664 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 4292 "gen/gen_parser.c"
break;
- case 205: /* top: "pub" enum */
-#line 608 "src/parser.y"
+ case 239: /* top: "pub" enum */
+#line 665 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
-#line 3985 "gen/gen_parser.c"
+#line 4298 "gen/gen_parser.c"
break;
- case 206: /* top: "pub" struct */
-#line 609 "src/parser.y"
+ case 240: /* top: "pub" struct */
+#line 666 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
-#line 3991 "gen/gen_parser.c"
+#line 4304 "gen/gen_parser.c"
break;
- case 207: /* top: "pub" union */
-#line 610 "src/parser.y"
+ case 241: /* top: "pub" union */
+#line 667 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
-#line 3997 "gen/gen_parser.c"
+#line 4310 "gen/gen_parser.c"
break;
- case 208: /* top: "pub" proc */
-#line 611 "src/parser.y"
+ case 242: /* top: "pub" proc */
+#line 668 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
-#line 4003 "gen/gen_parser.c"
+#line 4316 "gen/gen_parser.c"
break;
- case 209: /* top: "pub" macro */
-#line 612 "src/parser.y"
+ case 243: /* top: "pub" macro */
+#line 669 "src/parser.y"
{ (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
-#line 4009 "gen/gen_parser.c"
+#line 4322 "gen/gen_parser.c"
break;
- case 210: /* top: "pub" import ";" */
-#line 613 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); ast_set_flags((yyvsp[-1].node), AST_FLAG_PUBLIC); }
-#line 4015 "gen/gen_parser.c"
+ case 244: /* top: "pub" import */
+#line 670 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
+#line 4328 "gen/gen_parser.c"
break;
- case 211: /* top: "pub" type_alias ";" */
-#line 614 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); ast_set_flags((yyvsp[-1].node), AST_FLAG_PUBLIC); }
-#line 4021 "gen/gen_parser.c"
+ case 245: /* top: "pub" alias */
+#line 671 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
+#line 4334 "gen/gen_parser.c"
break;
- case 212: /* top: "pub" type_template */
-#line 615 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
-#line 4027 "gen/gen_parser.c"
+ case 246: /* top: "pub" template */
+#line 672 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); }
+#line 4340 "gen/gen_parser.c"
break;
- case 213: /* top: var ";" */
-#line 616 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); }
-#line 4033 "gen/gen_parser.c"
+ case 247: /* top: "pub" top_var */
+#line 673 "src/parser.y"
+ {
+ (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC);
+ ast_set_flags((yyval.node), AST_FLAG_CONST);
+ }
+#line 4349 "gen/gen_parser.c"
break;
- case 214: /* top: "pub" var ";" */
-#line 617 "src/parser.y"
- { (yyval.node) = (yyvsp[-1].node); ast_set_flags((yyvsp[-1].node), AST_FLAG_PUBLIC); }
-#line 4039 "gen/gen_parser.c"
+ case 248: /* top: ";" */
+#line 677 "src/parser.y"
+ { (yyval.node) = gen_empty(); }
+#line 4355 "gen/gen_parser.c"
break;
- case 215: /* top: error */
-#line 618 "src/parser.y"
+ case 249: /* top: error */
+#line 678 "src/parser.y"
{
(yyval.node) = gen_empty();
parser->failed = true;
@@ -4052,30 +4368,30 @@ yyreduce:
}
yyclearin;
yyerrok;
- }
-#line 4057 "gen/gen_parser.c"
+ }
+#line 4373 "gen/gen_parser.c"
break;
- case 216: /* unit: top */
-#line 633 "src/parser.y"
- { (yyval.node) = (yyvsp[0].node); }
-#line 4063 "gen/gen_parser.c"
+ case 250: /* unit: top */
+#line 693 "src/parser.y"
+ { (yyval.node) = (yyvsp[0].node); }
+#line 4379 "gen/gen_parser.c"
break;
- case 217: /* unit: top unit */
-#line 634 "src/parser.y"
+ case 251: /* unit: top unit */
+#line 694 "src/parser.y"
{ (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); }
-#line 4069 "gen/gen_parser.c"
+#line 4385 "gen/gen_parser.c"
break;
- case 218: /* input: unit */
-#line 637 "src/parser.y"
- { parser->tree = (yyvsp[0].node); }
-#line 4075 "gen/gen_parser.c"
+ case 252: /* input: unit */
+#line 697 "src/parser.y"
+ { parser->tree = (yyvsp[0].node); }
+#line 4391 "gen/gen_parser.c"
break;
-#line 4079 "gen/gen_parser.c"
+#line 4395 "gen/gen_parser.c"
default: break;
}
@@ -4304,5 +4620,5 @@ yyreturnlab:
return yyresult;
}
-#line 640 "src/parser.y"
+#line 700 "src/parser.y"
diff --git a/gen/gen_parser.h b/gen/gen_parser.h
index 38a4d29..fee61c0 100644
--- a/gen/gen_parser.h
+++ b/gen/gen_parser.h
@@ -58,81 +58,84 @@ extern int yydebug;
FLOAT = 259, /* FLOAT */
STRING = 260, /* STRING */
ID = 261, /* ID */
- SQUOTE = 262, /* "'" */
- TO = 263, /* "=" */
- ELLIPSIS = 264, /* "..." */
- SEMICOLON = 265, /* ";" */
- COLON = 266, /* ":" */
- BANG = 267, /* "!" */
- TYPEOF = 268, /* "typeof" */
- SIZEOF = 269, /* "sizeof" */
- PASTE = 270, /* "##" */
- STAR = 271, /* "*" */
- DIV = 272, /* "/" */
- REM = 273, /* "%" */
- MINUS = 274, /* "-" */
- PLUS = 275, /* "+" */
- POW = 276, /* "^^" */
- XOR = 277, /* "^" */
- AND = 278, /* "&" */
- OR = 279, /* "|" */
- LAND = 280, /* "&&" */
- LOR = 281, /* "||" */
- TILDE = 282, /* "~" */
- LT = 283, /* "<" */
- GT = 284, /* ">" */
- LE = 285, /* "<=" */
- GE = 286, /* ">=" */
- NE = 287, /* "!=" */
- EQ = 288, /* "==" */
- LSHIFT = 289, /* "<<" */
- RSHIFT = 290, /* ">>" */
- PLUSSELF = 291, /* "+=" */
- MINUSSELF = 292, /* "-=" */
- STARSELF = 293, /* "*=" */
- DIVSELF = 294, /* "/=" */
- REMSELF = 295, /* "%=" */
- XORSELF = 296, /* "^=" */
- POWSELF = 297, /* "^^=" */
- ANDSELF = 298, /* "&=" */
- ORSELF = 299, /* "|=" */
- LSHIFTSELF = 300, /* "<<=" */
- RSHIFTSELF = 301, /* ">>=" */
- AT = 302, /* "@" */
- COMMA = 303, /* "," */
- PUB = 304, /* "pub" */
- STRUCT = 305, /* "struct" */
- UNION = 306, /* "union" */
- TYPEDEF = 307, /* "typedef" */
- IMPORT = 308, /* "import" */
- DEFER = 309, /* "defer" */
- GOTO = 310, /* "goto" */
- EMBED = 311, /* "embed" */
- IF = 312, /* "if" */
- ELSE = 313, /* "else" */
- BREAK = 314, /* "break" */
- CONTINUE = 315, /* "continue" */
- SWITCH = 316, /* "switch" */
- CASE = 317, /* "case" */
- FOR = 318, /* "for" */
- WHILE = 319, /* "while" */
- DO = 320, /* "do" */
- MUT = 321, /* "mut" */
- RETURN = 322, /* "return" */
- CONST = 323, /* "const" */
- EXTERN = 324, /* "extern" */
- ENUM = 325, /* "enum" */
- DEFINE = 326, /* "define" */
- LPAREN = 327, /* "(" */
- RPAREN = 328, /* ")" */
- LBRACE = 329, /* "{" */
- RBRACE = 330, /* "}" */
- LBRACKET = 331, /* "[" */
- RBRACKET = 332, /* "]" */
- AS = 333, /* "as" */
- DOT = 334, /* "." */
- SCOPE = 335, /* "::" */
- FATARROW = 336 /* "=>" */
+ APPLY = 262, /* APPLY */
+ QUESTION = 263, /* "?" */
+ SQUOTE = 264, /* "'" */
+ TO = 265, /* "=" */
+ ELLIPSIS = 266, /* "..." */
+ SEMICOLON = 267, /* ";" */
+ COLON = 268, /* ":" */
+ BANG = 269, /* "!" */
+ TYPEOF = 270, /* "typeof" */
+ SIZEOF = 271, /* "sizeof" */
+ PASTE = 272, /* "##" */
+ STAR = 273, /* "*" */
+ DIV = 274, /* "/" */
+ REM = 275, /* "%" */
+ MINUS = 276, /* "-" */
+ PLUS = 277, /* "+" */
+ POW = 278, /* "^^" */
+ XOR = 279, /* "^" */
+ AND = 280, /* "&" */
+ OR = 281, /* "|" */
+ LAND = 282, /* "&&" */
+ LOR = 283, /* "||" */
+ TILDE = 284, /* "~" */
+ LT = 285, /* "<" */
+ GT = 286, /* ">" */
+ LE = 287, /* "<=" */
+ GE = 288, /* ">=" */
+ NE = 289, /* "!=" */
+ EQ = 290, /* "==" */
+ LSHIFT = 291, /* "<<" */
+ RSHIFT = 292, /* ">>" */
+ PLUSSELF = 293, /* "+=" */
+ MINUSSELF = 294, /* "-=" */
+ STARSELF = 295, /* "*=" */
+ DIVSELF = 296, /* "/=" */
+ REMSELF = 297, /* "%=" */
+ XORSELF = 298, /* "^=" */
+ POWSELF = 299, /* "^^=" */
+ ANDSELF = 300, /* "&=" */
+ ORSELF = 301, /* "|=" */
+ LSHIFTSELF = 302, /* "<<=" */
+ RSHIFTSELF = 303, /* ">>=" */
+ AT = 304, /* "@" */
+ COMMA = 305, /* "," */
+ PUB = 306, /* "pub" */
+ STRUCT = 307, /* "struct" */
+ UNION = 308, /* "union" */
+ TYPEDEF = 309, /* "typedef" */
+ IMPORT = 310, /* "import" */
+ DEFER = 311, /* "defer" */
+ GOTO = 312, /* "goto" */
+ EMBED = 313, /* "embed" */
+ IF = 314, /* "if" */
+ ELSE = 315, /* "else" */
+ BREAK = 316, /* "break" */
+ CONTINUE = 317, /* "continue" */
+ DEFAULT = 318, /* "default" */
+ SWITCH = 319, /* "switch" */
+ CASE = 320, /* "case" */
+ FOR = 321, /* "for" */
+ WHILE = 322, /* "while" */
+ DO = 323, /* "do" */
+ MUT = 324, /* "mut" */
+ RETURN = 325, /* "return" */
+ CONST = 326, /* "const" */
+ EXTERN = 327, /* "extern" */
+ ENUM = 328, /* "enum" */
+ DEFINE = 329, /* "define" */
+ LPAREN = 330, /* "(" */
+ RPAREN = 331, /* ")" */
+ LBRACE = 332, /* "{" */
+ RBRACE = 333, /* "}" */
+ LBRACKET = 334, /* "[" */
+ RBRACKET = 335, /* "]" */
+ AS = 336, /* "as" */
+ DOT = 337, /* "." */
+ SCOPE = 338, /* "::" */
+ FATARROW = 339 /* "=>" */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -141,14 +144,14 @@ extern int yydebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 27 "src/parser.y"
+#line 28 "src/parser.y"
struct ast_node *node;
long long integer;
double dbl;
char *str;
-#line 152 "gen/gen_parser.h"
+#line 155 "gen/gen_parser.h"
};
typedef union YYSTYPE YYSTYPE;