X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fparser_proc.c;h=295c60f1686cdcfd4f325ff896504eb8c52fe099;hp=07478fa777ef8e593b38a5c854eb5e46d331163c;hb=1b6db76e3005344b33ab45b00e7e61386a33932a;hpb=e11280a7b6ed67a4d79b14569ca06131ea2338bd diff --git a/src/parser_proc.c b/src/parser_proc.c index 07478fa..295c60f 100644 --- a/src/parser_proc.c +++ b/src/parser_proc.c @@ -118,49 +118,53 @@ void psi_parser_proc_free(void **parser_proc) #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char -#define YYNOCODE 167 +#define YYNOCODE 193 #define YYACTIONTYPE unsigned short int +#define YYWILDCARD 74 #define ParseTOKENTYPE struct psi_token * typedef union { int yyinit; ParseTOKENTYPE yy0; - struct psi_const_type* yy7; - struct psi_let_calloc* yy17; - struct psi_decl_union* yy19; - struct psi_impl_def_val* yy21; - struct psi_token** yy38; - struct psi_num_exp* yy39; + struct psi_decl_union* yy15; + struct psi_decl_abi* yy26; + struct psi_impl_arg* yy34; + struct psi_const* yy38; + struct psi_let_calloc* yy45; struct psi_impl* yy49; - struct psi_set_exp* yy67; - struct psi_decl_enum_item* yy69; - struct psi_decl* yy71; - struct psi_let_func* yy72; - struct psi_free_stmt* yy76; - struct psi_set_func* yy78; - struct psi_layout* yy81; - struct psi_const* yy106; - struct psi_impl_func* yy120; - struct psi_return_stmt* yy130; - struct psi_let_stmt* yy139; - struct psi_impl_type* yy142; - struct psi_let_exp* yy144; - struct psi_decl_type* yy152; - struct psi_number* yy160; - struct psi_let_callback* yy164; - struct psi_impl_var* yy185; - unsigned yy190; - struct psi_free_exp* yy197; - struct psi_decl_var* yy207; - struct psi_set_stmt* yy226; - struct psi_impl_arg* yy238; - struct psi_decl_abi* yy242; - struct psi_decl_arg* yy260; - struct psi_decl_struct* yy271; - bool yy273; - struct psi_decl_enum * yy279; - struct psi_plist * yy287; - struct psi_plist* yy303; - struct psi_layout yy323; + struct psi_impl_func* yy56; + struct psi_number* yy57; + struct psi_let_func* yy67; + bool yy89; + struct psi_let_callback* yy120; + struct psi_cpp_macro_decl* yy134; + struct psi_impl_def_val* yy145; + struct psi_free_exp* yy146; + struct psi_decl_enum_item* yy169; + struct psi_decl_type* yy172; + struct psi_plist* yy179; + struct psi_set_exp* yy180; + struct psi_let_exp* yy200; + struct psi_assert_stmt* yy201; + struct psi_num_exp* yy207; + struct psi_free_stmt* yy220; + struct psi_token** yy238; + struct psi_layout yy239; + struct psi_plist * yy243; + struct psi_impl_type* yy246; + struct psi_decl_var* yy271; + struct psi_cpp_exp* yy274; + struct psi_decl* yy303; + struct psi_let_stmt* yy319; + struct psi_decl_arg* yy320; + struct psi_decl_enum * yy323; + struct psi_decl_struct* yy324; + struct psi_return_stmt* yy342; + struct psi_const_type* yy351; + struct psi_set_stmt* yy358; + struct psi_set_func* yy362; + struct psi_layout* yy369; + struct psi_impl_var* yy370; + unsigned yy382; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 @@ -170,16 +174,16 @@ typedef union { #define ParseARG_FETCH struct psi_parser *P = yypParser->P #define ParseARG_STORE yypParser->P = P #define YYFALLBACK 1 -#define YYNSTATE 197 -#define YYNRULE 157 -#define YY_MAX_SHIFT 196 -#define YY_MIN_SHIFTREDUCE 328 -#define YY_MAX_SHIFTREDUCE 484 -#define YY_MIN_REDUCE 485 -#define YY_MAX_REDUCE 641 -#define YY_ERROR_ACTION 642 -#define YY_ACCEPT_ACTION 643 -#define YY_NO_ACTION 644 +#define YYNSTATE 233 +#define YYNRULE 191 +#define YY_MAX_SHIFT 232 +#define YY_MIN_SHIFTREDUCE 385 +#define YY_MAX_SHIFTREDUCE 575 +#define YY_MIN_REDUCE 576 +#define YY_MAX_REDUCE 766 +#define YY_ERROR_ACTION 767 +#define YY_ACCEPT_ACTION 768 +#define YY_NO_ACTION 769 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined @@ -251,280 +255,311 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (1024) +#define YY_ACTTAB_COUNT (1132) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 394, 409, 93, 409, 409, 409, 409, 409, 409, 409, - /* 10 */ 409, 409, 409, 93, 436, 430, 478, 21, 424, 430, - /* 20 */ 425, 427, 15, 427, 411, 27, 27, 478, 475, 428, - /* 30 */ 494, 428, 150, 426, 429, 426, 429, 494, 27, 27, - /* 40 */ 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - /* 50 */ 432, 101, 124, 439, 441, 83, 423, 438, 452, 110, - /* 60 */ 417, 417, 417, 417, 417, 405, 149, 56, 366, 422, - /* 70 */ 107, 122, 28, 376, 90, 89, 88, 147, 348, 48, - /* 80 */ 35, 133, 478, 164, 116, 390, 81, 67, 65, 64, - /* 90 */ 394, 409, 47, 409, 409, 409, 409, 409, 409, 409, - /* 100 */ 409, 409, 409, 39, 49, 11, 10, 60, 93, 437, - /* 110 */ 430, 158, 115, 141, 430, 353, 353, 353, 353, 478, - /* 120 */ 27, 27, 478, 141, 141, 141, 141, 141, 141, 141, - /* 130 */ 375, 193, 136, 27, 27, 148, 148, 148, 148, 148, - /* 140 */ 148, 148, 148, 148, 148, 83, 349, 352, 394, 409, - /* 150 */ 146, 409, 409, 409, 409, 409, 409, 409, 409, 409, - /* 160 */ 409, 149, 349, 351, 179, 181, 180, 28, 134, 122, - /* 170 */ 35, 122, 153, 109, 471, 390, 81, 67, 65, 64, - /* 180 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - /* 190 */ 29, 29, 29, 29, 29, 29, 29, 29, 394, 419, - /* 200 */ 419, 419, 419, 41, 124, 145, 394, 409, 416, 409, - /* 210 */ 409, 409, 409, 409, 409, 409, 409, 409, 409, 415, - /* 220 */ 382, 114, 90, 89, 88, 410, 43, 414, 34, 106, - /* 230 */ 147, 123, 344, 390, 81, 67, 65, 64, 29, 29, - /* 240 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - /* 250 */ 29, 374, 108, 29, 29, 419, 419, 419, 419, 419, - /* 260 */ 421, 83, 113, 397, 394, 409, 405, 409, 409, 409, - /* 270 */ 409, 409, 409, 409, 409, 409, 409, 167, 137, 112, - /* 280 */ 90, 89, 88, 390, 81, 67, 35, 147, 36, 128, - /* 290 */ 122, 390, 81, 67, 65, 64, 458, 458, 458, 458, - /* 300 */ 458, 458, 458, 458, 458, 458, 155, 379, 157, 161, - /* 310 */ 365, 169, 459, 160, 161, 410, 43, 122, 122, 76, - /* 320 */ 119, 479, 394, 409, 431, 409, 409, 409, 409, 409, - /* 330 */ 409, 409, 409, 409, 409, 376, 431, 357, 179, 181, - /* 340 */ 180, 402, 432, 100, 35, 440, 442, 80, 140, 390, - /* 350 */ 81, 67, 65, 64, 432, 99, 405, 163, 161, 144, - /* 360 */ 142, 127, 350, 122, 356, 456, 53, 463, 37, 473, - /* 370 */ 2, 418, 395, 147, 122, 122, 122, 66, 8, 451, - /* 380 */ 394, 409, 431, 409, 409, 409, 409, 409, 409, 409, - /* 390 */ 409, 409, 409, 94, 431, 401, 179, 181, 180, 343, - /* 400 */ 432, 96, 35, 122, 13, 461, 140, 390, 81, 67, - /* 410 */ 65, 64, 432, 99, 39, 49, 11, 10, 60, 470, - /* 420 */ 92, 122, 70, 465, 111, 463, 131, 7, 460, 6, - /* 430 */ 450, 147, 413, 122, 479, 83, 23, 154, 394, 409, - /* 440 */ 431, 409, 409, 409, 409, 409, 409, 409, 409, 409, - /* 450 */ 409, 68, 150, 472, 179, 181, 180, 132, 432, 97, - /* 460 */ 35, 378, 24, 360, 38, 390, 81, 67, 65, 64, - /* 470 */ 432, 101, 20, 439, 441, 479, 383, 438, 453, 122, - /* 480 */ 369, 410, 43, 382, 117, 377, 368, 105, 410, 43, - /* 490 */ 367, 122, 361, 74, 189, 379, 394, 409, 42, 409, - /* 500 */ 409, 409, 409, 409, 409, 409, 409, 409, 409, 479, - /* 510 */ 176, 177, 179, 181, 180, 398, 22, 424, 393, 400, - /* 520 */ 427, 431, 405, 390, 81, 67, 65, 64, 428, 405, - /* 530 */ 44, 391, 426, 429, 118, 196, 483, 484, 2, 432, - /* 540 */ 102, 84, 95, 190, 170, 45, 86, 335, 63, 1, - /* 550 */ 120, 82, 333, 342, 334, 121, 332, 331, 69, 68, - /* 560 */ 122, 329, 183, 19, 46, 341, 340, 192, 345, 337, - /* 570 */ 179, 181, 180, 330, 151, 39, 49, 11, 10, 60, - /* 580 */ 373, 390, 81, 67, 65, 64, 93, 372, 430, 61, - /* 590 */ 57, 126, 430, 412, 125, 475, 182, 58, 27, 27, - /* 600 */ 478, 59, 130, 31, 643, 3, 3, 178, 194, 469, - /* 610 */ 16, 27, 27, 141, 468, 79, 431, 4, 384, 32, - /* 620 */ 410, 43, 447, 141, 141, 141, 141, 141, 141, 141, - /* 630 */ 419, 419, 419, 419, 432, 98, 446, 71, 93, 462, - /* 640 */ 430, 12, 40, 448, 430, 28, 143, 475, 14, 182, - /* 650 */ 27, 27, 478, 5, 50, 122, 418, 194, 87, 85, - /* 660 */ 178, 405, 51, 27, 27, 141, 631, 26, 79, 9, - /* 670 */ 17, 385, 364, 410, 43, 141, 141, 141, 141, 141, - /* 680 */ 141, 141, 152, 363, 18, 72, 419, 419, 419, 419, - /* 690 */ 419, 156, 52, 73, 159, 479, 75, 28, 431, 162, - /* 700 */ 54, 522, 355, 354, 129, 78, 62, 168, 139, 389, - /* 710 */ 194, 87, 85, 171, 405, 172, 432, 104, 173, 29, - /* 720 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - /* 730 */ 29, 29, 29, 29, 29, 29, 29, 122, 174, 408, - /* 740 */ 175, 29, 29, 29, 29, 29, 29, 29, 29, 29, - /* 750 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 387, - /* 760 */ 386, 407, 406, 358, 371, 494, 184, 339, 185, 187, - /* 770 */ 186, 188, 91, 449, 29, 29, 29, 29, 29, 29, - /* 780 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - /* 790 */ 29, 29, 191, 93, 25, 430, 637, 30, 55, 430, - /* 800 */ 328, 195, 475, 431, 487, 27, 27, 478, 487, 487, - /* 810 */ 369, 487, 487, 487, 487, 487, 487, 487, 27, 27, - /* 820 */ 141, 432, 103, 487, 487, 487, 487, 487, 433, 182, - /* 830 */ 141, 141, 141, 141, 141, 141, 141, 487, 487, 487, - /* 840 */ 359, 166, 122, 487, 77, 93, 487, 430, 165, 487, - /* 850 */ 487, 430, 28, 410, 33, 487, 487, 27, 27, 478, - /* 860 */ 487, 487, 487, 487, 487, 196, 483, 484, 487, 487, - /* 870 */ 27, 27, 95, 190, 170, 487, 487, 487, 63, 1, - /* 880 */ 487, 487, 487, 487, 487, 487, 487, 487, 69, 68, - /* 890 */ 194, 87, 85, 335, 405, 487, 150, 487, 333, 487, - /* 900 */ 334, 487, 332, 331, 28, 150, 487, 329, 487, 19, - /* 910 */ 487, 487, 487, 487, 432, 101, 487, 439, 441, 330, - /* 920 */ 151, 438, 445, 432, 101, 487, 439, 441, 487, 487, - /* 930 */ 438, 138, 487, 487, 487, 122, 487, 487, 487, 487, - /* 940 */ 487, 487, 487, 431, 122, 487, 431, 487, 487, 487, - /* 950 */ 487, 487, 482, 487, 194, 140, 487, 487, 140, 487, - /* 960 */ 487, 432, 99, 487, 432, 99, 487, 487, 487, 487, - /* 970 */ 487, 487, 135, 487, 463, 467, 487, 463, 487, 431, - /* 980 */ 147, 487, 122, 147, 431, 122, 487, 487, 487, 487, - /* 990 */ 487, 140, 487, 487, 487, 487, 140, 432, 99, 487, - /* 1000 */ 487, 487, 432, 99, 487, 487, 487, 487, 466, 487, - /* 1010 */ 463, 487, 487, 457, 487, 463, 147, 487, 122, 487, - /* 1020 */ 487, 147, 487, 122, + /* 0 */ 482, 497, 520, 497, 497, 497, 497, 497, 497, 497, + /* 10 */ 497, 497, 497, 104, 525, 519, 189, 136, 565, 519, + /* 20 */ 521, 114, 17, 529, 531, 28, 28, 568, 25, 25, + /* 30 */ 510, 127, 42, 52, 11, 10, 70, 104, 28, 28, + /* 40 */ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + /* 50 */ 142, 568, 25, 25, 50, 94, 42, 52, 11, 10, + /* 60 */ 70, 568, 511, 501, 505, 505, 505, 505, 505, 438, + /* 70 */ 174, 59, 30, 30, 30, 30, 30, 30, 30, 30, + /* 80 */ 30, 30, 30, 30, 30, 29, 51, 30, 30, 171, + /* 90 */ 2, 101, 100, 99, 499, 436, 158, 37, 401, 401, + /* 100 */ 584, 585, 478, 92, 77, 75, 74, 482, 497, 226, + /* 110 */ 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + /* 120 */ 120, 104, 526, 519, 144, 504, 166, 519, 441, 441, + /* 130 */ 441, 441, 559, 28, 28, 568, 166, 166, 166, 166, + /* 140 */ 166, 166, 166, 218, 493, 81, 28, 28, 173, 173, + /* 150 */ 173, 173, 173, 173, 173, 173, 173, 173, 392, 146, + /* 160 */ 485, 78, 94, 437, 440, 482, 497, 464, 497, 497, + /* 170 */ 497, 497, 497, 497, 497, 497, 497, 497, 174, 68, + /* 180 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 190 */ 68, 68, 482, 29, 68, 68, 232, 471, 204, 206, + /* 200 */ 205, 503, 498, 46, 37, 513, 178, 502, 515, 478, + /* 210 */ 92, 77, 75, 74, 183, 135, 517, 516, 462, 128, + /* 220 */ 44, 514, 518, 482, 497, 463, 497, 497, 497, 497, + /* 230 */ 497, 497, 497, 497, 497, 497, 467, 423, 457, 180, + /* 240 */ 129, 560, 421, 453, 422, 149, 420, 419, 498, 46, + /* 250 */ 569, 417, 493, 21, 470, 134, 101, 100, 99, 498, + /* 260 */ 46, 91, 36, 418, 176, 161, 142, 478, 92, 77, + /* 270 */ 75, 74, 118, 142, 437, 439, 149, 119, 94, 172, + /* 280 */ 121, 482, 497, 162, 497, 497, 497, 497, 497, 497, + /* 290 */ 497, 497, 497, 497, 478, 92, 77, 221, 493, 573, + /* 300 */ 574, 575, 60, 768, 3, 3, 132, 219, 56, 493, + /* 310 */ 126, 112, 152, 142, 101, 100, 99, 106, 215, 195, + /* 320 */ 37, 454, 506, 73, 1, 478, 92, 77, 75, 74, + /* 330 */ 170, 142, 124, 80, 79, 568, 87, 182, 186, 482, + /* 340 */ 497, 207, 497, 497, 497, 497, 497, 497, 497, 497, + /* 350 */ 497, 497, 447, 191, 142, 104, 88, 519, 18, 512, + /* 360 */ 190, 519, 515, 122, 172, 498, 35, 28, 28, 568, + /* 370 */ 517, 516, 204, 206, 205, 514, 518, 520, 37, 105, + /* 380 */ 28, 28, 133, 478, 92, 77, 75, 74, 431, 464, + /* 390 */ 445, 444, 185, 186, 76, 521, 108, 482, 497, 207, + /* 400 */ 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + /* 410 */ 203, 219, 98, 96, 103, 493, 172, 402, 90, 591, + /* 420 */ 4, 472, 509, 498, 46, 142, 466, 29, 569, 520, + /* 430 */ 204, 206, 205, 188, 186, 520, 37, 142, 142, 142, + /* 440 */ 569, 478, 92, 77, 75, 74, 159, 521, 109, 143, + /* 450 */ 432, 192, 94, 521, 110, 482, 497, 207, 497, 497, + /* 460 */ 497, 497, 497, 497, 497, 497, 497, 497, 203, 219, + /* 470 */ 98, 96, 194, 493, 153, 38, 90, 142, 520, 473, + /* 480 */ 490, 498, 46, 142, 562, 40, 175, 489, 204, 206, + /* 490 */ 205, 540, 8, 402, 37, 586, 521, 116, 139, 478, + /* 500 */ 92, 77, 75, 74, 521, 115, 483, 528, 530, 148, + /* 510 */ 85, 527, 542, 482, 497, 79, 497, 497, 497, 497, + /* 520 */ 497, 497, 497, 497, 497, 497, 142, 219, 98, 96, + /* 530 */ 156, 493, 550, 13, 142, 408, 547, 547, 547, 547, + /* 540 */ 547, 547, 547, 547, 547, 547, 204, 206, 205, 549, + /* 550 */ 7, 520, 548, 467, 520, 539, 6, 478, 92, 77, + /* 560 */ 75, 74, 157, 520, 179, 23, 165, 569, 93, 521, + /* 570 */ 111, 22, 521, 113, 470, 137, 561, 169, 167, 498, + /* 580 */ 46, 521, 123, 104, 545, 519, 552, 448, 24, 519, + /* 590 */ 412, 65, 565, 41, 520, 28, 28, 568, 465, 142, + /* 600 */ 172, 456, 142, 125, 204, 206, 205, 224, 28, 28, + /* 610 */ 166, 142, 521, 117, 455, 478, 92, 77, 75, 74, + /* 620 */ 166, 166, 166, 166, 166, 166, 166, 396, 225, 493, + /* 630 */ 616, 104, 449, 519, 616, 19, 512, 519, 214, 515, + /* 640 */ 565, 45, 142, 28, 28, 568, 201, 517, 516, 202, + /* 650 */ 488, 486, 514, 518, 481, 29, 28, 28, 166, 479, + /* 660 */ 175, 138, 2, 47, 95, 48, 430, 97, 166, 166, + /* 670 */ 166, 166, 166, 166, 166, 231, 231, 140, 521, 115, + /* 680 */ 755, 528, 530, 141, 429, 527, 541, 130, 208, 428, + /* 690 */ 230, 229, 389, 390, 228, 227, 49, 423, 217, 425, + /* 700 */ 69, 64, 421, 29, 422, 461, 420, 419, 142, 460, + /* 710 */ 433, 417, 398, 21, 147, 61, 71, 150, 164, 151, + /* 720 */ 62, 63, 32, 418, 176, 30, 30, 30, 30, 30, + /* 730 */ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + /* 740 */ 30, 30, 30, 507, 507, 507, 507, 30, 30, 30, + /* 750 */ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + /* 760 */ 30, 30, 30, 30, 30, 572, 155, 219, 15, 25, + /* 770 */ 25, 558, 34, 42, 52, 11, 10, 70, 557, 563, + /* 780 */ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + /* 790 */ 30, 30, 30, 30, 30, 30, 30, 30, 536, 507, + /* 800 */ 507, 507, 507, 507, 500, 535, 82, 551, 12, 14, + /* 810 */ 43, 506, 537, 538, 30, 30, 30, 30, 30, 30, + /* 820 */ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + /* 830 */ 30, 30, 168, 5, 53, 54, 27, 9, 452, 16, + /* 840 */ 177, 451, 20, 181, 83, 84, 55, 26, 68, 68, + /* 850 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 860 */ 68, 68, 68, 68, 68, 68, 184, 520, 569, 104, + /* 870 */ 86, 519, 187, 57, 644, 519, 443, 442, 565, 165, + /* 880 */ 522, 28, 28, 568, 72, 521, 113, 193, 89, 196, + /* 890 */ 477, 198, 197, 199, 28, 28, 166, 554, 131, 552, + /* 900 */ 200, 475, 496, 474, 495, 494, 166, 166, 166, 166, + /* 910 */ 166, 166, 166, 172, 405, 142, 30, 30, 30, 30, + /* 920 */ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + /* 930 */ 30, 30, 30, 30, 507, 507, 507, 507, 446, 616, + /* 940 */ 427, 29, 68, 68, 68, 68, 68, 68, 68, 68, + /* 950 */ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + /* 960 */ 761, 209, 211, 212, 210, 102, 459, 31, 216, 416, + /* 970 */ 222, 213, 410, 220, 457, 39, 410, 58, 223, 175, + /* 980 */ 409, 399, 66, 66, 107, 33, 391, 388, 387, 386, + /* 990 */ 507, 507, 507, 507, 507, 66, 66, 521, 115, 385, + /* 1000 */ 528, 530, 578, 578, 527, 534, 578, 578, 578, 578, + /* 1010 */ 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, + /* 1020 */ 154, 578, 578, 578, 578, 578, 578, 142, 578, 578, + /* 1030 */ 578, 578, 578, 221, 578, 573, 574, 575, 60, 578, + /* 1040 */ 578, 578, 67, 578, 520, 578, 175, 145, 578, 578, + /* 1050 */ 578, 578, 578, 106, 215, 195, 165, 578, 578, 73, + /* 1060 */ 1, 520, 521, 113, 521, 115, 520, 528, 530, 80, + /* 1070 */ 79, 527, 163, 165, 160, 578, 552, 578, 165, 521, + /* 1080 */ 113, 578, 578, 520, 521, 113, 578, 578, 578, 578, + /* 1090 */ 172, 556, 142, 552, 142, 165, 555, 578, 552, 578, + /* 1100 */ 578, 521, 113, 578, 578, 578, 578, 172, 578, 142, + /* 1110 */ 578, 578, 172, 546, 142, 552, 578, 578, 578, 578, + /* 1120 */ 578, 578, 578, 578, 578, 578, 578, 578, 578, 172, + /* 1130 */ 578, 142, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 2, 3, 14, 5, 6, 7, 8, 9, 10, 11, - /* 10 */ 12, 13, 14, 14, 15, 16, 28, 129, 130, 20, - /* 20 */ 130, 133, 23, 133, 120, 26, 27, 28, 23, 141, - /* 30 */ 72, 141, 113, 145, 146, 145, 146, 79, 39, 40, + /* 0 */ 2, 3, 130, 5, 6, 7, 8, 9, 10, 11, + /* 10 */ 12, 13, 14, 14, 15, 16, 177, 178, 23, 20, + /* 20 */ 148, 149, 23, 151, 152, 26, 27, 28, 62, 63, + /* 30 */ 143, 144, 66, 67, 68, 69, 70, 14, 39, 40, /* 40 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - /* 50 */ 131, 132, 125, 134, 135, 57, 126, 138, 139, 140, - /* 60 */ 15, 16, 17, 18, 19, 161, 67, 68, 14, 126, - /* 70 */ 127, 152, 73, 113, 76, 77, 78, 150, 80, 149, - /* 80 */ 82, 14, 28, 151, 152, 87, 88, 89, 90, 91, - /* 90 */ 2, 3, 149, 5, 6, 7, 8, 9, 10, 11, - /* 100 */ 12, 13, 14, 62, 63, 64, 65, 66, 14, 15, - /* 110 */ 16, 151, 152, 41, 20, 1, 2, 3, 4, 28, - /* 120 */ 26, 27, 28, 51, 52, 53, 54, 55, 56, 57, - /* 130 */ 113, 14, 113, 39, 40, 41, 42, 43, 44, 45, - /* 140 */ 46, 47, 48, 49, 50, 57, 99, 100, 2, 3, - /* 150 */ 165, 5, 6, 7, 8, 9, 10, 11, 12, 13, - /* 160 */ 14, 67, 99, 100, 76, 77, 78, 73, 144, 152, - /* 170 */ 82, 152, 84, 147, 148, 87, 88, 89, 90, 91, - /* 180 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - /* 190 */ 31, 32, 33, 34, 35, 36, 37, 38, 2, 1, - /* 200 */ 2, 3, 4, 57, 125, 125, 2, 3, 149, 5, - /* 210 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 149, - /* 220 */ 115, 116, 76, 77, 78, 120, 121, 149, 82, 150, - /* 230 */ 150, 97, 98, 87, 88, 89, 90, 91, 22, 23, - /* 240 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - /* 250 */ 34, 113, 114, 37, 38, 57, 58, 59, 60, 61, - /* 260 */ 124, 57, 125, 5, 2, 3, 161, 5, 6, 7, - /* 270 */ 8, 9, 10, 11, 12, 13, 14, 124, 113, 113, - /* 280 */ 76, 77, 78, 87, 88, 89, 82, 150, 74, 75, - /* 290 */ 152, 87, 88, 89, 90, 91, 41, 42, 43, 44, - /* 300 */ 45, 46, 47, 48, 49, 50, 111, 14, 151, 152, - /* 310 */ 115, 104, 57, 151, 152, 120, 121, 152, 152, 57, - /* 320 */ 152, 28, 2, 3, 113, 5, 6, 7, 8, 9, - /* 330 */ 10, 11, 12, 13, 14, 113, 113, 113, 76, 77, - /* 340 */ 78, 161, 131, 132, 82, 134, 135, 89, 125, 87, - /* 350 */ 88, 89, 90, 91, 131, 132, 161, 151, 152, 136, - /* 360 */ 137, 84, 71, 152, 113, 142, 73, 144, 74, 75, - /* 370 */ 79, 94, 163, 150, 152, 152, 152, 57, 74, 75, - /* 380 */ 2, 3, 113, 5, 6, 7, 8, 9, 10, 11, - /* 390 */ 12, 13, 14, 74, 113, 161, 76, 77, 78, 80, - /* 400 */ 131, 132, 82, 152, 74, 75, 125, 87, 88, 89, - /* 410 */ 90, 91, 131, 132, 62, 63, 64, 65, 66, 71, - /* 420 */ 14, 152, 74, 142, 143, 144, 150, 74, 75, 74, - /* 430 */ 75, 150, 80, 152, 28, 57, 74, 75, 2, 3, - /* 440 */ 113, 5, 6, 7, 8, 9, 10, 11, 12, 13, - /* 450 */ 14, 93, 113, 148, 76, 77, 78, 123, 131, 132, - /* 460 */ 82, 14, 74, 75, 150, 87, 88, 89, 90, 91, - /* 470 */ 131, 132, 73, 134, 135, 28, 115, 138, 139, 152, - /* 480 */ 14, 120, 121, 115, 116, 109, 109, 152, 120, 121, - /* 490 */ 109, 152, 109, 57, 72, 14, 2, 3, 102, 5, - /* 500 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 28, - /* 510 */ 72, 119, 76, 77, 78, 164, 129, 130, 2, 2, - /* 520 */ 133, 113, 161, 87, 88, 89, 90, 91, 141, 161, - /* 530 */ 99, 162, 145, 146, 152, 69, 70, 71, 79, 131, - /* 540 */ 132, 102, 76, 77, 78, 99, 102, 96, 82, 83, - /* 550 */ 14, 57, 101, 156, 103, 14, 105, 106, 92, 93, - /* 560 */ 152, 110, 14, 112, 102, 156, 156, 85, 98, 14, - /* 570 */ 76, 77, 78, 122, 123, 62, 63, 64, 65, 66, - /* 580 */ 160, 87, 88, 89, 90, 91, 14, 160, 16, 81, - /* 590 */ 72, 94, 20, 80, 75, 23, 96, 72, 26, 27, - /* 600 */ 28, 72, 20, 73, 153, 154, 155, 107, 157, 71, - /* 610 */ 79, 39, 40, 41, 71, 115, 113, 117, 118, 73, - /* 620 */ 120, 121, 71, 51, 52, 53, 54, 55, 56, 57, - /* 630 */ 1, 2, 3, 4, 131, 132, 71, 81, 14, 75, - /* 640 */ 16, 81, 73, 75, 20, 73, 75, 23, 74, 96, - /* 650 */ 26, 27, 28, 73, 73, 152, 94, 157, 158, 159, - /* 660 */ 107, 161, 73, 39, 40, 41, 94, 73, 115, 81, - /* 670 */ 79, 118, 71, 120, 121, 51, 52, 53, 54, 55, - /* 680 */ 56, 57, 75, 71, 73, 75, 57, 58, 59, 60, - /* 690 */ 61, 14, 73, 75, 14, 28, 75, 73, 113, 14, - /* 700 */ 73, 73, 71, 71, 75, 14, 81, 20, 84, 75, - /* 710 */ 157, 158, 159, 16, 161, 74, 131, 132, 16, 21, - /* 720 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - /* 730 */ 32, 33, 34, 35, 36, 37, 38, 152, 73, 14, - /* 740 */ 72, 21, 22, 23, 24, 25, 26, 27, 28, 29, - /* 750 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 71, - /* 760 */ 71, 14, 14, 14, 86, 79, 16, 75, 74, 73, - /* 770 */ 16, 72, 14, 75, 21, 22, 23, 24, 25, 26, - /* 780 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - /* 790 */ 37, 38, 16, 14, 74, 16, 0, 81, 79, 20, - /* 800 */ 71, 19, 23, 113, 166, 26, 27, 28, 166, 166, - /* 810 */ 14, 166, 166, 166, 166, 166, 166, 166, 39, 40, - /* 820 */ 41, 131, 132, 166, 166, 166, 166, 166, 75, 96, - /* 830 */ 51, 52, 53, 54, 55, 56, 57, 166, 166, 166, - /* 840 */ 107, 108, 152, 166, 111, 14, 166, 16, 115, 166, - /* 850 */ 166, 20, 73, 120, 121, 166, 166, 26, 27, 28, - /* 860 */ 166, 166, 166, 166, 166, 69, 70, 71, 166, 166, - /* 870 */ 39, 40, 76, 77, 78, 166, 166, 166, 82, 83, - /* 880 */ 166, 166, 166, 166, 166, 166, 166, 166, 92, 93, - /* 890 */ 157, 158, 159, 96, 161, 166, 113, 166, 101, 166, - /* 900 */ 103, 166, 105, 106, 73, 113, 166, 110, 166, 112, - /* 910 */ 166, 166, 166, 166, 131, 132, 166, 134, 135, 122, - /* 920 */ 123, 138, 139, 131, 132, 166, 134, 135, 166, 166, - /* 930 */ 138, 139, 166, 166, 166, 152, 166, 166, 166, 166, - /* 940 */ 166, 166, 166, 113, 152, 166, 113, 166, 166, 166, - /* 950 */ 166, 166, 155, 166, 157, 125, 166, 166, 125, 166, - /* 960 */ 166, 131, 132, 166, 131, 132, 166, 166, 166, 166, - /* 970 */ 166, 166, 142, 166, 144, 142, 166, 144, 166, 113, - /* 980 */ 150, 166, 152, 150, 113, 152, 166, 166, 166, 166, - /* 990 */ 166, 125, 166, 166, 166, 166, 125, 131, 132, 166, - /* 1000 */ 166, 166, 131, 132, 166, 166, 166, 166, 142, 166, - /* 1010 */ 144, 166, 166, 142, 166, 144, 150, 166, 152, 166, - /* 1020 */ 166, 150, 166, 152, + /* 50 */ 178, 28, 62, 63, 167, 57, 66, 67, 68, 69, + /* 60 */ 70, 28, 143, 97, 15, 16, 17, 18, 19, 75, + /* 70 */ 71, 72, 22, 23, 24, 25, 26, 27, 28, 29, + /* 80 */ 30, 31, 32, 33, 34, 86, 167, 37, 38, 191, + /* 90 */ 96, 93, 94, 95, 137, 97, 14, 99, 74, 74, + /* 100 */ 76, 76, 104, 105, 106, 107, 108, 2, 3, 85, + /* 110 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 120 */ 171, 14, 15, 16, 175, 167, 41, 20, 1, 2, + /* 130 */ 3, 4, 75, 26, 27, 28, 51, 52, 53, 54, + /* 140 */ 55, 56, 57, 14, 187, 88, 39, 40, 41, 42, + /* 150 */ 43, 44, 45, 46, 47, 48, 49, 50, 169, 170, + /* 160 */ 5, 172, 57, 116, 117, 2, 3, 130, 5, 6, + /* 170 */ 7, 8, 9, 10, 11, 12, 13, 14, 71, 22, + /* 180 */ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + /* 190 */ 33, 34, 2, 86, 37, 38, 168, 132, 93, 94, + /* 200 */ 95, 167, 137, 138, 99, 147, 101, 167, 150, 104, + /* 210 */ 105, 106, 107, 108, 177, 178, 158, 159, 130, 131, + /* 220 */ 57, 163, 164, 2, 3, 130, 5, 6, 7, 8, + /* 230 */ 9, 10, 11, 12, 13, 14, 14, 113, 14, 128, + /* 240 */ 165, 166, 118, 132, 120, 142, 122, 123, 137, 138, + /* 250 */ 28, 127, 187, 129, 132, 133, 93, 94, 95, 137, + /* 260 */ 138, 106, 99, 139, 140, 130, 178, 104, 105, 106, + /* 270 */ 107, 108, 171, 178, 116, 117, 142, 171, 57, 176, + /* 280 */ 171, 2, 3, 130, 5, 6, 7, 8, 9, 10, + /* 290 */ 11, 12, 13, 14, 104, 105, 106, 73, 187, 75, + /* 300 */ 76, 77, 78, 179, 180, 181, 130, 183, 86, 187, + /* 310 */ 176, 171, 101, 178, 93, 94, 95, 93, 94, 95, + /* 320 */ 99, 14, 111, 99, 100, 104, 105, 106, 107, 108, + /* 330 */ 142, 178, 171, 109, 110, 28, 57, 177, 178, 2, + /* 340 */ 3, 113, 5, 6, 7, 8, 9, 10, 11, 12, + /* 350 */ 13, 14, 124, 125, 178, 14, 128, 16, 146, 147, + /* 360 */ 132, 20, 150, 171, 176, 137, 138, 26, 27, 28, + /* 370 */ 158, 159, 93, 94, 95, 163, 164, 130, 99, 88, + /* 380 */ 39, 40, 142, 104, 105, 106, 107, 108, 97, 130, + /* 390 */ 130, 130, 177, 178, 57, 148, 149, 2, 3, 113, + /* 400 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 410 */ 124, 183, 184, 185, 14, 187, 176, 74, 132, 76, + /* 420 */ 134, 135, 141, 137, 138, 178, 14, 86, 28, 130, + /* 430 */ 93, 94, 95, 177, 178, 130, 99, 178, 178, 178, + /* 440 */ 28, 104, 105, 106, 107, 108, 162, 148, 149, 114, + /* 450 */ 115, 141, 57, 148, 149, 2, 3, 113, 5, 6, + /* 460 */ 7, 8, 9, 10, 11, 12, 13, 14, 124, 183, + /* 470 */ 184, 185, 121, 187, 87, 88, 132, 178, 130, 135, + /* 480 */ 187, 137, 138, 178, 87, 88, 130, 187, 93, 94, + /* 490 */ 95, 87, 88, 74, 99, 76, 148, 149, 178, 104, + /* 500 */ 105, 106, 107, 108, 148, 149, 189, 151, 152, 170, + /* 510 */ 57, 155, 156, 2, 3, 110, 5, 6, 7, 8, + /* 520 */ 9, 10, 11, 12, 13, 14, 178, 183, 184, 185, + /* 530 */ 176, 187, 87, 88, 178, 14, 41, 42, 43, 44, + /* 540 */ 45, 46, 47, 48, 49, 50, 93, 94, 95, 87, + /* 550 */ 88, 130, 57, 14, 130, 87, 88, 104, 105, 106, + /* 560 */ 107, 108, 140, 130, 87, 88, 142, 28, 57, 148, + /* 570 */ 149, 86, 148, 149, 132, 133, 166, 153, 154, 137, + /* 580 */ 138, 148, 149, 14, 160, 16, 162, 87, 88, 20, + /* 590 */ 87, 88, 23, 176, 130, 26, 27, 28, 126, 178, + /* 600 */ 176, 126, 178, 178, 93, 94, 95, 86, 39, 40, + /* 610 */ 41, 178, 148, 149, 126, 104, 105, 106, 107, 108, + /* 620 */ 51, 52, 53, 54, 55, 56, 57, 87, 88, 187, + /* 630 */ 92, 14, 126, 16, 96, 146, 147, 20, 92, 150, + /* 640 */ 23, 119, 178, 26, 27, 28, 92, 158, 159, 136, + /* 650 */ 2, 190, 163, 164, 2, 86, 39, 40, 41, 188, + /* 660 */ 130, 178, 96, 116, 119, 116, 182, 119, 51, 52, + /* 670 */ 53, 54, 55, 56, 57, 64, 65, 14, 148, 149, + /* 680 */ 111, 151, 152, 14, 182, 155, 156, 157, 14, 182, + /* 690 */ 79, 80, 81, 82, 83, 84, 119, 113, 102, 14, + /* 700 */ 89, 90, 118, 86, 120, 186, 122, 123, 178, 186, + /* 710 */ 115, 127, 14, 129, 173, 92, 98, 87, 101, 111, + /* 720 */ 92, 92, 86, 139, 140, 21, 22, 23, 24, 25, + /* 730 */ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + /* 740 */ 36, 37, 38, 1, 2, 3, 4, 21, 22, 23, + /* 750 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + /* 760 */ 34, 35, 36, 37, 38, 181, 20, 183, 96, 62, + /* 770 */ 63, 75, 86, 66, 67, 68, 69, 70, 75, 75, + /* 780 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + /* 790 */ 31, 32, 33, 34, 35, 36, 37, 38, 75, 57, + /* 800 */ 58, 59, 60, 61, 97, 75, 98, 87, 98, 88, + /* 810 */ 86, 111, 87, 87, 21, 22, 23, 24, 25, 26, + /* 820 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + /* 830 */ 37, 38, 87, 86, 86, 86, 86, 98, 75, 96, + /* 840 */ 87, 75, 86, 14, 87, 87, 86, 88, 21, 22, + /* 850 */ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + /* 860 */ 33, 34, 35, 36, 37, 38, 14, 130, 28, 14, + /* 870 */ 87, 16, 14, 86, 86, 20, 75, 75, 23, 142, + /* 880 */ 87, 26, 27, 28, 98, 148, 149, 20, 14, 16, + /* 890 */ 87, 16, 88, 86, 39, 40, 41, 160, 161, 162, + /* 900 */ 92, 75, 14, 75, 14, 14, 51, 52, 53, 54, + /* 910 */ 55, 56, 57, 176, 87, 178, 21, 22, 23, 24, + /* 920 */ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + /* 930 */ 35, 36, 37, 38, 1, 2, 3, 4, 14, 96, + /* 940 */ 87, 86, 21, 22, 23, 24, 25, 26, 27, 28, + /* 950 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + /* 960 */ 0, 16, 16, 86, 88, 14, 103, 98, 16, 75, + /* 970 */ 14, 92, 16, 19, 14, 86, 20, 96, 14, 130, + /* 980 */ 87, 14, 26, 27, 86, 14, 14, 14, 14, 19, + /* 990 */ 57, 58, 59, 60, 61, 39, 40, 148, 149, 76, + /* 1000 */ 151, 152, 192, 192, 155, 156, 192, 192, 192, 192, + /* 1010 */ 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + /* 1020 */ 87, 192, 192, 192, 192, 192, 192, 178, 192, 192, + /* 1030 */ 192, 192, 192, 73, 192, 75, 76, 77, 78, 192, + /* 1040 */ 192, 192, 86, 192, 130, 192, 130, 91, 192, 192, + /* 1050 */ 192, 192, 192, 93, 94, 95, 142, 192, 192, 99, + /* 1060 */ 100, 130, 148, 149, 148, 149, 130, 151, 152, 109, + /* 1070 */ 110, 155, 156, 142, 160, 192, 162, 192, 142, 148, + /* 1080 */ 149, 192, 192, 130, 148, 149, 192, 192, 192, 192, + /* 1090 */ 176, 160, 178, 162, 178, 142, 160, 192, 162, 192, + /* 1100 */ 192, 148, 149, 192, 192, 192, 192, 176, 192, 178, + /* 1110 */ 192, 192, 176, 160, 178, 162, 192, 192, 192, 192, + /* 1120 */ 192, 192, 192, 192, 192, 192, 192, 192, 192, 176, + /* 1130 */ 192, 178, }; -#define YY_SHIFT_USE_DFLT (1024) -#define YY_SHIFT_COUNT (196) -#define YY_SHIFT_MIN (-42) -#define YY_SHIFT_MAX (831) +#define YY_SHIFT_USE_DFLT (1132) +#define YY_SHIFT_COUNT (232) +#define YY_SHIFT_MIN (-34) +#define YY_SHIFT_MAX (974) static const short yy_shift_ofst[] = { - /* 0 */ 466, 146, 204, 796, -2, 572, -1, 624, -1, -1, - /* 10 */ -1, 779, 779, 779, 779, 94, 41, 41, 262, 320, - /* 20 */ 262, 352, 513, 88, 378, 831, 831, 831, 831, 831, - /* 30 */ 831, 629, -12, -12, 436, 494, 198, -12, -12, -12, - /* 40 */ -12, 54, 291, -12, -12, -12, 291, 5, 5, 67, - /* 50 */ 5, 5, 91, 91, 91, 117, 255, 198, 198, 198, - /* 60 */ 72, 45, 45, 114, 196, 196, 54, 258, 5, 358, - /* 70 */ 67, 5, 399, 399, 91, 399, 91, 399, 422, 438, - /* 80 */ 517, 516, 91, 91, 459, 422, 459, 422, 536, 541, - /* 90 */ 548, 422, 482, 482, 117, 555, 698, 720, 753, 159, - /* 100 */ 159, 159, 159, 159, 216, 293, 277, 214, 294, 348, - /* 110 */ 304, 330, 353, 355, 362, 406, 447, 388, 481, 447, - /* 120 */ -42, -42, 406, 319, 508, 518, 519, 497, 525, 529, - /* 130 */ 530, 582, 531, 546, 538, 543, 551, 556, 565, 564, - /* 140 */ 560, 569, 574, 568, 571, 580, 581, 562, 589, 594, - /* 150 */ 588, 591, 601, 607, 612, 611, 610, 677, 619, 618, - /* 160 */ 680, 667, 621, 685, 627, 628, 631, 632, 625, 687, - /* 170 */ 691, 634, 697, 641, 702, 665, 668, 688, 689, 725, - /* 180 */ 747, 748, 749, 686, 692, 750, 694, 754, 696, 699, - /* 190 */ 758, 678, 776, 716, 719, 729, 782, + /* 0 */ 224, 163, 221, 960, -2, 569, -1, 617, -1, -1, + /* 10 */ -1, 855, 855, 855, 855, -10, -10, 107, -34, 707, + /* 20 */ 279, 337, 279, 105, 395, 341, 341, 341, 341, 341, + /* 30 */ 341, 341, 933, 24, 23, 23, 453, 511, 742, 956, + /* 40 */ 23, 23, 23, 23, 307, -6, 23, 23, 23, -6, + /* 50 */ -5, -5, 82, -5, -5, 33, 33, 33, 129, 495, + /* 60 */ 611, 742, 742, 742, 956, 956, 956, 956, 956, 956, + /* 70 */ 85, 49, 49, 127, 190, 190, 307, 155, 25, -5, + /* 80 */ 405, 82, -5, 485, 485, 33, 485, 33, 485, 546, + /* 90 */ 554, 648, 652, 33, 33, 566, 546, 566, 546, 663, + /* 100 */ 669, 674, 546, 596, 596, 129, 685, 698, 704, 726, + /* 110 */ 759, 793, 827, 895, 895, 895, 895, 895, 921, 921, + /* 120 */ 921, 921, 921, 50, 157, 222, 211, 387, 397, 57, + /* 130 */ 404, 445, 462, 468, 477, 400, 412, 500, 539, 412, + /* 140 */ 538, 538, 400, 291, 503, 521, 343, 540, 419, 618, + /* 150 */ 623, 630, 608, 628, 629, 636, 746, 672, 686, 696, + /* 160 */ 703, 723, 708, 730, 720, 710, 724, 721, 725, 745, + /* 170 */ 747, 748, 700, 749, 750, 739, 743, 763, 753, 766, + /* 180 */ 756, 757, 829, 760, 758, 852, 840, 783, 858, 787, + /* 190 */ 788, 801, 802, 786, 867, 874, 803, 873, 804, 875, + /* 200 */ 807, 808, 826, 828, 888, 890, 891, 924, 843, 853, + /* 210 */ 945, 876, 946, 877, 879, 951, 863, 952, 869, 881, + /* 220 */ 894, 954, 889, 893, 964, 967, 898, 971, 972, 973, + /* 230 */ 974, 970, 923, }; -#define YY_REDUCE_USE_DFLT (-113) -#define YY_REDUCE_COUNT (95) -#define YY_REDUCE_MIN (-112) -#define YY_REDUCE_MAX (871) +#define YY_REDUCE_USE_DFLT (-162) +#define YY_REDUCE_COUNT (107) +#define YY_REDUCE_MIN (-161) +#define YY_REDUCE_MAX (953) static const short yy_reduce_ofst[] = { - /* 0 */ 451, 733, 500, 797, 553, 223, -81, 281, 339, 783, - /* 10 */ 792, 830, 833, 866, 871, 211, -112, 387, 105, 195, - /* 20 */ 368, -110, -110, 361, 361, 269, 327, 408, 503, 585, - /* 30 */ 690, -57, 138, -40, -96, -96, -70, 17, 19, 165, - /* 40 */ 166, -68, 47, 222, 224, 251, 63, -73, 79, 26, - /* 50 */ 80, 137, 157, 162, 206, 134, -15, 59, 70, 78, - /* 60 */ 24, 136, 153, 207, 180, 234, 168, 209, 276, 334, - /* 70 */ 305, 314, 376, 377, 335, 381, 168, 383, 396, 392, - /* 80 */ 351, 369, 382, 168, 431, 439, 446, 444, 397, 409, - /* 90 */ 410, 462, 420, 427, 470, 410, + /* 0 */ 124, 228, 286, 584, 344, 424, 530, 737, 356, 849, + /* 10 */ 916, 914, 931, 936, 953, 212, 489, -128, 58, 58, + /* 20 */ 122, 111, 442, 65, 65, 247, 299, 305, 348, 421, + /* 30 */ 433, 464, -113, -11, 88, 37, -43, -43, -81, -51, + /* 40 */ 95, 135, 153, 176, -161, 47, 259, 260, 261, 158, + /* 50 */ 103, 134, 75, 188, 240, 160, 215, 256, 335, -102, + /* 60 */ 28, -42, 34, 40, 101, 106, 109, 140, 161, 192, + /* 70 */ 284, 281, 310, 351, 293, 300, 320, 317, 339, 354, + /* 80 */ 422, 410, 417, 472, 475, 425, 488, 320, 506, 522, + /* 90 */ 513, 461, 471, 483, 320, 547, 545, 549, 548, 484, + /* 100 */ 502, 507, 577, 519, 523, 595, 507, 541, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 642, 642, 642, 642, 642, 611, 642, 631, 642, 642, - /* 10 */ 642, 631, 631, 631, 631, 642, 642, 642, 537, 642, - /* 20 */ 537, 642, 642, 642, 642, 642, 642, 642, 642, 642, - /* 30 */ 642, 642, 642, 633, 642, 642, 642, 642, 642, 642, - /* 40 */ 642, 633, 642, 642, 642, 642, 642, 631, 631, 642, - /* 50 */ 631, 631, 633, 633, 633, 642, 642, 642, 642, 642, - /* 60 */ 642, 642, 642, 642, 561, 560, 642, 553, 631, 642, - /* 70 */ 642, 631, 642, 642, 642, 642, 538, 642, 495, 545, - /* 80 */ 556, 549, 642, 642, 642, 495, 642, 495, 493, 493, - /* 90 */ 493, 495, 527, 527, 642, 493, 642, 642, 642, 621, - /* 100 */ 601, 600, 592, 503, 591, 642, 642, 642, 642, 642, - /* 110 */ 642, 642, 642, 642, 642, 634, 634, 642, 642, 642, - /* 120 */ 564, 563, 642, 642, 577, 642, 642, 642, 642, 642, - /* 130 */ 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, - /* 140 */ 642, 642, 612, 642, 642, 642, 642, 642, 642, 642, - /* 150 */ 588, 642, 642, 642, 642, 642, 642, 642, 642, 642, - /* 160 */ 642, 634, 642, 642, 642, 519, 642, 642, 642, 642, - /* 170 */ 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, - /* 180 */ 642, 642, 642, 565, 642, 642, 642, 642, 642, 642, - /* 190 */ 642, 642, 642, 504, 642, 642, 642, + /* 0 */ 767, 767, 767, 767, 767, 734, 767, 755, 767, 767, + /* 10 */ 767, 755, 755, 755, 755, 767, 767, 767, 767, 767, + /* 20 */ 659, 767, 659, 767, 767, 767, 767, 767, 767, 767, + /* 30 */ 767, 767, 767, 767, 767, 757, 767, 767, 767, 604, + /* 40 */ 767, 767, 767, 767, 757, 767, 767, 767, 767, 767, + /* 50 */ 755, 755, 767, 755, 755, 757, 757, 757, 767, 767, + /* 60 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, + /* 70 */ 767, 767, 767, 767, 683, 682, 767, 675, 767, 755, + /* 80 */ 767, 767, 755, 767, 767, 767, 767, 660, 767, 617, + /* 90 */ 667, 678, 671, 767, 767, 767, 617, 767, 617, 615, + /* 100 */ 615, 615, 617, 649, 649, 767, 615, 588, 767, 767, + /* 110 */ 767, 767, 767, 744, 724, 723, 715, 625, 595, 606, + /* 120 */ 605, 597, 594, 714, 598, 767, 767, 767, 767, 767, + /* 130 */ 767, 767, 767, 767, 767, 758, 758, 767, 767, 767, + /* 140 */ 686, 685, 767, 767, 767, 767, 767, 767, 767, 699, + /* 150 */ 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, + /* 160 */ 767, 767, 767, 767, 767, 767, 767, 735, 767, 767, + /* 170 */ 767, 767, 767, 767, 767, 711, 767, 767, 767, 767, + /* 180 */ 767, 767, 767, 767, 767, 767, 758, 767, 767, 767, + /* 190 */ 641, 767, 767, 767, 767, 767, 767, 767, 767, 767, + /* 200 */ 767, 767, 767, 767, 767, 767, 767, 767, 687, 767, + /* 210 */ 767, 767, 767, 767, 767, 767, 767, 767, 626, 767, + /* 220 */ 767, 767, 602, 767, 767, 767, 767, 767, 767, 767, + /* 230 */ 767, 767, 767, }; /********** End of lemon-generated parsing tables *****************************/ @@ -606,6 +641,10 @@ static const YYCODETYPE yyFallback[] = { 0, /* ARRAY => nothing */ 0, /* OBJECT => nothing */ 0, /* CALLABLE => nothing */ + 0, /* PRE_ASSERT => nothing */ + 0, /* POST_ASSERT => nothing */ + 14, /* ERROR => NAME */ + 14, /* WARNING => NAME */ 14, /* TEMP => NAME */ 14, /* FREE => NAME */ 14, /* SET => NAME */ @@ -714,33 +753,39 @@ static const char *const yyTokenName[] = { "INTVAL", "BOOLVAL", "COUNT", "TO_OBJECT", "TO_ARRAY", "TO_STRING", "TO_INT", "TO_FLOAT", "TO_BOOL", "VOID", "MIXED", "ARRAY", - "OBJECT", "CALLABLE", "TEMP", "FREE", + "OBJECT", "CALLABLE", "PRE_ASSERT", "POST_ASSERT", + "ERROR", "WARNING", "TEMP", "FREE", "SET", "LET", "RETURN", "CALLOC", - "CALLBACK", "LIB", "EOF", "EOS", - "COLON", "LPAREN", "COMMA", "RPAREN", - "ENUM", "STRUCT", "UNION", "LBRACE", - "RBRACE", "EQUALS", "CONST", "TYPEDEF", - "ELLIPSIS", "LBRACKET", "RBRACKET", "CHAR", - "SHORT", "LONG", "UNSIGNED", "SIGNED", - "STATIC", "FUNCTION", "DOLLAR_NAME", "error", - "decl_enum", "decl_enum_items", "decl_enum_item", "decl_struct_args_block", - "decl_struct_args", "decl_struct", "align_and_size", "decl_union", - "const_type", "constant", "decl_typedef", "decl_typedef_body_ex", - "decl_typedef_body", "decl_typedef_body_fn_args", "decl", "decl_func", - "decl_abi", "decl_var", "decl_vars", "decl_arg", - "decl_args", "struct_args", "struct_arg", "decl_layout", - "decl_type", "const_decl_type", "impl", "impl_func", - "impl_def_val", "impl_var", "impl_arg", "impl_args", - "impl_vararg", "impl_stmts", "impl_stmt", "number", - "num_exp", "let_stmt", "let_calloc", "let_func", - "callback_arg_list", "callback_args", "let_callback", "let_exp", - "let_exps", "set_stmt", "set_exp", "set_exps", - "set_func", "return_stmt", "free_stmt", "free_exps", - "free_exp", "impl_type", "reference", "indirection", - "pointers", "file", "blocks", "block", - "optional_name", "enum_name", "struct_name", "union_name", - "decl_var_array_size", "decl_scalar_type", "decl_scalar_type_short", "decl_scalar_type_long", - "decl_scalar_type_long_long", "callback_rval", + "CALLBACK", "LIB", "ANY", "EOS", + "EOL", "COMMENT", "HASH", "IFDEF", + "IFNDEF", "ENDIF", "ELSE", "UNDEF", + "DEFINE", "NO_WHITESPACE", "LPAREN", "RPAREN", + "COMMA", "IF", "ELIF", "DEFINED", + "COLON", "ENUM", "STRUCT", "UNION", + "LBRACE", "RBRACE", "EQUALS", "CONST", + "TYPEDEF", "ELLIPSIS", "LBRACKET", "RBRACKET", + "CHAR", "SHORT", "LONG", "UNSIGNED", + "SIGNED", "STATIC", "FUNCTION", "DOLLAR_NAME", + "error", "decl_enum", "decl_enum_items", "decl_enum_item", + "decl_struct_args_block", "decl_struct_args", "decl_struct", "align_and_size", + "decl_union", "const_type", "constant", "decl_typedef", + "decl_typedef_body_ex", "decl_typedef_body", "decl_typedef_body_fn_args", "decl", + "decl_func", "decl_abi", "decl_var", "decl_vars", + "decl_arg", "decl_args", "struct_args", "struct_arg", + "decl_layout", "decl_type", "const_decl_type", "impl", + "impl_func", "impl_def_val", "impl_var", "impl_arg", + "impl_args", "impl_vararg", "impl_stmts", "impl_stmt", + "number", "num_exp", "let_stmt", "let_calloc", + "let_func", "callback_arg_list", "callback_args", "let_callback", + "let_exp", "let_exps", "assert_stmt", "set_stmt", + "set_exp", "set_exps", "set_func", "return_stmt", + "free_stmt", "free_exps", "free_exp", "impl_type", + "cpp_exp", "cpp_macro_decl", "cpp_macro_decl_tokens", "cpp_macro_exp", + "cpp_macro_sig", "cpp_macro_sig_args", "cpp_macro_call", "cpp_macro_call_args", + "reference", "indirection", "pointers", "file", + "blocks", "block", "optional_name", "enum_name", + "struct_name", "union_name", "decl_var_array_size", "decl_scalar_type", + "decl_scalar_type_short", "decl_scalar_type_long", "decl_scalar_type_long_long", "callback_rval", }; #endif /* NDEBUG */ @@ -748,163 +793,197 @@ static const char *const yyTokenName[] = { /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { - /* 0 */ "block ::= LIB QUOTED_STRING EOS", - /* 1 */ "block ::= decl", - /* 2 */ "block ::= impl", - /* 3 */ "block ::= decl_typedef", - /* 4 */ "block ::= constant", - /* 5 */ "block ::= decl_struct", - /* 6 */ "block ::= decl_union", - /* 7 */ "block ::= decl_enum", - /* 8 */ "optional_name ::=", - /* 9 */ "optional_name ::= NAME", - /* 10 */ "align_and_size ::=", - /* 11 */ "align_and_size ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN", - /* 12 */ "enum_name ::= ENUM optional_name", - /* 13 */ "struct_name ::= STRUCT optional_name", - /* 14 */ "union_name ::= UNION optional_name", - /* 15 */ "decl_enum ::= enum_name LBRACE decl_enum_items RBRACE", - /* 16 */ "decl_enum_items ::= decl_enum_item", - /* 17 */ "decl_enum_items ::= decl_enum_items COMMA decl_enum_item", - /* 18 */ "decl_enum_item ::= NAME EQUALS num_exp", - /* 19 */ "decl_enum_item ::= NAME", - /* 20 */ "decl_struct_args_block ::= LBRACE struct_args RBRACE", - /* 21 */ "decl_struct_args ::= decl_struct_args_block", - /* 22 */ "decl_struct_args ::= EOS", - /* 23 */ "decl_struct ::= STRUCT NAME align_and_size decl_struct_args", - /* 24 */ "decl_union ::= UNION NAME align_and_size decl_struct_args", - /* 25 */ "const_type ::= BOOL|INT|FLOAT|STRING", - /* 26 */ "constant ::= CONST const_type NSNAME EQUALS impl_def_val EOS", - /* 27 */ "decl_typedef ::= TYPEDEF decl_typedef_body EOS", - /* 28 */ "decl_typedef_body_ex ::= struct_name align_and_size decl_struct_args_block decl_var", - /* 29 */ "decl_typedef_body_ex ::= union_name align_and_size decl_struct_args_block decl_var", - /* 30 */ "decl_typedef_body_ex ::= decl_enum NAME", - /* 31 */ "decl_typedef_body ::= decl_typedef_body_ex", - /* 32 */ "decl_typedef_body_fn_args ::= LPAREN decl_args RPAREN", - /* 33 */ "decl_typedef_body ::= decl_func decl_typedef_body_fn_args", - /* 34 */ "decl_typedef_body ::= decl_arg", - /* 35 */ "decl ::= decl_abi decl_func LPAREN decl_args RPAREN EOS", - /* 36 */ "decl ::= decl_abi decl_func LPAREN decl_args COMMA ELLIPSIS RPAREN EOS", - /* 37 */ "decl_func ::= decl_arg", - /* 38 */ "decl_func ::= VOID NAME", - /* 39 */ "decl_typedef_body ::= VOID indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args", - /* 40 */ "decl_typedef_body ::= CONST VOID pointers LPAREN indirection NAME RPAREN decl_typedef_body_fn_args", - /* 41 */ "decl_abi ::= NAME", - /* 42 */ "decl_var_array_size ::=", - /* 43 */ "decl_var_array_size ::= LBRACKET NUMBER RBRACKET", - /* 44 */ "decl_var ::= NAME decl_var_array_size", - /* 45 */ "decl_var ::= pointers NAME decl_var_array_size", - /* 46 */ "decl_vars ::= decl_var", - /* 47 */ "decl_vars ::= decl_vars COMMA decl_var", - /* 48 */ "decl_arg ::= const_decl_type decl_var", - /* 49 */ "decl_typedef_body ::= const_decl_type indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args", - /* 50 */ "decl_arg ::= VOID pointers NAME", - /* 51 */ "decl_arg ::= CONST VOID pointers NAME", - /* 52 */ "decl_args ::=", - /* 53 */ "decl_args ::= VOID", - /* 54 */ "decl_args ::= decl_arg", - /* 55 */ "decl_args ::= decl_args COMMA decl_arg", - /* 56 */ "struct_args ::= struct_arg", - /* 57 */ "struct_args ::= struct_args struct_arg", - /* 58 */ "struct_arg ::= decl_typedef_body_ex EOS", - /* 59 */ "struct_arg ::= decl_arg decl_layout EOS", - /* 60 */ "decl_layout ::=", - /* 61 */ "decl_layout ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN", - /* 62 */ "decl_scalar_type ::= CHAR", - /* 63 */ "decl_scalar_type ::= SHORT decl_scalar_type_short", - /* 64 */ "decl_scalar_type_short ::=", - /* 65 */ "decl_scalar_type_short ::= INT", - /* 66 */ "decl_scalar_type ::= INT", - /* 67 */ "decl_scalar_type ::= LONG decl_scalar_type_long", - /* 68 */ "decl_scalar_type_long ::=", - /* 69 */ "decl_scalar_type_long ::= DOUBLE", - /* 70 */ "decl_scalar_type_long ::= LONG decl_scalar_type_long_long", - /* 71 */ "decl_scalar_type_long_long ::=", - /* 72 */ "decl_scalar_type_long_long ::= INT", - /* 73 */ "decl_type ::= UNSIGNED decl_scalar_type", - /* 74 */ "decl_type ::= SIGNED decl_scalar_type", - /* 75 */ "decl_type ::= UNSIGNED", - /* 76 */ "decl_type ::= SIGNED", - /* 77 */ "decl_type ::= decl_scalar_type", - /* 78 */ "decl_type ::= STRUCT NAME", - /* 79 */ "decl_type ::= UNION NAME", - /* 80 */ "decl_type ::= ENUM NAME", - /* 81 */ "decl_type ::= FLOAT|DOUBLE|INT8|UINT8|INT16|UINT16|INT32|UINT32|INT64|UINT64|NAME", - /* 82 */ "const_decl_type ::= decl_type", - /* 83 */ "const_decl_type ::= CONST decl_type", - /* 84 */ "impl ::= impl_func LBRACE impl_stmts RBRACE", - /* 85 */ "impl ::= STATIC impl_func LBRACE impl_stmts RBRACE", - /* 86 */ "impl_func ::= FUNCTION reference NSNAME LPAREN RPAREN COLON impl_type", - /* 87 */ "impl_func ::= FUNCTION reference NSNAME LPAREN impl_args RPAREN COLON impl_type", - /* 88 */ "impl_func ::= FUNCTION reference NSNAME LPAREN impl_args COMMA impl_type reference ELLIPSIS DOLLAR_NAME RPAREN COLON impl_type", - /* 89 */ "impl_def_val ::= NULL|NUMBER|TRUE|FALSE|QUOTED_STRING", - /* 90 */ "impl_var ::= reference DOLLAR_NAME", - /* 91 */ "impl_type ::= VOID|MIXED|BOOL|INT|FLOAT|STRING|ARRAY|OBJECT|CALLABLE", - /* 92 */ "impl_arg ::= impl_type impl_var", - /* 93 */ "impl_arg ::= impl_type impl_var EQUALS impl_def_val", - /* 94 */ "impl_args ::= impl_arg", - /* 95 */ "impl_args ::= impl_args COMMA impl_arg", - /* 96 */ "impl_stmts ::= impl_stmt", - /* 97 */ "impl_stmts ::= impl_stmts impl_stmt", - /* 98 */ "impl_stmt ::= return_stmt", - /* 99 */ "impl_stmt ::= let_stmt", - /* 100 */ "impl_stmt ::= set_stmt", - /* 101 */ "impl_stmt ::= free_stmt", - /* 102 */ "number ::= NUMBER|NSNAME", - /* 103 */ "number ::= decl_var", - /* 104 */ "num_exp ::= number", - /* 105 */ "num_exp ::= LPAREN num_exp RPAREN", - /* 106 */ "num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE num_exp", - /* 107 */ "num_exp ::= TILDE|NOT|PLUS|MINUS num_exp", - /* 108 */ "let_exp ::= NULL", - /* 109 */ "let_exp ::= AMPERSAND NULL", - /* 110 */ "let_exp ::= let_callback", - /* 111 */ "let_exp ::= let_calloc", - /* 112 */ "let_exp ::= AMPERSAND let_calloc", - /* 113 */ "let_exp ::= let_func", - /* 114 */ "let_exp ::= AMPERSAND let_func", - /* 115 */ "let_exp ::= num_exp", - /* 116 */ "let_exp ::= AMPERSAND num_exp", - /* 117 */ "let_exp ::= decl_var EQUALS let_exp", - /* 118 */ "let_stmt ::= LET let_exp EOS", - /* 119 */ "let_stmt ::= TEMP decl_var EQUALS reference decl_var EOS", - /* 120 */ "let_callback ::= CALLBACK callback_rval LPAREN impl_var LPAREN callback_arg_list RPAREN RPAREN", - /* 121 */ "let_calloc ::= CALLOC LPAREN num_exp COMMA num_exp RPAREN", - /* 122 */ "let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var RPAREN", - /* 123 */ "let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var COMMA let_exps RPAREN", - /* 124 */ "let_exps ::= let_exp", - /* 125 */ "let_exps ::= let_exps COMMA let_exp", - /* 126 */ "callback_arg_list ::=", - /* 127 */ "callback_arg_list ::= callback_args", - /* 128 */ "callback_args ::= set_exp", - /* 129 */ "callback_args ::= callback_args COMMA set_exp", - /* 130 */ "callback_rval ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT", - /* 131 */ "callback_rval ::= VOID", - /* 132 */ "set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var RPAREN", - /* 133 */ "set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA set_exps RPAREN", - /* 134 */ "set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA ELLIPSIS RPAREN", - /* 135 */ "set_exp ::= set_func", - /* 136 */ "set_exp ::= num_exp", - /* 137 */ "set_exps ::= set_exp", - /* 138 */ "set_exps ::= set_exps COMMA set_exp", - /* 139 */ "set_exp ::= impl_var EQUALS set_exp", - /* 140 */ "set_stmt ::= SET set_exp EOS", - /* 141 */ "return_stmt ::= RETURN set_func EOS", - /* 142 */ "free_stmt ::= FREE free_exps EOS", - /* 143 */ "free_exps ::= free_exp", - /* 144 */ "free_exps ::= free_exps COMMA free_exp", - /* 145 */ "free_exp ::= NAME LPAREN decl_vars RPAREN", - /* 146 */ "reference ::=", - /* 147 */ "reference ::= AMPERSAND", - /* 148 */ "indirection ::=", - /* 149 */ "indirection ::= pointers", - /* 150 */ "pointers ::= ASTERISK", - /* 151 */ "pointers ::= pointers ASTERISK", - /* 152 */ "file ::= blocks", - /* 153 */ "blocks ::= block", - /* 154 */ "blocks ::= blocks block", - /* 155 */ "block ::= EOF", - /* 156 */ "block ::= EOS", + /* 0 */ "block ::= HASH cpp_exp EOL", + /* 1 */ "cpp_exp ::= ERROR|WARNING QUOTED_STRING", + /* 2 */ "cpp_exp ::= IFDEF NAME", + /* 3 */ "cpp_exp ::= IFNDEF NAME", + /* 4 */ "cpp_exp ::= ENDIF", + /* 5 */ "cpp_exp ::= ELSE", + /* 6 */ "cpp_exp ::= UNDEF NAME", + /* 7 */ "cpp_exp ::= DEFINE NAME cpp_macro_decl", + /* 8 */ "cpp_macro_decl ::=", + /* 9 */ "cpp_macro_decl ::= cpp_macro_sig", + /* 10 */ "cpp_macro_decl ::= cpp_macro_sig cpp_macro_decl_tokens", + /* 11 */ "cpp_macro_sig ::= NO_WHITESPACE LPAREN cpp_macro_sig_args RPAREN", + /* 12 */ "cpp_macro_sig_args ::=", + /* 13 */ "cpp_macro_sig_args ::= NAME", + /* 14 */ "cpp_macro_sig_args ::= cpp_macro_sig_args COMMA NAME", + /* 15 */ "cpp_macro_decl ::= cpp_macro_decl_tokens", + /* 16 */ "cpp_macro_decl_tokens ::= ANY", + /* 17 */ "cpp_macro_decl_tokens ::= cpp_macro_decl_tokens ANY", + /* 18 */ "cpp_exp ::= IF cpp_macro_exp", + /* 19 */ "cpp_exp ::= ELIF cpp_macro_exp", + /* 20 */ "cpp_macro_exp ::= LPAREN cpp_macro_exp RPAREN", + /* 21 */ "cpp_macro_exp ::= TILDE|NOT|PLUS|MINUS cpp_macro_exp", + /* 22 */ "cpp_macro_exp ::= cpp_macro_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE cpp_macro_exp", + /* 23 */ "cpp_macro_exp ::= DEFINED NAME", + /* 24 */ "cpp_macro_exp ::= DEFINED LPAREN NAME RPAREN", + /* 25 */ "cpp_macro_exp ::= NUMBER|NSNAME", + /* 26 */ "cpp_macro_exp ::= NAME", + /* 27 */ "cpp_macro_exp ::= NAME LPAREN cpp_macro_call_args RPAREN", + /* 28 */ "cpp_macro_call_args ::=", + /* 29 */ "cpp_macro_call_args ::= cpp_macro_exp", + /* 30 */ "cpp_macro_call_args ::= cpp_macro_call_args COMMA cpp_macro_exp", + /* 31 */ "block ::= LIB QUOTED_STRING EOS", + /* 32 */ "block ::= decl", + /* 33 */ "block ::= impl", + /* 34 */ "block ::= decl_typedef", + /* 35 */ "block ::= constant", + /* 36 */ "block ::= decl_struct", + /* 37 */ "block ::= decl_union", + /* 38 */ "block ::= decl_enum", + /* 39 */ "optional_name ::=", + /* 40 */ "optional_name ::= NAME", + /* 41 */ "align_and_size ::=", + /* 42 */ "align_and_size ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN", + /* 43 */ "enum_name ::= ENUM optional_name", + /* 44 */ "struct_name ::= STRUCT optional_name", + /* 45 */ "union_name ::= UNION optional_name", + /* 46 */ "decl_enum ::= enum_name LBRACE decl_enum_items RBRACE", + /* 47 */ "decl_enum_items ::= decl_enum_item", + /* 48 */ "decl_enum_items ::= decl_enum_items COMMA decl_enum_item", + /* 49 */ "decl_enum_item ::= NAME EQUALS num_exp", + /* 50 */ "decl_enum_item ::= NAME", + /* 51 */ "decl_struct_args_block ::= LBRACE struct_args RBRACE", + /* 52 */ "decl_struct_args ::= decl_struct_args_block", + /* 53 */ "decl_struct_args ::= EOS", + /* 54 */ "decl_struct ::= STRUCT NAME align_and_size decl_struct_args", + /* 55 */ "decl_union ::= UNION NAME align_and_size decl_struct_args", + /* 56 */ "const_type ::= BOOL|INT|FLOAT|STRING", + /* 57 */ "constant ::= CONST const_type NSNAME EQUALS impl_def_val EOS", + /* 58 */ "decl_typedef ::= TYPEDEF decl_typedef_body EOS", + /* 59 */ "decl_typedef_body_ex ::= struct_name align_and_size decl_struct_args_block decl_var", + /* 60 */ "decl_typedef_body_ex ::= union_name align_and_size decl_struct_args_block decl_var", + /* 61 */ "decl_typedef_body_ex ::= decl_enum NAME", + /* 62 */ "decl_typedef_body ::= decl_typedef_body_ex", + /* 63 */ "decl_typedef_body_fn_args ::= LPAREN decl_args RPAREN", + /* 64 */ "decl_typedef_body ::= decl_func decl_typedef_body_fn_args", + /* 65 */ "decl_typedef_body ::= decl_arg", + /* 66 */ "decl ::= decl_abi decl_func LPAREN decl_args RPAREN EOS", + /* 67 */ "decl ::= decl_abi decl_func LPAREN decl_args COMMA ELLIPSIS RPAREN EOS", + /* 68 */ "decl_func ::= decl_arg", + /* 69 */ "decl_func ::= VOID NAME", + /* 70 */ "decl_typedef_body ::= VOID indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args", + /* 71 */ "decl_typedef_body ::= CONST VOID pointers LPAREN indirection NAME RPAREN decl_typedef_body_fn_args", + /* 72 */ "decl_abi ::= NAME", + /* 73 */ "decl_var_array_size ::=", + /* 74 */ "decl_var_array_size ::= LBRACKET NUMBER RBRACKET", + /* 75 */ "decl_var ::= NAME decl_var_array_size", + /* 76 */ "decl_var ::= pointers NAME decl_var_array_size", + /* 77 */ "decl_vars ::= decl_var", + /* 78 */ "decl_vars ::= decl_vars COMMA decl_var", + /* 79 */ "decl_arg ::= const_decl_type decl_var", + /* 80 */ "decl_typedef_body ::= const_decl_type indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args", + /* 81 */ "decl_arg ::= VOID pointers NAME", + /* 82 */ "decl_arg ::= CONST VOID pointers NAME", + /* 83 */ "decl_args ::=", + /* 84 */ "decl_args ::= VOID", + /* 85 */ "decl_args ::= decl_arg", + /* 86 */ "decl_args ::= decl_args COMMA decl_arg", + /* 87 */ "struct_args ::= struct_arg", + /* 88 */ "struct_args ::= struct_args struct_arg", + /* 89 */ "struct_arg ::= decl_typedef_body_ex EOS", + /* 90 */ "struct_arg ::= decl_arg decl_layout EOS", + /* 91 */ "decl_layout ::=", + /* 92 */ "decl_layout ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN", + /* 93 */ "decl_scalar_type ::= CHAR", + /* 94 */ "decl_scalar_type ::= SHORT decl_scalar_type_short", + /* 95 */ "decl_scalar_type_short ::=", + /* 96 */ "decl_scalar_type_short ::= INT", + /* 97 */ "decl_scalar_type ::= INT", + /* 98 */ "decl_scalar_type ::= LONG decl_scalar_type_long", + /* 99 */ "decl_scalar_type_long ::=", + /* 100 */ "decl_scalar_type_long ::= DOUBLE", + /* 101 */ "decl_scalar_type_long ::= LONG decl_scalar_type_long_long", + /* 102 */ "decl_scalar_type_long_long ::=", + /* 103 */ "decl_scalar_type_long_long ::= INT", + /* 104 */ "decl_type ::= UNSIGNED decl_scalar_type", + /* 105 */ "decl_type ::= SIGNED decl_scalar_type", + /* 106 */ "decl_type ::= UNSIGNED", + /* 107 */ "decl_type ::= SIGNED", + /* 108 */ "decl_type ::= decl_scalar_type", + /* 109 */ "decl_type ::= STRUCT NAME", + /* 110 */ "decl_type ::= UNION NAME", + /* 111 */ "decl_type ::= ENUM NAME", + /* 112 */ "decl_type ::= FLOAT|DOUBLE|INT8|UINT8|INT16|UINT16|INT32|UINT32|INT64|UINT64|NAME", + /* 113 */ "const_decl_type ::= decl_type", + /* 114 */ "const_decl_type ::= CONST decl_type", + /* 115 */ "impl ::= impl_func LBRACE impl_stmts RBRACE", + /* 116 */ "impl ::= STATIC impl_func LBRACE impl_stmts RBRACE", + /* 117 */ "impl_func ::= FUNCTION reference NSNAME LPAREN RPAREN COLON impl_type", + /* 118 */ "impl_func ::= FUNCTION reference NSNAME LPAREN impl_args RPAREN COLON impl_type", + /* 119 */ "impl_func ::= FUNCTION reference NSNAME LPAREN impl_args COMMA impl_type reference ELLIPSIS DOLLAR_NAME RPAREN COLON impl_type", + /* 120 */ "impl_def_val ::= NULL|NUMBER|TRUE|FALSE|QUOTED_STRING", + /* 121 */ "impl_var ::= reference DOLLAR_NAME", + /* 122 */ "impl_type ::= VOID|MIXED|BOOL|INT|FLOAT|STRING|ARRAY|OBJECT|CALLABLE", + /* 123 */ "impl_arg ::= impl_type impl_var", + /* 124 */ "impl_arg ::= impl_type impl_var EQUALS impl_def_val", + /* 125 */ "impl_args ::= impl_arg", + /* 126 */ "impl_args ::= impl_args COMMA impl_arg", + /* 127 */ "impl_stmts ::= impl_stmt", + /* 128 */ "impl_stmts ::= impl_stmts impl_stmt", + /* 129 */ "impl_stmt ::= return_stmt", + /* 130 */ "impl_stmt ::= let_stmt", + /* 131 */ "impl_stmt ::= set_stmt", + /* 132 */ "impl_stmt ::= assert_stmt", + /* 133 */ "impl_stmt ::= free_stmt", + /* 134 */ "number ::= NUMBER|NSNAME", + /* 135 */ "number ::= decl_var", + /* 136 */ "num_exp ::= number", + /* 137 */ "num_exp ::= LPAREN num_exp RPAREN", + /* 138 */ "num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE num_exp", + /* 139 */ "num_exp ::= TILDE|NOT|PLUS|MINUS num_exp", + /* 140 */ "let_exp ::= NULL", + /* 141 */ "let_exp ::= AMPERSAND NULL", + /* 142 */ "let_exp ::= let_callback", + /* 143 */ "let_exp ::= let_calloc", + /* 144 */ "let_exp ::= AMPERSAND let_calloc", + /* 145 */ "let_exp ::= let_func", + /* 146 */ "let_exp ::= AMPERSAND let_func", + /* 147 */ "let_exp ::= num_exp", + /* 148 */ "let_exp ::= AMPERSAND num_exp", + /* 149 */ "let_exp ::= decl_var EQUALS let_exp", + /* 150 */ "let_stmt ::= LET let_exp EOS", + /* 151 */ "let_stmt ::= TEMP decl_var EQUALS reference decl_var EOS", + /* 152 */ "let_callback ::= CALLBACK callback_rval LPAREN impl_var LPAREN callback_arg_list RPAREN RPAREN", + /* 153 */ "let_calloc ::= CALLOC LPAREN num_exp COMMA num_exp RPAREN", + /* 154 */ "let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var RPAREN", + /* 155 */ "let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var COMMA let_exps RPAREN", + /* 156 */ "let_exps ::= let_exp", + /* 157 */ "let_exps ::= let_exps COMMA let_exp", + /* 158 */ "callback_arg_list ::=", + /* 159 */ "callback_arg_list ::= callback_args", + /* 160 */ "callback_args ::= set_exp", + /* 161 */ "callback_args ::= callback_args COMMA set_exp", + /* 162 */ "callback_rval ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT", + /* 163 */ "callback_rval ::= VOID", + /* 164 */ "set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var RPAREN", + /* 165 */ "set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA set_exps RPAREN", + /* 166 */ "set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA ELLIPSIS RPAREN", + /* 167 */ "set_exp ::= set_func", + /* 168 */ "set_exp ::= num_exp", + /* 169 */ "set_exps ::= set_exp", + /* 170 */ "set_exps ::= set_exps COMMA set_exp", + /* 171 */ "set_exp ::= impl_var EQUALS set_exp", + /* 172 */ "set_stmt ::= SET set_exp EOS", + /* 173 */ "return_stmt ::= RETURN set_func EOS", + /* 174 */ "free_stmt ::= FREE free_exps EOS", + /* 175 */ "free_exps ::= free_exp", + /* 176 */ "free_exps ::= free_exps COMMA free_exp", + /* 177 */ "free_exp ::= NAME LPAREN decl_vars RPAREN", + /* 178 */ "assert_stmt ::= PRE_ASSERT|POST_ASSERT num_exp EOS", + /* 179 */ "reference ::=", + /* 180 */ "reference ::= AMPERSAND", + /* 181 */ "indirection ::=", + /* 182 */ "indirection ::= pointers", + /* 183 */ "pointers ::= ASTERISK", + /* 184 */ "pointers ::= pointers ASTERISK", + /* 185 */ "file ::= blocks", + /* 186 */ "blocks ::= block", + /* 187 */ "blocks ::= blocks block", + /* 188 */ "block ::= EOS", + /* 189 */ "block ::= EOL", + /* 190 */ "block ::= COMMENT", }; #endif /* NDEBUG */ @@ -1084,325 +1163,369 @@ static void yy_destructor( case 59: /* ARRAY */ case 60: /* OBJECT */ case 61: /* CALLABLE */ - case 62: /* TEMP */ - case 63: /* FREE */ - case 64: /* SET */ - case 65: /* LET */ - case 66: /* RETURN */ - case 67: /* CALLOC */ - case 68: /* CALLBACK */ - case 69: /* LIB */ - case 70: /* EOF */ - case 71: /* EOS */ - case 72: /* COLON */ - case 73: /* LPAREN */ - case 74: /* COMMA */ - case 75: /* RPAREN */ - case 76: /* ENUM */ - case 77: /* STRUCT */ - case 78: /* UNION */ - case 79: /* LBRACE */ - case 80: /* RBRACE */ - case 81: /* EQUALS */ - case 82: /* CONST */ - case 83: /* TYPEDEF */ - case 84: /* ELLIPSIS */ - case 85: /* LBRACKET */ - case 86: /* RBRACKET */ - case 87: /* CHAR */ - case 88: /* SHORT */ - case 89: /* LONG */ - case 90: /* UNSIGNED */ - case 91: /* SIGNED */ - case 92: /* STATIC */ - case 93: /* FUNCTION */ - case 94: /* DOLLAR_NAME */ + case 62: /* PRE_ASSERT */ + case 63: /* POST_ASSERT */ + case 64: /* ERROR */ + case 65: /* WARNING */ + case 66: /* TEMP */ + case 67: /* FREE */ + case 68: /* SET */ + case 69: /* LET */ + case 70: /* RETURN */ + case 71: /* CALLOC */ + case 72: /* CALLBACK */ + case 73: /* LIB */ + case 74: /* ANY */ + case 75: /* EOS */ + case 76: /* EOL */ + case 77: /* COMMENT */ + case 78: /* HASH */ + case 79: /* IFDEF */ + case 80: /* IFNDEF */ + case 81: /* ENDIF */ + case 82: /* ELSE */ + case 83: /* UNDEF */ + case 84: /* DEFINE */ + case 85: /* NO_WHITESPACE */ + case 86: /* LPAREN */ + case 87: /* RPAREN */ + case 88: /* COMMA */ + case 89: /* IF */ + case 90: /* ELIF */ + case 91: /* DEFINED */ + case 92: /* COLON */ + case 93: /* ENUM */ + case 94: /* STRUCT */ + case 95: /* UNION */ + case 96: /* LBRACE */ + case 97: /* RBRACE */ + case 98: /* EQUALS */ + case 99: /* CONST */ + case 100: /* TYPEDEF */ + case 101: /* ELLIPSIS */ + case 102: /* LBRACKET */ + case 103: /* RBRACKET */ + case 104: /* CHAR */ + case 105: /* SHORT */ + case 106: /* LONG */ + case 107: /* UNSIGNED */ + case 108: /* SIGNED */ + case 109: /* STATIC */ + case 110: /* FUNCTION */ + case 111: /* DOLLAR_NAME */ { #line 37 "src/parser_proc.y" free((yypminor->yy0)); -#line 1124 "src/parser_proc.c" +#line 1220 "src/parser_proc.c" } break; /* Default NON-TERMINAL Destructor */ - case 95: /* error */ - case 102: /* align_and_size */ - case 150: /* reference */ - case 151: /* indirection */ - case 152: /* pointers */ - case 153: /* file */ - case 154: /* blocks */ - case 155: /* block */ - case 156: /* optional_name */ - case 157: /* enum_name */ - case 158: /* struct_name */ - case 159: /* union_name */ - case 160: /* decl_var_array_size */ - case 161: /* decl_scalar_type */ - case 162: /* decl_scalar_type_short */ - case 163: /* decl_scalar_type_long */ - case 164: /* decl_scalar_type_long_long */ - case 165: /* callback_rval */ + case 112: /* error */ + case 119: /* align_and_size */ + case 176: /* reference */ + case 177: /* indirection */ + case 178: /* pointers */ + case 179: /* file */ + case 180: /* blocks */ + case 181: /* block */ + case 182: /* optional_name */ + case 183: /* enum_name */ + case 184: /* struct_name */ + case 185: /* union_name */ + case 186: /* decl_var_array_size */ + case 187: /* decl_scalar_type */ + case 188: /* decl_scalar_type_short */ + case 189: /* decl_scalar_type_long */ + case 190: /* decl_scalar_type_long_long */ + case 191: /* callback_rval */ { #line 38 "src/parser_proc.y" (void)P; -#line 1149 "src/parser_proc.c" +#line 1245 "src/parser_proc.c" } break; - case 96: /* decl_enum */ + case 113: /* decl_enum */ { -#line 63 "src/parser_proc.y" -psi_decl_enum_free(&(yypminor->yy279)); -#line 1156 "src/parser_proc.c" +#line 66 "src/parser_proc.y" +psi_decl_enum_free(&(yypminor->yy323)); +#line 1252 "src/parser_proc.c" } break; - case 97: /* decl_enum_items */ - case 99: /* decl_struct_args_block */ - case 100: /* decl_struct_args */ - case 109: /* decl_typedef_body_fn_args */ - case 114: /* decl_vars */ - case 116: /* decl_args */ - case 117: /* struct_args */ - case 127: /* impl_args */ - case 129: /* impl_stmts */ - case 140: /* let_exps */ - case 143: /* set_exps */ - case 147: /* free_exps */ -{ -#line 65 "src/parser_proc.y" -psi_plist_free((yypminor->yy303)); -#line 1174 "src/parser_proc.c" + case 114: /* decl_enum_items */ + case 116: /* decl_struct_args_block */ + case 117: /* decl_struct_args */ + case 126: /* decl_typedef_body_fn_args */ + case 131: /* decl_vars */ + case 133: /* decl_args */ + case 134: /* struct_args */ + case 144: /* impl_args */ + case 146: /* impl_stmts */ + case 157: /* let_exps */ + case 161: /* set_exps */ + case 165: /* free_exps */ + case 170: /* cpp_macro_decl_tokens */ + case 172: /* cpp_macro_sig */ + case 173: /* cpp_macro_sig_args */ + case 174: /* cpp_macro_call */ + case 175: /* cpp_macro_call_args */ +{ +#line 68 "src/parser_proc.y" +psi_plist_free((yypminor->yy179)); +#line 1275 "src/parser_proc.c" } break; - case 98: /* decl_enum_item */ + case 115: /* decl_enum_item */ { -#line 67 "src/parser_proc.y" -psi_decl_enum_item_free(&(yypminor->yy69)); -#line 1181 "src/parser_proc.c" +#line 70 "src/parser_proc.y" +psi_decl_enum_item_free(&(yypminor->yy169)); +#line 1282 "src/parser_proc.c" } break; - case 101: /* decl_struct */ + case 118: /* decl_struct */ { -#line 73 "src/parser_proc.y" -psi_decl_struct_free(&(yypminor->yy271)); -#line 1188 "src/parser_proc.c" +#line 76 "src/parser_proc.y" +psi_decl_struct_free(&(yypminor->yy324)); +#line 1289 "src/parser_proc.c" } break; - case 103: /* decl_union */ + case 120: /* decl_union */ { -#line 76 "src/parser_proc.y" -psi_decl_union_free(&(yypminor->yy19)); -#line 1195 "src/parser_proc.c" +#line 79 "src/parser_proc.y" +psi_decl_union_free(&(yypminor->yy15)); +#line 1296 "src/parser_proc.c" } break; - case 104: /* const_type */ + case 121: /* const_type */ { -#line 78 "src/parser_proc.y" -psi_const_type_free(&(yypminor->yy7)); -#line 1202 "src/parser_proc.c" +#line 81 "src/parser_proc.y" +psi_const_type_free(&(yypminor->yy351)); +#line 1303 "src/parser_proc.c" } break; - case 105: /* constant */ + case 122: /* constant */ { -#line 80 "src/parser_proc.y" -psi_const_free(&(yypminor->yy106)); -#line 1209 "src/parser_proc.c" +#line 83 "src/parser_proc.y" +psi_const_free(&(yypminor->yy38)); +#line 1310 "src/parser_proc.c" } break; - case 106: /* decl_typedef */ - case 107: /* decl_typedef_body_ex */ - case 108: /* decl_typedef_body */ - case 111: /* decl_func */ - case 115: /* decl_arg */ - case 118: /* struct_arg */ + case 123: /* decl_typedef */ + case 124: /* decl_typedef_body_ex */ + case 125: /* decl_typedef_body */ + case 128: /* decl_func */ + case 132: /* decl_arg */ + case 135: /* struct_arg */ { -#line 82 "src/parser_proc.y" -psi_decl_arg_free(&(yypminor->yy260)); -#line 1221 "src/parser_proc.c" +#line 85 "src/parser_proc.y" +psi_decl_arg_free(&(yypminor->yy320)); +#line 1322 "src/parser_proc.c" } break; - case 110: /* decl */ + case 127: /* decl */ { -#line 90 "src/parser_proc.y" -psi_decl_free(&(yypminor->yy71)); -#line 1228 "src/parser_proc.c" +#line 93 "src/parser_proc.y" +psi_decl_free(&(yypminor->yy303)); +#line 1329 "src/parser_proc.c" } break; - case 112: /* decl_abi */ + case 129: /* decl_abi */ { -#line 94 "src/parser_proc.y" -psi_decl_abi_free(&(yypminor->yy242)); -#line 1235 "src/parser_proc.c" +#line 97 "src/parser_proc.y" +psi_decl_abi_free(&(yypminor->yy26)); +#line 1336 "src/parser_proc.c" } break; - case 113: /* decl_var */ + case 130: /* decl_var */ { -#line 96 "src/parser_proc.y" -psi_decl_var_free(&(yypminor->yy207)); -#line 1242 "src/parser_proc.c" +#line 99 "src/parser_proc.y" +psi_decl_var_free(&(yypminor->yy271)); +#line 1343 "src/parser_proc.c" } break; - case 119: /* decl_layout */ + case 136: /* decl_layout */ { -#line 108 "src/parser_proc.y" -psi_layout_free(&(yypminor->yy81)); -#line 1249 "src/parser_proc.c" +#line 111 "src/parser_proc.y" +psi_layout_free(&(yypminor->yy369)); +#line 1350 "src/parser_proc.c" } break; - case 120: /* decl_type */ - case 121: /* const_decl_type */ + case 137: /* decl_type */ + case 138: /* const_decl_type */ { -#line 110 "src/parser_proc.y" -psi_decl_type_free(&(yypminor->yy152)); -#line 1257 "src/parser_proc.c" +#line 113 "src/parser_proc.y" +psi_decl_type_free(&(yypminor->yy172)); +#line 1358 "src/parser_proc.c" } break; - case 122: /* impl */ + case 139: /* impl */ { -#line 114 "src/parser_proc.y" +#line 117 "src/parser_proc.y" psi_impl_free(&(yypminor->yy49)); -#line 1264 "src/parser_proc.c" +#line 1365 "src/parser_proc.c" } break; - case 123: /* impl_func */ + case 140: /* impl_func */ { -#line 116 "src/parser_proc.y" -psi_impl_func_free(&(yypminor->yy120)); -#line 1271 "src/parser_proc.c" +#line 119 "src/parser_proc.y" +psi_impl_func_free(&(yypminor->yy56)); +#line 1372 "src/parser_proc.c" } break; - case 124: /* impl_def_val */ + case 141: /* impl_def_val */ { -#line 118 "src/parser_proc.y" -psi_impl_def_val_free(&(yypminor->yy21)); -#line 1278 "src/parser_proc.c" +#line 121 "src/parser_proc.y" +psi_impl_def_val_free(&(yypminor->yy145)); +#line 1379 "src/parser_proc.c" } break; - case 125: /* impl_var */ + case 142: /* impl_var */ { -#line 120 "src/parser_proc.y" -psi_impl_var_free(&(yypminor->yy185)); -#line 1285 "src/parser_proc.c" +#line 123 "src/parser_proc.y" +psi_impl_var_free(&(yypminor->yy370)); +#line 1386 "src/parser_proc.c" } break; - case 126: /* impl_arg */ - case 128: /* impl_vararg */ + case 143: /* impl_arg */ + case 145: /* impl_vararg */ { -#line 122 "src/parser_proc.y" -psi_impl_arg_free(&(yypminor->yy238)); -#line 1293 "src/parser_proc.c" +#line 125 "src/parser_proc.y" +psi_impl_arg_free(&(yypminor->yy34)); +#line 1394 "src/parser_proc.c" } break; - case 130: /* impl_stmt */ + case 147: /* impl_stmt */ { -#line 130 "src/parser_proc.y" -psi_impl_stmt_free(&(yypminor->yy38)); -#line 1300 "src/parser_proc.c" +#line 133 "src/parser_proc.y" +psi_impl_stmt_free(&(yypminor->yy238)); +#line 1401 "src/parser_proc.c" } break; - case 131: /* number */ + case 148: /* number */ { -#line 132 "src/parser_proc.y" -psi_number_free(&(yypminor->yy160)); -#line 1307 "src/parser_proc.c" +#line 135 "src/parser_proc.y" +psi_number_free(&(yypminor->yy57)); +#line 1408 "src/parser_proc.c" } break; - case 132: /* num_exp */ + case 149: /* num_exp */ + case 171: /* cpp_macro_exp */ { -#line 134 "src/parser_proc.y" -psi_num_exp_free(&(yypminor->yy39)); -#line 1314 "src/parser_proc.c" +#line 137 "src/parser_proc.y" +psi_num_exp_free(&(yypminor->yy207)); +#line 1416 "src/parser_proc.c" } break; - case 133: /* let_stmt */ + case 150: /* let_stmt */ { -#line 136 "src/parser_proc.y" -psi_let_stmt_free(&(yypminor->yy139)); -#line 1321 "src/parser_proc.c" +#line 139 "src/parser_proc.y" +psi_let_stmt_free(&(yypminor->yy319)); +#line 1423 "src/parser_proc.c" } break; - case 134: /* let_calloc */ + case 151: /* let_calloc */ { -#line 138 "src/parser_proc.y" -psi_let_calloc_free(&(yypminor->yy17)); -#line 1328 "src/parser_proc.c" +#line 141 "src/parser_proc.y" +psi_let_calloc_free(&(yypminor->yy45)); +#line 1430 "src/parser_proc.c" } break; - case 135: /* let_func */ + case 152: /* let_func */ { -#line 140 "src/parser_proc.y" -psi_let_func_free(&(yypminor->yy72)); -#line 1335 "src/parser_proc.c" +#line 143 "src/parser_proc.y" +psi_let_func_free(&(yypminor->yy67)); +#line 1437 "src/parser_proc.c" } break; - case 136: /* callback_arg_list */ - case 137: /* callback_args */ + case 153: /* callback_arg_list */ + case 154: /* callback_args */ { -#line 142 "src/parser_proc.y" -psi_plist_free((yypminor->yy287)); -#line 1343 "src/parser_proc.c" +#line 145 "src/parser_proc.y" +psi_plist_free((yypminor->yy243)); +#line 1445 "src/parser_proc.c" } break; - case 138: /* let_callback */ + case 155: /* let_callback */ { -#line 146 "src/parser_proc.y" -psi_let_callback_free(&(yypminor->yy164)); -#line 1350 "src/parser_proc.c" +#line 149 "src/parser_proc.y" +psi_let_callback_free(&(yypminor->yy120)); +#line 1452 "src/parser_proc.c" +} + break; + case 156: /* let_exp */ +{ +#line 151 "src/parser_proc.y" +psi_let_exp_free(&(yypminor->yy200)); +#line 1459 "src/parser_proc.c" +} + break; + case 158: /* assert_stmt */ +{ +#line 155 "src/parser_proc.y" +psi_assert_stmt_free(&(yypminor->yy201)); +#line 1466 "src/parser_proc.c" } break; - case 139: /* let_exp */ + case 159: /* set_stmt */ { -#line 148 "src/parser_proc.y" -psi_let_exp_free(&(yypminor->yy144)); -#line 1357 "src/parser_proc.c" +#line 157 "src/parser_proc.y" +psi_set_stmt_free(&(yypminor->yy358)); +#line 1473 "src/parser_proc.c" } break; - case 141: /* set_stmt */ + case 160: /* set_exp */ { -#line 152 "src/parser_proc.y" -psi_set_stmt_free(&(yypminor->yy226)); -#line 1364 "src/parser_proc.c" +#line 159 "src/parser_proc.y" +psi_set_exp_free(&(yypminor->yy180)); +#line 1480 "src/parser_proc.c" } break; - case 142: /* set_exp */ + case 162: /* set_func */ { -#line 154 "src/parser_proc.y" -psi_set_exp_free(&(yypminor->yy67)); -#line 1371 "src/parser_proc.c" +#line 163 "src/parser_proc.y" +psi_set_func_free(&(yypminor->yy362)); +#line 1487 "src/parser_proc.c" } break; - case 144: /* set_func */ + case 163: /* return_stmt */ { -#line 158 "src/parser_proc.y" -psi_set_func_free(&(yypminor->yy78)); -#line 1378 "src/parser_proc.c" +#line 165 "src/parser_proc.y" +psi_return_stmt_free(&(yypminor->yy342)); +#line 1494 "src/parser_proc.c" } break; - case 145: /* return_stmt */ + case 164: /* free_stmt */ { -#line 160 "src/parser_proc.y" -psi_return_stmt_free(&(yypminor->yy130)); -#line 1385 "src/parser_proc.c" +#line 167 "src/parser_proc.y" +psi_free_stmt_free(&(yypminor->yy220)); +#line 1501 "src/parser_proc.c" } break; - case 146: /* free_stmt */ + case 166: /* free_exp */ { -#line 162 "src/parser_proc.y" -psi_free_stmt_free(&(yypminor->yy76)); -#line 1392 "src/parser_proc.c" +#line 171 "src/parser_proc.y" +psi_free_exp_free(&(yypminor->yy146)); +#line 1508 "src/parser_proc.c" } break; - case 148: /* free_exp */ + case 167: /* impl_type */ { -#line 166 "src/parser_proc.y" -psi_free_exp_free(&(yypminor->yy197)); -#line 1399 "src/parser_proc.c" +#line 173 "src/parser_proc.y" +psi_impl_type_free(&(yypminor->yy246)); +#line 1515 "src/parser_proc.c" } break; - case 149: /* impl_type */ + case 168: /* cpp_exp */ { -#line 168 "src/parser_proc.y" -psi_impl_type_free(&(yypminor->yy142)); -#line 1406 "src/parser_proc.c" +#line 175 "src/parser_proc.y" +psi_cpp_exp_free(&(yypminor->yy274)); +#line 1522 "src/parser_proc.c" +} + break; + case 169: /* cpp_macro_decl */ +{ +#line 177 "src/parser_proc.y" +psi_cpp_macro_decl_free(&(yypminor->yy134)); +#line 1529 "src/parser_proc.c" } break; /********* End destructor definitions *****************************************/ @@ -1654,163 +1777,197 @@ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ unsigned char nrhs; /* Number of right-hand side symbols in the rule */ } yyRuleInfo[] = { - { 155, 3 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 155, 1 }, - { 156, 0 }, - { 156, 1 }, - { 102, 0 }, - { 102, 7 }, - { 157, 2 }, - { 158, 2 }, - { 159, 2 }, - { 96, 4 }, - { 97, 1 }, - { 97, 3 }, - { 98, 3 }, - { 98, 1 }, - { 99, 3 }, - { 100, 1 }, - { 100, 1 }, - { 101, 4 }, - { 103, 4 }, - { 104, 1 }, - { 105, 6 }, - { 106, 3 }, - { 107, 4 }, - { 107, 4 }, - { 107, 2 }, - { 108, 1 }, - { 109, 3 }, - { 108, 2 }, - { 108, 1 }, - { 110, 6 }, - { 110, 8 }, - { 111, 1 }, - { 111, 2 }, - { 108, 7 }, - { 108, 8 }, - { 112, 1 }, - { 160, 0 }, - { 160, 3 }, - { 113, 2 }, - { 113, 3 }, + { 181, 3 }, + { 168, 2 }, + { 168, 2 }, + { 168, 2 }, + { 168, 1 }, + { 168, 1 }, + { 168, 2 }, + { 168, 3 }, + { 169, 0 }, + { 169, 1 }, + { 169, 2 }, + { 172, 4 }, + { 173, 0 }, + { 173, 1 }, + { 173, 3 }, + { 169, 1 }, + { 170, 1 }, + { 170, 2 }, + { 168, 2 }, + { 168, 2 }, + { 171, 3 }, + { 171, 2 }, + { 171, 3 }, + { 171, 2 }, + { 171, 4 }, + { 171, 1 }, + { 171, 1 }, + { 171, 4 }, + { 175, 0 }, + { 175, 1 }, + { 175, 3 }, + { 181, 3 }, + { 181, 1 }, + { 181, 1 }, + { 181, 1 }, + { 181, 1 }, + { 181, 1 }, + { 181, 1 }, + { 181, 1 }, + { 182, 0 }, + { 182, 1 }, + { 119, 0 }, + { 119, 7 }, + { 183, 2 }, + { 184, 2 }, + { 185, 2 }, + { 113, 4 }, { 114, 1 }, { 114, 3 }, - { 115, 2 }, - { 108, 7 }, { 115, 3 }, - { 115, 4 }, - { 116, 0 }, - { 116, 1 }, - { 116, 1 }, + { 115, 1 }, { 116, 3 }, { 117, 1 }, - { 117, 2 }, - { 118, 2 }, - { 118, 3 }, - { 119, 0 }, - { 119, 7 }, - { 161, 1 }, - { 161, 2 }, - { 162, 0 }, - { 162, 1 }, - { 161, 1 }, - { 161, 2 }, - { 163, 0 }, - { 163, 1 }, - { 163, 2 }, - { 164, 0 }, - { 164, 1 }, - { 120, 2 }, - { 120, 2 }, - { 120, 1 }, - { 120, 1 }, - { 120, 1 }, - { 120, 2 }, - { 120, 2 }, - { 120, 2 }, - { 120, 1 }, + { 117, 1 }, + { 118, 4 }, + { 120, 4 }, { 121, 1 }, - { 121, 2 }, - { 122, 4 }, - { 122, 5 }, - { 123, 7 }, - { 123, 8 }, - { 123, 13 }, - { 124, 1 }, + { 122, 6 }, + { 123, 3 }, + { 124, 4 }, + { 124, 4 }, + { 124, 2 }, + { 125, 1 }, + { 126, 3 }, { 125, 2 }, - { 149, 1 }, - { 126, 2 }, - { 126, 4 }, - { 127, 1 }, - { 127, 3 }, + { 125, 1 }, + { 127, 6 }, + { 127, 8 }, + { 128, 1 }, + { 128, 2 }, + { 125, 7 }, + { 125, 8 }, { 129, 1 }, - { 129, 2 }, - { 130, 1 }, - { 130, 1 }, - { 130, 1 }, - { 130, 1 }, + { 186, 0 }, + { 186, 3 }, + { 130, 2 }, + { 130, 3 }, { 131, 1 }, - { 131, 1 }, - { 132, 1 }, - { 132, 3 }, - { 132, 3 }, + { 131, 3 }, { 132, 2 }, - { 139, 1 }, - { 139, 2 }, - { 139, 1 }, - { 139, 1 }, - { 139, 2 }, - { 139, 1 }, - { 139, 2 }, - { 139, 1 }, - { 139, 2 }, - { 139, 3 }, + { 125, 7 }, + { 132, 3 }, + { 132, 4 }, + { 133, 0 }, + { 133, 1 }, + { 133, 1 }, { 133, 3 }, - { 133, 6 }, - { 138, 8 }, - { 134, 6 }, - { 135, 4 }, - { 135, 6 }, - { 140, 1 }, - { 140, 3 }, + { 134, 1 }, + { 134, 2 }, + { 135, 2 }, + { 135, 3 }, { 136, 0 }, - { 136, 1 }, + { 136, 7 }, + { 187, 1 }, + { 187, 2 }, + { 188, 0 }, + { 188, 1 }, + { 187, 1 }, + { 187, 2 }, + { 189, 0 }, + { 189, 1 }, + { 189, 2 }, + { 190, 0 }, + { 190, 1 }, + { 137, 2 }, + { 137, 2 }, { 137, 1 }, - { 137, 3 }, - { 165, 1 }, - { 165, 1 }, - { 144, 4 }, - { 144, 6 }, - { 144, 6 }, - { 142, 1 }, - { 142, 1 }, - { 143, 1 }, - { 143, 3 }, - { 142, 3 }, - { 141, 3 }, - { 145, 3 }, - { 146, 3 }, + { 137, 1 }, + { 137, 1 }, + { 137, 2 }, + { 137, 2 }, + { 137, 2 }, + { 137, 1 }, + { 138, 1 }, + { 138, 2 }, + { 139, 4 }, + { 139, 5 }, + { 140, 7 }, + { 140, 8 }, + { 140, 13 }, + { 141, 1 }, + { 142, 2 }, + { 167, 1 }, + { 143, 2 }, + { 143, 4 }, + { 144, 1 }, + { 144, 3 }, + { 146, 1 }, + { 146, 2 }, + { 147, 1 }, + { 147, 1 }, { 147, 1 }, - { 147, 3 }, - { 148, 4 }, - { 150, 0 }, - { 150, 1 }, - { 151, 0 }, - { 151, 1 }, - { 152, 1 }, - { 152, 2 }, + { 147, 1 }, + { 147, 1 }, + { 148, 1 }, + { 148, 1 }, + { 149, 1 }, + { 149, 3 }, + { 149, 3 }, + { 149, 2 }, + { 156, 1 }, + { 156, 2 }, + { 156, 1 }, + { 156, 1 }, + { 156, 2 }, + { 156, 1 }, + { 156, 2 }, + { 156, 1 }, + { 156, 2 }, + { 156, 3 }, + { 150, 3 }, + { 150, 6 }, + { 155, 8 }, + { 151, 6 }, + { 152, 4 }, + { 152, 6 }, + { 157, 1 }, + { 157, 3 }, + { 153, 0 }, { 153, 1 }, { 154, 1 }, - { 154, 2 }, - { 155, 1 }, - { 155, 1 }, + { 154, 3 }, + { 191, 1 }, + { 191, 1 }, + { 162, 4 }, + { 162, 6 }, + { 162, 6 }, + { 160, 1 }, + { 160, 1 }, + { 161, 1 }, + { 161, 3 }, + { 160, 3 }, + { 159, 3 }, + { 163, 3 }, + { 164, 3 }, + { 165, 1 }, + { 165, 3 }, + { 166, 4 }, + { 158, 3 }, + { 176, 0 }, + { 176, 1 }, + { 177, 0 }, + { 177, 1 }, + { 178, 1 }, + { 178, 2 }, + { 179, 1 }, + { 180, 1 }, + { 180, 2 }, + { 181, 1 }, + { 181, 1 }, + { 181, 1 }, }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -1874,8 +2031,244 @@ static void yy_reduce( */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; - case 0: /* block ::= LIB QUOTED_STRING EOS */ -#line 177 "src/parser_proc.y" + case 0: /* block ::= HASH cpp_exp EOL */ +{ yy_destructor(yypParser,78,&yymsp[-2].minor); +#line 199 "src/parser_proc.y" +{ + P->cpp.exp = yymsp[-1].minor.yy274; +} +#line 2041 "src/parser_proc.c" + yy_destructor(yypParser,76,&yymsp[0].minor); +} + break; + case 1: /* cpp_exp ::= ERROR|WARNING QUOTED_STRING */ + case 2: /* cpp_exp ::= IFDEF NAME */ yytestcase(yyruleno==2); + case 3: /* cpp_exp ::= IFNDEF NAME */ yytestcase(yyruleno==3); + case 6: /* cpp_exp ::= UNDEF NAME */ yytestcase(yyruleno==6); +#line 202 "src/parser_proc.y" +{ + yylhsminor.yy274 = psi_cpp_exp_init(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy0); + yylhsminor.yy274->token = yymsp[-1].minor.yy0; +} +#line 2054 "src/parser_proc.c" + yymsp[-1].minor.yy274 = yylhsminor.yy274; + break; + case 4: /* cpp_exp ::= ENDIF */ + case 5: /* cpp_exp ::= ELSE */ yytestcase(yyruleno==5); +#line 214 "src/parser_proc.y" +{ + yylhsminor.yy274 = psi_cpp_exp_init(yymsp[0].minor.yy0->type, NULL); + yylhsminor.yy274->token = yymsp[0].minor.yy0; +} +#line 2064 "src/parser_proc.c" + yymsp[0].minor.yy274 = yylhsminor.yy274; + break; + case 7: /* cpp_exp ::= DEFINE NAME cpp_macro_decl */ +#line 226 "src/parser_proc.y" +{ + yylhsminor.yy274 = psi_cpp_exp_init(yymsp[-2].minor.yy0->type, yymsp[0].minor.yy134); + yylhsminor.yy274->token = yymsp[-2].minor.yy0; + yymsp[0].minor.yy134->token = yymsp[-1].minor.yy0; +} +#line 2074 "src/parser_proc.c" + yymsp[-2].minor.yy274 = yylhsminor.yy274; + break; + case 8: /* cpp_macro_decl ::= */ +#line 231 "src/parser_proc.y" +{ + yymsp[1].minor.yy134 = psi_cpp_macro_decl_init(NULL, NULL, NULL); +} +#line 2082 "src/parser_proc.c" + break; + case 9: /* cpp_macro_decl ::= cpp_macro_sig */ +#line 234 "src/parser_proc.y" +{ + yylhsminor.yy134 = psi_cpp_macro_decl_init(yymsp[0].minor.yy179, NULL, NULL); +} +#line 2089 "src/parser_proc.c" + yymsp[0].minor.yy134 = yylhsminor.yy134; + break; + case 10: /* cpp_macro_decl ::= cpp_macro_sig cpp_macro_decl_tokens */ +#line 237 "src/parser_proc.y" +{ + yylhsminor.yy134 = psi_cpp_macro_decl_init(yymsp[-1].minor.yy179, yymsp[0].minor.yy179, NULL); +} +#line 2097 "src/parser_proc.c" + yymsp[-1].minor.yy134 = yylhsminor.yy134; + break; + case 11: /* cpp_macro_sig ::= NO_WHITESPACE LPAREN cpp_macro_sig_args RPAREN */ +{ yy_destructor(yypParser,85,&yymsp[-3].minor); +#line 240 "src/parser_proc.y" +{ + yymsp[-3].minor.yy179 = yymsp[-1].minor.yy179; +} +#line 2106 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); +} + break; + case 12: /* cpp_macro_sig_args ::= */ + case 28: /* cpp_macro_call_args ::= */ yytestcase(yyruleno==28); + case 83: /* decl_args ::= */ yytestcase(yyruleno==83); +#line 243 "src/parser_proc.y" +{ + yymsp[1].minor.yy179 = NULL; +} +#line 2118 "src/parser_proc.c" + break; + case 13: /* cpp_macro_sig_args ::= NAME */ + case 16: /* cpp_macro_decl_tokens ::= ANY */ yytestcase(yyruleno==16); +#line 246 "src/parser_proc.y" +{ + yylhsminor.yy179 = psi_plist_add(psi_plist_init((void (*)(void *)) psi_token_free), &yymsp[0].minor.yy0); +} +#line 2126 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; + break; + case 14: /* cpp_macro_sig_args ::= cpp_macro_sig_args COMMA NAME */ +#line 249 "src/parser_proc.y" +{ + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy0); +} +#line 2134 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; + break; + case 15: /* cpp_macro_decl ::= cpp_macro_decl_tokens */ +#line 252 "src/parser_proc.y" +{ + yylhsminor.yy134 = psi_cpp_macro_decl_init(NULL, yymsp[0].minor.yy179, NULL); +} +#line 2143 "src/parser_proc.c" + yymsp[0].minor.yy134 = yylhsminor.yy134; + break; + case 17: /* cpp_macro_decl_tokens ::= cpp_macro_decl_tokens ANY */ +#line 258 "src/parser_proc.y" +{ + yylhsminor.yy179 = psi_plist_add(yymsp[-1].minor.yy179, &yymsp[0].minor.yy0); +} +#line 2151 "src/parser_proc.c" + yymsp[-1].minor.yy179 = yylhsminor.yy179; + break; + case 18: /* cpp_exp ::= IF cpp_macro_exp */ + case 19: /* cpp_exp ::= ELIF cpp_macro_exp */ yytestcase(yyruleno==19); +#line 261 "src/parser_proc.y" +{ + yylhsminor.yy274 = psi_cpp_exp_init(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy207); + yylhsminor.yy274->token = yymsp[-1].minor.yy0; +} +#line 2161 "src/parser_proc.c" + yymsp[-1].minor.yy274 = yylhsminor.yy274; + break; + case 20: /* cpp_macro_exp ::= LPAREN cpp_macro_exp RPAREN */ +#line 269 "src/parser_proc.y" +{ + yylhsminor.yy207 = psi_num_exp_init_unary(yymsp[-2].minor.yy0->type, yymsp[-1].minor.yy207); + yylhsminor.yy207->token = yymsp[-2].minor.yy0; +} +#line 2170 "src/parser_proc.c" + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-2].minor.yy207 = yylhsminor.yy207; + break; + case 21: /* cpp_macro_exp ::= TILDE|NOT|PLUS|MINUS cpp_macro_exp */ + case 139: /* num_exp ::= TILDE|NOT|PLUS|MINUS num_exp */ yytestcase(yyruleno==139); +#line 273 "src/parser_proc.y" +{ + yylhsminor.yy207 = psi_num_exp_init_unary(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy207); + yylhsminor.yy207->token = yymsp[-1].minor.yy0; +} +#line 2181 "src/parser_proc.c" + yymsp[-1].minor.yy207 = yylhsminor.yy207; + break; + case 22: /* cpp_macro_exp ::= cpp_macro_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE cpp_macro_exp */ + case 138: /* num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE num_exp */ yytestcase(yyruleno==138); +#line 277 "src/parser_proc.y" +{ + yylhsminor.yy207 = psi_num_exp_init_binary(yymsp[-1].minor.yy0->type, yymsp[-2].minor.yy207, yymsp[0].minor.yy207); + yylhsminor.yy207->token = yymsp[-1].minor.yy0; +} +#line 2191 "src/parser_proc.c" + yymsp[-2].minor.yy207 = yylhsminor.yy207; + break; + case 23: /* cpp_macro_exp ::= DEFINED NAME */ +{ yy_destructor(yypParser,91,&yymsp[-1].minor); +#line 281 "src/parser_proc.y" +{ + { + uint8_t exists = zend_hash_str_exists(&P->cpp.defs, yymsp[0].minor.yy0->text, yymsp[0].minor.yy0->size); + yymsp[-1].minor.yy207 = psi_num_exp_init_num(psi_number_init(PSI_T_UINT8, &exists)); + yymsp[-1].minor.yy207->token = yymsp[0].minor.yy0; + } +} +#line 2204 "src/parser_proc.c" +} + break; + case 24: /* cpp_macro_exp ::= DEFINED LPAREN NAME RPAREN */ +{ yy_destructor(yypParser,91,&yymsp[-3].minor); +#line 288 "src/parser_proc.y" +{ + { + uint8_t exists = zend_hash_str_exists(&P->cpp.defs, yymsp[-1].minor.yy0->text, yymsp[-1].minor.yy0->size); + yymsp[-3].minor.yy207 = psi_num_exp_init_num(psi_number_init(PSI_T_UINT8, &exists)); + yymsp[-3].minor.yy207->token = yymsp[-1].minor.yy0; + } +} +#line 2217 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); +} + break; + case 25: /* cpp_macro_exp ::= NUMBER|NSNAME */ +#line 295 "src/parser_proc.y" +{ + yylhsminor.yy207 = psi_num_exp_init_num(psi_number_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text)); + yylhsminor.yy207->token = yymsp[0].minor.yy0; + yylhsminor.yy207->data.n->token = psi_token_copy(yymsp[0].minor.yy0); +} +#line 2229 "src/parser_proc.c" + yymsp[0].minor.yy207 = yylhsminor.yy207; + break; + case 26: /* cpp_macro_exp ::= NAME */ +#line 300 "src/parser_proc.y" +{ + yylhsminor.yy207 = psi_num_exp_init_num(psi_number_init(PSI_T_DEFINE, yymsp[0].minor.yy0->text)); + yylhsminor.yy207->token = yymsp[0].minor.yy0; + yylhsminor.yy207->data.n->token = psi_token_copy(yymsp[0].minor.yy0); +} +#line 2239 "src/parser_proc.c" + yymsp[0].minor.yy207 = yylhsminor.yy207; + break; + case 27: /* cpp_macro_exp ::= NAME LPAREN cpp_macro_call_args RPAREN */ +#line 305 "src/parser_proc.y" +{ + yylhsminor.yy207 = psi_num_exp_init_num(psi_number_init(PSI_T_FUNCTION, + psi_cpp_macro_call_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy179))); + yylhsminor.yy207->token = yymsp[-3].minor.yy0; +} +#line 2249 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-3].minor.yy207 = yylhsminor.yy207; + break; + case 29: /* cpp_macro_call_args ::= cpp_macro_exp */ +#line 313 "src/parser_proc.y" +{ + yylhsminor.yy179 = psi_plist_add(psi_plist_init((void (*)(void *)) psi_num_exp_free), &yymsp[0].minor.yy207); +} +#line 2259 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; + break; + case 30: /* cpp_macro_call_args ::= cpp_macro_call_args COMMA cpp_macro_exp */ +#line 316 "src/parser_proc.y" +{ + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy207); +} +#line 2267 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; + break; + case 31: /* block ::= LIB QUOTED_STRING EOS */ +#line 319 "src/parser_proc.y" { if (P->file.ln) { P->error(PSI_DATA(P), yymsp[-2].minor.yy0, PSI_WARNING, "Extra 'lib %s' statement has no effect", yymsp[-1].minor.yy0->text); @@ -1885,159 +2278,159 @@ static void yy_reduce( free(yymsp[-1].minor.yy0); free(yymsp[-2].minor.yy0); } -#line 1889 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); +#line 2282 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); break; - case 1: /* block ::= decl */ -#line 186 "src/parser_proc.y" + case 32: /* block ::= decl */ +#line 328 "src/parser_proc.y" { if (!P->decls) { P->decls = psi_plist_init((psi_plist_dtor) psi_decl_free); } - P->decls = psi_plist_add(P->decls, &yymsp[0].minor.yy71); + P->decls = psi_plist_add(P->decls, &yymsp[0].minor.yy303); } -#line 1900 "src/parser_proc.c" +#line 2293 "src/parser_proc.c" break; - case 2: /* block ::= impl */ -#line 192 "src/parser_proc.y" + case 33: /* block ::= impl */ +#line 334 "src/parser_proc.y" { if (!P->impls) { P->impls = psi_plist_init((psi_plist_dtor) psi_impl_free); } P->impls = psi_plist_add(P->impls, &yymsp[0].minor.yy49); } -#line 1910 "src/parser_proc.c" +#line 2303 "src/parser_proc.c" break; - case 3: /* block ::= decl_typedef */ -#line 198 "src/parser_proc.y" + case 34: /* block ::= decl_typedef */ +#line 340 "src/parser_proc.y" { if (!P->types) { P->types = psi_plist_init((psi_plist_dtor) psi_decl_arg_free); } - P->types = psi_plist_add(P->types, &yymsp[0].minor.yy260); - switch (yymsp[0].minor.yy260->type->type) { + P->types = psi_plist_add(P->types, &yymsp[0].minor.yy320); + switch (yymsp[0].minor.yy320->type->type) { case PSI_T_STRUCT: - if (yymsp[0].minor.yy260->type->real.strct) { + if (yymsp[0].minor.yy320->type->real.strct) { if (!P->structs) { P->structs = psi_plist_init((psi_plist_dtor) psi_decl_struct_free); } - P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy260->type->real.strct); + P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy320->type->real.strct); } break; case PSI_T_UNION: - if (yymsp[0].minor.yy260->type->real.unn) { + if (yymsp[0].minor.yy320->type->real.unn) { if (!P->unions) { P->unions = psi_plist_init((psi_plist_dtor) psi_decl_union_free); } - P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy260->type->real.unn); + P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy320->type->real.unn); } break; case PSI_T_ENUM: - if (yymsp[0].minor.yy260->type->real.enm) { + if (yymsp[0].minor.yy320->type->real.enm) { if (!P->enums) { P->enums = psi_plist_init((psi_plist_dtor) psi_decl_enum_free); } - P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy260->type->real.enm); + P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy320->type->real.enm); } break; } } -#line 1946 "src/parser_proc.c" +#line 2339 "src/parser_proc.c" break; - case 4: /* block ::= constant */ -#line 230 "src/parser_proc.y" + case 35: /* block ::= constant */ +#line 372 "src/parser_proc.y" { if (!P->consts) { P->consts = psi_plist_init((psi_plist_dtor) psi_const_free); } - P->consts = psi_plist_add(P->consts, &yymsp[0].minor.yy106); + P->consts = psi_plist_add(P->consts, &yymsp[0].minor.yy38); } -#line 1956 "src/parser_proc.c" +#line 2349 "src/parser_proc.c" break; - case 5: /* block ::= decl_struct */ -#line 236 "src/parser_proc.y" + case 36: /* block ::= decl_struct */ +#line 378 "src/parser_proc.y" { if (!P->structs) { P->structs = psi_plist_init((psi_plist_dtor) psi_decl_struct_free); } - P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy271); + P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy324); } -#line 1966 "src/parser_proc.c" +#line 2359 "src/parser_proc.c" break; - case 6: /* block ::= decl_union */ -#line 242 "src/parser_proc.y" + case 37: /* block ::= decl_union */ +#line 384 "src/parser_proc.y" { if (!P->unions) { P->unions = psi_plist_init((psi_plist_dtor) psi_decl_union_free); } - P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy19); + P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy15); } -#line 1976 "src/parser_proc.c" +#line 2369 "src/parser_proc.c" break; - case 7: /* block ::= decl_enum */ -#line 248 "src/parser_proc.y" + case 38: /* block ::= decl_enum */ +#line 390 "src/parser_proc.y" { if (!P->enums) { P->enums = psi_plist_init((psi_plist_dtor) psi_decl_enum_free); } - P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy279); + P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy323); } -#line 1986 "src/parser_proc.c" +#line 2379 "src/parser_proc.c" break; - case 8: /* optional_name ::= */ - case 42: /* decl_var_array_size ::= */ yytestcase(yyruleno==42); - case 64: /* decl_scalar_type_short ::= */ yytestcase(yyruleno==64); - case 68: /* decl_scalar_type_long ::= */ yytestcase(yyruleno==68); - case 71: /* decl_scalar_type_long_long ::= */ yytestcase(yyruleno==71); -#line 254 "src/parser_proc.y" + case 39: /* optional_name ::= */ + case 73: /* decl_var_array_size ::= */ yytestcase(yyruleno==73); + case 95: /* decl_scalar_type_short ::= */ yytestcase(yyruleno==95); + case 99: /* decl_scalar_type_long ::= */ yytestcase(yyruleno==99); + case 102: /* decl_scalar_type_long_long ::= */ yytestcase(yyruleno==102); +#line 396 "src/parser_proc.y" { yymsp[1].minor.yy0 = NULL; } -#line 1997 "src/parser_proc.c" +#line 2390 "src/parser_proc.c" break; - case 9: /* optional_name ::= NAME */ - case 62: /* decl_scalar_type ::= CHAR */ yytestcase(yyruleno==62); - case 65: /* decl_scalar_type_short ::= INT */ yytestcase(yyruleno==65); - case 66: /* decl_scalar_type ::= INT */ yytestcase(yyruleno==66); - case 69: /* decl_scalar_type_long ::= DOUBLE */ yytestcase(yyruleno==69); - case 72: /* decl_scalar_type_long_long ::= INT */ yytestcase(yyruleno==72); - case 130: /* callback_rval ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT */ yytestcase(yyruleno==130); - case 131: /* callback_rval ::= VOID */ yytestcase(yyruleno==131); -#line 257 "src/parser_proc.y" + case 40: /* optional_name ::= NAME */ + case 93: /* decl_scalar_type ::= CHAR */ yytestcase(yyruleno==93); + case 96: /* decl_scalar_type_short ::= INT */ yytestcase(yyruleno==96); + case 97: /* decl_scalar_type ::= INT */ yytestcase(yyruleno==97); + case 100: /* decl_scalar_type_long ::= DOUBLE */ yytestcase(yyruleno==100); + case 103: /* decl_scalar_type_long_long ::= INT */ yytestcase(yyruleno==103); + case 162: /* callback_rval ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT */ yytestcase(yyruleno==162); + case 163: /* callback_rval ::= VOID */ yytestcase(yyruleno==163); +#line 399 "src/parser_proc.y" { yylhsminor.yy0 = yymsp[0].minor.yy0; } -#line 2011 "src/parser_proc.c" +#line 2404 "src/parser_proc.c" yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 10: /* align_and_size ::= */ -#line 260 "src/parser_proc.y" + case 41: /* align_and_size ::= */ +#line 402 "src/parser_proc.y" { - yymsp[1].minor.yy323.pos = 0; - yymsp[1].minor.yy323.len = 0; + yymsp[1].minor.yy239.pos = 0; + yymsp[1].minor.yy239.len = 0; } -#line 2020 "src/parser_proc.c" +#line 2413 "src/parser_proc.c" break; - case 11: /* align_and_size ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN */ -{ yy_destructor(yypParser,72,&yymsp[-6].minor); -#line 264 "src/parser_proc.y" + case 42: /* align_and_size ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN */ +{ yy_destructor(yypParser,92,&yymsp[-6].minor); +#line 406 "src/parser_proc.y" { - yymsp[-6].minor.yy323.pos = atol(yymsp[-3].minor.yy0->text); - yymsp[-6].minor.yy323.len = atol(yymsp[-1].minor.yy0->text); + yymsp[-6].minor.yy239.pos = atol(yymsp[-3].minor.yy0->text); + yymsp[-6].minor.yy239.len = atol(yymsp[-1].minor.yy0->text); free(yymsp[-3].minor.yy0); free(yymsp[-1].minor.yy0); } -#line 2031 "src/parser_proc.c" - yy_destructor(yypParser,72,&yymsp[-5].minor); - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,74,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); +#line 2424 "src/parser_proc.c" + yy_destructor(yypParser,92,&yymsp[-5].minor); + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,88,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); } break; - case 12: /* enum_name ::= ENUM optional_name */ - case 13: /* struct_name ::= STRUCT optional_name */ yytestcase(yyruleno==13); - case 14: /* union_name ::= UNION optional_name */ yytestcase(yyruleno==14); -#line 270 "src/parser_proc.y" + case 43: /* enum_name ::= ENUM optional_name */ + case 44: /* struct_name ::= STRUCT optional_name */ yytestcase(yyruleno==44); + case 45: /* union_name ::= UNION optional_name */ yytestcase(yyruleno==45); +#line 412 "src/parser_proc.y" { if (yymsp[0].minor.yy0) { yylhsminor.yy0 = yymsp[0].minor.yy0; @@ -2045,1281 +2438,1282 @@ static void yy_reduce( } else { char digest[17]; psi_token_hash(yymsp[-1].minor.yy0, digest); - yylhsminor.yy0 = psi_token_translit(psi_token_append(yymsp[-1].minor.yy0, 1, digest), " ", "@"); + yylhsminor.yy0 = psi_token_append("@", yymsp[-1].minor.yy0, 1, digest); } } -#line 2052 "src/parser_proc.c" +#line 2445 "src/parser_proc.c" yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 15: /* decl_enum ::= enum_name LBRACE decl_enum_items RBRACE */ -#line 300 "src/parser_proc.y" + case 46: /* decl_enum ::= enum_name LBRACE decl_enum_items RBRACE */ +#line 442 "src/parser_proc.y" { - yylhsminor.yy279 = psi_decl_enum_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); - yylhsminor.yy279->token = yymsp[-3].minor.yy0; + yylhsminor.yy323 = psi_decl_enum_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy179); + yylhsminor.yy323->token = yymsp[-3].minor.yy0; } -#line 2061 "src/parser_proc.c" - yy_destructor(yypParser,79,&yymsp[-2].minor); - yy_destructor(yypParser,80,&yymsp[0].minor); - yymsp[-3].minor.yy279 = yylhsminor.yy279; +#line 2454 "src/parser_proc.c" + yy_destructor(yypParser,96,&yymsp[-2].minor); + yy_destructor(yypParser,97,&yymsp[0].minor); + yymsp[-3].minor.yy323 = yylhsminor.yy323; break; - case 16: /* decl_enum_items ::= decl_enum_item */ -#line 304 "src/parser_proc.y" + case 47: /* decl_enum_items ::= decl_enum_item */ +#line 446 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_enum_item_free), - &yymsp[0].minor.yy69); + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_enum_item_free), + &yymsp[0].minor.yy169); } -#line 2072 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 2465 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 17: /* decl_enum_items ::= decl_enum_items COMMA decl_enum_item */ -#line 308 "src/parser_proc.y" + case 48: /* decl_enum_items ::= decl_enum_items COMMA decl_enum_item */ +#line 450 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy69); + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy169); } -#line 2080 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy303 = yylhsminor.yy303; +#line 2473 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; break; - case 18: /* decl_enum_item ::= NAME EQUALS num_exp */ -#line 311 "src/parser_proc.y" + case 49: /* decl_enum_item ::= NAME EQUALS num_exp */ +#line 453 "src/parser_proc.y" { - yylhsminor.yy69 = psi_decl_enum_item_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy39); - yylhsminor.yy69->token = yymsp[-2].minor.yy0; + yylhsminor.yy169 = psi_decl_enum_item_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy207); + yylhsminor.yy169->token = yymsp[-2].minor.yy0; } -#line 2090 "src/parser_proc.c" - yy_destructor(yypParser,81,&yymsp[-1].minor); - yymsp[-2].minor.yy69 = yylhsminor.yy69; +#line 2483 "src/parser_proc.c" + yy_destructor(yypParser,98,&yymsp[-1].minor); + yymsp[-2].minor.yy169 = yylhsminor.yy169; break; - case 19: /* decl_enum_item ::= NAME */ -#line 315 "src/parser_proc.y" + case 50: /* decl_enum_item ::= NAME */ +#line 457 "src/parser_proc.y" { - yylhsminor.yy69 = psi_decl_enum_item_init(yymsp[0].minor.yy0->text, NULL); - yylhsminor.yy69->token = yymsp[0].minor.yy0; + yylhsminor.yy169 = psi_decl_enum_item_init(yymsp[0].minor.yy0->text, NULL); + yylhsminor.yy169->token = yymsp[0].minor.yy0; } -#line 2100 "src/parser_proc.c" - yymsp[0].minor.yy69 = yylhsminor.yy69; +#line 2493 "src/parser_proc.c" + yymsp[0].minor.yy169 = yylhsminor.yy169; break; - case 20: /* decl_struct_args_block ::= LBRACE struct_args RBRACE */ -{ yy_destructor(yypParser,79,&yymsp[-2].minor); -#line 319 "src/parser_proc.y" + case 51: /* decl_struct_args_block ::= LBRACE struct_args RBRACE */ +{ yy_destructor(yypParser,96,&yymsp[-2].minor); +#line 461 "src/parser_proc.y" { - yymsp[-2].minor.yy303 = yymsp[-1].minor.yy303; + yymsp[-2].minor.yy179 = yymsp[-1].minor.yy179; } -#line 2109 "src/parser_proc.c" - yy_destructor(yypParser,80,&yymsp[0].minor); +#line 2502 "src/parser_proc.c" + yy_destructor(yypParser,97,&yymsp[0].minor); } break; - case 21: /* decl_struct_args ::= decl_struct_args_block */ -#line 322 "src/parser_proc.y" + case 52: /* decl_struct_args ::= decl_struct_args_block */ +#line 464 "src/parser_proc.y" { - yylhsminor.yy303 = yymsp[0].minor.yy303; + yylhsminor.yy179 = yymsp[0].minor.yy179; } -#line 2118 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 2511 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 22: /* decl_struct_args ::= EOS */ -{ yy_destructor(yypParser,71,&yymsp[0].minor); -#line 325 "src/parser_proc.y" + case 53: /* decl_struct_args ::= EOS */ +{ yy_destructor(yypParser,75,&yymsp[0].minor); +#line 467 "src/parser_proc.y" { - yymsp[0].minor.yy303 = psi_plist_init((psi_plist_dtor) psi_decl_arg_free); + yymsp[0].minor.yy179 = psi_plist_init((psi_plist_dtor) psi_decl_arg_free); } -#line 2127 "src/parser_proc.c" +#line 2520 "src/parser_proc.c" } break; - case 23: /* decl_struct ::= STRUCT NAME align_and_size decl_struct_args */ -{ yy_destructor(yypParser,77,&yymsp[-3].minor); -#line 328 "src/parser_proc.y" + case 54: /* decl_struct ::= STRUCT NAME align_and_size decl_struct_args */ +{ yy_destructor(yypParser,94,&yymsp[-3].minor); +#line 470 "src/parser_proc.y" { - yymsp[-3].minor.yy271 = psi_decl_struct_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy303); - yymsp[-3].minor.yy271->align = yymsp[-1].minor.yy323.pos; - yymsp[-3].minor.yy271->size = yymsp[-1].minor.yy323.len; - yymsp[-3].minor.yy271->token = yymsp[-2].minor.yy0; + yymsp[-3].minor.yy324 = psi_decl_struct_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy179); + yymsp[-3].minor.yy324->align = yymsp[-1].minor.yy239.pos; + yymsp[-3].minor.yy324->size = yymsp[-1].minor.yy239.len; + yymsp[-3].minor.yy324->token = yymsp[-2].minor.yy0; } -#line 2139 "src/parser_proc.c" +#line 2532 "src/parser_proc.c" } break; - case 24: /* decl_union ::= UNION NAME align_and_size decl_struct_args */ -{ yy_destructor(yypParser,78,&yymsp[-3].minor); -#line 334 "src/parser_proc.y" + case 55: /* decl_union ::= UNION NAME align_and_size decl_struct_args */ +{ yy_destructor(yypParser,95,&yymsp[-3].minor); +#line 476 "src/parser_proc.y" { - yymsp[-3].minor.yy19 = psi_decl_union_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy303); - yymsp[-3].minor.yy19->align = yymsp[-1].minor.yy323.pos; - yymsp[-3].minor.yy19->size = yymsp[-1].minor.yy323.len; - yymsp[-3].minor.yy19->token = yymsp[-2].minor.yy0; + yymsp[-3].minor.yy15 = psi_decl_union_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy179); + yymsp[-3].minor.yy15->align = yymsp[-1].minor.yy239.pos; + yymsp[-3].minor.yy15->size = yymsp[-1].minor.yy239.len; + yymsp[-3].minor.yy15->token = yymsp[-2].minor.yy0; } -#line 2151 "src/parser_proc.c" +#line 2544 "src/parser_proc.c" } break; - case 25: /* const_type ::= BOOL|INT|FLOAT|STRING */ -#line 340 "src/parser_proc.y" + case 56: /* const_type ::= BOOL|INT|FLOAT|STRING */ +#line 482 "src/parser_proc.y" { - yylhsminor.yy7 = psi_const_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy351 = psi_const_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); free(yymsp[0].minor.yy0); } -#line 2160 "src/parser_proc.c" - yymsp[0].minor.yy7 = yylhsminor.yy7; +#line 2553 "src/parser_proc.c" + yymsp[0].minor.yy351 = yylhsminor.yy351; break; - case 26: /* constant ::= CONST const_type NSNAME EQUALS impl_def_val EOS */ -{ yy_destructor(yypParser,82,&yymsp[-5].minor); -#line 344 "src/parser_proc.y" + case 57: /* constant ::= CONST const_type NSNAME EQUALS impl_def_val EOS */ +{ yy_destructor(yypParser,99,&yymsp[-5].minor); +#line 486 "src/parser_proc.y" { - yymsp[-5].minor.yy106 = psi_const_init(yymsp[-4].minor.yy7, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy21); - yymsp[-5].minor.yy106->token = yymsp[-3].minor.yy0; + yymsp[-5].minor.yy38 = psi_const_init(yymsp[-4].minor.yy351, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy145); + yymsp[-5].minor.yy38->token = yymsp[-3].minor.yy0; } -#line 2170 "src/parser_proc.c" - yy_destructor(yypParser,81,&yymsp[-2].minor); - yy_destructor(yypParser,71,&yymsp[0].minor); +#line 2563 "src/parser_proc.c" + yy_destructor(yypParser,98,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); } break; - case 27: /* decl_typedef ::= TYPEDEF decl_typedef_body EOS */ -#line 348 "src/parser_proc.y" + case 58: /* decl_typedef ::= TYPEDEF decl_typedef_body EOS */ +#line 490 "src/parser_proc.y" { - yylhsminor.yy260 = yymsp[-1].minor.yy260; - yylhsminor.yy260->token = yymsp[-2].minor.yy0; + yylhsminor.yy320 = yymsp[-1].minor.yy320; + yylhsminor.yy320->token = yymsp[-2].minor.yy0; } -#line 2181 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-2].minor.yy260 = yylhsminor.yy260; +#line 2574 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 28: /* decl_typedef_body_ex ::= struct_name align_and_size decl_struct_args_block decl_var */ -#line 352 "src/parser_proc.y" + case 59: /* decl_typedef_body_ex ::= struct_name align_and_size decl_struct_args_block decl_var */ +#line 494 "src/parser_proc.y" { - yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy207); - yylhsminor.yy260->type->token = psi_token_copy(yymsp[-3].minor.yy0); - yylhsminor.yy260->type->real.strct = psi_decl_struct_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); - yylhsminor.yy260->type->real.strct->token = yymsp[-3].minor.yy0; - yylhsminor.yy260->type->real.strct->align = yymsp[-2].minor.yy323.pos; - yylhsminor.yy260->type->real.strct->size = yymsp[-2].minor.yy323.len; + yylhsminor.yy320 = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy271); + yylhsminor.yy320->type->token = psi_token_copy(yymsp[-3].minor.yy0); + yylhsminor.yy320->type->real.strct = psi_decl_struct_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy179); + yylhsminor.yy320->type->real.strct->token = yymsp[-3].minor.yy0; + yylhsminor.yy320->type->real.strct->align = yymsp[-2].minor.yy239.pos; + yylhsminor.yy320->type->real.strct->size = yymsp[-2].minor.yy239.len; } -#line 2195 "src/parser_proc.c" - yymsp[-3].minor.yy260 = yylhsminor.yy260; +#line 2588 "src/parser_proc.c" + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 29: /* decl_typedef_body_ex ::= union_name align_and_size decl_struct_args_block decl_var */ -#line 360 "src/parser_proc.y" + case 60: /* decl_typedef_body_ex ::= union_name align_and_size decl_struct_args_block decl_var */ +#line 502 "src/parser_proc.y" { - yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy207); - yylhsminor.yy260->type->token = psi_token_copy(yymsp[-3].minor.yy0); - yylhsminor.yy260->type->real.unn = psi_decl_union_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); - yylhsminor.yy260->type->real.unn->token = yymsp[-3].minor.yy0; - yylhsminor.yy260->type->real.unn->align = yymsp[-2].minor.yy323.pos; - yylhsminor.yy260->type->real.unn->size = yymsp[-2].minor.yy323.len; + yylhsminor.yy320 = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy271); + yylhsminor.yy320->type->token = psi_token_copy(yymsp[-3].minor.yy0); + yylhsminor.yy320->type->real.unn = psi_decl_union_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy179); + yylhsminor.yy320->type->real.unn->token = yymsp[-3].minor.yy0; + yylhsminor.yy320->type->real.unn->align = yymsp[-2].minor.yy239.pos; + yylhsminor.yy320->type->real.unn->size = yymsp[-2].minor.yy239.len; } -#line 2208 "src/parser_proc.c" - yymsp[-3].minor.yy260 = yylhsminor.yy260; +#line 2601 "src/parser_proc.c" + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 30: /* decl_typedef_body_ex ::= decl_enum NAME */ -#line 368 "src/parser_proc.y" + case 61: /* decl_typedef_body_ex ::= decl_enum NAME */ +#line 510 "src/parser_proc.y" { - yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_ENUM, yymsp[-1].minor.yy279->name), psi_decl_var_init(yymsp[0].minor.yy0->text, 0, 0)); - yylhsminor.yy260->var->token = yymsp[0].minor.yy0; - yylhsminor.yy260->type->token = psi_token_copy(yymsp[-1].minor.yy279->token); - yylhsminor.yy260->type->real.enm = yymsp[-1].minor.yy279; + yylhsminor.yy320 = psi_decl_arg_init(psi_decl_type_init(PSI_T_ENUM, yymsp[-1].minor.yy323->name), psi_decl_var_init(yymsp[0].minor.yy0->text, 0, 0)); + yylhsminor.yy320->var->token = yymsp[0].minor.yy0; + yylhsminor.yy320->type->token = psi_token_copy(yymsp[-1].minor.yy323->token); + yylhsminor.yy320->type->real.enm = yymsp[-1].minor.yy323; } -#line 2219 "src/parser_proc.c" - yymsp[-1].minor.yy260 = yylhsminor.yy260; +#line 2612 "src/parser_proc.c" + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 31: /* decl_typedef_body ::= decl_typedef_body_ex */ - case 34: /* decl_typedef_body ::= decl_arg */ yytestcase(yyruleno==34); - case 37: /* decl_func ::= decl_arg */ yytestcase(yyruleno==37); -#line 374 "src/parser_proc.y" + case 62: /* decl_typedef_body ::= decl_typedef_body_ex */ + case 65: /* decl_typedef_body ::= decl_arg */ yytestcase(yyruleno==65); + case 68: /* decl_func ::= decl_arg */ yytestcase(yyruleno==68); +#line 516 "src/parser_proc.y" { - yylhsminor.yy260 = yymsp[0].minor.yy260; + yylhsminor.yy320 = yymsp[0].minor.yy320; } -#line 2229 "src/parser_proc.c" - yymsp[0].minor.yy260 = yylhsminor.yy260; +#line 2622 "src/parser_proc.c" + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 32: /* decl_typedef_body_fn_args ::= LPAREN decl_args RPAREN */ -{ yy_destructor(yypParser,73,&yymsp[-2].minor); -#line 377 "src/parser_proc.y" + case 63: /* decl_typedef_body_fn_args ::= LPAREN decl_args RPAREN */ +{ yy_destructor(yypParser,86,&yymsp[-2].minor); +#line 519 "src/parser_proc.y" { - yymsp[-2].minor.yy303 = yymsp[-1].minor.yy303; + yymsp[-2].minor.yy179 = yymsp[-1].minor.yy179; } -#line 2238 "src/parser_proc.c" - yy_destructor(yypParser,75,&yymsp[0].minor); +#line 2631 "src/parser_proc.c" + yy_destructor(yypParser,87,&yymsp[0].minor); } break; - case 33: /* decl_typedef_body ::= decl_func decl_typedef_body_fn_args */ -#line 380 "src/parser_proc.y" + case 64: /* decl_typedef_body ::= decl_func decl_typedef_body_fn_args */ +#line 522 "src/parser_proc.y" { - yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_FUNCTION, yymsp[-1].minor.yy260->var->name), psi_decl_var_copy(yymsp[-1].minor.yy260->var)); - yylhsminor.yy260->type->token = psi_token_copy(yymsp[-1].minor.yy260->token); - yylhsminor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), yymsp[-1].minor.yy260, yymsp[0].minor.yy303); + yylhsminor.yy320 = psi_decl_arg_init(psi_decl_type_init(PSI_T_FUNCTION, yymsp[-1].minor.yy320->var->name), psi_decl_var_copy(yymsp[-1].minor.yy320->var)); + yylhsminor.yy320->type->token = psi_token_copy(yymsp[-1].minor.yy320->token); + yylhsminor.yy320->type->real.func = psi_decl_init(psi_decl_abi_init("default"), yymsp[-1].minor.yy320, yymsp[0].minor.yy179); } -#line 2249 "src/parser_proc.c" - yymsp[-1].minor.yy260 = yylhsminor.yy260; +#line 2642 "src/parser_proc.c" + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 35: /* decl ::= decl_abi decl_func LPAREN decl_args RPAREN EOS */ -#line 388 "src/parser_proc.y" + case 66: /* decl ::= decl_abi decl_func LPAREN decl_args RPAREN EOS */ +#line 530 "src/parser_proc.y" { - yylhsminor.yy71 = psi_decl_init(yymsp[-5].minor.yy242, yymsp[-4].minor.yy260, yymsp[-2].minor.yy303); + yylhsminor.yy303 = psi_decl_init(yymsp[-5].minor.yy26, yymsp[-4].minor.yy320, yymsp[-2].minor.yy179); } -#line 2257 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-3].minor); - yy_destructor(yypParser,75,&yymsp[-1].minor); - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-5].minor.yy71 = yylhsminor.yy71; +#line 2650 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-3].minor); + yy_destructor(yypParser,87,&yymsp[-1].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-5].minor.yy303 = yylhsminor.yy303; break; - case 36: /* decl ::= decl_abi decl_func LPAREN decl_args COMMA ELLIPSIS RPAREN EOS */ -#line 391 "src/parser_proc.y" + case 67: /* decl ::= decl_abi decl_func LPAREN decl_args COMMA ELLIPSIS RPAREN EOS */ +#line 533 "src/parser_proc.y" { - yylhsminor.yy71 = psi_decl_init(yymsp[-7].minor.yy242, yymsp[-6].minor.yy260, yymsp[-4].minor.yy303); - yylhsminor.yy71->varargs = 1; + yylhsminor.yy303 = psi_decl_init(yymsp[-7].minor.yy26, yymsp[-6].minor.yy320, yymsp[-4].minor.yy179); + yylhsminor.yy303->varargs = 1; } -#line 2269 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-5].minor); - yy_destructor(yypParser,74,&yymsp[-3].minor); - yy_destructor(yypParser,84,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[-1].minor); - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-7].minor.yy71 = yylhsminor.yy71; +#line 2662 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-5].minor); + yy_destructor(yypParser,88,&yymsp[-3].minor); + yy_destructor(yypParser,101,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[-1].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-7].minor.yy303 = yylhsminor.yy303; break; - case 38: /* decl_func ::= VOID NAME */ -#line 398 "src/parser_proc.y" + case 69: /* decl_func ::= VOID NAME */ +#line 540 "src/parser_proc.y" { - yylhsminor.yy260 = psi_decl_arg_init( + yylhsminor.yy320 = psi_decl_arg_init( psi_decl_type_init(yymsp[-1].minor.yy0->type, yymsp[-1].minor.yy0->text), psi_decl_var_init(yymsp[0].minor.yy0->text, 0, 0) ); - yylhsminor.yy260->type->token = yymsp[-1].minor.yy0; - yylhsminor.yy260->var->token = yymsp[0].minor.yy0; - yylhsminor.yy260->token = yymsp[0].minor.yy0; + yylhsminor.yy320->type->token = yymsp[-1].minor.yy0; + yylhsminor.yy320->var->token = yymsp[0].minor.yy0; + yylhsminor.yy320->token = yymsp[0].minor.yy0; } -#line 2288 "src/parser_proc.c" - yymsp[-1].minor.yy260 = yylhsminor.yy260; +#line 2681 "src/parser_proc.c" + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 39: /* decl_typedef_body ::= VOID indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ -#line 407 "src/parser_proc.y" + case 70: /* decl_typedef_body ::= VOID indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ +#line 549 "src/parser_proc.y" { struct psi_decl_arg *func_ = psi_decl_arg_init( psi_decl_type_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text), - psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy190, 0) + psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy382, 0) ); func_->type->token = yymsp[-6].minor.yy0; func_->var->token = yymsp[-2].minor.yy0; func_->token = yymsp[-2].minor.yy0; - yylhsminor.yy260 = psi_decl_arg_init( + yylhsminor.yy320 = psi_decl_arg_init( psi_decl_type_init(PSI_T_FUNCTION, func_->var->name), psi_decl_var_copy(func_->var) ); - yylhsminor.yy260->var->pointer_level = yymsp[-3].minor.yy190; - yylhsminor.yy260->type->token = psi_token_copy(func_->token); - yylhsminor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy303); + yylhsminor.yy320->var->pointer_level = yymsp[-3].minor.yy382; + yylhsminor.yy320->type->token = psi_token_copy(func_->token); + yylhsminor.yy320->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy179); } -#line 2309 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,75,&yymsp[-1].minor); - yymsp[-6].minor.yy260 = yylhsminor.yy260; +#line 2702 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,87,&yymsp[-1].minor); + yymsp[-6].minor.yy320 = yylhsminor.yy320; break; - case 40: /* decl_typedef_body ::= CONST VOID pointers LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ -{ yy_destructor(yypParser,82,&yymsp[-7].minor); -#line 423 "src/parser_proc.y" + case 71: /* decl_typedef_body ::= CONST VOID pointers LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ +{ yy_destructor(yypParser,99,&yymsp[-7].minor); +#line 565 "src/parser_proc.y" { struct psi_decl_arg *func_ = psi_decl_arg_init( psi_decl_type_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text), - psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy190, 0) + psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy382, 0) ); func_->type->token = yymsp[-6].minor.yy0; func_->var->token = yymsp[-2].minor.yy0; func_->token = yymsp[-2].minor.yy0; - yymsp[-7].minor.yy260 = psi_decl_arg_init( + yymsp[-7].minor.yy320 = psi_decl_arg_init( psi_decl_type_init(PSI_T_FUNCTION, func_->var->name), psi_decl_var_copy(func_->var) ); - yymsp[-7].minor.yy260->var->pointer_level = yymsp[-3].minor.yy190; - yymsp[-7].minor.yy260->type->token = psi_token_copy(func_->token); - yymsp[-7].minor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy303); + yymsp[-7].minor.yy320->var->pointer_level = yymsp[-3].minor.yy382; + yymsp[-7].minor.yy320->type->token = psi_token_copy(func_->token); + yymsp[-7].minor.yy320->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy179); } -#line 2333 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,75,&yymsp[-1].minor); +#line 2726 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,87,&yymsp[-1].minor); } break; - case 41: /* decl_abi ::= NAME */ -#line 439 "src/parser_proc.y" + case 72: /* decl_abi ::= NAME */ +#line 581 "src/parser_proc.y" { - yylhsminor.yy242 = psi_decl_abi_init(yymsp[0].minor.yy0->text); - yylhsminor.yy242->token = yymsp[0].minor.yy0; + yylhsminor.yy26 = psi_decl_abi_init(yymsp[0].minor.yy0->text); + yylhsminor.yy26->token = yymsp[0].minor.yy0; } -#line 2344 "src/parser_proc.c" - yymsp[0].minor.yy242 = yylhsminor.yy242; +#line 2737 "src/parser_proc.c" + yymsp[0].minor.yy26 = yylhsminor.yy26; break; - case 43: /* decl_var_array_size ::= LBRACKET NUMBER RBRACKET */ -{ yy_destructor(yypParser,85,&yymsp[-2].minor); -#line 446 "src/parser_proc.y" + case 74: /* decl_var_array_size ::= LBRACKET NUMBER RBRACKET */ +{ yy_destructor(yypParser,102,&yymsp[-2].minor); +#line 588 "src/parser_proc.y" { yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } -#line 2353 "src/parser_proc.c" - yy_destructor(yypParser,86,&yymsp[0].minor); +#line 2746 "src/parser_proc.c" + yy_destructor(yypParser,103,&yymsp[0].minor); } break; - case 44: /* decl_var ::= NAME decl_var_array_size */ -#line 449 "src/parser_proc.y" + case 75: /* decl_var ::= NAME decl_var_array_size */ +#line 591 "src/parser_proc.y" { - yylhsminor.yy207 = psi_decl_var_init(yymsp[-1].minor.yy0->text, 0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); - yylhsminor.yy207->token = yymsp[-1].minor.yy0; + yylhsminor.yy271 = psi_decl_var_init(yymsp[-1].minor.yy0->text, 0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); + yylhsminor.yy271->token = yymsp[-1].minor.yy0; if (yymsp[0].minor.yy0) { free(yymsp[0].minor.yy0); } } -#line 2366 "src/parser_proc.c" - yymsp[-1].minor.yy207 = yylhsminor.yy207; +#line 2759 "src/parser_proc.c" + yymsp[-1].minor.yy271 = yylhsminor.yy271; break; - case 45: /* decl_var ::= pointers NAME decl_var_array_size */ -#line 456 "src/parser_proc.y" + case 76: /* decl_var ::= pointers NAME decl_var_array_size */ +#line 598 "src/parser_proc.y" { - yylhsminor.yy207 = psi_decl_var_init(yymsp[-1].minor.yy0->text, yymsp[-2].minor.yy190+!!yymsp[0].minor.yy0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); - yylhsminor.yy207->token = yymsp[-1].minor.yy0; + yylhsminor.yy271 = psi_decl_var_init(yymsp[-1].minor.yy0->text, yymsp[-2].minor.yy382+!!yymsp[0].minor.yy0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); + yylhsminor.yy271->token = yymsp[-1].minor.yy0; if (yymsp[0].minor.yy0) { free(yymsp[0].minor.yy0); } } -#line 2378 "src/parser_proc.c" - yymsp[-2].minor.yy207 = yylhsminor.yy207; +#line 2771 "src/parser_proc.c" + yymsp[-2].minor.yy271 = yylhsminor.yy271; break; - case 46: /* decl_vars ::= decl_var */ -#line 463 "src/parser_proc.y" + case 77: /* decl_vars ::= decl_var */ +#line 605 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_var_free), - &yymsp[0].minor.yy207); + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_var_free), + &yymsp[0].minor.yy271); } -#line 2387 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 2780 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 47: /* decl_vars ::= decl_vars COMMA decl_var */ -#line 467 "src/parser_proc.y" + case 78: /* decl_vars ::= decl_vars COMMA decl_var */ +#line 609 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy207); + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy271); } -#line 2395 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy303 = yylhsminor.yy303; +#line 2788 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; break; - case 48: /* decl_arg ::= const_decl_type decl_var */ -#line 470 "src/parser_proc.y" + case 79: /* decl_arg ::= const_decl_type decl_var */ +#line 612 "src/parser_proc.y" { - yylhsminor.yy260 = psi_decl_arg_init(yymsp[-1].minor.yy152, yymsp[0].minor.yy207); + yylhsminor.yy320 = psi_decl_arg_init(yymsp[-1].minor.yy172, yymsp[0].minor.yy271); } -#line 2404 "src/parser_proc.c" - yymsp[-1].minor.yy260 = yylhsminor.yy260; +#line 2797 "src/parser_proc.c" + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 49: /* decl_typedef_body ::= const_decl_type indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ -#line 473 "src/parser_proc.y" + case 80: /* decl_typedef_body ::= const_decl_type indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ +#line 615 "src/parser_proc.y" { struct psi_decl_arg *func_ = psi_decl_arg_init( - yymsp[-6].minor.yy152, - psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy190, 0) + yymsp[-6].minor.yy172, + psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy382, 0) ); func_->var->token = yymsp[-2].minor.yy0; func_->token = yymsp[-2].minor.yy0; - yylhsminor.yy260 = psi_decl_arg_init( + yylhsminor.yy320 = psi_decl_arg_init( psi_decl_type_init(PSI_T_FUNCTION, func_->var->name), psi_decl_var_copy(func_->var) ); - yylhsminor.yy260->var->pointer_level = yymsp[-3].minor.yy190; - yylhsminor.yy260->type->token = psi_token_copy(func_->token); - yylhsminor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy303); + yylhsminor.yy320->var->pointer_level = yymsp[-3].minor.yy382; + yylhsminor.yy320->type->token = psi_token_copy(func_->token); + yylhsminor.yy320->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy179); } -#line 2424 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,75,&yymsp[-1].minor); - yymsp[-6].minor.yy260 = yylhsminor.yy260; +#line 2817 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,87,&yymsp[-1].minor); + yymsp[-6].minor.yy320 = yylhsminor.yy320; break; - case 50: /* decl_arg ::= VOID pointers NAME */ -#line 488 "src/parser_proc.y" + case 81: /* decl_arg ::= VOID pointers NAME */ +#line 630 "src/parser_proc.y" { - yylhsminor.yy260 = psi_decl_arg_init( + yylhsminor.yy320 = psi_decl_arg_init( psi_decl_type_init(yymsp[-2].minor.yy0->type, yymsp[-2].minor.yy0->text), - psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy190, 0) + psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy382, 0) ); - yylhsminor.yy260->type->token = yymsp[-2].minor.yy0; - yylhsminor.yy260->var->token = yymsp[0].minor.yy0; - yylhsminor.yy260->token = yymsp[0].minor.yy0; + yylhsminor.yy320->type->token = yymsp[-2].minor.yy0; + yylhsminor.yy320->var->token = yymsp[0].minor.yy0; + yylhsminor.yy320->token = yymsp[0].minor.yy0; } -#line 2440 "src/parser_proc.c" - yymsp[-2].minor.yy260 = yylhsminor.yy260; +#line 2833 "src/parser_proc.c" + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 51: /* decl_arg ::= CONST VOID pointers NAME */ -{ yy_destructor(yypParser,82,&yymsp[-3].minor); -#line 497 "src/parser_proc.y" + case 82: /* decl_arg ::= CONST VOID pointers NAME */ +{ yy_destructor(yypParser,99,&yymsp[-3].minor); +#line 639 "src/parser_proc.y" { - yymsp[-3].minor.yy260 = psi_decl_arg_init( + yymsp[-3].minor.yy320 = psi_decl_arg_init( psi_decl_type_init(yymsp[-2].minor.yy0->type, yymsp[-2].minor.yy0->text), - psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy190, 0) + psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy382, 0) ); - yymsp[-3].minor.yy260->type->token = yymsp[-2].minor.yy0; - yymsp[-3].minor.yy260->var->token = yymsp[0].minor.yy0; - yymsp[-3].minor.yy260->token = yymsp[0].minor.yy0; + yymsp[-3].minor.yy320->type->token = yymsp[-2].minor.yy0; + yymsp[-3].minor.yy320->var->token = yymsp[0].minor.yy0; + yymsp[-3].minor.yy320->token = yymsp[0].minor.yy0; } -#line 2455 "src/parser_proc.c" -} - break; - case 52: /* decl_args ::= */ -#line 506 "src/parser_proc.y" -{ - yymsp[1].minor.yy303 = NULL; +#line 2848 "src/parser_proc.c" } -#line 2463 "src/parser_proc.c" break; - case 53: /* decl_args ::= VOID */ + case 84: /* decl_args ::= VOID */ { yy_destructor(yypParser,57,&yymsp[0].minor); -#line 509 "src/parser_proc.y" +#line 651 "src/parser_proc.y" { - yymsp[0].minor.yy303 = NULL; + yymsp[0].minor.yy179 = NULL; } -#line 2471 "src/parser_proc.c" +#line 2857 "src/parser_proc.c" } break; - case 54: /* decl_args ::= decl_arg */ - case 56: /* struct_args ::= struct_arg */ yytestcase(yyruleno==56); -#line 512 "src/parser_proc.y" + case 85: /* decl_args ::= decl_arg */ + case 87: /* struct_args ::= struct_arg */ yytestcase(yyruleno==87); +#line 654 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), - &yymsp[0].minor.yy260); + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), + &yymsp[0].minor.yy320); } -#line 2481 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 2867 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 55: /* decl_args ::= decl_args COMMA decl_arg */ -#line 516 "src/parser_proc.y" + case 86: /* decl_args ::= decl_args COMMA decl_arg */ +#line 658 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy260); + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy320); } -#line 2489 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy303 = yylhsminor.yy303; +#line 2875 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; break; - case 57: /* struct_args ::= struct_args struct_arg */ -#line 523 "src/parser_proc.y" + case 88: /* struct_args ::= struct_args struct_arg */ +#line 665 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-1].minor.yy303, &yymsp[0].minor.yy260); + yylhsminor.yy179 = psi_plist_add(yymsp[-1].minor.yy179, &yymsp[0].minor.yy320); } -#line 2498 "src/parser_proc.c" - yymsp[-1].minor.yy303 = yylhsminor.yy303; +#line 2884 "src/parser_proc.c" + yymsp[-1].minor.yy179 = yylhsminor.yy179; break; - case 58: /* struct_arg ::= decl_typedef_body_ex EOS */ -#line 526 "src/parser_proc.y" + case 89: /* struct_arg ::= decl_typedef_body_ex EOS */ +#line 668 "src/parser_proc.y" { - yylhsminor.yy260 = yymsp[-1].minor.yy260; - switch (yymsp[-1].minor.yy260->type->type) { + yylhsminor.yy320 = yymsp[-1].minor.yy320; + switch (yymsp[-1].minor.yy320->type->type) { case PSI_T_STRUCT: - if (yymsp[-1].minor.yy260->type->real.strct) { + if (yymsp[-1].minor.yy320->type->real.strct) { if (!P->structs) { P->structs = psi_plist_init((psi_plist_dtor) psi_decl_struct_free); } - P->structs = psi_plist_add(P->structs, &yymsp[-1].minor.yy260->type->real.strct); + P->structs = psi_plist_add(P->structs, &yymsp[-1].minor.yy320->type->real.strct); } break; case PSI_T_UNION: - if (yymsp[-1].minor.yy260->type->real.unn) { + if (yymsp[-1].minor.yy320->type->real.unn) { if (!P->unions) { P->unions = psi_plist_init((psi_plist_dtor) psi_decl_union_free); } - P->unions = psi_plist_add(P->unions, &yymsp[-1].minor.yy260->type->real.unn); + P->unions = psi_plist_add(P->unions, &yymsp[-1].minor.yy320->type->real.unn); } break; case PSI_T_ENUM: - if (yymsp[-1].minor.yy260->type->real.enm) { + if (yymsp[-1].minor.yy320->type->real.enm) { if (!P->enums) { P->enums = psi_plist_init((psi_plist_dtor) psi_decl_enum_free); } - P->enums = psi_plist_add(P->enums, &yymsp[-1].minor.yy260->type->real.enm); + P->enums = psi_plist_add(P->enums, &yymsp[-1].minor.yy320->type->real.enm); } break; } } -#line 2532 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-1].minor.yy260 = yylhsminor.yy260; +#line 2918 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 59: /* struct_arg ::= decl_arg decl_layout EOS */ -#line 555 "src/parser_proc.y" + case 90: /* struct_arg ::= decl_arg decl_layout EOS */ +#line 697 "src/parser_proc.y" { - yymsp[-2].minor.yy260->layout = yymsp[-1].minor.yy81; - yylhsminor.yy260 = yymsp[-2].minor.yy260; + yymsp[-2].minor.yy320->layout = yymsp[-1].minor.yy369; + yylhsminor.yy320 = yymsp[-2].minor.yy320; } -#line 2542 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-2].minor.yy260 = yylhsminor.yy260; +#line 2928 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 60: /* decl_layout ::= */ -#line 559 "src/parser_proc.y" + case 91: /* decl_layout ::= */ +#line 701 "src/parser_proc.y" { - yymsp[1].minor.yy81 = NULL; + yymsp[1].minor.yy369 = NULL; } -#line 2551 "src/parser_proc.c" +#line 2937 "src/parser_proc.c" break; - case 61: /* decl_layout ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN */ -{ yy_destructor(yypParser,72,&yymsp[-6].minor); -#line 562 "src/parser_proc.y" + case 92: /* decl_layout ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN */ +{ yy_destructor(yypParser,92,&yymsp[-6].minor); +#line 704 "src/parser_proc.y" { - yymsp[-6].minor.yy81 = psi_layout_init(atol(yymsp[-3].minor.yy0->text), atol(yymsp[-1].minor.yy0->text)); + yymsp[-6].minor.yy369 = psi_layout_init(atol(yymsp[-3].minor.yy0->text), atol(yymsp[-1].minor.yy0->text)); free(yymsp[-3].minor.yy0); free(yymsp[-1].minor.yy0); } -#line 2561 "src/parser_proc.c" - yy_destructor(yypParser,72,&yymsp[-5].minor); - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,74,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); +#line 2947 "src/parser_proc.c" + yy_destructor(yypParser,92,&yymsp[-5].minor); + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,88,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); } break; - case 63: /* decl_scalar_type ::= SHORT decl_scalar_type_short */ - case 67: /* decl_scalar_type ::= LONG decl_scalar_type_long */ yytestcase(yyruleno==67); - case 70: /* decl_scalar_type_long ::= LONG decl_scalar_type_long_long */ yytestcase(yyruleno==70); -#line 570 "src/parser_proc.y" + case 94: /* decl_scalar_type ::= SHORT decl_scalar_type_short */ + case 98: /* decl_scalar_type ::= LONG decl_scalar_type_long */ yytestcase(yyruleno==98); + case 101: /* decl_scalar_type_long ::= LONG decl_scalar_type_long_long */ yytestcase(yyruleno==101); +#line 712 "src/parser_proc.y" { if (yymsp[0].minor.yy0) { - yylhsminor.yy0 = psi_token_cat(2, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); + yylhsminor.yy0 = psi_token_cat(" ", 2, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); free(yymsp[-1].minor.yy0); free(yymsp[0].minor.yy0); } else { yylhsminor.yy0 = yymsp[-1].minor.yy0; } } -#line 2581 "src/parser_proc.c" +#line 2967 "src/parser_proc.c" yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 73: /* decl_type ::= UNSIGNED decl_scalar_type */ - case 74: /* decl_type ::= SIGNED decl_scalar_type */ yytestcase(yyruleno==74); -#line 618 "src/parser_proc.y" + case 104: /* decl_type ::= UNSIGNED decl_scalar_type */ + case 105: /* decl_type ::= SIGNED decl_scalar_type */ yytestcase(yyruleno==105); +#line 760 "src/parser_proc.y" { - struct psi_token *T = psi_token_cat(2, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); - yylhsminor.yy152 = psi_decl_type_init(T->type, T->text); - yylhsminor.yy152->token = T; + struct psi_token *T = psi_token_cat(" ", 2, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); + yylhsminor.yy172 = psi_decl_type_init(T->type, T->text); + yylhsminor.yy172->token = T; free(yymsp[-1].minor.yy0); free(yymsp[0].minor.yy0); } -#line 2594 "src/parser_proc.c" - yymsp[-1].minor.yy152 = yylhsminor.yy152; +#line 2980 "src/parser_proc.c" + yymsp[-1].minor.yy172 = yylhsminor.yy172; break; - case 75: /* decl_type ::= UNSIGNED */ - case 76: /* decl_type ::= SIGNED */ yytestcase(yyruleno==76); -#line 632 "src/parser_proc.y" + case 106: /* decl_type ::= UNSIGNED */ + case 107: /* decl_type ::= SIGNED */ yytestcase(yyruleno==107); +#line 774 "src/parser_proc.y" { - yylhsminor.yy152 = psi_decl_type_init(PSI_T_NAME, yymsp[0].minor.yy0->text); - yylhsminor.yy152->token = yymsp[0].minor.yy0; + yylhsminor.yy172 = psi_decl_type_init(PSI_T_NAME, yymsp[0].minor.yy0->text); + yylhsminor.yy172->token = yymsp[0].minor.yy0; } -#line 2604 "src/parser_proc.c" - yymsp[0].minor.yy152 = yylhsminor.yy152; +#line 2990 "src/parser_proc.c" + yymsp[0].minor.yy172 = yylhsminor.yy172; break; - case 77: /* decl_type ::= decl_scalar_type */ - case 81: /* decl_type ::= FLOAT|DOUBLE|INT8|UINT8|INT16|UINT16|INT32|UINT32|INT64|UINT64|NAME */ yytestcase(yyruleno==81); -#line 640 "src/parser_proc.y" + case 108: /* decl_type ::= decl_scalar_type */ + case 112: /* decl_type ::= FLOAT|DOUBLE|INT8|UINT8|INT16|UINT16|INT32|UINT32|INT64|UINT64|NAME */ yytestcase(yyruleno==112); +#line 782 "src/parser_proc.y" { - yylhsminor.yy152 = psi_decl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy152->token = yymsp[0].minor.yy0; + yylhsminor.yy172 = psi_decl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy172->token = yymsp[0].minor.yy0; } -#line 2614 "src/parser_proc.c" - yymsp[0].minor.yy152 = yylhsminor.yy152; +#line 3000 "src/parser_proc.c" + yymsp[0].minor.yy172 = yylhsminor.yy172; break; - case 78: /* decl_type ::= STRUCT NAME */ - case 79: /* decl_type ::= UNION NAME */ yytestcase(yyruleno==79); - case 80: /* decl_type ::= ENUM NAME */ yytestcase(yyruleno==80); -#line 644 "src/parser_proc.y" + case 109: /* decl_type ::= STRUCT NAME */ + case 110: /* decl_type ::= UNION NAME */ yytestcase(yyruleno==110); + case 111: /* decl_type ::= ENUM NAME */ yytestcase(yyruleno==111); +#line 786 "src/parser_proc.y" { - yylhsminor.yy152 = psi_decl_type_init(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy152->token = yymsp[0].minor.yy0; + yylhsminor.yy172 = psi_decl_type_init(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy172->token = yymsp[0].minor.yy0; free(yymsp[-1].minor.yy0); } -#line 2626 "src/parser_proc.c" - yymsp[-1].minor.yy152 = yylhsminor.yy152; +#line 3012 "src/parser_proc.c" + yymsp[-1].minor.yy172 = yylhsminor.yy172; break; - case 82: /* const_decl_type ::= decl_type */ -#line 663 "src/parser_proc.y" + case 113: /* const_decl_type ::= decl_type */ +#line 805 "src/parser_proc.y" { - yylhsminor.yy152 = yymsp[0].minor.yy152; + yylhsminor.yy172 = yymsp[0].minor.yy172; } -#line 2634 "src/parser_proc.c" - yymsp[0].minor.yy152 = yylhsminor.yy152; +#line 3020 "src/parser_proc.c" + yymsp[0].minor.yy172 = yylhsminor.yy172; break; - case 83: /* const_decl_type ::= CONST decl_type */ -{ yy_destructor(yypParser,82,&yymsp[-1].minor); -#line 666 "src/parser_proc.y" + case 114: /* const_decl_type ::= CONST decl_type */ +{ yy_destructor(yypParser,99,&yymsp[-1].minor); +#line 808 "src/parser_proc.y" { - yymsp[-1].minor.yy152 = yymsp[0].minor.yy152; + yymsp[-1].minor.yy172 = yymsp[0].minor.yy172; } -#line 2643 "src/parser_proc.c" +#line 3029 "src/parser_proc.c" } break; - case 84: /* impl ::= impl_func LBRACE impl_stmts RBRACE */ -#line 669 "src/parser_proc.y" + case 115: /* impl ::= impl_func LBRACE impl_stmts RBRACE */ +#line 811 "src/parser_proc.y" { - yylhsminor.yy49 = psi_impl_init(yymsp[-3].minor.yy120, yymsp[-1].minor.yy303); + yylhsminor.yy49 = psi_impl_init(yymsp[-3].minor.yy56, yymsp[-1].minor.yy179); } -#line 2651 "src/parser_proc.c" - yy_destructor(yypParser,79,&yymsp[-2].minor); - yy_destructor(yypParser,80,&yymsp[0].minor); +#line 3037 "src/parser_proc.c" + yy_destructor(yypParser,96,&yymsp[-2].minor); + yy_destructor(yypParser,97,&yymsp[0].minor); yymsp[-3].minor.yy49 = yylhsminor.yy49; break; - case 85: /* impl ::= STATIC impl_func LBRACE impl_stmts RBRACE */ -{ yy_destructor(yypParser,92,&yymsp[-4].minor); -#line 672 "src/parser_proc.y" + case 116: /* impl ::= STATIC impl_func LBRACE impl_stmts RBRACE */ +{ yy_destructor(yypParser,109,&yymsp[-4].minor); +#line 814 "src/parser_proc.y" { - yymsp[-3].minor.yy120->static_memory = 1; - yymsp[-4].minor.yy49 = psi_impl_init(yymsp[-3].minor.yy120, yymsp[-1].minor.yy303); + yymsp[-3].minor.yy56->static_memory = 1; + yymsp[-4].minor.yy49 = psi_impl_init(yymsp[-3].minor.yy56, yymsp[-1].minor.yy179); } -#line 2663 "src/parser_proc.c" - yy_destructor(yypParser,79,&yymsp[-2].minor); - yy_destructor(yypParser,80,&yymsp[0].minor); +#line 3049 "src/parser_proc.c" + yy_destructor(yypParser,96,&yymsp[-2].minor); + yy_destructor(yypParser,97,&yymsp[0].minor); } break; - case 86: /* impl_func ::= FUNCTION reference NSNAME LPAREN RPAREN COLON impl_type */ -{ yy_destructor(yypParser,93,&yymsp[-6].minor); -#line 676 "src/parser_proc.y" + case 117: /* impl_func ::= FUNCTION reference NSNAME LPAREN RPAREN COLON impl_type */ +{ yy_destructor(yypParser,110,&yymsp[-6].minor); +#line 818 "src/parser_proc.y" { - yymsp[-6].minor.yy120 = psi_impl_func_init(yymsp[-4].minor.yy0->text, NULL, yymsp[0].minor.yy142); - yymsp[-6].minor.yy120->token = yymsp[-4].minor.yy0; - yymsp[-6].minor.yy120->return_reference = yymsp[-5].minor.yy273; + yymsp[-6].minor.yy56 = psi_impl_func_init(yymsp[-4].minor.yy0->text, NULL, yymsp[0].minor.yy246); + yymsp[-6].minor.yy56->token = yymsp[-4].minor.yy0; + yymsp[-6].minor.yy56->return_reference = yymsp[-5].minor.yy89; } -#line 2676 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-3].minor); - yy_destructor(yypParser,75,&yymsp[-2].minor); - yy_destructor(yypParser,72,&yymsp[-1].minor); +#line 3062 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-3].minor); + yy_destructor(yypParser,87,&yymsp[-2].minor); + yy_destructor(yypParser,92,&yymsp[-1].minor); } break; - case 87: /* impl_func ::= FUNCTION reference NSNAME LPAREN impl_args RPAREN COLON impl_type */ -{ yy_destructor(yypParser,93,&yymsp[-7].minor); -#line 681 "src/parser_proc.y" + case 118: /* impl_func ::= FUNCTION reference NSNAME LPAREN impl_args RPAREN COLON impl_type */ +{ yy_destructor(yypParser,110,&yymsp[-7].minor); +#line 823 "src/parser_proc.y" { - yymsp[-7].minor.yy120 = psi_impl_func_init(yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy303, yymsp[0].minor.yy142); - yymsp[-7].minor.yy120->token = yymsp[-5].minor.yy0; - yymsp[-7].minor.yy120->return_reference = yymsp[-6].minor.yy273; + yymsp[-7].minor.yy56 = psi_impl_func_init(yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy179, yymsp[0].minor.yy246); + yymsp[-7].minor.yy56->token = yymsp[-5].minor.yy0; + yymsp[-7].minor.yy56->return_reference = yymsp[-6].minor.yy89; } -#line 2690 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,75,&yymsp[-2].minor); - yy_destructor(yypParser,72,&yymsp[-1].minor); +#line 3076 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,87,&yymsp[-2].minor); + yy_destructor(yypParser,92,&yymsp[-1].minor); } break; - case 88: /* impl_func ::= FUNCTION reference NSNAME LPAREN impl_args COMMA impl_type reference ELLIPSIS DOLLAR_NAME RPAREN COLON impl_type */ -{ yy_destructor(yypParser,93,&yymsp[-12].minor); -#line 686 "src/parser_proc.y" + case 119: /* impl_func ::= FUNCTION reference NSNAME LPAREN impl_args COMMA impl_type reference ELLIPSIS DOLLAR_NAME RPAREN COLON impl_type */ +{ yy_destructor(yypParser,110,&yymsp[-12].minor); +#line 828 "src/parser_proc.y" { - yymsp[-12].minor.yy120 = psi_impl_func_init(yymsp[-10].minor.yy0->text, yymsp[-8].minor.yy303, yymsp[0].minor.yy142); - yymsp[-12].minor.yy120->token = yymsp[-10].minor.yy0; - yymsp[-12].minor.yy120->return_reference = yymsp[-11].minor.yy273; - yymsp[-12].minor.yy120->vararg = psi_impl_arg_init(yymsp[-6].minor.yy142, psi_impl_var_init(yymsp[-3].minor.yy0->text, yymsp[-5].minor.yy273), NULL); + yymsp[-12].minor.yy56 = psi_impl_func_init(yymsp[-10].minor.yy0->text, yymsp[-8].minor.yy179, yymsp[0].minor.yy246); + yymsp[-12].minor.yy56->token = yymsp[-10].minor.yy0; + yymsp[-12].minor.yy56->return_reference = yymsp[-11].minor.yy89; + yymsp[-12].minor.yy56->vararg = psi_impl_arg_init(yymsp[-6].minor.yy246, psi_impl_var_init(yymsp[-3].minor.yy0->text, yymsp[-5].minor.yy89), NULL); free(yymsp[-3].minor.yy0); } -#line 2706 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-9].minor); - yy_destructor(yypParser,74,&yymsp[-7].minor); - yy_destructor(yypParser,84,&yymsp[-4].minor); - yy_destructor(yypParser,75,&yymsp[-2].minor); - yy_destructor(yypParser,72,&yymsp[-1].minor); +#line 3092 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-9].minor); + yy_destructor(yypParser,88,&yymsp[-7].minor); + yy_destructor(yypParser,101,&yymsp[-4].minor); + yy_destructor(yypParser,87,&yymsp[-2].minor); + yy_destructor(yypParser,92,&yymsp[-1].minor); } break; - case 89: /* impl_def_val ::= NULL|NUMBER|TRUE|FALSE|QUOTED_STRING */ -#line 693 "src/parser_proc.y" + case 120: /* impl_def_val ::= NULL|NUMBER|TRUE|FALSE|QUOTED_STRING */ +#line 835 "src/parser_proc.y" { - yylhsminor.yy21 = psi_impl_def_val_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy21->token = yymsp[0].minor.yy0; + yylhsminor.yy145 = psi_impl_def_val_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy145->token = yymsp[0].minor.yy0; } -#line 2720 "src/parser_proc.c" - yymsp[0].minor.yy21 = yylhsminor.yy21; +#line 3106 "src/parser_proc.c" + yymsp[0].minor.yy145 = yylhsminor.yy145; break; - case 90: /* impl_var ::= reference DOLLAR_NAME */ -#line 697 "src/parser_proc.y" + case 121: /* impl_var ::= reference DOLLAR_NAME */ +#line 839 "src/parser_proc.y" { - yylhsminor.yy185 = psi_impl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy273); - yylhsminor.yy185->token = yymsp[0].minor.yy0; + yylhsminor.yy370 = psi_impl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy89); + yylhsminor.yy370->token = yymsp[0].minor.yy0; } -#line 2729 "src/parser_proc.c" - yymsp[-1].minor.yy185 = yylhsminor.yy185; +#line 3115 "src/parser_proc.c" + yymsp[-1].minor.yy370 = yylhsminor.yy370; break; - case 91: /* impl_type ::= VOID|MIXED|BOOL|INT|FLOAT|STRING|ARRAY|OBJECT|CALLABLE */ -#line 701 "src/parser_proc.y" + case 122: /* impl_type ::= VOID|MIXED|BOOL|INT|FLOAT|STRING|ARRAY|OBJECT|CALLABLE */ +#line 843 "src/parser_proc.y" { - yylhsminor.yy142 = psi_impl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy246 = psi_impl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); free(yymsp[0].minor.yy0); } -#line 2738 "src/parser_proc.c" - yymsp[0].minor.yy142 = yylhsminor.yy142; +#line 3124 "src/parser_proc.c" + yymsp[0].minor.yy246 = yylhsminor.yy246; break; - case 92: /* impl_arg ::= impl_type impl_var */ -#line 705 "src/parser_proc.y" + case 123: /* impl_arg ::= impl_type impl_var */ +#line 847 "src/parser_proc.y" { - yylhsminor.yy238 = psi_impl_arg_init(yymsp[-1].minor.yy142, yymsp[0].minor.yy185, NULL); + yylhsminor.yy34 = psi_impl_arg_init(yymsp[-1].minor.yy246, yymsp[0].minor.yy370, NULL); } -#line 2746 "src/parser_proc.c" - yymsp[-1].minor.yy238 = yylhsminor.yy238; +#line 3132 "src/parser_proc.c" + yymsp[-1].minor.yy34 = yylhsminor.yy34; break; - case 93: /* impl_arg ::= impl_type impl_var EQUALS impl_def_val */ -#line 708 "src/parser_proc.y" + case 124: /* impl_arg ::= impl_type impl_var EQUALS impl_def_val */ +#line 850 "src/parser_proc.y" { - yylhsminor.yy238 = psi_impl_arg_init(yymsp[-3].minor.yy142, yymsp[-2].minor.yy185, yymsp[0].minor.yy21); + yylhsminor.yy34 = psi_impl_arg_init(yymsp[-3].minor.yy246, yymsp[-2].minor.yy370, yymsp[0].minor.yy145); } -#line 2754 "src/parser_proc.c" - yy_destructor(yypParser,81,&yymsp[-1].minor); - yymsp[-3].minor.yy238 = yylhsminor.yy238; +#line 3140 "src/parser_proc.c" + yy_destructor(yypParser,98,&yymsp[-1].minor); + yymsp[-3].minor.yy34 = yylhsminor.yy34; break; - case 94: /* impl_args ::= impl_arg */ -#line 711 "src/parser_proc.y" -{ - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_arg_free), - &yymsp[0].minor.yy238); -} -#line 2764 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; - break; - case 95: /* impl_args ::= impl_args COMMA impl_arg */ -#line 715 "src/parser_proc.y" + case 125: /* impl_args ::= impl_arg */ +#line 853 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy238); + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_arg_free), + &yymsp[0].minor.yy34); } -#line 2772 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy303 = yylhsminor.yy303; +#line 3150 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 96: /* impl_stmts ::= impl_stmt */ -#line 718 "src/parser_proc.y" + case 126: /* impl_args ::= impl_args COMMA impl_arg */ +#line 857 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_stmt_free), - &yymsp[0].minor.yy38); + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy34); } -#line 2782 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 3158 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; break; - case 97: /* impl_stmts ::= impl_stmts impl_stmt */ -#line 722 "src/parser_proc.y" + case 127: /* impl_stmts ::= impl_stmt */ +#line 860 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-1].minor.yy303, &yymsp[0].minor.yy38); + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_stmt_free), + &yymsp[0].minor.yy238); } -#line 2790 "src/parser_proc.c" - yymsp[-1].minor.yy303 = yylhsminor.yy303; +#line 3168 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 98: /* impl_stmt ::= return_stmt */ -#line 725 "src/parser_proc.y" + case 128: /* impl_stmts ::= impl_stmts impl_stmt */ +#line 864 "src/parser_proc.y" { - yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy130; + yylhsminor.yy179 = psi_plist_add(yymsp[-1].minor.yy179, &yymsp[0].minor.yy238); } -#line 2798 "src/parser_proc.c" - yymsp[0].minor.yy38 = yylhsminor.yy38; +#line 3176 "src/parser_proc.c" + yymsp[-1].minor.yy179 = yylhsminor.yy179; break; - case 99: /* impl_stmt ::= let_stmt */ -#line 728 "src/parser_proc.y" + case 129: /* impl_stmt ::= return_stmt */ +#line 867 "src/parser_proc.y" { - yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy139; + yylhsminor.yy238 = (struct psi_token**) yymsp[0].minor.yy342; } -#line 2806 "src/parser_proc.c" - yymsp[0].minor.yy38 = yylhsminor.yy38; +#line 3184 "src/parser_proc.c" + yymsp[0].minor.yy238 = yylhsminor.yy238; break; - case 100: /* impl_stmt ::= set_stmt */ -#line 731 "src/parser_proc.y" + case 130: /* impl_stmt ::= let_stmt */ +#line 870 "src/parser_proc.y" { - yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy226; + yylhsminor.yy238 = (struct psi_token**) yymsp[0].minor.yy319; } -#line 2814 "src/parser_proc.c" - yymsp[0].minor.yy38 = yylhsminor.yy38; +#line 3192 "src/parser_proc.c" + yymsp[0].minor.yy238 = yylhsminor.yy238; break; - case 101: /* impl_stmt ::= free_stmt */ -#line 734 "src/parser_proc.y" + case 131: /* impl_stmt ::= set_stmt */ +#line 873 "src/parser_proc.y" { - yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy76; + yylhsminor.yy238 = (struct psi_token**) yymsp[0].minor.yy358; } -#line 2822 "src/parser_proc.c" - yymsp[0].minor.yy38 = yylhsminor.yy38; +#line 3200 "src/parser_proc.c" + yymsp[0].minor.yy238 = yylhsminor.yy238; break; - case 102: /* number ::= NUMBER|NSNAME */ -#line 737 "src/parser_proc.y" + case 132: /* impl_stmt ::= assert_stmt */ +#line 876 "src/parser_proc.y" { - yylhsminor.yy160 = psi_number_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy160->token = yymsp[0].minor.yy0; + yylhsminor.yy238 = (struct psi_token **) yymsp[0].minor.yy201; } -#line 2831 "src/parser_proc.c" - yymsp[0].minor.yy160 = yylhsminor.yy160; +#line 3208 "src/parser_proc.c" + yymsp[0].minor.yy238 = yylhsminor.yy238; break; - case 103: /* number ::= decl_var */ -#line 741 "src/parser_proc.y" + case 133: /* impl_stmt ::= free_stmt */ +#line 879 "src/parser_proc.y" { - yylhsminor.yy160 = psi_number_init(PSI_T_NAME, yymsp[0].minor.yy207); - yylhsminor.yy160->token = psi_token_copy(yymsp[0].minor.yy207->token); + yylhsminor.yy238 = (struct psi_token**) yymsp[0].minor.yy220; } -#line 2840 "src/parser_proc.c" - yymsp[0].minor.yy160 = yylhsminor.yy160; +#line 3216 "src/parser_proc.c" + yymsp[0].minor.yy238 = yylhsminor.yy238; break; - case 104: /* num_exp ::= number */ -#line 745 "src/parser_proc.y" + case 134: /* number ::= NUMBER|NSNAME */ +#line 882 "src/parser_proc.y" { - yylhsminor.yy39 = psi_num_exp_init_num(yymsp[0].minor.yy160); - yylhsminor.yy39->token = psi_token_copy(yymsp[0].minor.yy160->token); + yylhsminor.yy57 = psi_number_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy57->token = yymsp[0].minor.yy0; } -#line 2849 "src/parser_proc.c" - yymsp[0].minor.yy39 = yylhsminor.yy39; +#line 3225 "src/parser_proc.c" + yymsp[0].minor.yy57 = yylhsminor.yy57; break; - case 105: /* num_exp ::= LPAREN num_exp RPAREN */ -#line 749 "src/parser_proc.y" + case 135: /* number ::= decl_var */ +#line 886 "src/parser_proc.y" { - yylhsminor.yy39 = psi_num_exp_init_unary(PSI_T_LPAREN, yymsp[-1].minor.yy39); - yylhsminor.yy39->token = yymsp[-2].minor.yy0; + yylhsminor.yy57 = psi_number_init(PSI_T_NAME, yymsp[0].minor.yy271); + yylhsminor.yy57->token = psi_token_copy(yymsp[0].minor.yy271->token); } -#line 2858 "src/parser_proc.c" - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-2].minor.yy39 = yylhsminor.yy39; +#line 3234 "src/parser_proc.c" + yymsp[0].minor.yy57 = yylhsminor.yy57; break; - case 106: /* num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE num_exp */ -#line 753 "src/parser_proc.y" + case 136: /* num_exp ::= number */ +#line 890 "src/parser_proc.y" { - yylhsminor.yy39 = psi_num_exp_init_binary(yymsp[-1].minor.yy0->type, yymsp[-2].minor.yy39, yymsp[0].minor.yy39); - yylhsminor.yy39->token = yymsp[-1].minor.yy0; + yylhsminor.yy207 = psi_num_exp_init_num(yymsp[0].minor.yy57); + yylhsminor.yy207->token = psi_token_copy(yymsp[0].minor.yy57->token); } -#line 2868 "src/parser_proc.c" - yymsp[-2].minor.yy39 = yylhsminor.yy39; +#line 3243 "src/parser_proc.c" + yymsp[0].minor.yy207 = yylhsminor.yy207; break; - case 107: /* num_exp ::= TILDE|NOT|PLUS|MINUS num_exp */ -#line 757 "src/parser_proc.y" + case 137: /* num_exp ::= LPAREN num_exp RPAREN */ +#line 894 "src/parser_proc.y" { - yylhsminor.yy39 = psi_num_exp_init_unary(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy39); - yylhsminor.yy39->token = yymsp[-1].minor.yy0; + yylhsminor.yy207 = psi_num_exp_init_unary(PSI_T_LPAREN, yymsp[-1].minor.yy207); + yylhsminor.yy207->token = yymsp[-2].minor.yy0; } -#line 2877 "src/parser_proc.c" - yymsp[-1].minor.yy39 = yylhsminor.yy39; +#line 3252 "src/parser_proc.c" + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-2].minor.yy207 = yylhsminor.yy207; break; - case 108: /* let_exp ::= NULL */ + case 140: /* let_exp ::= NULL */ { yy_destructor(yypParser,15,&yymsp[0].minor); -#line 761 "src/parser_proc.y" +#line 906 "src/parser_proc.y" { - yymsp[0].minor.yy144 = psi_let_exp_init(PSI_LET_NULL, NULL); + yymsp[0].minor.yy200 = psi_let_exp_init(PSI_LET_NULL, NULL); } -#line 2886 "src/parser_proc.c" +#line 3262 "src/parser_proc.c" } break; - case 109: /* let_exp ::= AMPERSAND NULL */ + case 141: /* let_exp ::= AMPERSAND NULL */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 764 "src/parser_proc.y" +#line 909 "src/parser_proc.y" { - yymsp[-1].minor.yy144 = psi_let_exp_init(PSI_LET_NULL, NULL); - yymsp[-1].minor.yy144->is_reference = 1; + yymsp[-1].minor.yy200 = psi_let_exp_init(PSI_LET_NULL, NULL); + yymsp[-1].minor.yy200->is_reference = 1; } -#line 2896 "src/parser_proc.c" +#line 3272 "src/parser_proc.c" yy_destructor(yypParser,15,&yymsp[0].minor); } break; - case 110: /* let_exp ::= let_callback */ -#line 768 "src/parser_proc.y" + case 142: /* let_exp ::= let_callback */ +#line 913 "src/parser_proc.y" { - yylhsminor.yy144 = psi_let_exp_init(PSI_LET_CALLBACK, yymsp[0].minor.yy164); + yylhsminor.yy200 = psi_let_exp_init(PSI_LET_CALLBACK, yymsp[0].minor.yy120); } -#line 2905 "src/parser_proc.c" - yymsp[0].minor.yy144 = yylhsminor.yy144; +#line 3281 "src/parser_proc.c" + yymsp[0].minor.yy200 = yylhsminor.yy200; break; - case 111: /* let_exp ::= let_calloc */ -#line 771 "src/parser_proc.y" + case 143: /* let_exp ::= let_calloc */ +#line 916 "src/parser_proc.y" { - yylhsminor.yy144 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy17); + yylhsminor.yy200 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy45); } -#line 2913 "src/parser_proc.c" - yymsp[0].minor.yy144 = yylhsminor.yy144; +#line 3289 "src/parser_proc.c" + yymsp[0].minor.yy200 = yylhsminor.yy200; break; - case 112: /* let_exp ::= AMPERSAND let_calloc */ + case 144: /* let_exp ::= AMPERSAND let_calloc */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 774 "src/parser_proc.y" +#line 919 "src/parser_proc.y" { - yymsp[-1].minor.yy144 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy17); - yymsp[-1].minor.yy144->is_reference = 1; + yymsp[-1].minor.yy200 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy45); + yymsp[-1].minor.yy200->is_reference = 1; } -#line 2923 "src/parser_proc.c" +#line 3299 "src/parser_proc.c" } break; - case 113: /* let_exp ::= let_func */ -#line 778 "src/parser_proc.y" + case 145: /* let_exp ::= let_func */ +#line 923 "src/parser_proc.y" { - yylhsminor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy72); + yylhsminor.yy200 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy67); } -#line 2931 "src/parser_proc.c" - yymsp[0].minor.yy144 = yylhsminor.yy144; +#line 3307 "src/parser_proc.c" + yymsp[0].minor.yy200 = yylhsminor.yy200; break; - case 114: /* let_exp ::= AMPERSAND let_func */ + case 146: /* let_exp ::= AMPERSAND let_func */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 781 "src/parser_proc.y" +#line 926 "src/parser_proc.y" { - yymsp[-1].minor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy72); - yymsp[-1].minor.yy144->is_reference = 1; + yymsp[-1].minor.yy200 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy67); + yymsp[-1].minor.yy200->is_reference = 1; } -#line 2941 "src/parser_proc.c" +#line 3317 "src/parser_proc.c" } break; - case 115: /* let_exp ::= num_exp */ -#line 785 "src/parser_proc.y" + case 147: /* let_exp ::= num_exp */ +#line 930 "src/parser_proc.y" { - yylhsminor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy39); + yylhsminor.yy200 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy207); } -#line 2949 "src/parser_proc.c" - yymsp[0].minor.yy144 = yylhsminor.yy144; +#line 3325 "src/parser_proc.c" + yymsp[0].minor.yy200 = yylhsminor.yy200; break; - case 116: /* let_exp ::= AMPERSAND num_exp */ + case 148: /* let_exp ::= AMPERSAND num_exp */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 788 "src/parser_proc.y" +#line 933 "src/parser_proc.y" { - yymsp[-1].minor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy39); - yymsp[-1].minor.yy144->is_reference = 1; + yymsp[-1].minor.yy200 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy207); + yymsp[-1].minor.yy200->is_reference = 1; } -#line 2959 "src/parser_proc.c" +#line 3335 "src/parser_proc.c" } break; - case 117: /* let_exp ::= decl_var EQUALS let_exp */ -#line 792 "src/parser_proc.y" + case 149: /* let_exp ::= decl_var EQUALS let_exp */ +#line 937 "src/parser_proc.y" { - yylhsminor.yy144 = yymsp[0].minor.yy144; - yylhsminor.yy144->var = yymsp[-2].minor.yy207; + yylhsminor.yy200 = yymsp[0].minor.yy200; + yylhsminor.yy200->var = yymsp[-2].minor.yy271; } -#line 2968 "src/parser_proc.c" - yy_destructor(yypParser,81,&yymsp[-1].minor); - yymsp[-2].minor.yy144 = yylhsminor.yy144; +#line 3344 "src/parser_proc.c" + yy_destructor(yypParser,98,&yymsp[-1].minor); + yymsp[-2].minor.yy200 = yylhsminor.yy200; break; - case 118: /* let_stmt ::= LET let_exp EOS */ -#line 796 "src/parser_proc.y" + case 150: /* let_stmt ::= LET let_exp EOS */ +#line 941 "src/parser_proc.y" { - yylhsminor.yy139 = psi_let_stmt_init(yymsp[-1].minor.yy144); - yylhsminor.yy139->token = yymsp[-2].minor.yy0; + yylhsminor.yy319 = psi_let_stmt_init(yymsp[-1].minor.yy200); + yylhsminor.yy319->token = yymsp[-2].minor.yy0; } -#line 2978 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-2].minor.yy139 = yylhsminor.yy139; +#line 3354 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-2].minor.yy319 = yylhsminor.yy319; break; - case 119: /* let_stmt ::= TEMP decl_var EQUALS reference decl_var EOS */ -#line 800 "src/parser_proc.y" + case 151: /* let_stmt ::= TEMP decl_var EQUALS reference decl_var EOS */ +#line 945 "src/parser_proc.y" { - yylhsminor.yy139 = psi_let_stmt_init(psi_let_exp_init_ex(yymsp[-4].minor.yy207, PSI_LET_TMP, yymsp[-1].minor.yy207)); - yylhsminor.yy139->token = yymsp[-5].minor.yy0; - yylhsminor.yy139->exp->is_reference = yymsp[-2].minor.yy273 ? 1 : 0; + yylhsminor.yy319 = psi_let_stmt_init(psi_let_exp_init_ex(yymsp[-4].minor.yy271, PSI_LET_TMP, yymsp[-1].minor.yy271)); + yylhsminor.yy319->token = yymsp[-5].minor.yy0; + yylhsminor.yy319->exp->is_reference = yymsp[-2].minor.yy89 ? 1 : 0; } -#line 2989 "src/parser_proc.c" - yy_destructor(yypParser,81,&yymsp[-3].minor); - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-5].minor.yy139 = yylhsminor.yy139; +#line 3365 "src/parser_proc.c" + yy_destructor(yypParser,98,&yymsp[-3].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-5].minor.yy319 = yylhsminor.yy319; break; - case 120: /* let_callback ::= CALLBACK callback_rval LPAREN impl_var LPAREN callback_arg_list RPAREN RPAREN */ -#line 805 "src/parser_proc.y" + case 152: /* let_callback ::= CALLBACK callback_rval LPAREN impl_var LPAREN callback_arg_list RPAREN RPAREN */ +#line 950 "src/parser_proc.y" { - yylhsminor.yy164 = psi_let_callback_init(psi_let_func_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text, yymsp[-4].minor.yy185), yymsp[-2].minor.yy287); - yylhsminor.yy164->token = yymsp[-7].minor.yy0; + yylhsminor.yy120 = psi_let_callback_init(psi_let_func_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text, yymsp[-4].minor.yy370), yymsp[-2].minor.yy243); + yylhsminor.yy120->token = yymsp[-7].minor.yy0; free(yymsp[-6].minor.yy0); } -#line 3001 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-5].minor); - yy_destructor(yypParser,73,&yymsp[-3].minor); - yy_destructor(yypParser,75,&yymsp[-1].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-7].minor.yy164 = yylhsminor.yy164; +#line 3377 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-5].minor); + yy_destructor(yypParser,86,&yymsp[-3].minor); + yy_destructor(yypParser,87,&yymsp[-1].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-7].minor.yy120 = yylhsminor.yy120; break; - case 121: /* let_calloc ::= CALLOC LPAREN num_exp COMMA num_exp RPAREN */ -#line 810 "src/parser_proc.y" + case 153: /* let_calloc ::= CALLOC LPAREN num_exp COMMA num_exp RPAREN */ +#line 955 "src/parser_proc.y" { - yylhsminor.yy17 = psi_let_calloc_init(yymsp[-3].minor.yy39, yymsp[-1].minor.yy39); - yylhsminor.yy17->token = yymsp[-5].minor.yy0; + yylhsminor.yy45 = psi_let_calloc_init(yymsp[-3].minor.yy207, yymsp[-1].minor.yy207); + yylhsminor.yy45->token = yymsp[-5].minor.yy0; } -#line 3014 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,74,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-5].minor.yy17 = yylhsminor.yy17; +#line 3390 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,88,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-5].minor.yy45 = yylhsminor.yy45; break; - case 122: /* let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var RPAREN */ -#line 814 "src/parser_proc.y" + case 154: /* let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var RPAREN */ +#line 959 "src/parser_proc.y" { - yylhsminor.yy72 = psi_let_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy185); - yylhsminor.yy72->token = yymsp[-3].minor.yy0; + yylhsminor.yy67 = psi_let_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy370); + yylhsminor.yy67->token = yymsp[-3].minor.yy0; } -#line 3026 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-3].minor.yy72 = yylhsminor.yy72; +#line 3402 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-3].minor.yy67 = yylhsminor.yy67; break; - case 123: /* let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var COMMA let_exps RPAREN */ -#line 818 "src/parser_proc.y" + case 155: /* let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var COMMA let_exps RPAREN */ +#line 963 "src/parser_proc.y" { - yylhsminor.yy72 = psi_let_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy185); - yylhsminor.yy72->token = yymsp[-5].minor.yy0; - yylhsminor.yy72->inner = yymsp[-1].minor.yy303; + yylhsminor.yy67 = psi_let_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy370); + yylhsminor.yy67->token = yymsp[-5].minor.yy0; + yylhsminor.yy67->inner = yymsp[-1].minor.yy179; } -#line 3038 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,74,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-5].minor.yy72 = yylhsminor.yy72; +#line 3414 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,88,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-5].minor.yy67 = yylhsminor.yy67; break; - case 124: /* let_exps ::= let_exp */ -#line 823 "src/parser_proc.y" + case 156: /* let_exps ::= let_exp */ +#line 968 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_let_exp_free), - &yymsp[0].minor.yy144); + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_let_exp_free), + &yymsp[0].minor.yy200); } -#line 3050 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 3426 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 125: /* let_exps ::= let_exps COMMA let_exp */ -#line 827 "src/parser_proc.y" + case 157: /* let_exps ::= let_exps COMMA let_exp */ +#line 972 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy144); + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy200); } -#line 3058 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy303 = yylhsminor.yy303; +#line 3434 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; break; - case 126: /* callback_arg_list ::= */ -#line 830 "src/parser_proc.y" + case 158: /* callback_arg_list ::= */ +#line 975 "src/parser_proc.y" { - yymsp[1].minor.yy287 = NULL; + yymsp[1].minor.yy243 = NULL; } -#line 3067 "src/parser_proc.c" +#line 3443 "src/parser_proc.c" break; - case 127: /* callback_arg_list ::= callback_args */ -#line 833 "src/parser_proc.y" + case 159: /* callback_arg_list ::= callback_args */ +#line 978 "src/parser_proc.y" { - yylhsminor.yy287 = yymsp[0].minor.yy287; + yylhsminor.yy243 = yymsp[0].minor.yy243; } -#line 3074 "src/parser_proc.c" - yymsp[0].minor.yy287 = yylhsminor.yy287; +#line 3450 "src/parser_proc.c" + yymsp[0].minor.yy243 = yylhsminor.yy243; break; - case 128: /* callback_args ::= set_exp */ -#line 836 "src/parser_proc.y" + case 160: /* callback_args ::= set_exp */ +#line 981 "src/parser_proc.y" { - yylhsminor.yy287 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), - &yymsp[0].minor.yy67); + yylhsminor.yy243 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), + &yymsp[0].minor.yy180); } -#line 3083 "src/parser_proc.c" - yymsp[0].minor.yy287 = yylhsminor.yy287; +#line 3459 "src/parser_proc.c" + yymsp[0].minor.yy243 = yylhsminor.yy243; break; - case 129: /* callback_args ::= callback_args COMMA set_exp */ -#line 840 "src/parser_proc.y" + case 161: /* callback_args ::= callback_args COMMA set_exp */ +#line 985 "src/parser_proc.y" { - yylhsminor.yy287 = psi_plist_add(yymsp[-2].minor.yy287, &yymsp[0].minor.yy67); + yylhsminor.yy243 = psi_plist_add(yymsp[-2].minor.yy243, &yymsp[0].minor.yy180); } -#line 3091 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy287 = yylhsminor.yy287; +#line 3467 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy243 = yylhsminor.yy243; break; - case 132: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var RPAREN */ -#line 849 "src/parser_proc.y" + case 164: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var RPAREN */ +#line 994 "src/parser_proc.y" { - yylhsminor.yy78 = psi_set_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy207); - yylhsminor.yy78->token = yymsp[-3].minor.yy0; + yylhsminor.yy362 = psi_set_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy271); + yylhsminor.yy362->token = yymsp[-3].minor.yy0; } -#line 3101 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-3].minor.yy78 = yylhsminor.yy78; +#line 3477 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-3].minor.yy362 = yylhsminor.yy362; break; - case 133: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA set_exps RPAREN */ -#line 853 "src/parser_proc.y" + case 165: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA set_exps RPAREN */ +#line 998 "src/parser_proc.y" { - yylhsminor.yy78 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy207); - yylhsminor.yy78->token = yymsp[-5].minor.yy0; - yylhsminor.yy78->inner = yymsp[-1].minor.yy303; + yylhsminor.yy362 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy271); + yylhsminor.yy362->token = yymsp[-5].minor.yy0; + yylhsminor.yy362->inner = yymsp[-1].minor.yy179; } -#line 3113 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,74,&yymsp[-2].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-5].minor.yy78 = yylhsminor.yy78; +#line 3489 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,88,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-5].minor.yy362 = yylhsminor.yy362; break; - case 134: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA ELLIPSIS RPAREN */ -#line 858 "src/parser_proc.y" + case 166: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA ELLIPSIS RPAREN */ +#line 1003 "src/parser_proc.y" { - yylhsminor.yy78 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy207); - yylhsminor.yy78->token = yymsp[-5].minor.yy0; - yylhsminor.yy78->recursive = 1; + yylhsminor.yy362 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy271); + yylhsminor.yy362->token = yymsp[-5].minor.yy0; + yylhsminor.yy362->recursive = 1; } -#line 3126 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-4].minor); - yy_destructor(yypParser,74,&yymsp[-2].minor); - yy_destructor(yypParser,84,&yymsp[-1].minor); - yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-5].minor.yy78 = yylhsminor.yy78; +#line 3502 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-4].minor); + yy_destructor(yypParser,88,&yymsp[-2].minor); + yy_destructor(yypParser,101,&yymsp[-1].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-5].minor.yy362 = yylhsminor.yy362; break; - case 135: /* set_exp ::= set_func */ -#line 863 "src/parser_proc.y" + case 167: /* set_exp ::= set_func */ +#line 1008 "src/parser_proc.y" { - yylhsminor.yy67 = psi_set_exp_init(PSI_SET_FUNC, yymsp[0].minor.yy78); + yylhsminor.yy180 = psi_set_exp_init(PSI_SET_FUNC, yymsp[0].minor.yy362); } -#line 3138 "src/parser_proc.c" - yymsp[0].minor.yy67 = yylhsminor.yy67; +#line 3514 "src/parser_proc.c" + yymsp[0].minor.yy180 = yylhsminor.yy180; break; - case 136: /* set_exp ::= num_exp */ -#line 866 "src/parser_proc.y" + case 168: /* set_exp ::= num_exp */ +#line 1011 "src/parser_proc.y" { - yylhsminor.yy67 = psi_set_exp_init(PSI_SET_NUMEXP, yymsp[0].minor.yy39); + yylhsminor.yy180 = psi_set_exp_init(PSI_SET_NUMEXP, yymsp[0].minor.yy207); } -#line 3146 "src/parser_proc.c" - yymsp[0].minor.yy67 = yylhsminor.yy67; +#line 3522 "src/parser_proc.c" + yymsp[0].minor.yy180 = yylhsminor.yy180; break; - case 137: /* set_exps ::= set_exp */ -#line 869 "src/parser_proc.y" + case 169: /* set_exps ::= set_exp */ +#line 1014 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), - &yymsp[0].minor.yy67); + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), + &yymsp[0].minor.yy180); } -#line 3155 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 3531 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 138: /* set_exps ::= set_exps COMMA set_exp */ -#line 873 "src/parser_proc.y" + case 170: /* set_exps ::= set_exps COMMA set_exp */ +#line 1018 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy67); + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy180); } -#line 3163 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy303 = yylhsminor.yy303; +#line 3539 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; break; - case 139: /* set_exp ::= impl_var EQUALS set_exp */ -#line 876 "src/parser_proc.y" + case 171: /* set_exp ::= impl_var EQUALS set_exp */ +#line 1021 "src/parser_proc.y" +{ + yylhsminor.yy180 = yymsp[0].minor.yy180; + yylhsminor.yy180->var = yymsp[-2].minor.yy370; +} +#line 3549 "src/parser_proc.c" + yy_destructor(yypParser,98,&yymsp[-1].minor); + yymsp[-2].minor.yy180 = yylhsminor.yy180; + break; + case 172: /* set_stmt ::= SET set_exp EOS */ +#line 1025 "src/parser_proc.y" { - yylhsminor.yy67 = yymsp[0].minor.yy67; - yylhsminor.yy67->var = yymsp[-2].minor.yy185; + yylhsminor.yy358 = psi_set_stmt_init(yymsp[-1].minor.yy180); + yylhsminor.yy358->token = yymsp[-2].minor.yy0; } -#line 3173 "src/parser_proc.c" - yy_destructor(yypParser,81,&yymsp[-1].minor); - yymsp[-2].minor.yy67 = yylhsminor.yy67; +#line 3559 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-2].minor.yy358 = yylhsminor.yy358; break; - case 140: /* set_stmt ::= SET set_exp EOS */ -#line 880 "src/parser_proc.y" + case 173: /* return_stmt ::= RETURN set_func EOS */ +#line 1029 "src/parser_proc.y" { - yylhsminor.yy226 = psi_set_stmt_init(yymsp[-1].minor.yy67); - yylhsminor.yy226->token = yymsp[-2].minor.yy0; + yylhsminor.yy342 = psi_return_stmt_init(psi_set_exp_init(PSI_SET_FUNC, yymsp[-1].minor.yy362)); + yylhsminor.yy342->token = yymsp[-2].minor.yy0; } -#line 3183 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-2].minor.yy226 = yylhsminor.yy226; +#line 3569 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-2].minor.yy342 = yylhsminor.yy342; break; - case 141: /* return_stmt ::= RETURN set_func EOS */ -#line 884 "src/parser_proc.y" + case 174: /* free_stmt ::= FREE free_exps EOS */ +#line 1033 "src/parser_proc.y" { - yylhsminor.yy130 = psi_return_stmt_init(psi_set_exp_init(PSI_SET_FUNC, yymsp[-1].minor.yy78)); - yylhsminor.yy130->token = yymsp[-2].minor.yy0; + yylhsminor.yy220 = psi_free_stmt_init(yymsp[-1].minor.yy179); + yylhsminor.yy220->token = yymsp[-2].minor.yy0; } -#line 3193 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-2].minor.yy130 = yylhsminor.yy130; +#line 3579 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-2].minor.yy220 = yylhsminor.yy220; break; - case 142: /* free_stmt ::= FREE free_exps EOS */ -#line 888 "src/parser_proc.y" + case 175: /* free_exps ::= free_exp */ +#line 1037 "src/parser_proc.y" { - yylhsminor.yy76 = psi_free_stmt_init(yymsp[-1].minor.yy303); - yylhsminor.yy76->token = yymsp[-2].minor.yy0; + yylhsminor.yy179 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_free_exp_free), + &yymsp[0].minor.yy146); } -#line 3203 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[0].minor); - yymsp[-2].minor.yy76 = yylhsminor.yy76; +#line 3589 "src/parser_proc.c" + yymsp[0].minor.yy179 = yylhsminor.yy179; break; - case 143: /* free_exps ::= free_exp */ -#line 892 "src/parser_proc.y" + case 176: /* free_exps ::= free_exps COMMA free_exp */ +#line 1041 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_free_exp_free), - &yymsp[0].minor.yy197); + yylhsminor.yy179 = psi_plist_add(yymsp[-2].minor.yy179, &yymsp[0].minor.yy146); } -#line 3213 "src/parser_proc.c" - yymsp[0].minor.yy303 = yylhsminor.yy303; +#line 3597 "src/parser_proc.c" + yy_destructor(yypParser,88,&yymsp[-1].minor); + yymsp[-2].minor.yy179 = yylhsminor.yy179; break; - case 144: /* free_exps ::= free_exps COMMA free_exp */ -#line 896 "src/parser_proc.y" + case 177: /* free_exp ::= NAME LPAREN decl_vars RPAREN */ +#line 1044 "src/parser_proc.y" { - yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy197); + yylhsminor.yy146 = psi_free_exp_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy179); + yylhsminor.yy146->token = yymsp[-3].minor.yy0; } -#line 3221 "src/parser_proc.c" - yy_destructor(yypParser,74,&yymsp[-1].minor); - yymsp[-2].minor.yy303 = yylhsminor.yy303; +#line 3607 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[-2].minor); + yy_destructor(yypParser,87,&yymsp[0].minor); + yymsp[-3].minor.yy146 = yylhsminor.yy146; break; - case 145: /* free_exp ::= NAME LPAREN decl_vars RPAREN */ -#line 899 "src/parser_proc.y" + case 178: /* assert_stmt ::= PRE_ASSERT|POST_ASSERT num_exp EOS */ +#line 1048 "src/parser_proc.y" { - yylhsminor.yy197 = psi_free_exp_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); - yylhsminor.yy197->token = yymsp[-3].minor.yy0; + yylhsminor.yy201 = psi_assert_stmt_init(yymsp[-2].minor.yy0->type, yymsp[-1].minor.yy207); + yylhsminor.yy201->token = yymsp[-2].minor.yy0; } -#line 3231 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-2].minor); +#line 3618 "src/parser_proc.c" yy_destructor(yypParser,75,&yymsp[0].minor); - yymsp[-3].minor.yy197 = yylhsminor.yy197; + yymsp[-2].minor.yy201 = yylhsminor.yy201; break; - case 146: /* reference ::= */ -#line 903 "src/parser_proc.y" + case 179: /* reference ::= */ +#line 1052 "src/parser_proc.y" { - yymsp[1].minor.yy273 = false; + yymsp[1].minor.yy89 = false; } -#line 3241 "src/parser_proc.c" +#line 3627 "src/parser_proc.c" break; - case 147: /* reference ::= AMPERSAND */ + case 180: /* reference ::= AMPERSAND */ { yy_destructor(yypParser,23,&yymsp[0].minor); -#line 906 "src/parser_proc.y" +#line 1055 "src/parser_proc.y" { - yymsp[0].minor.yy273 = true; + yymsp[0].minor.yy89 = true; } -#line 3249 "src/parser_proc.c" +#line 3635 "src/parser_proc.c" } break; - case 148: /* indirection ::= */ -#line 909 "src/parser_proc.y" + case 181: /* indirection ::= */ +#line 1058 "src/parser_proc.y" { - yymsp[1].minor.yy190 = 0; + yymsp[1].minor.yy382 = 0; } -#line 3257 "src/parser_proc.c" +#line 3643 "src/parser_proc.c" break; - case 149: /* indirection ::= pointers */ -#line 912 "src/parser_proc.y" + case 182: /* indirection ::= pointers */ +#line 1061 "src/parser_proc.y" { - yylhsminor.yy190 = yymsp[0].minor.yy190; + yylhsminor.yy382 = yymsp[0].minor.yy382; } -#line 3264 "src/parser_proc.c" - yymsp[0].minor.yy190 = yylhsminor.yy190; +#line 3650 "src/parser_proc.c" + yymsp[0].minor.yy382 = yylhsminor.yy382; break; - case 150: /* pointers ::= ASTERISK */ + case 183: /* pointers ::= ASTERISK */ { yy_destructor(yypParser,28,&yymsp[0].minor); -#line 915 "src/parser_proc.y" +#line 1064 "src/parser_proc.y" { - yymsp[0].minor.yy190 = 1; + yymsp[0].minor.yy382 = 1; } -#line 3273 "src/parser_proc.c" +#line 3659 "src/parser_proc.c" } break; - case 151: /* pointers ::= pointers ASTERISK */ -#line 918 "src/parser_proc.y" + case 184: /* pointers ::= pointers ASTERISK */ +#line 1067 "src/parser_proc.y" { - yylhsminor.yy190 = yymsp[-1].minor.yy190+1; + yylhsminor.yy382 = yymsp[-1].minor.yy382+1; } -#line 3281 "src/parser_proc.c" +#line 3667 "src/parser_proc.c" yy_destructor(yypParser,28,&yymsp[0].minor); - yymsp[-1].minor.yy190 = yylhsminor.yy190; + yymsp[-1].minor.yy382 = yylhsminor.yy382; break; - case 152: /* file ::= blocks */ -{ yy_destructor(yypParser,154,&yymsp[0].minor); -#line 172 "src/parser_proc.y" + case 185: /* file ::= blocks */ +{ yy_destructor(yypParser,180,&yymsp[0].minor); +#line 193 "src/parser_proc.y" { } -#line 3290 "src/parser_proc.c" +#line 3676 "src/parser_proc.c" } break; - case 153: /* blocks ::= block */ -{ yy_destructor(yypParser,155,&yymsp[0].minor); -#line 173 "src/parser_proc.y" + case 186: /* blocks ::= block */ +{ yy_destructor(yypParser,181,&yymsp[0].minor); +#line 194 "src/parser_proc.y" { } -#line 3298 "src/parser_proc.c" +#line 3684 "src/parser_proc.c" } break; - case 154: /* blocks ::= blocks block */ -{ yy_destructor(yypParser,154,&yymsp[-1].minor); -#line 174 "src/parser_proc.y" + case 187: /* blocks ::= blocks block */ +{ yy_destructor(yypParser,180,&yymsp[-1].minor); +#line 195 "src/parser_proc.y" { } -#line 3306 "src/parser_proc.c" - yy_destructor(yypParser,155,&yymsp[0].minor); +#line 3692 "src/parser_proc.c" + yy_destructor(yypParser,181,&yymsp[0].minor); } break; - case 155: /* block ::= EOF */ -{ yy_destructor(yypParser,70,&yymsp[0].minor); -#line 175 "src/parser_proc.y" + case 188: /* block ::= EOS */ +{ yy_destructor(yypParser,75,&yymsp[0].minor); +#line 196 "src/parser_proc.y" { } -#line 3315 "src/parser_proc.c" +#line 3701 "src/parser_proc.c" } break; - case 156: /* block ::= EOS */ -{ yy_destructor(yypParser,71,&yymsp[0].minor); -#line 176 "src/parser_proc.y" + case 189: /* block ::= EOL */ +{ yy_destructor(yypParser,76,&yymsp[0].minor); +#line 197 "src/parser_proc.y" +{ +} +#line 3709 "src/parser_proc.c" +} + break; + case 190: /* block ::= COMMENT */ +{ yy_destructor(yypParser,77,&yymsp[0].minor); +#line 198 "src/parser_proc.y" { } -#line 3323 "src/parser_proc.c" +#line 3717 "src/parser_proc.c" } break; default: @@ -3380,8 +3774,8 @@ static void yy_syntax_error( #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ #line 40 "src/parser_proc.y" - ++P->errors; if (TOKEN && TOKEN->type != PSI_T_EOF) { psi_error(PSI_WARNING, TOKEN->file, TOKEN->line, "PSI syntax error: Unexpected token '%s' at pos %u", TOKEN->text, TOKEN->col); } else { psi_error(PSI_WARNING, P->file.fn, P->line, "PSI syntax error: Unexpected end of input"); } -#line 3385 "src/parser_proc.c" + ++P->errors; if (TOKEN) { psi_error(PSI_WARNING, TOKEN->file, TOKEN->line, "PSI syntax error: Unexpected token '%s' at pos %u", TOKEN->text, TOKEN->col); } else { psi_error(PSI_WARNING, P->file.fn, P->line, "PSI syntax error: Unexpected end of input"); } +#line 3779 "src/parser_proc.c" /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ }