Some error handlers

master
Yevgen Muntyan 2006-03-08 03:12:18 -06:00
parent 13e72f4c98
commit d2372b5238
3 changed files with 340 additions and 293 deletions

View File

@ -194,7 +194,7 @@ ms_lex_parse_number (MSLex *lex,
{ {
if (value > 1000000) if (value > 1000000)
{ {
g_print ("syntax error, number is too big\n", G_STRLOC); g_print ("syntax error, number is too big\n");
return ms_lex_error (parser); return ms_lex_error (parser);
} }
@ -203,7 +203,7 @@ ms_lex_parse_number (MSLex *lex,
} }
else if (IS_WORD (c)) else if (IS_WORD (c))
{ {
g_print ("syntax error, number followed by word char\n", G_STRLOC); g_print ("syntax error, number followed by word char\n");
return ms_lex_error (parser); return ms_lex_error (parser);
} }
else else

View File

@ -669,18 +669,18 @@ union yyalloc
#endif #endif
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 47 #define YYFINAL 52
/* YYLAST -- Last index in YYTABLE. */ /* YYLAST -- Last index in YYTABLE. */
#define YYLAST 651 #define YYLAST 713
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 49 #define YYNTOKENS 49
/* YYNNTS -- Number of nonterminals. */ /* YYNNTS -- Number of nonterminals. */
#define YYNNTS 16 #define YYNNTS 16
/* YYNRULES -- Number of rules. */ /* YYNRULES -- Number of rules. */
#define YYNRULES 61 #define YYNRULES 66
/* YYNRULES -- Number of states. */ /* YYNRULES -- Number of states. */
#define YYNSTATES 127 #define YYNSTATES 139
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2 #define YYUNDEFTOK 2
@ -728,26 +728,27 @@ static const unsigned char yytranslate[] =
YYRHS. */ YYRHS. */
static const unsigned char yyprhs[] = static const unsigned char yyprhs[] =
{ {
0, 0, 3, 5, 7, 10, 13, 15, 16, 18, 0, 0, 3, 5, 7, 10, 13, 16, 18, 19,
20, 22, 24, 26, 28, 30, 33, 39, 44, 52, 21, 23, 25, 27, 29, 31, 33, 36, 42, 47,
58, 66, 68, 70, 72, 76, 83, 89, 95, 99, 55, 61, 69, 71, 73, 75, 79, 86, 93, 99,
103, 107, 111, 115, 119, 123, 127, 131, 135, 139, 105, 109, 113, 117, 121, 125, 129, 133, 137, 141,
143, 146, 149, 152, 156, 158, 160, 162, 166, 170, 145, 149, 153, 156, 159, 162, 166, 168, 170, 172,
174, 180, 185, 190, 194, 195, 197, 201, 202, 204, 176, 180, 184, 188, 192, 196, 202, 207, 212, 216,
208, 212 217, 219, 223, 224, 226, 230, 234
}; };
/* YYRHS -- A `-1'-separated list of the rules' RHS. */ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yysigned_char yyrhs[] = static const yysigned_char yyrhs[] =
{ {
50, 0, -1, 51, -1, 52, -1, 51, 52, -1, 50, 0, -1, 51, -1, 52, -1, 51, 52, -1,
53, 37, -1, 6, -1, -1, 56, -1, 55, -1, 1, 37, -1, 53, 37, -1, 6, -1, -1, 56,
54, -1, 57, -1, 17, -1, 18, -1, 19, -1, -1, 55, -1, 54, -1, 57, -1, 17, -1, 18,
19, 56, -1, 12, 56, 13, 51, 14, -1, 13, -1, 19, -1, 19, 56, -1, 12, 56, 13, 51,
51, 12, 56, -1, 15, 64, 16, 56, 13, 51, 14, -1, 13, 51, 12, 56, -1, 15, 64, 16,
14, -1, 8, 56, 9, 51, 11, -1, 8, 56, 56, 13, 51, 14, -1, 8, 56, 9, 51, 11,
9, 51, 10, 51, 11, -1, 60, -1, 59, -1, -1, 8, 56, 9, 51, 10, 51, 11, -1, 60,
58, -1, 3, 38, 56, -1, 60, 39, 56, 40, -1, 59, -1, 58, -1, 3, 38, 56, -1, 60,
39, 56, 40, 38, 56, -1, 60, 39, 1, 40,
38, 56, -1, 60, 41, 3, 38, 56, -1, 60, 38, 56, -1, 60, 41, 3, 38, 56, -1, 60,
42, 60, 43, 60, -1, 56, 30, 56, -1, 56, 42, 60, 43, 60, -1, 56, 30, 56, -1, 56,
29, 56, -1, 56, 32, 56, -1, 56, 31, 56, 29, 56, -1, 56, 32, 56, -1, 56, 31, 56,
@ -756,24 +757,25 @@ static const yysigned_char yyrhs[] =
-1, 56, 35, 56, -1, 56, 22, 56, -1, 56, -1, 56, 35, 56, -1, 56, 22, 56, -1, 56,
23, 56, -1, 29, 60, -1, 26, 60, -1, 36, 23, 56, -1, 29, 60, -1, 26, 60, -1, 36,
60, -1, 60, 33, 60, -1, 7, -1, 4, -1, 60, -1, 60, 33, 60, -1, 7, -1, 4, -1,
64, -1, 44, 53, 45, -1, 39, 61, 40, -1, 64, -1, 44, 53, 45, -1, 44, 1, 45, -1,
46, 62, 47, -1, 39, 56, 28, 56, 40, -1, 39, 61, 40, -1, 39, 1, 40, -1, 46, 62,
60, 44, 61, 45, -1, 60, 39, 56, 40, -1, 47, -1, 46, 1, 47, -1, 39, 56, 28, 56,
60, 41, 3, -1, -1, 56, -1, 61, 48, 56, 40, -1, 60, 44, 61, 45, -1, 60, 39, 56,
-1, -1, 63, -1, 62, 48, 63, -1, 3, 38, 40, -1, 60, 41, 3, -1, -1, 56, -1, 61,
56, -1, 3, -1 48, 56, -1, -1, 63, -1, 62, 48, 63, -1,
3, 38, 56, -1, 3, -1
}; };
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short int yyrline[] = static const unsigned short int yyrline[] =
{ {
0, 401, 401, 404, 405, 409, 410, 413, 414, 415, 0, 401, 401, 404, 405, 409, 410, 411, 414, 415,
416, 417, 418, 419, 420, 421, 424, 425, 426, 430, 416, 417, 418, 419, 420, 421, 422, 425, 426, 427,
431, 434, 435, 436, 440, 441, 442, 445, 449, 450, 431, 432, 435, 436, 437, 441, 442, 443, 444, 447,
451, 452, 454, 455, 457, 458, 459, 460, 461, 462, 451, 452, 453, 454, 456, 457, 459, 460, 461, 462,
463, 464, 465, 466, 470, 471, 472, 473, 474, 475, 463, 464, 465, 466, 467, 468, 472, 473, 474, 475,
476, 477, 478, 479, 482, 483, 484, 487, 488, 489, 476, 477, 478, 479, 480, 481, 482, 483, 484, 487,
492, 495 488, 489, 492, 493, 494, 497, 500
}; };
#endif #endif
@ -810,25 +812,25 @@ static const unsigned short int yytoknum[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] = static const unsigned char yyr1[] =
{ {
0, 49, 50, 51, 51, 52, 52, 53, 53, 53, 0, 49, 50, 51, 51, 52, 52, 52, 53, 53,
53, 53, 53, 53, 53, 53, 54, 54, 54, 55, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54,
55, 56, 56, 56, 57, 57, 57, 58, 59, 59, 55, 55, 56, 56, 56, 57, 57, 57, 57, 58,
59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60,
60, 60, 60, 60, 61, 61, 61, 62, 62, 62, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61,
63, 64 61, 61, 62, 62, 62, 63, 64
}; };
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const unsigned char yyr2[] = static const unsigned char yyr2[] =
{ {
0, 2, 1, 1, 2, 2, 1, 0, 1, 1, 0, 2, 1, 1, 2, 2, 2, 1, 0, 1,
1, 1, 1, 1, 1, 2, 5, 4, 7, 5, 1, 1, 1, 1, 1, 1, 2, 5, 4, 7,
7, 1, 1, 1, 3, 6, 5, 5, 3, 3, 5, 7, 1, 1, 1, 3, 6, 6, 5, 5,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2, 2, 2, 3, 1, 1, 1, 3, 3, 3, 3, 3, 2, 2, 2, 3, 1, 1, 1, 3,
5, 4, 4, 3, 0, 1, 3, 0, 1, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 0,
3, 1 1, 3, 0, 1, 3, 3, 1
}; };
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@ -836,217 +838,232 @@ static const unsigned char yyr2[] =
means the default is an error. */ means the default is an error. */
static const unsigned char yydefact[] = static const unsigned char yydefact[] =
{ {
7, 61, 45, 6, 44, 0, 0, 7, 0, 12, 0, 0, 66, 47, 7, 46, 0, 0, 0, 0,
13, 14, 0, 0, 0, 54, 7, 57, 0, 2, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0,
3, 0, 10, 9, 8, 11, 23, 22, 21, 46, 0, 3, 0, 11, 10, 9, 12, 24, 23, 22,
0, 61, 0, 21, 0, 7, 0, 15, 41, 40, 48, 5, 0, 66, 0, 22, 0, 0, 0, 16,
42, 55, 0, 0, 0, 0, 58, 1, 4, 5, 43, 42, 44, 0, 60, 0, 0, 0, 0, 0,
0, 63, 1, 4, 6, 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, 54, 24, 7, 0, 0, 59, 25, 0, 0, 0, 0, 0, 0, 52,
0, 7, 0, 0, 0, 48, 0, 47, 0, 49, 0, 51, 0, 50, 49, 54, 0, 53, 0, 36,
0, 34, 35, 38, 39, 32, 33, 29, 28, 31, 37, 40, 41, 34, 35, 31, 30, 33, 32, 38,
30, 36, 37, 43, 0, 53, 0, 55, 0, 7, 39, 45, 0, 0, 58, 0, 60, 0, 0, 0,
0, 53, 7, 17, 0, 0, 56, 60, 59, 52, 58, 0, 18, 0, 0, 61, 65, 64, 0, 57,
0, 0, 51, 7, 19, 52, 16, 7, 50, 0, 0, 0, 56, 0, 20, 57, 17, 0, 55, 0,
26, 27, 7, 7, 25, 20, 18 0, 28, 29, 0, 0, 27, 26, 21, 19
}; };
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
static const yysigned_char yydefgoto[] = static const yysigned_char yydefgoto[] =
{ {
-1, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 19, 20, 21, 22, 23, 24, 25, 26, 27,
27, 33, 42, 45, 46, 29 28, 35, 45, 50, 51, 30
}; };
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */ STATE-NUM. */
#define YYPACT_NINF -40 #define YYPACT_NINF -36
static const short int yypact[] = static const short int yypact[] =
{ {
347, -34, -40, -40, -40, 14, 14, 347, 12, -40, 374, -35, -31, -36, -36, -36, 483, 483, 374, 22,
-40, 14, 111, 111, 111, 14, 421, 17, 24, 171, -36, -36, 483, 15, 15, 15, 2, 462, 9, 11,
-40, 8, -40, -40, 584, -40, -40, -40, -10, -40, 154, -36, -10, -36, -36, 646, -36, -36, -36, 135,
14, -40, 449, -3, 469, 391, 32, 584, -36, -36, -36, -36, 483, -36, 511, 145, 531, 418, 18, 646,
-36, 568, -39, 4, 18, -37, -40, -40, -40, -40, 19, 19, 19, -4, 630, -24, -5, -2, 6, 24,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -15, -36, -36, -36, -36, 483, 483, 483, 483, 483,
14, 14, 111, 14, 52, 111, 14, 584, 347, 14, 483, 483, 483, 483, 483, 483, 483, 15, 103, 61,
54, 347, 14, 14, 14, -40, 14, -40, 14, -40, 15, 483, 646, 374, 483, 62, 374, 483, 483, -36,
17, 1, 1, 1, 1, -40, 35, 600, 600, 616, 483, -36, 483, -36, -36, -36, 483, -36, 65, 20,
616, 1, 1, -36, 505, 23, 3, 584, 6, 127, 20, 20, 20, -36, 47, 662, 662, 678, 678, 20,
526, -40, 215, 469, 489, 547, 584, 584, -40, 26, 20, 19, 32, 567, 36, 8, 646, -22, 198, 588,
14, 111, -40, 347, -40, -40, -40, 347, -40, 14, -36, 242, 531, 551, 609, 646, 646, -36, 37, 39,
584, -36, 259, 303, 584, -40, -40 483, 15, -36, 374, -36, -36, -36, 374, -36, 483,
483, 646, 19, 286, 330, 646, 646, -36, -36
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
static const yysigned_char yypgoto[] = static const yysigned_char yypgoto[] =
{ {
-40, -40, -5, -13, 51, -40, -40, 22, -40, -40, -36, -36, -7, -16, 73, -36, -36, 23, -36, -36,
-40, 0, 21, -40, -11, 62 -36, 0, 25, -36, 5, 89
}; };
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says. number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */ If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -8 #define YYTABLE_NINF -63
static const yysigned_char yytable[] = static const short int yytable[] =
{ {
28, 75, 35, 69, 30, 70, 48, 28, 66, 76, 29, 37, 31, 43, 53, 33, 3, 32, 29, 5,
79, 80, 38, 39, 40, 31, 28, 31, 2, 28, 48, 52, 49, 40, 41, 42, 81, 29, 33, 3,
44, 4, 48, 62, 47, 54, 55, 32, 34, 63, 29, 53, 5, 122, 82, 33, 82, 54, 13, 34,
62, 64, 65, 37, 66, 28, 69, 41, 70, 65, 36, 14, 87, 88, 78, 39, 79, 29, 15, 44,
12, 66, 69, 13, 70, 49, 111, 66, 73, 77, 83, 16, -59, 84, 59, 60, 17, 74, 18, 75,
14, 112, 67, 15, 76, 95, 78, 101, 16, 54, -59, 121, 71, 85, 16, 72, -62, -62, 74, 17,
17, 110, 93, 99, 119, 96, 102, 43, 28, 108, 75, 18, 86, 71, 104, 110, 108, 101, 49, 111,
36, 28, 81, 82, 83, 84, 85, 86, 87, 88, 105, 59, 118, 29, 120, 129, 29, 130, 89, 90,
89, 90, 91, 92, 0, 94, 48, 98, 97, 48, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
0, 100, 0, 0, 103, 104, 105, 0, 106, 28, 47, 103, 53, 117, 106, 53, 107, 109, 38, 0,
107, 0, 28, 0, 0, 0, 0, 0, 122, 48, 112, 113, 0, 114, 102, 115, 33, 3, 29, 116,
48, 121, 123, 28, 31, 2, 0, 28, 4, 0, 5, 29, 0, 0, 0, 0, 133, 53, 53, 0,
0, 0, 28, 28, 0, 0, 0, 0, 0, 0, 134, 132, 0, 29, 0, 0, 0, 29, 0, 13,
1, 2, 120, 3, 4, 5, 0, 113, 114, 6, 0, 0, 14, 29, 29, 0, 0, 0, 0, 15,
7, 124, 8, 0, 9, 10, 11, 0, 0, 0, 0, 0, 16, 131, 0, 0, 0, 17, 0, 18,
15, 0, 0, 12, 0, 16, 13, 17, 0, 0, 0, 0, 135, 136, -2, 1, 0, 2, 3, 0,
0, 0, 0, 14, 0, 0, 15, 0, 0, 0, 4, 5, 6, 0, 0, 0, 7, 8, 67, 9,
0, 16, 0, 17, 1, 2, 0, 3, 4, 5, 0, 10, 11, 12, 68, 0, 69, 70, 67, 71,
0, 0, 0, 6, 7, 0, 8, 0, 9, 10, 13, 0, 0, 14, 74, 0, 75, 70, 0, 71,
11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 15, -8, 0, 16, 0, 0, 0, 0, 17, 1,
13, 0, 0, 0, 0, 0, 0, 14, -7, 0, 18, 2, 3, 0, 4, 5, 6, 0, 123, 124,
15, 0, 0, 0, 0, 16, 0, 17, 1, 2, 7, 8, 0, 9, 0, 10, 11, 12, 0, 0,
0, 3, 4, 5, 0, 0, 0, 6, 7, 116, 0, 0, 0, 0, 13, 0, 0, 14, 0, 0,
8, 0, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -8, 0, 16, 0, 0,
0, 12, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 17, 1, 18, 2, 3, 0, 4, 5,
0, 14, 0, 0, 15, 0, 0, 0, 0, 16, 6, 0, 0, 0, 7, 8, 126, 9, 0, 10,
0, 17, 1, 2, 0, 3, 4, 5, 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 13, 0,
125, 6, 7, 0, 8, 0, 9, 10, 11, 0, 0, 14, 0, 0, 0, 0, 0, 0, 15, -8,
0, 0, 0, 0, 0, 12, 0, 0, 13, 0, 0, 16, 0, 0, 0, 0, 17, 1, 18, 2,
0, 0, 0, 0, 0, 14, 0, 0, 15, 0, 3, 0, 4, 5, 6, 0, 0, 137, 7, 8,
0, 0, 0, 16, 0, 17, 1, 2, 0, 3, 0, 9, 0, 10, 11, 12, 0, 0, 0, 0,
4, 5, 0, 0, 0, 6, 7, 126, 8, 0, 0, 0, 13, 0, 0, 14, 0, 0, 0, 0,
9, 10, 11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 15, -8, 0, 16, 0, 0, 0, 0,
0, 0, 13, 0, 0, 0, 0, 0, 0, 14, 17, 1, 18, 2, 3, 0, 4, 5, 6, 0,
0, 0, 15, 0, 0, 0, 0, 16, 0, 17, 0, 0, 7, 8, 138, 9, 0, 10, 11, 12,
1, 2, 0, 3, 4, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14,
7, 0, 8, 0, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -8, 0, 16,
0, 0, 0, 12, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 17, 1, 18, 2, 3, 0,
0, 0, 0, 14, 0, 0, 15, 0, 0, 0, 4, 5, 6, 0, 0, 0, 7, 8, 0, 9,
0, 16, 0, 17, 1, 2, 0, 3, 4, 5, 0, 10, 11, 12, 0, 0, 0, 0, 0, 0,
0, 0, 0, 72, 7, 0, 8, 0, 9, 10, 13, 0, 0, 14, 0, 0, 0, 0, 0, 0,
11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 15, -8, 0, 16, 0, 0, 0, 0, 17, 1,
13, 0, 0, 0, 1, 2, 0, 14, 4, 5, 18, 2, 3, 0, 4, 5, 6, 0, 0, 0,
15, 0, 0, 6, 7, 16, 8, 17, 9, 10, 77, 8, 0, 9, 0, 10, 11, 12, 0, 0,
11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 0, 0,
13, 0, 0, 0, 0, 0, 0, 14, 68, 0, 0, 0, 0, 0, 15, -8, 0, 16, 0, 0,
15, 0, 0, 0, 0, 16, 0, 17, 0, 50, 0, 0, 17, 46, 18, 2, 3, 0, 0, 5,
51, 52, 53, 54, 55, 0, 0, 0, 56, 57, 6, 0, 0, 0, 7, 8, 0, 9, 0, 10,
58, 59, 71, 60, 61, 0, 0, 0, 0, 50, 11, 12, 0, 0, 0, 0, 33, 3, 13, 0,
51, 52, 53, 54, 55, 0, 0, 0, 56, 57, 5, 14, 0, 0, 0, 0, 0, 0, 15, 0,
58, 59, 117, 60, 61, 0, 0, 0, 0, 50, 0, 16, 0, 0, 0, 0, 17, -8, 18, 13,
51, 52, 53, 54, 55, 0, 0, 0, 56, 57, 0, 0, 14, 0, 0, 0, 0, 0, 0, 15,
58, 59, 0, 60, 61, 50, 51, 52, 53, 54, 73, 0, 16, 0, 0, 0, 0, 17, 0, 18,
55, 0, 0, 0, 56, 57, 58, 59, 0, 60, 0, 55, 56, 57, 58, 59, 60, 0, 0, 0,
61, 0, 0, 0, 0, 109, 50, 51, 52, 53, 61, 62, 63, 64, 76, 65, 66, 0, 0, 0,
54, 55, 0, 0, 0, 56, 57, 58, 59, 0, 0, 55, 56, 57, 58, 59, 60, 0, 0, 0,
60, 61, 0, 0, 0, 0, 115, 50, 51, 52, 61, 62, 63, 64, 127, 65, 66, 0, 0, 0,
53, 54, 55, 0, 0, 0, 56, 57, 58, 59, 0, 55, 56, 57, 58, 59, 60, 0, 0, 0,
0, 60, 61, 0, 0, 0, 0, 118, 50, 51, 61, 62, 63, 64, 0, 65, 66, 55, 56, 57,
52, 53, 54, 55, 0, 0, 74, 56, 57, 58, 58, 59, 60, 0, 0, 0, 61, 62, 63, 64,
59, 0, 60, 61, 50, 51, 52, 53, 54, 55, 0, 65, 66, 0, 0, 0, 0, 119, 55, 56,
0, 0, 0, 56, 57, 58, 59, 0, 60, 61, 57, 58, 59, 60, 0, 0, 0, 61, 62, 63,
50, 51, 52, 53, 54, 55, 0, 0, 0, 0, 64, 0, 65, 66, 0, 0, 0, 0, 125, 55,
0, 58, 59, 0, 60, 61, 50, 51, 52, 53, 56, 57, 58, 59, 60, 0, 0, 0, 61, 62,
54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 0, 65, 66, 0, 0, 0, 0, 128,
60, 61 55, 56, 57, 58, 59, 60, 0, 0, 80, 61,
62, 63, 64, 0, 65, 66, 55, 56, 57, 58,
59, 60, 0, 0, 0, 61, 62, 63, 64, 0,
65, 66, 55, 56, 57, 58, 59, 60, 0, 0,
0, 0, 0, 63, 64, 0, 65, 66, 55, 56,
57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
0, 0, 65, 66
}; };
static const yysigned_char yycheck[] = static const short int yycheck[] =
{ {
0, 40, 7, 39, 38, 41, 19, 7, 44, 48, 0, 8, 37, 1, 20, 3, 4, 38, 8, 7,
47, 48, 12, 13, 14, 3, 16, 3, 4, 19, 1, 0, 3, 13, 14, 15, 40, 17, 3, 4,
3, 7, 35, 33, 0, 24, 25, 5, 6, 39, 20, 37, 7, 45, 48, 3, 48, 37, 26, 6,
33, 41, 42, 11, 44, 35, 39, 15, 41, 42, 7, 29, 47, 48, 16, 12, 40, 37, 36, 16,
26, 44, 39, 29, 41, 37, 43, 44, 16, 45, 45, 39, 40, 45, 24, 25, 44, 39, 46, 41,
36, 45, 30, 39, 48, 3, 38, 3, 44, 24, 48, 43, 44, 47, 39, 32, 47, 48, 39, 44,
46, 38, 62, 68, 38, 65, 71, 16, 68, 80, 41, 46, 38, 44, 3, 3, 73, 67, 3, 76,
8, 71, 50, 51, 52, 53, 54, 55, 56, 57, 70, 24, 40, 73, 38, 38, 76, 38, 55, 56,
58, 59, 60, 61, -1, 63, 99, 66, 66, 102, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
-1, 69, -1, -1, 72, 73, 74, -1, 76, 99, 17, 68, 108, 88, 71, 111, 71, 74, 9, -1,
78, -1, 102, -1, -1, -1, -1, -1, 113, 122, 77, 78, -1, 80, 1, 82, 3, 4, 108, 86,
123, 111, 117, 113, 3, 4, -1, 117, 7, -1, 7, 111, -1, -1, -1, -1, 123, 133, 134, -1,
-1, -1, 122, 123, -1, -1, -1, -1, -1, -1, 127, 121, -1, 123, -1, -1, -1, 127, -1, 26,
3, 4, 110, 6, 7, 8, -1, 10, 11, 12, -1, -1, 29, 133, 134, -1, -1, -1, -1, 36,
13, 119, 15, -1, 17, 18, 19, -1, -1, -1, -1, -1, 39, 120, -1, -1, -1, 44, -1, 46,
39, -1, -1, 26, -1, 44, 29, 46, -1, -1, -1, -1, 129, 130, 0, 1, -1, 3, 4, -1,
-1, -1, -1, 36, -1, -1, 39, -1, -1, -1, 6, 7, 8, -1, -1, -1, 12, 13, 33, 15,
-1, 44, -1, 46, 3, 4, -1, 6, 7, 8, -1, 17, 18, 19, 39, -1, 41, 42, 33, 44,
-1, -1, -1, 12, 13, -1, 15, -1, 17, 18, 26, -1, -1, 29, 39, -1, 41, 42, -1, 44,
19, -1, -1, -1, -1, -1, -1, 26, -1, -1, 36, 37, -1, 39, -1, -1, -1, -1, 44, 1,
29, -1, -1, -1, -1, -1, -1, 36, 37, -1, 46, 3, 4, -1, 6, 7, 8, -1, 10, 11,
39, -1, -1, -1, -1, 44, -1, 46, 3, 4, 12, 13, -1, 15, -1, 17, 18, 19, -1, -1,
-1, 6, 7, 8, -1, -1, -1, 12, 13, 14, -1, -1, -1, -1, 26, -1, -1, 29, -1, -1,
15, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, -1, -1,
-1, 26, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, 44, 1, 46, 3, 4, -1, 6, 7,
-1, 36, -1, -1, 39, -1, -1, -1, -1, 44, 8, -1, -1, -1, 12, 13, 14, 15, -1, 17,
-1, 46, 3, 4, -1, 6, 7, 8, -1, -1, 18, 19, -1, -1, -1, -1, -1, -1, 26, -1,
11, 12, 13, -1, 15, -1, 17, 18, 19, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, 37,
-1, -1, -1, -1, -1, 26, -1, -1, 29, -1, -1, 39, -1, -1, -1, -1, 44, 1, 46, 3,
-1, -1, -1, -1, -1, 36, -1, -1, 39, -1, 4, -1, 6, 7, 8, -1, -1, 11, 12, 13,
-1, -1, -1, 44, -1, 46, 3, 4, -1, 6, -1, 15, -1, 17, 18, 19, -1, -1, -1, -1,
7, 8, -1, -1, -1, 12, 13, 14, 15, -1, -1, -1, 26, -1, -1, 29, -1, -1, -1, -1,
17, 18, 19, -1, -1, -1, -1, -1, -1, 26, -1, -1, 36, 37, -1, 39, -1, -1, -1, -1,
44, 1, 46, 3, 4, -1, 6, 7, 8, -1,
-1, -1, 12, 13, 14, 15, -1, 17, 18, 19,
-1, -1, -1, -1, -1, -1, 26, -1, -1, 29,
-1, -1, -1, -1, -1, -1, 36, 37, -1, 39,
-1, -1, -1, -1, 44, 1, 46, 3, 4, -1,
6, 7, 8, -1, -1, -1, 12, 13, -1, 15,
-1, 17, 18, 19, -1, -1, -1, -1, -1, -1,
26, -1, -1, 29, -1, -1, -1, -1, -1, -1,
36, 37, -1, 39, -1, -1, -1, -1, 44, 1,
46, 3, 4, -1, 6, 7, 8, -1, -1, -1,
12, 13, -1, 15, -1, 17, 18, 19, -1, -1,
-1, -1, -1, -1, 26, -1, -1, 29, -1, -1,
-1, -1, -1, -1, 36, 37, -1, 39, -1, -1,
-1, -1, 44, 1, 46, 3, 4, -1, -1, 7,
8, -1, -1, -1, 12, 13, -1, 15, -1, 17,
18, 19, -1, -1, -1, -1, 3, 4, 26, -1,
7, 29, -1, -1, -1, -1, -1, -1, 36, -1,
-1, 39, -1, -1, -1, -1, 44, 45, 46, 26,
-1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36,
-1, -1, 39, -1, -1, -1, -1, 44, -1, 46, 9, -1, 39, -1, -1, -1, -1, 44, -1, 46,
3, 4, -1, 6, 7, 8, -1, -1, -1, 12, -1, 20, 21, 22, 23, 24, 25, -1, -1, -1,
13, -1, 15, -1, 17, 18, 19, -1, -1, -1, 29, 30, 31, 32, 13, 34, 35, -1, -1, -1,
-1, -1, -1, 26, -1, -1, 29, -1, -1, -1, -1, 20, 21, 22, 23, 24, 25, -1, -1, -1,
-1, -1, -1, 36, -1, -1, 39, -1, -1, -1, 29, 30, 31, 32, 13, 34, 35, -1, -1, -1,
-1, 44, -1, 46, 3, 4, -1, 6, 7, 8, -1, 20, 21, 22, 23, 24, 25, -1, -1, -1,
-1, -1, -1, 12, 13, -1, 15, -1, 17, 18, 29, 30, 31, 32, -1, 34, 35, 20, 21, 22,
19, -1, -1, -1, -1, -1, -1, 26, -1, -1,
29, -1, -1, -1, 3, 4, -1, 36, 7, 8,
39, -1, -1, 12, 13, 44, 15, 46, 17, 18,
19, -1, -1, -1, -1, -1, -1, 26, -1, -1,
29, -1, -1, -1, -1, -1, -1, 36, 9, -1,
39, -1, -1, -1, -1, 44, -1, 46, -1, 20,
21, 22, 23, 24, 25, -1, -1, -1, 29, 30,
31, 32, 13, 34, 35, -1, -1, -1, -1, 20,
21, 22, 23, 24, 25, -1, -1, -1, 29, 30,
31, 32, 13, 34, 35, -1, -1, -1, -1, 20,
21, 22, 23, 24, 25, -1, -1, -1, 29, 30,
31, 32, -1, 34, 35, 20, 21, 22, 23, 24,
25, -1, -1, -1, 29, 30, 31, 32, -1, 34,
35, -1, -1, -1, -1, 40, 20, 21, 22, 23,
24, 25, -1, -1, -1, 29, 30, 31, 32, -1,
34, 35, -1, -1, -1, -1, 40, 20, 21, 22,
23, 24, 25, -1, -1, -1, 29, 30, 31, 32, 23, 24, 25, -1, -1, -1, 29, 30, 31, 32,
-1, 34, 35, -1, -1, -1, -1, 40, 20, 21, -1, 34, 35, -1, -1, -1, -1, 40, 20, 21,
22, 23, 24, 25, -1, -1, 28, 29, 30, 31, 22, 23, 24, 25, -1, -1, -1, 29, 30, 31,
32, -1, 34, 35, 20, 21, 22, 23, 24, 25, 32, -1, 34, 35, -1, -1, -1, -1, 40, 20,
-1, -1, -1, 29, 30, 31, 32, -1, 34, 35, 21, 22, 23, 24, 25, -1, -1, -1, 29, 30,
20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 31, 32, -1, 34, 35, -1, -1, -1, -1, 40,
-1, 31, 32, -1, 34, 35, 20, 21, 22, 23, 20, 21, 22, 23, 24, 25, -1, -1, 28, 29,
24, 25, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, -1, 34, 35, 20, 21, 22, 23,
34, 35 24, 25, -1, -1, -1, 29, 30, 31, 32, -1,
34, 35, 20, 21, 22, 23, 24, 25, -1, -1,
-1, -1, -1, 31, 32, -1, 34, 35, 20, 21,
22, 23, 24, 25, -1, -1, -1, -1, -1, -1,
-1, -1, 34, 35
}; };
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
static const unsigned char yystos[] = static const unsigned char yystos[] =
{ {
0, 3, 4, 6, 7, 8, 12, 13, 15, 17, 0, 1, 3, 4, 6, 7, 8, 12, 13, 15,
18, 19, 26, 29, 36, 39, 44, 46, 50, 51, 17, 18, 19, 26, 29, 36, 39, 44, 46, 50,
52, 53, 54, 55, 56, 57, 58, 59, 60, 64, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
38, 3, 56, 60, 56, 51, 64, 56, 60, 60, 64, 37, 38, 3, 56, 60, 56, 51, 64, 56,
60, 56, 61, 53, 3, 62, 63, 0, 52, 37, 60, 60, 60, 1, 56, 61, 1, 53, 1, 3,
20, 21, 22, 23, 24, 25, 29, 30, 31, 32, 62, 63, 0, 52, 37, 20, 21, 22, 23, 24,
34, 35, 33, 39, 41, 42, 44, 56, 9, 39, 25, 29, 30, 31, 32, 34, 35, 33, 39, 41,
41, 13, 12, 16, 28, 40, 48, 45, 38, 47, 42, 44, 56, 9, 39, 41, 13, 12, 16, 40,
48, 56, 56, 56, 56, 56, 56, 56, 56, 56, 28, 40, 48, 45, 45, 47, 38, 47, 48, 56,
56, 56, 56, 60, 56, 3, 60, 56, 61, 51, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
56, 3, 51, 56, 56, 56, 56, 56, 63, 40, 56, 60, 1, 56, 3, 60, 56, 61, 51, 56,
3, 51, 56, 56, 56, 56, 56, 63, 40, 40,
38, 43, 45, 10, 11, 40, 14, 13, 40, 38, 38, 43, 45, 10, 11, 40, 14, 13, 40, 38,
56, 60, 51, 51, 56, 11, 14 38, 56, 60, 51, 51, 56, 56, 11, 14
}; };
#define yyerrok (yyerrstatus = 0) #define yyerrok (yyerrstatus = 0)
@ -1732,246 +1749,271 @@ yyreduce:
case 5: case 5:
#line 409 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 409 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = (yyvsp[-1].node); ;} { (yyval.node) = NULL; ;}
break; break;
case 6: case 6:
#line 410 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 410 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_python (parser, (yyvsp[0].str)); ;} { (yyval.node) = (yyvsp[-1].node); ;}
break; break;
case 7: case 7:
#line 413 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 411 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = NULL; ;} { (yyval.node) = node_python (parser, (yyvsp[0].str)); ;}
break; break;
case 12: case 8:
#line 418 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 414 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_continue (parser); ;} { (yyval.node) = NULL; ;}
break; break;
case 13: case 13:
#line 419 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 419 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_break (parser); ;} { (yyval.node) = node_continue (parser); ;}
break; break;
case 14: case 14:
#line 420 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 420 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_return (parser, NULL); ;} { (yyval.node) = node_break (parser); ;}
break; break;
case 15: case 15:
#line 421 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 421 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_return (parser, (yyvsp[0].node)); ;} { (yyval.node) = node_return (parser, NULL); ;}
break; break;
case 16: case 16:
#line 424 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 422 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_while (parser, MS_COND_BEFORE, (yyvsp[-3].node), (yyvsp[-1].node)); ;} { (yyval.node) = node_return (parser, (yyvsp[0].node)); ;}
break; break;
case 17: case 17:
#line 425 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 425 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_while (parser, MS_COND_AFTER, (yyvsp[0].node), (yyvsp[-2].node)); ;} { (yyval.node) = node_while (parser, MS_COND_BEFORE, (yyvsp[-3].node), (yyvsp[-1].node)); ;}
break; break;
case 18: case 18:
#line 426 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 426 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_for (parser, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node)); ;} { (yyval.node) = node_while (parser, MS_COND_AFTER, (yyvsp[0].node), (yyvsp[-2].node)); ;}
break; break;
case 19: case 19:
#line 430 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 427 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_if_else (parser, (yyvsp[-3].node), (yyvsp[-1].node), NULL); ;} { (yyval.node) = node_for (parser, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node)); ;}
break; break;
case 20: case 20:
#line 431 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 431 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_if_else (parser, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node)); ;} { (yyval.node) = node_if_else (parser, (yyvsp[-3].node), (yyvsp[-1].node), NULL); ;}
break; break;
case 24: case 21:
#line 440 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 432 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_assignment (parser, (yyvsp[-2].str), (yyvsp[0].node)); ;} { (yyval.node) = node_if_else (parser, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node)); ;}
break; break;
case 25: case 25:
#line 441 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 441 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_assign (parser, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node)); ;} { (yyval.node) = node_assignment (parser, (yyvsp[-2].str), (yyvsp[0].node)); ;}
break; break;
case 26: case 26:
#line 442 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 442 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_dict_assign (parser, (yyvsp[-4].node), (yyvsp[-2].str), (yyvsp[0].node)); ;} { (yyval.node) = node_list_assign (parser, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node)); ;}
break; break;
case 27: case 27:
#line 445 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 443 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_if_else (parser, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = NULL; ;}
break; break;
case 28: case 28:
#line 449 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 444 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_PLUS, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_dict_assign (parser, (yyvsp[-4].node), (yyvsp[-2].str), (yyvsp[0].node)); ;}
break; break;
case 29: case 29:
#line 450 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 447 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_MINUS, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_if_else (parser, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 30: case 30:
#line 451 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 451 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_DIV, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_PLUS, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 31: case 31:
#line 452 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 452 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_MULT, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_MINUS, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 32: case 32:
#line 454 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 453 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_AND, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_DIV, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 33: case 33:
#line 455 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 454 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_OR, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_MULT, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 34: case 34:
#line 457 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 456 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_EQ, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_AND, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 35: case 35:
#line 458 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 457 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_NEQ, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_OR, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 36: case 36:
#line 459 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 459 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_LT, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_EQ, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 37: case 37:
#line 460 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 460 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_GT, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_NEQ, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 38: case 38:
#line 461 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 461 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_LE, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_LT, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 39: case 39:
#line 462 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 462 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_GE, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_GT, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 40: case 40:
#line 463 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 463 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_unary_op (parser, MS_OP_UMINUS, (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_LE, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 41: case 41:
#line 464 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 464 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_unary_op (parser, MS_OP_NOT, (yyvsp[0].node)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_GE, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break; break;
case 42: case 42:
#line 465 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 465 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_unary_op (parser, MS_OP_LEN, (yyvsp[0].node)); ;} { (yyval.node) = node_unary_op (parser, MS_OP_UMINUS, (yyvsp[0].node)); ;}
break; break;
case 43: case 43:
#line 466 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 466 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_binary_op (parser, MS_OP_FORMAT, (yyvsp[-2].node), (yyvsp[0].node)); ;} { (yyval.node) = node_unary_op (parser, MS_OP_NOT, (yyvsp[0].node)); ;}
break; break;
case 44: case 44:
#line 470 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 467 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_int (parser, (yyvsp[0].ival)); ;} { (yyval.node) = node_unary_op (parser, MS_OP_LEN, (yyvsp[0].node)); ;}
break; break;
case 45: case 45:
#line 471 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 468 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_string (parser, (yyvsp[0].str)); ;} { (yyval.node) = node_binary_op (parser, MS_OP_FORMAT, (yyvsp[-2].node), (yyvsp[0].node)); ;}
break;
case 46:
#line 472 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_int (parser, (yyvsp[0].ival)); ;}
break; break;
case 47: case 47:
#line 473 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 473 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = (yyvsp[-1].node); ;} { (yyval.node) = node_string (parser, (yyvsp[0].str)); ;}
break;
case 48:
#line 474 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_value_list (parser, MS_NODE_LIST ((yyvsp[-1].node))); ;}
break; break;
case 49: case 49:
#line 475 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 475 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_dict (parser, (yyvsp[-1].node) ? MS_NODE_LIST ((yyvsp[-1].node)) : NULL); ;} { (yyval.node) = (yyvsp[-1].node); ;}
break; break;
case 50: case 50:
#line 476 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 476 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_value_range (parser, (yyvsp[-3].node), (yyvsp[-1].node)); ;} { (yyval.node) = NULL; ;}
break; break;
case 51: case 51:
#line 477 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 477 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_function (parser, (yyvsp[-3].node), (yyvsp[-1].node) ? MS_NODE_LIST ((yyvsp[-1].node)) : NULL); ;} { (yyval.node) = node_value_list (parser, MS_NODE_LIST ((yyvsp[-1].node))); ;}
break; break;
case 52: case 52:
#line 478 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 478 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_elm (parser, (yyvsp[-3].node), (yyvsp[-1].node)); ;} { (yyval.node) = NULL; ;}
break; break;
case 53: case 53:
#line 479 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 479 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_dict_elm (parser, (yyvsp[-2].node), (yyvsp[0].str)); ;} { (yyval.node) = node_dict (parser, (yyvsp[-1].node) ? MS_NODE_LIST ((yyvsp[-1].node)) : NULL); ;}
break; break;
case 54: case 54:
#line 482 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 480 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = NULL; ;} { (yyval.node) = NULL; ;}
break; break;
case 55: case 55:
#line 483 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 481 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_add (parser, NULL, (yyvsp[0].node)); ;} { (yyval.node) = node_value_range (parser, (yyvsp[-3].node), (yyvsp[-1].node)); ;}
break; break;
case 56: case 56:
#line 484 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 482 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_add (parser, MS_NODE_LIST ((yyvsp[-2].node)), (yyvsp[0].node)); ;} { (yyval.node) = node_function (parser, (yyvsp[-3].node), (yyvsp[-1].node) ? MS_NODE_LIST ((yyvsp[-1].node)) : NULL); ;}
break; break;
case 57: case 57:
#line 483 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_elm (parser, (yyvsp[-3].node), (yyvsp[-1].node)); ;}
break;
case 58:
#line 484 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_dict_elm (parser, (yyvsp[-2].node), (yyvsp[0].str)); ;}
break;
case 59:
#line 487 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 487 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = NULL; ;} { (yyval.node) = NULL; ;}
break; break;
case 58: case 60:
#line 488 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 488 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_add (parser, NULL, (yyvsp[0].node)); ;} { (yyval.node) = node_list_add (parser, NULL, (yyvsp[0].node)); ;}
break; break;
case 59: case 61:
#line 489 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 489 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_add (parser, MS_NODE_LIST ((yyvsp[-2].node)), (yyvsp[0].node)); ;} { (yyval.node) = node_list_add (parser, MS_NODE_LIST ((yyvsp[-2].node)), (yyvsp[0].node)); ;}
break; break;
case 60: case 62:
#line 492 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 492 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = NULL; ;}
break;
case 63:
#line 493 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_add (parser, NULL, (yyvsp[0].node)); ;}
break;
case 64:
#line 494 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_list_add (parser, MS_NODE_LIST ((yyvsp[-2].node)), (yyvsp[0].node)); ;}
break;
case 65:
#line 497 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_dict_entry (parser, (yyvsp[-2].str), (yyvsp[0].node)); ;} { (yyval.node) = node_dict_entry (parser, (yyvsp[-2].str), (yyvsp[0].node)); ;}
break; break;
case 61: case 66:
#line 495 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 500 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"
{ (yyval.node) = node_var (parser, (yyvsp[0].str)); ;} { (yyval.node) = node_var (parser, (yyvsp[0].str)); ;}
break; break;
@ -1980,7 +2022,7 @@ yyreduce:
} }
/* Line 1126 of yacc.c. */ /* Line 1126 of yacc.c. */
#line 1984 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.c" #line 2026 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.c"
yyvsp -= yylen; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;
@ -2248,6 +2290,6 @@ yyreturn:
} }
#line 498 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y" #line 503 "/home/muntyan/projects/moo/moo/mooutils/mooscript/mooscript-yacc.y"

View File

@ -406,7 +406,8 @@ program: stmt_or_python { $$ = node_list_add (parser, NULL, $1); }
; ;
stmt_or_python: stmt_or_python:
stmt ';' { $$ = $1; } error ';' { $$ = NULL; }
| stmt ';' { $$ = $1; }
| PYTHON { $$ = node_python (parser, $1); } | PYTHON { $$ = node_python (parser, $1); }
; ;
@ -439,6 +440,7 @@ expr: simple_expr
assignment: assignment:
IDENTIFIER '=' expr { $$ = node_assignment (parser, $1, $3); } IDENTIFIER '=' expr { $$ = node_assignment (parser, $1, $3); }
| simple_expr '[' expr ']' '=' expr { $$ = node_list_assign (parser, $1, $3, $6); } | simple_expr '[' expr ']' '=' expr { $$ = node_list_assign (parser, $1, $3, $6); }
| simple_expr '[' error ']' '=' expr { $$ = NULL; }
| simple_expr '.' IDENTIFIER '=' expr { $$ = node_dict_assign (parser, $1, $3, $5); } | simple_expr '.' IDENTIFIER '=' expr { $$ = node_dict_assign (parser, $1, $3, $5); }
; ;
@ -471,8 +473,11 @@ simple_expr:
| LITERAL { $$ = node_string (parser, $1); } | LITERAL { $$ = node_string (parser, $1); }
| variable | variable
| '(' stmt ')' { $$ = $2; } | '(' stmt ')' { $$ = $2; }
| '(' error ')' { $$ = NULL; }
| '[' list_elms ']' { $$ = node_value_list (parser, MS_NODE_LIST ($2)); } | '[' list_elms ']' { $$ = node_value_list (parser, MS_NODE_LIST ($2)); }
| '[' error ']' { $$ = NULL; }
| '{' dict_elms '}' { $$ = node_dict (parser, $2 ? MS_NODE_LIST ($2) : NULL); } | '{' dict_elms '}' { $$ = node_dict (parser, $2 ? MS_NODE_LIST ($2) : NULL); }
| '{' error '}' { $$ = NULL; }
| '[' expr TWODOTS expr ']' { $$ = node_value_range (parser, $2, $4); } | '[' expr TWODOTS expr ']' { $$ = node_value_range (parser, $2, $4); }
| simple_expr '(' list_elms ')' { $$ = node_function (parser, $1, $3 ? MS_NODE_LIST ($3) : NULL); } | simple_expr '(' list_elms ')' { $$ = node_function (parser, $1, $3 ? MS_NODE_LIST ($3) : NULL); }
| simple_expr '[' expr ']' { $$ = node_list_elm (parser, $1, $3); } | simple_expr '[' expr ']' { $$ = node_list_elm (parser, $1, $3); }