|
|
| version 1.100, 2004/04/06 14:15:22 | version 1.103.8.10, 2005/12/19 14:43:22 |
|---|---|
| Line 33 | Line 33 |
| #define FEXISTS 283 | #define FEXISTS 283 |
| #define DEXISTS 284 | #define DEXISTS 284 |
| #define IS 285 | #define IS 285 |
| #define NUNARY 286 | #define LITERAL_TRUE 286 |
| #define LITERAL_FALSE 287 | |
| #define NUNARY 288 | |
| #line 1 "compile.y" | #line 1 "compile.y" |
| /** @file | /** @file |
| Parser: compiler(lexical parser and grammar). | Parser: compiler(lexical parser and grammar). |
| Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf) | Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf) |
| $Id$ | $Id$ |
| Line 86 static int real_yyerror(Parse_control* p | Line 88 static int real_yyerror(Parse_control* p |
| static void yyprint(FILE* file, int type, YYSTYPE value); | static void yyprint(FILE* file, int type, YYSTYPE value); |
| static int yylex(YYSTYPE* lvalp, void* pc); | static int yylex(YYSTYPE* lvalp, void* pc); |
| static const VBool vfalse(false); | |
| static const VBool vtrue(true); | |
| static const VVoid vvoid; | |
| // local convinient inplace typecast & var | // local convinient inplace typecast & var |
| #undef PC | #undef PC |
| #define PC (*(Parse_control *)pc) | #define PC (*(Parse_control *)pc) |
| Line 105 static int yylex(YYSTYPE* lvalp, void* p | Line 111 static int yylex(YYSTYPE* lvalp, void* p |
| #define YYFINAL 259 | #define YYFINAL 263 |
| #define YYFLAG -32768 | #define YYFLAG -32768 |
| #define YYNTBASE 60 | #define YYNTBASE 62 |
| #define YYTRANSLATE(x) ((unsigned)(x) <= 286 ? yytranslate[x] : 146) | #define YYTRANSLATE(x) ((unsigned)(x) <= 288 ? yytranslate[x] : 150) |
| static const char yytranslate[] = { 0, | static const char yytranslate[] = { 0, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 46, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 48, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 44, 58, 2, 50, 41, 35, 59, 54, | 2, 2, 46, 60, 2, 52, 43, 37, 61, 56, |
| 55, 38, 36, 2, 37, 53, 39, 2, 2, 2, | 57, 40, 38, 2, 39, 55, 41, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 57, 49, 32, | 2, 2, 2, 2, 2, 2, 2, 59, 51, 34, |
| 2, 33, 2, 45, 2, 2, 2, 2, 2, 2, | 2, 35, 2, 47, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 47, 40, 48, 56, 2, 2, 2, 2, 2, 2, | 49, 42, 50, 58, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 51, 34, 52, 43, 2, 2, 2, 2, | 2, 2, 53, 36, 54, 45, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| Line 140 static const char yytranslate[] = { | Line 146 static const char yytranslate[] = { |
| 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, | 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, |
| 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, |
| 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, | 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, |
| 27, 28, 29, 30, 31, 42 | 27, 28, 29, 30, 31, 32, 33, 44 |
| }; | }; |
| #if YYDEBUG != 0 | #if YYDEBUG != 0 |
| Line 154 static const short yyprhs[] = { 0, | Line 160 static const short yyprhs[] = { 0, |
| 151, 155, 157, 159, 161, 163, 165, 167, 170, 172, | 151, 155, 157, 159, 161, 163, 165, 167, 170, 172, |
| 173, 174, 181, 183, 185, 188, 190, 192, 194, 195, | 173, 174, 181, 183, 185, 188, 190, 192, 194, 195, |
| 196, 202, 206, 210, 212, 216, 218, 222, 224, 228, | 196, 202, 206, 210, 212, 216, 218, 222, 224, 228, |
| 230, 232, 234, 236, 238, 240, 242, 244, 247, 249, | 230, 232, 234, 236, 238, 240, 242, 245, 247, 250, |
| 252, 255, 257, 259, 262, 264, 266, 268, 270, 273, | 253, 255, 257, 260, 262, 264, 266, 268, 271, 274, |
| 276, 277, 278, 284, 286, 288, 291, 294, 296, 298, | 275, 276, 282, 284, 286, 289, 292, 294, 296, 299, |
| 301, 304, 306, 308, 310, 312, 316, 320, 324, 327, | 302, 304, 306, 308, 310, 312, 314, 318, 322, 326, |
| 330, 333, 336, 339, 342, 345, 348, 352, 356, 360, | 329, 332, 335, 338, 341, 344, 347, 350, 354, 358, |
| 364, 368, 372, 376, 380, 384, 388, 392, 396, 400, | 362, 366, 370, 374, 378, 382, 386, 390, 394, 398, |
| 404, 408, 412, 416, 420, 424, 428, 432, 436, 440, | 402, 406, 410, 414, 418, 422, 426, 430, 434, 438, |
| 444, 448, 452, 456, 458, 460, 461 | 442, 446, 450, 454, 458, 460, 462, 464, 465, 467, |
| 469 | |
| }; | }; |
| static const short yyrhs[] = { 62, | static const short yyrhs[] = { 64, |
| 0, 61, 0, 63, 0, 61, 63, 0, 76, 0, | 0, 63, 0, 65, 0, 63, 65, 0, 78, 0, |
| 64, 0, 69, 0, 45, 4, 46, 65, 0, 145, | 66, 0, 71, 0, 47, 4, 48, 67, 0, 149, |
| 0, 66, 0, 67, 0, 66, 67, 0, 68, 46, | 0, 68, 0, 69, 0, 68, 69, 0, 70, 48, |
| 0, 145, 0, 4, 0, 0, 45, 4, 72, 71, | 0, 149, 0, 4, 0, 0, 47, 4, 74, 73, |
| 75, 46, 70, 76, 0, 145, 0, 72, 0, 47, | 77, 48, 72, 78, 0, 149, 0, 74, 0, 49, |
| 73, 48, 0, 145, 0, 74, 0, 4, 0, 74, | 75, 50, 0, 149, 0, 76, 0, 4, 0, 76, |
| 49, 4, 0, 145, 0, 4, 0, 145, 0, 77, | 51, 4, 0, 149, 0, 4, 0, 149, 0, 79, |
| 0, 78, 0, 77, 78, 0, 143, 0, 79, 0, | 0, 80, 0, 79, 80, 0, 145, 0, 81, 0, |
| 80, 0, 88, 0, 103, 0, 81, 0, 50, 82, | 82, 0, 90, 0, 105, 0, 83, 0, 52, 84, |
| 0, 84, 3, 0, 83, 0, 51, 84, 52, 0, | 0, 86, 3, 0, 85, 0, 53, 86, 54, 0, |
| 85, 0, 86, 0, 87, 0, 137, 87, 0, 127, | 87, 0, 88, 0, 89, 0, 138, 89, 0, 128, |
| 0, 124, 127, 0, 50, 89, 93, 0, 90, 0, | 0, 125, 128, 0, 52, 91, 95, 0, 92, 0, |
| 91, 0, 92, 0, 123, 0, 53, 123, 0, 137, | 93, 0, 94, 0, 124, 0, 55, 124, 0, 138, |
| 123, 0, 94, 0, 97, 0, 98, 0, 0, 0, | 124, 0, 96, 0, 99, 0, 100, 0, 0, 0, |
| 47, 95, 99, 96, 48, 0, 54, 140, 55, 0, | 49, 97, 101, 98, 50, 0, 56, 141, 57, 0, |
| 51, 76, 52, 0, 144, 0, 4, 0, 100, 0, | 53, 78, 54, 0, 146, 0, 4, 0, 102, 0, |
| 101, 0, 102, 0, 79, 0, 78, 77, 0, 104, | 103, 0, 104, 0, 81, 0, 80, 79, 0, 106, |
| 0, 0, 0, 56, 105, 107, 106, 108, 3, 0, | 0, 0, 0, 58, 107, 109, 108, 110, 3, 0, |
| 84, 0, 109, 0, 108, 109, 0, 110, 0, 113, | 86, 0, 111, 0, 110, 111, 0, 112, 0, 115, |
| 0, 114, 0, 0, 0, 47, 111, 115, 112, 48, | 0, 116, 0, 0, 0, 49, 113, 117, 114, 50, |
| 0, 54, 116, 55, 0, 51, 117, 52, 0, 118, | 0, 56, 118, 57, 0, 53, 119, 54, 0, 120, |
| 0, 115, 49, 118, 0, 119, 0, 116, 49, 119, | 0, 117, 51, 120, 0, 121, 0, 118, 51, 121, |
| 0, 120, 0, 117, 49, 120, 0, 121, 0, 122, | 0, 122, 0, 119, 51, 122, 0, 123, 0, 141, |
| 0, 76, 0, 144, 0, 4, 0, 100, 0, 140, | 0, 78, 0, 146, 0, 4, 0, 102, 0, 129, |
| 0, 128, 0, 124, 128, 0, 125, 0, 124, 125, | 0, 125, 129, 0, 126, 0, 125, 126, 0, 127, |
| 0, 126, 53, 0, 128, 0, 128, 0, 4, 5, | 55, 0, 129, 0, 129, 0, 4, 5, 0, 4, |
| 0, 4, 0, 129, 0, 130, 0, 131, 0, 50, | 0, 130, 0, 131, 0, 132, 0, 52, 135, 0, |
| 134, 0, 4, 135, 0, 0, 0, 47, 132, 77, | 4, 136, 0, 0, 0, 49, 133, 79, 134, 50, |
| 133, 48, 0, 4, 0, 136, 0, 135, 136, 0, | 0, 4, 0, 137, 0, 136, 137, 0, 52, 135, |
| 50, 134, 0, 138, 0, 139, 0, 4, 57, 0, | 0, 139, 0, 140, 0, 4, 59, 0, 139, 59, |
| 138, 57, 0, 141, 0, 4, 0, 81, 0, 104, | 0, 142, 0, 143, 0, 147, 0, 148, 0, 83, |
| 0, 58, 142, 58, 0, 59, 142, 59, 0, 54, | 0, 106, 0, 60, 144, 60, 0, 61, 144, 61, |
| 141, 55, 0, 37, 141, 0, 36, 141, 0, 43, | 0, 56, 142, 57, 0, 39, 142, 0, 38, 142, |
| 141, 0, 44, 141, 0, 27, 141, 0, 28, 141, | 0, 45, 142, 0, 46, 142, 0, 27, 142, 0, |
| 0, 29, 141, 0, 30, 141, 0, 141, 37, 141, | 28, 142, 0, 29, 142, 0, 30, 142, 0, 142, |
| 0, 141, 36, 141, 0, 141, 38, 141, 0, 141, | 39, 142, 0, 142, 38, 142, 0, 142, 40, 142, |
| 39, 141, 0, 141, 41, 141, 0, 141, 40, 141, | 0, 142, 41, 142, 0, 142, 43, 142, 0, 142, |
| 0, 141, 19, 141, 0, 141, 20, 141, 0, 141, | 42, 142, 0, 142, 19, 142, 0, 142, 20, 142, |
| 35, 141, 0, 141, 34, 141, 0, 141, 14, 141, | 0, 142, 37, 142, 0, 142, 36, 142, 0, 142, |
| 0, 141, 11, 141, 0, 141, 12, 141, 0, 141, | 14, 142, 0, 142, 11, 142, 0, 142, 12, 142, |
| 13, 141, 0, 141, 32, 141, 0, 141, 33, 141, | 0, 142, 13, 142, 0, 142, 34, 142, 0, 142, |
| 0, 141, 15, 141, 0, 141, 16, 141, 0, 141, | 35, 142, 0, 142, 15, 142, 0, 142, 16, 142, |
| 17, 141, 0, 141, 18, 141, 0, 141, 21, 141, | 0, 142, 17, 142, 0, 142, 18, 142, 0, 142, |
| 0, 141, 22, 141, 0, 141, 23, 141, 0, 141, | 21, 142, 0, 142, 22, 142, 0, 142, 23, 142, |
| 24, 141, 0, 141, 25, 141, 0, 141, 26, 141, | 0, 142, 24, 142, 0, 142, 25, 142, 0, 142, |
| 0, 141, 31, 141, 0, 76, 0, 4, 0, 0, | 26, 142, 0, 142, 31, 142, 0, 4, 0, 78, |
| 0 | 0, 4, 0, 0, 32, 0, 33, 0, 0 |
| }; | }; |
| #endif | #endif |
| #if YYDEBUG != 0 | #if YYDEBUG != 0 |
| static const short yyrline[] = { 0, | static const short yyrline[] = { 0, |
| 120, 128, 130, 130, 131, 133, 133, 135, 207, 207, | 127, 135, 137, 137, 138, 140, 140, 142, 214, 214, |
| 208, 208, 209, 210, 210, 212, 247, 252, 252, 253, | 215, 215, 216, 217, 217, 219, 254, 259, 259, 260, |
| 254, 254, 255, 255, 257, 257, 261, 261, 263, 263, | 261, 261, 262, 262, 264, 264, 268, 268, 270, 270, |
| 264, 264, 265, 265, 265, 269, 276, 277, 277, 278, | 271, 271, 272, 272, 272, 276, 283, 284, 284, 285, |
| 279, 281, 282, 304, 305, 305, 309, 313, 315, 316, | 286, 288, 289, 311, 312, 312, 316, 320, 322, 323, |
| 317, 334, 339, 341, 343, 344, 346, 349, 351, 357, | 324, 341, 346, 348, 350, 351, 353, 356, 358, 364, |
| 365, 371, 373, 374, 376, 382, 383, 383, 387, 393, | 372, 378, 380, 381, 383, 389, 390, 390, 394, 400, |
| 396, 399, 412, 414, 414, 415, 417, 418, 420, 423, | 403, 406, 419, 421, 421, 422, 424, 425, 427, 430, |
| 425, 426, 427, 428, 430, 432, 434, 436, 438, 440, | 432, 433, 434, 435, 437, 439, 441, 443, 445, 447, |
| 444, 448, 452, 454, 455, 457, 466, 466, 468, 468, | 451, 466, 470, 472, 473, 478, 478, 480, 480, 481, |
| 469, 470, 478, 483, 485, 487, 488, 489, 491, 495, | 482, 490, 495, 497, 499, 500, 501, 503, 507, 516, |
| 504, 507, 509, 515, 520, 520, 521, 526, 528, 530, | 519, 521, 527, 532, 532, 533, 538, 540, 542, 554, |
| 542, 554, 559, 561, 562, 563, 564, 565, 567, 568, | 566, 567, 569, 570, 571, 572, 573, 574, 575, 577, |
| 569, 570, 571, 572, 573, 574, 576, 577, 578, 579, | 578, 579, 580, 581, 582, 583, 584, 586, 587, 588, |
| 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, | 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, |
| 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, | 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, |
| 600, 601, 602, 605, 614, 619, 620 | 609, 610, 611, 612, 615, 620, 629, 634, 635, 636, |
| 638 | |
| }; | }; |
| #endif | #endif |
| Line 246 static const char * const yytname[] = { | Line 254 static const char * const yytname[] = { |
| "BAD_METHOD_PARAMETER_NAME_CHARACTER","BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE", | "BAD_METHOD_PARAMETER_NAME_CHARACTER","BAD_NONWHITESPACE_CHARACTER_IN_EXPLICIT_RESULT_MODE", |
| "\"&&\"","\"||\"","\"!||\"","\"!|\"","\"<=\"","\">=\"","\"==\"","\"!=\"","\"<<\"", | "\"&&\"","\"||\"","\"!||\"","\"!|\"","\"<=\"","\">=\"","\"==\"","\"!=\"","\"<<\"", |
| "\">>\"","\"lt\"","\"gt\"","\"le\"","\"ge\"","\"eq\"","\"ne\"","\"def\"","\"in\"", | "\">>\"","\"lt\"","\"gt\"","\"le\"","\"ge\"","\"eq\"","\"ne\"","\"def\"","\"in\"", |
| "\"-f\"","\"-d\"","\"is\"","'<'","'>'","'|'","'&'","'+'","'-'","'*'","'/'","'\\\\'", | "\"-f\"","\"-d\"","\"is\"","\"true\"","\"false\"","'<'","'>'","'|'","'&'","'+'", |
| "'%'","NUNARY","'~'","'!'","'@'","'\\n'","'['","']'","';'","'$'","'{'","'}'", | "'-'","'*'","'/'","'\\\\'","'%'","NUNARY","'~'","'!'","'@'","'\\n'","'['","']'", |
| "'.'","'('","')'","'^'","':'","'\\\"'","'\\''","all","methods","one_big_piece", | "';'","'$'","'{'","'}'","'.'","'('","')'","'^'","':'","'\\\"'","'\\''","all", |
| "method","control_method","maybe_control_strings","control_strings","control_string", | "methods","one_big_piece","method","control_method","maybe_control_strings", |
| "maybe_string","code_method","@1","maybe_bracketed_strings","bracketed_maybe_strings", | "control_strings","control_string","maybe_string","code_method","@1","maybe_bracketed_strings", |
| "maybe_strings","strings","maybe_comment","maybe_codes","codes","code","action", | "bracketed_maybe_strings","maybe_strings","strings","maybe_comment","maybe_codes", |
| "get","get_value","get_name_value","name_in_curly_rdive","name_without_curly_rdive", | "codes","code","action","get","get_value","get_name_value","name_in_curly_rdive", |
| "name_without_curly_rdive_read","name_without_curly_rdive_class","name_without_curly_rdive_code", | "name_without_curly_rdive","name_without_curly_rdive_read","name_without_curly_rdive_class", |
| "put","name_expr_wdive","name_expr_wdive_root","name_expr_wdive_write","name_expr_wdive_class", | "name_without_curly_rdive_code","put","name_expr_wdive","name_expr_wdive_root", |
| "construct","construct_square","@2","@3","construct_round","construct_curly", | "name_expr_wdive_write","name_expr_wdive_class","construct","construct_square", |
| "any_constructor_code_value","constructor_code_value","constructor_code","codes__excluding_sole_str_literal", | "@2","@3","construct_round","construct_curly","any_constructor_code_value","constructor_code_value", |
| "call","call_value","@4","@5","call_name","store_params","store_param","store_square_param", | "constructor_code","codes__excluding_sole_str_literal","call","call_value","@4", |
| "@6","@7","store_round_param","store_curly_param","store_code_param_parts","store_expr_param_parts", | "@5","call_name","store_params","store_param","store_square_param","@6","@7", |
| "store_round_param","store_curly_param","store_code_param_parts","store_expr_param_parts", | |
| "store_curly_param_parts","store_code_param_part","store_expr_param_part","store_curly_param_part", | "store_curly_param_parts","store_code_param_part","store_expr_param_part","store_curly_param_part", |
| "code_param_value","write_expr_value","name_expr_dive_code","name_path","name_step", | "code_param_value","name_expr_dive_code","name_path","name_step","name_advance1", |
| "name_advance1","name_advance2","name_expr_value","name_expr_subvar_value","name_expr_with_subvar_value", | "name_advance2","name_expr_value","name_expr_subvar_value","name_expr_with_subvar_value", |
| "name_square_code_value","@8","@9","subvar_ref_name_rdive","subvar_get_writes", | "name_square_code_value","@8","@9","subvar_ref_name_rdive","subvar_get_writes", |
| "subvar__get_write","class_prefix","class_static_prefix","class_constructor_prefix", | "subvar__get_write","class_prefix","class_static_prefix","class_constructor_prefix", |
| "expr_value","expr","string_inside_quotes_value","write_string","void_value", | "expr_value","expr","double_or_STRING","string_inside_quotes_value","write_string", |
| "empty", NULL | "void_value","true_value","false_value","empty", NULL |
| }; | }; |
| #endif | #endif |
| static const short yyr1[] = { 0, | static const short yyr1[] = { 0, |
| 60, 60, 61, 61, 62, 63, 63, 64, 65, 65, | 62, 62, 63, 63, 64, 65, 65, 66, 67, 67, |
| 66, 66, 67, 68, 68, 70, 69, 71, 71, 72, | 68, 68, 69, 70, 70, 72, 71, 73, 73, 74, |
| 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, | 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, |
| 78, 78, 79, 79, 79, 80, 81, 82, 82, 83, | 80, 80, 81, 81, 81, 82, 83, 84, 84, 85, |
| 84, 84, 85, 86, 87, 87, 88, 89, 89, 89, | 86, 86, 87, 88, 89, 89, 90, 91, 91, 91, |
| 90, 91, 92, 93, 93, 93, 95, 96, 94, 97, | 92, 93, 94, 95, 95, 95, 97, 98, 96, 99, |
| 98, 99, 99, 99, 100, 101, 102, 102, 103, 105, | 100, 101, 101, 101, 102, 103, 104, 104, 105, 107, |
| 106, 104, 107, 108, 108, 109, 109, 109, 111, 112, | 108, 106, 109, 110, 110, 111, 111, 111, 113, 114, |
| 110, 113, 114, 115, 115, 116, 116, 117, 117, 118, | 112, 115, 116, 117, 117, 118, 118, 119, 119, 120, |
| 119, 120, 121, 121, 121, 122, 123, 123, 124, 124, | 121, 122, 123, 123, 123, 124, 124, 125, 125, 126, |
| 125, 126, 127, 127, 128, 128, 128, 128, 129, 130, | 127, 128, 128, 129, 129, 129, 129, 130, 131, 133, |
| 132, 133, 131, 134, 135, 135, 136, 137, 137, 138, | 134, 132, 135, 136, 136, 137, 138, 138, 139, 140, |
| 139, 140, 141, 141, 141, 141, 141, 141, 141, 141, | 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, |
| 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, | 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, |
| 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, | 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, |
| 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, | 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, |
| 141, 141, 141, 142, 143, 144, 145 | 142, 142, 142, 142, 143, 144, 145, 146, 147, 148, |
| 149 | |
| }; | }; |
| static const short yyr2[] = { 0, | static const short yyr2[] = { 0, |
| Line 299 static const short yyr2[] = { 0, | Line 309 static const short yyr2[] = { 0, |
| 3, 1, 1, 1, 1, 1, 1, 2, 1, 0, | 3, 1, 1, 1, 1, 1, 1, 2, 1, 0, |
| 0, 6, 1, 1, 2, 1, 1, 1, 0, 0, | 0, 6, 1, 1, 2, 1, 1, 1, 0, 0, |
| 5, 3, 3, 1, 3, 1, 3, 1, 3, 1, | 5, 3, 3, 1, 3, 1, 3, 1, 3, 1, |
| 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, | 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, |
| 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, | 1, 1, 2, 1, 1, 1, 1, 2, 2, 0, |
| 0, 0, 5, 1, 1, 2, 2, 1, 1, 2, | 0, 5, 1, 1, 2, 2, 1, 1, 2, 2, |
| 2, 1, 1, 1, 1, 3, 3, 3, 2, 2, | 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, |
| 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, | 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, | 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, | 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 1, 1, 0, 0 | 3, 3, 3, 3, 1, 1, 1, 0, 1, 1, |
| 0 | |
| }; | }; |
| static const short yydefact[] = { 167, | static const short yydefact[] = { 171, |
| 165, 0, 0, 70, 2, 1, 3, 6, 7, 5, | 167, 0, 0, 70, 2, 1, 3, 6, 7, 5, |
| 28, 29, 32, 33, 36, 34, 35, 69, 31, 27, | 28, 29, 32, 33, 36, 34, 35, 69, 31, 27, |
| 0, 105, 111, 0, 0, 0, 37, 39, 0, 41, | 0, 104, 110, 0, 0, 0, 37, 39, 0, 41, |
| 42, 43, 0, 48, 49, 50, 51, 0, 99, 0, | 42, 43, 0, 48, 49, 50, 51, 0, 98, 0, |
| 45, 97, 106, 107, 108, 0, 118, 119, 0, 4, | 45, 96, 105, 106, 107, 0, 117, 118, 0, 4, |
| 30, 167, 167, 167, 104, 0, 120, 110, 115, 0, | 30, 171, 171, 171, 103, 0, 119, 109, 114, 0, |
| 114, 109, 0, 0, 103, 0, 105, 52, 0, 97, | 113, 108, 0, 0, 102, 0, 104, 52, 0, 96, |
| 38, 57, 167, 0, 47, 54, 55, 56, 105, 100, | 38, 57, 171, 0, 47, 54, 55, 56, 104, 99, |
| 46, 98, 101, 44, 53, 121, 73, 71, 15, 8, | 46, 97, 100, 44, 53, 120, 73, 71, 15, 8, |
| 10, 11, 0, 9, 23, 0, 22, 21, 167, 19, | 10, 11, 0, 9, 23, 0, 22, 21, 171, 19, |
| 18, 117, 116, 112, 40, 98, 166, 0, 123, 0, | 18, 116, 115, 111, 40, 97, 168, 0, 165, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, | 0, 0, 0, 169, 170, 0, 0, 0, 0, 0, |
| 167, 124, 125, 0, 122, 0, 12, 14, 13, 20, | 0, 171, 171, 125, 126, 0, 121, 122, 123, 124, |
| 0, 26, 0, 25, 0, 165, 0, 32, 58, 64, | 0, 12, 14, 13, 20, 0, 26, 0, 25, 0, |
| 65, 66, 62, 61, 133, 134, 135, 136, 130, 129, | 167, 0, 32, 58, 64, 65, 66, 62, 61, 134, |
| 131, 132, 0, 164, 0, 0, 60, 0, 0, 0, | 135, 136, 137, 131, 130, 132, 133, 0, 166, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 79, 167, 0, 0, 74, 76, | 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, |
| 77, 78, 24, 16, 113, 68, 0, 128, 126, 127, | 171, 0, 0, 74, 76, 77, 78, 24, 16, 112, |
| 148, 149, 150, 147, 153, 154, 155, 156, 143, 144, | 68, 0, 129, 127, 128, 149, 150, 151, 148, 154, |
| 157, 158, 159, 160, 161, 162, 163, 151, 152, 146, | 155, 156, 157, 144, 145, 158, 159, 160, 161, 162, |
| 145, 138, 137, 139, 140, 142, 141, 166, 92, 0, | 163, 164, 152, 153, 147, 146, 139, 138, 140, 141, |
| 88, 0, 86, 91, 96, 72, 75, 167, 59, 165, | 143, 142, 168, 92, 0, 88, 0, 86, 91, 72, |
| 95, 80, 84, 90, 93, 167, 83, 0, 82, 17, | 75, 171, 59, 167, 95, 80, 84, 90, 93, 171, |
| 166, 0, 89, 87, 85, 81, 0, 0, 0 | 83, 0, 82, 17, 168, 0, 89, 87, 85, 81, |
| 0, 0, 0 | |
| }; | }; |
| static const short yydefgoto[] = { 257, | static const short yydefgoto[] = { 261, |
| 5, 6, 7, 8, 90, 91, 92, 93, 9, 238, | 5, 6, 7, 8, 90, 91, 92, 93, 9, 242, |
| 99, 54, 96, 97, 133, 154, 11, 12, 13, 14, | 99, 54, 96, 97, 138, 159, 11, 12, 13, 14, |
| 122, 27, 28, 29, 30, 31, 32, 16, 33, 34, | 124, 27, 28, 29, 30, 31, 32, 16, 33, 34, |
| 35, 36, 75, 76, 107, 197, 77, 78, 139, 241, | 35, 36, 75, 76, 107, 202, 77, 78, 144, 245, |
| 141, 142, 17, 123, 49, 126, 88, 188, 189, 190, | 146, 147, 17, 125, 49, 131, 88, 193, 194, 195, |
| 228, 252, 191, 192, 242, 232, 230, 243, 233, 231, | 233, 256, 196, 197, 246, 237, 235, 247, 238, 236, |
| 244, 234, 37, 64, 39, 40, 41, 65, 43, 44, | 248, 37, 64, 39, 40, 41, 65, 43, 44, 45, |
| 45, 60, 135, 62, 58, 59, 66, 47, 48, 235, | 60, 140, 62, 58, 59, 66, 47, 48, 239, 127, |
| 125, 155, 19, 245, 20 | 128, 160, 19, 249, 129, 130, 20 |
| }; | }; |
| static const short yypact[] = { 34, | static const short yypact[] = { 6, |
| -32768, 16, 61,-32768, -19,-32768,-32768,-32768,-32768,-32768, | -32768, 23, 50,-32768, -17,-32768,-32768,-32768,-32768,-32768, |
| 11,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, | 18,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, |
| -14, 9,-32768, 30, 94, 106,-32768,-32768, 44,-32768, | -31, 19,-32768, 43, 42, 44,-32768,-32768, 52,-32768, |
| -32768,-32768, -26,-32768,-32768,-32768,-32768, 111,-32768, -2, | -32768,-32768, -33,-32768,-32768,-32768,-32768, 65,-32768, 22, |
| -32768, 5,-32768,-32768,-32768, 111, -4,-32768, 94,-32768, | -32768, 4,-32768,-32768,-32768, 65, 24,-32768, 42,-32768, |
| -32768, 65, 72, 31,-32768, 30,-32768, 41,-32768, 11, | -32768, 97, 104, 64,-32768, 43,-32768, 78,-32768, 18, |
| -32768,-32768, 28, 111, 40, 111, 41,-32768, 106, 40, | -32768,-32768, 77, 65, 88, 65, 78,-32768, 44, 88, |
| -32768,-32768, 11, 27,-32768,-32768,-32768,-32768, 18,-32768, | -32768,-32768, 18, 5,-32768,-32768,-32768,-32768, 16,-32768, |
| -32768, 5,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, | -32768, 4,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, |
| 6,-32768, 59, 67,-32768, 70, 77,-32768, 115,-32768, | 8,-32768, 85, 86,-32768, 100, 117,-32768, 166,-32768, |
| -32768,-32768,-32768, 11,-32768, 40, 38, 75,-32768, 27, | -32768,-32768,-32768, 18,-32768, 88, 27, 119,-32768, 5, |
| 27, 27, 27, 27, 27, 27, 27, 83, 27, 11, | 5, 5, 5,-32768,-32768, 5, 5, 5, 5, 63, |
| 11,-32768,-32768, 73, 315, 78,-32768,-32768,-32768,-32768, | 5, 18, 18,-32768,-32768, 114, 274,-32768,-32768,-32768, |
| 127,-32768, 89,-32768, 88, 90, 11, -3,-32768,-32768, | 79,-32768,-32768,-32768,-32768, 170,-32768, 137,-32768, 136, |
| -32768,-32768,-32768,-32768, 140, 140, 140, 140,-32768,-32768, | 138, 18, 60,-32768,-32768,-32768,-32768,-32768,-32768, 443, |
| -32768,-32768, 270,-32768, 84, 87,-32768, 27, 27, 27, | 443, 443, 443,-32768,-32768,-32768,-32768, 141,-32768, 127, |
| 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, | 128,-32768, 5, 5, 5, 5, 5, 5, 5, 5, |
| 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, | 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 27, 27, 27, 27,-32768, 11, 27, 45,-32768,-32768, | 5, 5, 5, 5, 5, 5, 5, 5, 5,-32768, |
| -32768,-32768,-32768,-32768,-32768, 11, 95,-32768,-32768,-32768, | 18, 5, 39,-32768,-32768,-32768,-32768,-32768,-32768,-32768, |
| 405, 377, 346, 278, 433, 433, 131, 131, 154, 154, | 18, 140,-32768,-32768,-32768, 370, 340, 307, 428, 400, |
| 433, 433, 433, 433, 131, 131, 140, 433, 433, 164, | 400, 413, 413, 98, 98, 400, 400, 400, 400, 413, |
| 441, 178, 178,-32768,-32768,-32768,-32768, 39,-32768, -25, | 413, 443, 400, 400, 180, 453, 105, 105,-32768,-32768, |
| -32768, -33,-32768,-32768,-32768,-32768,-32768, 11,-32768, 68, | -32768,-32768, 32,-32768, 35,-32768, -32,-32768,-32768,-32768, |
| -32768, 100,-32768,-32768,-32768, 11,-32768, 27,-32768,-32768, | -32768, 18,-32768, 70,-32768, 144,-32768,-32768,-32768, 18, |
| 39, 104,-32768,-32768,-32768,-32768, 155, 157,-32768 | -32768, 5,-32768,-32768, 32, 146,-32768,-32768,-32768,-32768, |
| 197, 202,-32768 | |
| }; | }; |
| static const short yypgoto[] = {-32768, | static const short yypgoto[] = {-32768, |
| -32768,-32768, 158,-32768,-32768,-32768, 82,-32768,-32768,-32768, | -32768,-32768, 199,-32768,-32768,-32768, 118,-32768,-32768,-32768, |
| -32768, 110,-32768,-32768,-32768, 1, -55, -7, -104,-32768, | -32768, 156,-32768,-32768,-32768, 1, -55, -7, -104,-32768, |
| 0,-32768,-32768, -13,-32768,-32768, -27,-32768,-32768,-32768, | 0,-32768,-32768, -10,-32768,-32768, -38,-32768,-32768,-32768, |
| -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 107, | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 108, |
| -32768,-32768,-32768, 2,-32768,-32768,-32768,-32768, -6,-32768, | -32768,-32768,-32768, 2,-32768,-32768,-32768,-32768, 31,-32768, |
| -32768,-32768,-32768,-32768,-32768,-32768,-32768, -66, -51, -24, | -32768,-32768,-32768,-32768,-32768,-32768,-32768, -30, -25, -22, |
| -32768,-32768, -9, 4, -29,-32768, -20, 3,-32768,-32768, | -32768, 72, 123, -24,-32768, -12, 3,-32768,-32768,-32768, |
| -32768,-32768,-32768, 167,-32768, 162, 221,-32768,-32768, 151, | -32768,-32768, 173,-32768, 172, 228,-32768,-32768, 158, 95, |
| 96, 105,-32768, 120, 49 | -32768, 111,-32768, 129,-32768,-32768, 28 |
| }; | }; |
| #define YYLAST 482 | #define YYLAST 496 |
| static const short yytable[] = { 15, | static const short yytable[] = { 15, |
| 10, 18, 138, 51, 104, 42, 38, -103, 80, 89, | 10, 18, 143, 51, 104, 42, -102, 84, 109, 1, |
| 15, 63, 18, 55, 1, 248, 68, 81, 84, 21, | 15, 89, 18, 80, 63, 72, 52, 53, 252, 73, |
| 72, 249, 55, 246, 73, 2, 247, 74, 70, 69, | 55, 1, 74, 55, 253, 81, 21, 84, 70, 2, |
| 109, 52, 53, 61, 80, 87, 85, 1, 84, 80, | 141, 110, 111, 112, 113, 244, 114, 115, 87, 80, |
| 82, 136, 240, 81, -67, -67, 71, 236, 42, 38, | 82, 240, 116, 117, 80, 22, 61, 67, 42, 118, |
| 83, -167, 86, 110, 111, 112, 113, -102, 56, 15, | 119, 81, 2, 22, 71, -171, 120, 3, -101, 15, |
| 3, 18, 114, 115, 22, 57, 4, 56, 89, 116, | 121, 18, 4, 4, 122, 123, 22, 56, 79, 3, |
| 117, 106, 15, 108, 18, 95, 118, 53, 2, 105, | 56, 106, 15, 108, 18, 4, 83, 57, 3, 94, |
| 119, 196, 4, 3, 120, 121, 22, 3, 3, 4, | 98, 101, 86, 3, 4, 250, 201, 190, 251, 4, |
| 56, 185, -102, 4, 4, 186, 51, 22, 187, 137, | 23, 191, 23, 24, 192, 24, 51, 68, 23, 142, |
| 94, 98, 101, 15, 129, 18, 15, 23, 18, 67, | 89, 24, 25, 15, 26, 18, 15, 95, 18, -67, |
| 24, 25, -14, 26, 79, -94, -94, 130, 132, 15, | -67, 23, 53, 23, 24, 25, 24, 85, 133, -94, |
| 15, 18, 18, 138, 185, 131, 144, 157, 186, 23, | -94, 15, 15, 18, 18, 38, 139, 190, 143, 56, |
| 193, 187, 24, 25, 194, 195, 15, -63, 18, 128, | 105, 191, 134, -14, 192, 184, 185, 186, 187, 188, |
| 23, 199, 239, 24, 161, 200, 138, 134, 251, 166, | 189, 15, -101, 18, 186, 187, 188, 189, 69, 135, |
| 167, 256, 23, 161, 258, 24, 259, 23, 166, 167, | 143, 163, 164, 165, 166, 167, 168, 169, 170, 171, |
| 24, 174, 50, 100, 177, 178, 179, 180, 181, 182, | 172, 173, 174, 175, 176, 177, 178, 136, 38, 137, |
| 183, 184, 127, 177, 178, 179, 180, 181, 182, 183, | 162, 179, 149, 198, 180, 181, 182, 183, 184, 185, |
| 184, 237, 166, 167, 255, 15, 229, 18, 51, 179, | 186, 187, 188, 189, 199, 200, 204, -63, 205, 243, |
| 180, 181, 182, 183, 184, 15, 254, 18, 178, 179, | 15, 234, 18, 51, 255, 260, 262, 203, 171, 172, |
| 180, 181, 182, 183, 184, 145, 146, 147, 148, 149, | 15, 263, 18, 50, 150, 151, 152, 153, 132, 100, |
| 150, 151, 152, 140, 153, 181, 182, 183, 184, 103, | 154, 155, 156, 157, 145, 158, 183, 184, 185, 186, |
| 137, 253, 102, 46, 124, 156, 143, 15, 0, 18, | 187, 188, 189, 241, 259, 142, 258, 257, 102, 103, |
| 0, 0, 0, 0, 0, 0, 0, 15, 250, 18, | 46, 126, 15, 161, 18, 148, 0, 0, 0, 0, |
| 0, 0, 0, 137, 0, 15, 229, 18, 0, 0, | 0, 15, 254, 18, 0, 0, 0, 142, 0, 15, |
| 15, 0, 18, 201, 202, 203, 204, 205, 206, 207, | 234, 18, 0, 0, 15, 0, 18, 206, 207, 208, |
| 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, | 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, |
| 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, | 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, |
| 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, | 229, 230, 231, 232, 163, 164, 165, 166, 167, 168, |
| 168, 169, 170, 171, 172, 173, 166, 167, 0, 0, | 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, |
| 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, | 0, 0, 0, 0, 179, 0, 0, 180, 181, 182, |
| 184, 177, 178, 179, 180, 181, 182, 183, 184, 0, | 183, 184, 185, 186, 187, 188, 189, 163, 164, 0, |
| 0, 0, 0, 0, 198, 158, 159, 160, 161, 162, | 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, |
| 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, | 176, 177, 178, 0, 0, 0, 0, 179, 0, 0, |
| 173, 0, 0, 0, 0, 174, 175, 176, 177, 178, | 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, |
| 179, 180, 181, 182, 183, 184, 158, 159, 0, 161, | 163, 0, 0, 166, 167, 168, 169, 170, 171, 172, |
| 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, | 173, 174, 175, 176, 177, 178, 0, 0, 0, 0, |
| 172, 173, 0, 0, 0, 0, 174, 175, 176, 177, | 179, 0, 0, 180, 181, 182, 183, 184, 185, 186, |
| 178, 179, 180, 181, 182, 183, 184, 158, 0, 0, | 187, 188, 189, 166, 167, 168, 169, 170, 171, 172, |
| 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, | 173, 174, 175, 176, 177, 178, 0, 0, 0, 0, |
| 171, 172, 173, 0, 0, 0, 0, 174, 175, 176, | 179, 0, 0, 180, 181, 182, 183, 184, 185, 186, |
| 177, 178, 179, 180, 181, 182, 183, 184, 161, 162, | 187, 188, 189, 166, 0, 0, 169, 170, 171, 172, |
| 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, | 0, 0, 0, 0, 177, 178, 166, 0, 0, 0, |
| 173, 0, 0, 0, 0, 174, 175, 176, 177, 178, | 179, 171, 172, 0, 0, 182, 183, 184, 185, 186, |
| 179, 180, 181, 182, 183, 184, 161, 0, 0, 164, | 187, 188, 189, 179, 0, 0, 171, 172, 182, 183, |
| 165, 166, 167, 0, 0, 0, 0, 172, 173, 166, | 184, 185, 186, 187, 188, 189, 166, 0, 0, 0, |
| 167, 0, 0, 174, 0, 0, 177, 178, 179, 180, | 0, 171, 172, 182, 183, 184, 185, 186, 187, 188, |
| 181, 182, 183, 184, 0, 0, 179, 180, 181, 182, | 189, 171, 172, 0, 0, 0, 0, 0, 182, 183, |
| 183, 184 | 184, 185, 186, 187, 188, 189, 0, 0, 0, 0, |
| 184, 185, 186, 187, 188, 189 | |
| }; | }; |
| static const short yycheck[] = { 0, | static const short yycheck[] = { 0, |
| 0, 0, 107, 11, 60, 3, 3, 3, 38, 4, | 0, 0, 107, 11, 60, 3, 3, 46, 4, 4, |
| 11, 25, 11, 5, 4, 49, 26, 38, 46, 4, | 11, 4, 11, 38, 25, 49, 48, 49, 51, 53, |
| 47, 55, 5, 49, 51, 45, 52, 54, 26, 26, | 5, 4, 56, 5, 57, 38, 4, 66, 26, 47, |
| 4, 46, 47, 4, 64, 49, 46, 4, 66, 69, | 4, 27, 28, 29, 30, 4, 32, 33, 49, 64, |
| 38, 4, 4, 64, 48, 49, 3, 3, 46, 46, | 38, 3, 38, 39, 69, 4, 4, 4, 46, 45, |
| 53, 46, 57, 27, 28, 29, 30, 53, 50, 60, | 46, 64, 47, 4, 3, 48, 52, 52, 55, 60, |
| 50, 60, 36, 37, 4, 57, 56, 50, 4, 43, | 56, 60, 58, 58, 60, 61, 4, 52, 4, 52, |
| 44, 69, 73, 73, 73, 4, 50, 47, 45, 52, | 52, 69, 73, 73, 73, 58, 55, 59, 52, 52, |
| 54, 137, 56, 50, 58, 59, 4, 50, 50, 56, | 53, 54, 59, 52, 58, 51, 142, 49, 54, 58, |
| 50, 47, 53, 56, 56, 51, 104, 4, 54, 107, | 49, 53, 49, 52, 56, 52, 104, 26, 49, 107, |
| 52, 53, 54, 104, 46, 104, 107, 47, 107, 4, | 4, 52, 53, 104, 55, 104, 107, 4, 107, 50, |
| 50, 51, 46, 53, 4, 48, 49, 48, 4, 120, | 51, 49, 49, 49, 52, 53, 52, 46, 91, 50, |
| 121, 120, 121, 228, 47, 49, 52, 55, 51, 47, | 51, 122, 123, 122, 123, 3, 99, 49, 233, 52, |
| 4, 54, 50, 51, 46, 48, 137, 48, 137, 91, | 54, 53, 48, 48, 56, 38, 39, 40, 41, 42, |
| 47, 58, 48, 50, 14, 59, 251, 99, 49, 19, | 43, 142, 55, 142, 40, 41, 42, 43, 26, 50, |
| 20, 48, 47, 14, 0, 50, 0, 47, 19, 20, | 255, 11, 12, 13, 14, 15, 16, 17, 18, 19, |
| 50, 31, 5, 54, 34, 35, 36, 37, 38, 39, | 20, 21, 22, 23, 24, 25, 26, 51, 46, 4, |
| 40, 41, 91, 34, 35, 36, 37, 38, 39, 40, | 57, 31, 54, 4, 34, 35, 36, 37, 38, 39, |
| 41, 188, 19, 20, 251, 186, 186, 186, 196, 36, | 40, 41, 42, 43, 48, 50, 60, 50, 61, 50, |
| 37, 38, 39, 40, 41, 196, 248, 196, 35, 36, | 191, 191, 191, 201, 51, 50, 0, 57, 19, 20, |
| 37, 38, 39, 40, 41, 110, 111, 112, 113, 114, | 201, 0, 201, 5, 110, 111, 112, 113, 91, 54, |
| 115, 116, 117, 107, 119, 38, 39, 40, 41, 58, | 116, 117, 118, 119, 107, 121, 37, 38, 39, 40, |
| 228, 246, 56, 3, 74, 121, 107, 228, -1, 228, | 41, 42, 43, 193, 255, 233, 252, 250, 56, 58, |
| -1, -1, -1, -1, -1, -1, -1, 238, 238, 238, | 3, 74, 233, 123, 233, 107, -1, -1, -1, -1, |
| -1, -1, -1, 251, -1, 246, 246, 246, -1, -1, | -1, 242, 242, 242, -1, -1, -1, 255, -1, 250, |
| 251, -1, 251, 158, 159, 160, 161, 162, 163, 164, | 250, 250, -1, -1, 255, -1, 255, 163, 164, 165, |
| 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, | 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, |
| 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, | 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, |
| 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, | 186, 187, 188, 189, 11, 12, 13, 14, 15, 16, |
| 21, 22, 23, 24, 25, 26, 19, 20, -1, -1, | 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, |
| 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, | -1, -1, -1, -1, 31, -1, -1, 34, 35, 36, |
| 41, 34, 35, 36, 37, 38, 39, 40, 41, -1, | 37, 38, 39, 40, 41, 42, 43, 11, 12, -1, |
| -1, -1, -1, -1, 55, 11, 12, 13, 14, 15, | |
| 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, | |
| 26, -1, -1, -1, -1, 31, 32, 33, 34, 35, | |
| 36, 37, 38, 39, 40, 41, 11, 12, -1, 14, | |
| 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, | |
| 25, 26, -1, -1, -1, -1, 31, 32, 33, 34, | |
| 35, 36, 37, 38, 39, 40, 41, 11, -1, -1, | |
| 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, | 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, |
| 24, 25, 26, -1, -1, -1, -1, 31, 32, 33, | 24, 25, 26, -1, -1, -1, -1, 31, -1, -1, |
| 34, 35, 36, 37, 38, 39, 40, 41, 14, 15, | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, |
| 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, | 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, |
| 26, -1, -1, -1, -1, 31, 32, 33, 34, 35, | 21, 22, 23, 24, 25, 26, -1, -1, -1, -1, |
| 36, 37, 38, 39, 40, 41, 14, -1, -1, 17, | 31, -1, -1, 34, 35, 36, 37, 38, 39, 40, |
| 18, 19, 20, -1, -1, -1, -1, 25, 26, 19, | 41, 42, 43, 14, 15, 16, 17, 18, 19, 20, |
| 20, -1, -1, 31, -1, -1, 34, 35, 36, 37, | 21, 22, 23, 24, 25, 26, -1, -1, -1, -1, |
| 38, 39, 40, 41, -1, -1, 36, 37, 38, 39, | 31, -1, -1, 34, 35, 36, 37, 38, 39, 40, |
| 40, 41 | 41, 42, 43, 14, -1, -1, 17, 18, 19, 20, |
| -1, -1, -1, -1, 25, 26, 14, -1, -1, -1, | |
| 31, 19, 20, -1, -1, 36, 37, 38, 39, 40, | |
| 41, 42, 43, 31, -1, -1, 19, 20, 36, 37, | |
| 38, 39, 40, 41, 42, 43, 14, -1, -1, -1, | |
| -1, 19, 20, 36, 37, 38, 39, 40, 41, 42, | |
| 43, 19, 20, -1, -1, -1, -1, -1, 36, 37, | |
| 38, 39, 40, 41, 42, 43, -1, -1, -1, -1, | |
| 38, 39, 40, 41, 42, 43 | |
| }; | }; |
| #define YYPURE 1 | #define YYPURE 1 |
| Line 1044 yyreduce: | Line 1059 yyreduce: |
| switch (yyn) { | switch (yyn) { |
| case 1: | case 1: |
| #line 121 "compile.y" | #line 128 "compile.y" |
| { | { |
| Method& method=*new Method(Method::CT_ANY, | Method& method=*new Method(Method::CT_ANY, |
| 0, 0, /*min, max numbered_params_count*/ | 0, 0, /*min, max numbered_params_count*/ |
| Line 1054 case 1: | Line 1069 case 1: |
| ; | ; |
| break;} | break;} |
| case 8: | case 8: |
| #line 136 "compile.y" | #line 143 "compile.y" |
| { | { |
| const String& command=*LA2S(*yyvsp[-2]); | const String& command=*LA2S(*yyvsp[-2]); |
| YYSTYPE strings_code=yyvsp[0]; | YYSTYPE strings_code=yyvsp[0]; |
| Line 1128 case 8: | Line 1143 case 8: |
| ; | ; |
| break;} | break;} |
| case 12: | case 12: |
| #line 208 "compile.y" | #line 215 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 16: | case 16: |
| #line 212 "compile.y" | #line 219 "compile.y" |
| { | { |
| PC.explicit_result=false; | PC.explicit_result=false; |
| const String& name=*LA2S(*yyvsp[-4]); | const String& name=*LA2S(*yyvsp[-4]); |
| Line 1171 case 16: | Line 1186 case 16: |
| ; | ; |
| break;} | break;} |
| case 17: | case 17: |
| #line 247 "compile.y" | #line 254 "compile.y" |
| { | { |
| // fill in the code | // fill in the code |
| reinterpret_cast<Method*>(yyvsp[-1])->parser_code=yyvsp[0]; | reinterpret_cast<Method*>(yyvsp[-1])->parser_code=yyvsp[0]; |
| ; | ; |
| break;} | break;} |
| case 20: | case 20: |
| #line 253 "compile.y" | #line 260 "compile.y" |
| {yyval=yyvsp[-1]; | {yyval=yyvsp[-1]; |
| break;} | break;} |
| case 24: | case 24: |
| #line 255 "compile.y" | #line 262 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 30: | case 30: |
| #line 263 "compile.y" | #line 270 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 36: | case 36: |
| #line 269 "compile.y" | #line 276 "compile.y" |
| { | { |
| yyval=yyvsp[0]; /* stack: resulting value */ | yyval=yyvsp[0]; /* stack: resulting value */ |
| changetail_or_append(*yyval, | changetail_or_append(*yyval, |
| Line 1200 case 36: | Line 1215 case 36: |
| ; | ; |
| break;} | break;} |
| case 37: | case 37: |
| #line 276 "compile.y" | #line 283 "compile.y" |
| { yyval=yyvsp[0] ; | { yyval=yyvsp[0] ; |
| break;} | break;} |
| case 40: | case 40: |
| #line 278 "compile.y" | #line 285 "compile.y" |
| { yyval=yyvsp[-1] ; | { yyval=yyvsp[-1] ; |
| break;} | break;} |
| case 43: | case 43: |
| #line 282 "compile.y" | #line 289 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| ArrayOperation* diving_code=yyvsp[0]; | ArrayOperation* diving_code=yyvsp[0]; |
| Line 1233 case 43: | Line 1248 case 43: |
| ; | ; |
| break;} | break;} |
| case 44: | case 44: |
| #line 304 "compile.y" | #line 311 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 46: | case 46: |
| #line 305 "compile.y" | #line 312 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 47: | case 47: |
| #line 309 "compile.y" | #line 316 "compile.y" |
| { | { |
| yyval=yyvsp[-1]; /* stack: context,name */ | yyval=yyvsp[-1]; /* stack: context,name */ |
| P(*yyval, *yyvsp[0]); /* stack: context,name,constructor_value */ | P(*yyval, *yyvsp[0]); /* stack: context,name,constructor_value */ |
| ; | ; |
| break;} | break;} |
| case 51: | case 51: |
| #line 317 "compile.y" | #line 324 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| ArrayOperation* diving_code=yyvsp[0]; | ArrayOperation* diving_code=yyvsp[0]; |
| Line 1268 case 51: | Line 1283 case 51: |
| ; | ; |
| break;} | break;} |
| case 52: | case 52: |
| #line 334 "compile.y" | #line 341 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| O(*yyval, OP_WITH_WRITE); /* stack: starting context */ | O(*yyval, OP_WITH_WRITE); /* stack: starting context */ |
| Line 1276 case 52: | Line 1291 case 52: |
| ; | ; |
| break;} | break;} |
| case 53: | case 53: |
| #line 339 "compile.y" | #line 346 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 57: | case 57: |
| #line 346 "compile.y" | #line 353 "compile.y" |
| { | { |
| // allow $result_or_other_variable[ letters here any time ] | // allow $result_or_other_variable[ letters here any time ] |
| *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false; | *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false; |
| ; | ; |
| break;} | break;} |
| case 58: | case 58: |
| #line 349 "compile.y" | #line 356 "compile.y" |
| { | { |
| PC.explicit_result=reinterpret_cast<bool>(yyvsp[-1]); | PC.explicit_result=*reinterpret_cast<bool*>(&yyvsp[-1]); |
| ; | ; |
| break;} | break;} |
| case 59: | case 59: |
| #line 351 "compile.y" | #line 358 "compile.y" |
| { | { |
| // stack: context, name | // stack: context, name |
| yyval=yyvsp[-2]; // stack: context, name, value | yyval=yyvsp[-2]; // stack: context, name, value |
| Line 1301 case 59: | Line 1316 case 59: |
| ; | ; |
| break;} | break;} |
| case 60: | case 60: |
| #line 357 "compile.y" | #line 364 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| O(*yyval, OP_PREPARE_TO_EXPRESSION); | O(*yyval, OP_PREPARE_TO_EXPRESSION); |
| Line 1311 case 60: | Line 1326 case 60: |
| ; | ; |
| break;} | break;} |
| case 61: | case 61: |
| #line 365 "compile.y" | #line 372 "compile.y" |
| { | { |
| // stack: context, name | // stack: context, name |
| yyval=N(); | yyval=N(); |
| Line 1319 case 61: | Line 1334 case 61: |
| ; | ; |
| break;} | break;} |
| case 65: | case 65: |
| #line 376 "compile.y" | #line 383 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| OA(*yyval, OP_OBJECT_POOL, yyvsp[0]); /* stack: empty write context */ | OA(*yyval, OP_OBJECT_POOL, yyvsp[0]); /* stack: empty write context */ |
| Line 1328 case 65: | Line 1343 case 65: |
| ; | ; |
| break;} | break;} |
| case 68: | case 68: |
| #line 383 "compile.y" | #line 390 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 69: | case 69: |
| #line 387 "compile.y" | #line 394 "compile.y" |
| { | { |
| yyval=yyvsp[0]; /* stack: value */ | yyval=yyvsp[0]; /* stack: value */ |
| changetail_or_append(*yyval, | changetail_or_append(*yyval, |
| Line 1341 case 69: | Line 1356 case 69: |
| ; | ; |
| break;} | break;} |
| case 70: | case 70: |
| #line 393 "compile.y" | #line 400 "compile.y" |
| { | { |
| PC.in_call_value=true; | PC.in_call_value=true; |
| ; | ; |
| break;} | break;} |
| case 71: | case 71: |
| #line 396 "compile.y" | #line 403 "compile.y" |
| { | { |
| PC.in_call_value=false; | PC.in_call_value=false; |
| ; | ; |
| break;} | break;} |
| case 72: | case 72: |
| #line 399 "compile.y" | #line 406 "compile.y" |
| { /* ^field.$method{vasya} */ | { /* ^field.$method{vasya} */ |
| yyval=yyvsp[-3]; /* with_xxx,diving code; stack: context,method_junction */ | yyval=yyvsp[-3]; /* with_xxx,diving code; stack: context,method_junction */ |
| YYSTYPE params_code=yyvsp[-1]; | YYSTYPE params_code=yyvsp[-1]; |
| if(params_code->count()==4) { // probably [] case. [OP_VALUE+origin+Void+STORE_PARAM] | if(params_code->count()==4) { // probably [] case. [OP_VALUE+origin+Void+STORE_PARAM] |
| if(Value* value=LA2V(*params_code)) // it is OP_VALUE+origin+value? | if(Value* value=LA2V(*params_code)) // it is OP_VALUE+origin+value? |
| if(!value->is_defined()) // value is VVoid? | if(value->is_void()) // value is VVoid? |
| params_code=0; // ^zzz[] case. don't append lone empty param. | params_code=0; // ^zzz[] case. don't append lone empty param. |
| } | } |
| /* stack: context, method_junction */ | /* stack: context, method_junction */ |
| Line 1368 case 72: | Line 1383 case 72: |
| ; | ; |
| break;} | break;} |
| case 75: | case 75: |
| #line 414 "compile.y" | #line 421 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 79: | case 79: |
| #line 420 "compile.y" | #line 427 "compile.y" |
| { | { |
| // allow ^call[ letters here any time ] | // allow ^call[ letters here any time ] |
| *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false; | *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false; |
| ; | ; |
| break;} | break;} |
| case 80: | case 80: |
| #line 423 "compile.y" | #line 430 "compile.y" |
| { | { |
| PC.explicit_result=reinterpret_cast<bool>(yyvsp[-1]); | PC.explicit_result=*reinterpret_cast<bool*>(&yyvsp[-1]); |
| ; | ; |
| break;} | break;} |
| case 81: | case 81: |
| #line 425 "compile.y" | #line 432 "compile.y" |
| {yyval=yyvsp[-2]; | {yyval=yyvsp[-2]; |
| break;} | break;} |
| case 82: | case 82: |
| #line 426 "compile.y" | #line 433 "compile.y" |
| {yyval=yyvsp[-1]; | {yyval=yyvsp[-1]; |
| break;} | break;} |
| case 83: | case 83: |
| #line 427 "compile.y" | #line 434 "compile.y" |
| {yyval=yyvsp[-1]; | {yyval=yyvsp[-1]; |
| break;} | break;} |
| case 85: | case 85: |
| #line 430 "compile.y" | #line 437 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 87: | case 87: |
| #line 434 "compile.y" | #line 441 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 89: | case 89: |
| #line 438 "compile.y" | #line 445 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 90: | case 90: |
| #line 440 "compile.y" | #line 447 "compile.y" |
| { | { |
| yyval=yyvsp[0]; | yyval=yyvsp[0]; |
| O(*yyval, OP_STORE_PARAM); | O(*yyval, OP_STORE_PARAM); |
| ; | ; |
| break;} | break;} |
| case 91: | case 91: |
| #line 444 "compile.y" | #line 451 "compile.y" |
| { | { |
| yyval=N(); | YYSTYPE expr_code=yyvsp[0]; |
| OA(*yyval, OP_EXPR_CODE__STORE_PARAM, yyvsp[0]); | if(expr_code->count()==3 |
| && (*expr_code)[0].code==OP_VALUE) { // optimizing (double/bool/incidently 'string' too) case. [OP_VALUE+origin+Double] | |
| yyval=expr_code; | |
| O(*yyval, OP_STORE_PARAM); // no evaluating | |
| } else { | |
| ArrayOperation* code=N(); | |
| O(*code, OP_PREPARE_TO_EXPRESSION); | |
| P(*code, *expr_code); | |
| O(*code, OP_WRITE_EXPR_RESULT); | |
| yyval=N(); | |
| OA(*yyval, OP_EXPR_CODE__STORE_PARAM, code); | |
| } | |
| ; | ; |
| break;} | break;} |
| case 92: | case 92: |
| #line 448 "compile.y" | #line 466 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| OA(*yyval, OP_CURLY_CODE__STORE_PARAM, yyvsp[0]); | OA(*yyval, OP_CURLY_CODE__STORE_PARAM, yyvsp[0]); |
| ; | ; |
| break;} | break;} |
| case 96: | case 97: |
| #line 457 "compile.y" | #line 478 "compile.y" |
| { | |
| yyval=N(); | |
| O(*yyval, OP_PREPARE_TO_EXPRESSION); | |
| P(*yyval, *yyvsp[0]); | |
| O(*yyval, OP_WRITE_EXPR_RESULT); | |
| ; | |
| break;} | |
| case 98: | |
| #line 466 "compile.y" | |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 100: | case 99: |
| #line 468 "compile.y" | #line 480 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 102: | case 101: |
| #line 470 "compile.y" | #line 482 "compile.y" |
| { | { |
| // we know that name_advance1 not called from ^xxx context | // we know that name_advance1 not called from ^xxx context |
| // so we'll not check for operator call possibility as we do in name_advance2 | // so we'll not check for operator call possibility as we do in name_advance2 |
| Line 1457 case 102: | Line 1474 case 102: |
| O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */ | O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */ |
| ; | ; |
| break;} | break;} |
| case 103: | case 102: |
| #line 478 "compile.y" | #line 490 "compile.y" |
| { | { |
| /* stack: context */ | /* stack: context */ |
| yyval=yyvsp[0]; /* stack: context,name */ | yyval=yyvsp[0]; /* stack: context,name */ |
| O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */ | O(*yyval, OP_GET_ELEMENT); /* name=pop; context=pop; stack: context.get_element(name) */ |
| ; | ; |
| break;} | break;} |
| case 109: | case 108: |
| #line 491 "compile.y" | #line 503 "compile.y" |
| { | { |
| yyval=yyvsp[0]; | yyval=yyvsp[0]; |
| O(*yyval, OP_GET_ELEMENT); | O(*yyval, OP_GET_ELEMENT); |
| ; | ; |
| break;} | break;} |
| case 110: | case 109: |
| #line 495 "compile.y" | #line 507 "compile.y" |
| { | { |
| ArrayOperation* code; | ArrayOperation* code; |
| { | { |
| Line 1484 case 110: | Line 1501 case 110: |
| OA(*yyval, OP_STRING_POOL, code); | OA(*yyval, OP_STRING_POOL, code); |
| ; | ; |
| break;} | break;} |
| case 111: | case 110: |
| #line 504 "compile.y" | #line 516 "compile.y" |
| { | { |
| // allow $result_or_other_variable[ letters here any time ] | // allow $result_or_other_variable[ letters here any time ] |
| *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false; | *reinterpret_cast<bool*>(&yyval)=PC.explicit_result; PC.explicit_result=false; |
| ; | ; |
| break;} | break;} |
| case 112: | case 111: |
| #line 507 "compile.y" | #line 519 "compile.y" |
| { | { |
| PC.explicit_result=reinterpret_cast<bool>(yyvsp[-1]); | PC.explicit_result=*reinterpret_cast<bool*>(&yyvsp[-1]); |
| ; | ; |
| break;} | break;} |
| case 113: | case 112: |
| #line 509 "compile.y" | #line 521 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| OA(*yyval, OP_OBJECT_POOL, yyvsp[-2]); /* stack: empty write context */ | OA(*yyval, OP_OBJECT_POOL, yyvsp[-2]); /* stack: empty write context */ |
| Line 1506 case 113: | Line 1523 case 113: |
| /* context=pop; stack: context.value() */ | /* context=pop; stack: context.value() */ |
| ; | ; |
| break;} | break;} |
| case 114: | case 113: |
| #line 515 "compile.y" | #line 527 "compile.y" |
| { | { |
| yyval=N(); | yyval=N(); |
| O(*yyval, OP_WITH_READ); | O(*yyval, OP_WITH_READ); |
| P(*yyval, *yyvsp[0]); | P(*yyval, *yyvsp[0]); |
| ; | ; |
| break;} | break;} |
| case 116: | case 115: |
| #line 520 "compile.y" | #line 532 "compile.y" |
| { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; | { yyval=yyvsp[-1]; P(*yyval, *yyvsp[0]) ; |
| break;} | break;} |
| case 117: | case 116: |
| #line 521 "compile.y" | #line 533 "compile.y" |
| { | { |
| yyval=yyvsp[0]; | yyval=yyvsp[0]; |
| O(*yyval, OP_GET_ELEMENT__WRITE); | O(*yyval, OP_GET_ELEMENT__WRITE); |
| ; | ; |
| break;} | break;} |
| case 120: | case 119: |
| #line 530 "compile.y" | #line 542 "compile.y" |
| { | { |
| yyval=yyvsp[-1]; // stack: class name string | yyval=yyvsp[-1]; // stack: class name string |
| if(*LA2S(*yyval) == BASE_NAME) { // pseudo BASE class | if(*LA2S(*yyval) == BASE_NAME) { // pseudo BASE class |
| Line 1540 case 120: | Line 1557 case 120: |
| O(*yyval, OP_GET_CLASS); | O(*yyval, OP_GET_CLASS); |
| ; | ; |
| break;} | break;} |
| case 121: | case 120: |
| #line 542 "compile.y" | #line 554 "compile.y" |
| { | { |
| yyval=yyvsp[-1]; | yyval=yyvsp[-1]; |
| if(!PC.in_call_value) { | if(!PC.in_call_value) { |
| Line 1551 case 121: | Line 1568 case 121: |
| O(*yyval, OP_PREPARE_TO_CONSTRUCT_OBJECT); | O(*yyval, OP_PREPARE_TO_CONSTRUCT_OBJECT); |
| ; | ; |
| break;} | break;} |
| case 122: | |
| #line 554 "compile.y" | |
| { | |
| // see OP_PREPARE_TO_EXPRESSION!! | |
| if((yyval=yyvsp[0])->count()==2) // only one string literal in there? | |
| change_string_literal_to_double_literal(*yyval); // make that string literal Double | |
| ; | |
| break;} | |
| case 126: | |
| #line 563 "compile.y" | |
| { yyval = yyvsp[-1]; ; | |
| break;} | |
| case 127: | case 127: |
| #line 564 "compile.y" | #line 573 "compile.y" |
| { yyval = yyvsp[-1]; ; | { yyval = yyvsp[-1] ; |
| break;} | break;} |
| case 128: | case 128: |
| #line 565 "compile.y" | #line 574 "compile.y" |
| { yyval = yyvsp[-1]; ; | { yyval = yyvsp[-1] ; |
| break;} | break;} |
| case 129: | case 129: |
| #line 567 "compile.y" | #line 575 "compile.y" |
| { yyval=yyvsp[0]; O(*yyval, OP_NEG) ; | { yyval = yyvsp[-1]; ; |
| break;} | break;} |
| case 130: | case 130: |
| #line 568 "compile.y" | #line 577 "compile.y" |
| { yyval=yyvsp[0] ; | { yyval=yyvsp[0]; O(*yyval, OP_NEG) ; |
| break;} | break;} |
| case 131: | case 131: |
| #line 569 "compile.y" | #line 578 "compile.y" |
| { yyval=yyvsp[0]; O(*yyval, OP_INV) ; | { yyval=yyvsp[0] ; |
| break;} | break;} |
| case 132: | case 132: |
| #line 570 "compile.y" | #line 579 "compile.y" |
| { yyval=yyvsp[0]; O(*yyval, OP_NOT) ; | { yyval=yyvsp[0]; O(*yyval, OP_INV) ; |
| break;} | break;} |
| case 133: | case 133: |
| #line 571 "compile.y" | #line 580 "compile.y" |
| { yyval=yyvsp[0]; O(*yyval, OP_DEF) ; | { yyval=yyvsp[0]; O(*yyval, OP_NOT) ; |
| break;} | break;} |
| case 134: | case 134: |
| #line 572 "compile.y" | #line 581 "compile.y" |
| { yyval=yyvsp[0]; O(*yyval, OP_IN) ; | { yyval=yyvsp[0]; O(*yyval, OP_DEF) ; |
| break;} | break;} |
| case 135: | case 135: |
| #line 573 "compile.y" | #line 582 "compile.y" |
| { yyval=yyvsp[0]; O(*yyval, OP_FEXISTS) ; | { yyval=yyvsp[0]; O(*yyval, OP_IN) ; |
| break;} | break;} |
| case 136: | case 136: |
| #line 574 "compile.y" | #line 583 "compile.y" |
| { yyval=yyvsp[0]; O(*yyval, OP_DEXISTS) ; | { yyval=yyvsp[0]; O(*yyval, OP_FEXISTS) ; |
| break;} | break;} |
| case 137: | case 137: |
| #line 576 "compile.y" | #line 584 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_SUB) ; | { yyval=yyvsp[0]; O(*yyval, OP_DEXISTS) ; |
| break;} | break;} |
| case 138: | case 138: |
| #line 577 "compile.y" | #line 586 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_ADD) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_SUB) ; |
| break;} | break;} |
| case 139: | case 139: |
| #line 578 "compile.y" | #line 587 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_MUL) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_ADD) ; |
| break;} | break;} |
| case 140: | case 140: |
| #line 579 "compile.y" | #line 588 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_DIV) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_MUL) ; |
| break;} | break;} |
| case 141: | case 141: |
| #line 580 "compile.y" | #line 589 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_MOD) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_DIV) ; |
| break;} | break;} |
| case 142: | case 142: |
| #line 581 "compile.y" | #line 590 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_INTDIV) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_MOD) ; |
| break;} | break;} |
| case 143: | case 143: |
| #line 582 "compile.y" | #line 591 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_SL) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_INTDIV) ; |
| break;} | break;} |
| case 144: | case 144: |
| #line 583 "compile.y" | #line 592 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_SR) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_SL) ; |
| break;} | break;} |
| case 145: | case 145: |
| #line 584 "compile.y" | #line 593 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_AND) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_SR) ; |
| break;} | break;} |
| case 146: | case 146: |
| #line 585 "compile.y" | #line 594 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_OR) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_AND) ; |
| break;} | break;} |
| case 147: | case 147: |
| #line 586 "compile.y" | #line 595 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_XOR) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_OR) ; |
| break;} | break;} |
| case 148: | case 148: |
| #line 587 "compile.y" | #line 596 "compile.y" |
| { yyval=yyvsp[-2]; OA(*yyval, OP_NESTED_CODE, yyvsp[0]); O(*yyval, OP_LOG_AND) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_BIN_XOR) ; |
| break;} | break;} |
| case 149: | case 149: |
| #line 588 "compile.y" | #line 597 "compile.y" |
| { yyval=yyvsp[-2]; OA(*yyval, OP_NESTED_CODE, yyvsp[0]); O(*yyval, OP_LOG_OR) ; | { yyval=yyvsp[-2]; OA(*yyval, OP_NESTED_CODE, yyvsp[0]); O(*yyval, OP_LOG_AND) ; |
| break;} | break;} |
| case 150: | case 150: |
| #line 589 "compile.y" | #line 598 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_LOG_XOR) ; | { yyval=yyvsp[-2]; OA(*yyval, OP_NESTED_CODE, yyvsp[0]); O(*yyval, OP_LOG_OR) ; |
| break;} | break;} |
| case 151: | case 151: |
| #line 590 "compile.y" | #line 599 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_LT) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_LOG_XOR) ; |
| break;} | break;} |
| case 152: | case 152: |
| #line 591 "compile.y" | #line 600 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_GT) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_LT) ; |
| break;} | break;} |
| case 153: | case 153: |
| #line 592 "compile.y" | #line 601 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_LE) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_GT) ; |
| break;} | break;} |
| case 154: | case 154: |
| #line 593 "compile.y" | #line 602 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_GE) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_LE) ; |
| break;} | break;} |
| case 155: | case 155: |
| #line 594 "compile.y" | #line 603 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_EQ) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_GE) ; |
| break;} | break;} |
| case 156: | case 156: |
| #line 595 "compile.y" | #line 604 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_NE) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_EQ) ; |
| break;} | break;} |
| case 157: | case 157: |
| #line 596 "compile.y" | #line 605 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_LT) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_NUM_NE) ; |
| break;} | break;} |
| case 158: | case 158: |
| #line 597 "compile.y" | #line 606 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_GT) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_LT) ; |
| break;} | break;} |
| case 159: | case 159: |
| #line 598 "compile.y" | #line 607 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_LE) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_GT) ; |
| break;} | break;} |
| case 160: | case 160: |
| #line 599 "compile.y" | #line 608 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_GE) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_LE) ; |
| break;} | break;} |
| case 161: | case 161: |
| #line 600 "compile.y" | #line 609 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_EQ) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_GE) ; |
| break;} | break;} |
| case 162: | case 162: |
| #line 601 "compile.y" | #line 610 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_NE) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_EQ) ; |
| break;} | break;} |
| case 163: | case 163: |
| #line 602 "compile.y" | #line 611 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_IS) ; | { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_STR_NE) ; |
| break;} | break;} |
| case 164: | case 164: |
| #line 605 "compile.y" | #line 612 "compile.y" |
| { yyval=yyvsp[-2]; P(*yyval, *yyvsp[0]); O(*yyval, OP_IS) ; | |
| break;} | |
| case 165: | |
| #line 615 "compile.y" | |
| { | |
| // optimized from OP_STRING->OP_VALUE for doubles | |
| maybe_change_string_literal_to_double_literal(*(yyval=yyvsp[0])); | |
| ; | |
| break;} | |
| case 166: | |
| #line 620 "compile.y" | |
| { | { |
| yyval=N(); | yyval=N(); |
| OA(*yyval, OP_STRING_POOL, yyvsp[0]); /* stack: empty write context */ | OA(*yyval, OP_STRING_POOL, yyvsp[0]); /* stack: empty write context */ |
| Line 1720 case 164: | Line 1736 case 164: |
| /* context=pop; stack: context.get_string() */ | /* context=pop; stack: context.get_string() */ |
| ; | ; |
| break;} | break;} |
| case 165: | case 167: |
| #line 614 "compile.y" | #line 629 "compile.y" |
| { | { |
| // optimized from OP_STRING+OP_WRITE_VALUE to OP_STRING__WRITE | // optimized from OP_STRING+OP_WRITE_VALUE to OP_STRING__WRITE |
| change_string_literal_to_write_string_literal(*(yyval=yyvsp[0])) | change_string_literal_to_write_string_literal(*(yyval=yyvsp[0])) |
| ; | ; |
| break;} | break;} |
| case 166: | case 168: |
| #line 619 "compile.y" | #line 634 "compile.y" |
| { yyval=VL(new VVoid(), 0, 0, 0) ; | { yyval=VL(/*we know that we will not change it*/const_cast<VVoid*>(&vvoid), 0, 0, 0) ; |
| break;} | |
| case 169: | |
| #line 635 "compile.y" | |
| { yyval = VL(/*we know that we will not change it*/const_cast<VBool*>(&vtrue), 0, 0, 0) ; | |
| break;} | |
| case 170: | |
| #line 636 "compile.y" | |
| { yyval = VL(/*we know that we will not change it*/const_cast<VBool*>(&vfalse), 0, 0, 0) ; | |
| break;} | break;} |
| case 167: | case 171: |
| #line 620 "compile.y" | #line 638 "compile.y" |
| { yyval=N() ; | { yyval=N() ; |
| break;} | break;} |
| } | } |
| Line 1957 yyerrhandle: | Line 1981 yyerrhandle: |
| } | } |
| return 1; | return 1; |
| } | } |
| #line 622 "compile.y" | #line 640 "compile.y" |
| #endif | #endif |
| Line 2399 default: | Line 2423 default: |
| goto break2; | goto break2; |
| } | } |
| break; | break; |
| case 't': | |
| if(end==begin) // right after whitespace | |
| if(pc.source[0]=='r' && pc.source[1]=='u' && pc.source[2]=='e') { // def | |
| skip_analized=3; | |
| result=LITERAL_TRUE; | |
| goto break2; | |
| } | |
| break; | |
| case 'f': | |
| if(end==begin) // right after whitespace | |
| if(pc.source[0]=='a' && pc.source[1]=='l' && pc.source[2]=='s' && pc.source[3]=='e') { // def | |
| skip_analized=4; | |
| result=LITERAL_FALSE; | |
| goto break2; | |
| } | |
| break; | |
| case ' ': case '\t': case '\n': | case ' ': case '\t': case '\n': |
| if(end!=begin) { // there were a string after previous operator? | if(end!=begin) { // there were a string after previous operator? |
| result=0; // return that string | result=0; // return that string |