backport of 80649, a fix to an unreported problem in the ael parser, that results in a crash on a 64bit machine

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80689 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Steve Murphy
2007-08-24 13:20:18 +00:00
parent 0518339c30
commit 765b1af228
3 changed files with 230 additions and 236 deletions

View File

@@ -2,15 +2,16 @@
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
LOG: lev:2 file:pbx_ael.c line:3803 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:3810 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3978 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:3985 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:4 file:ael.flex line:276 func: ael_yylex File=./extensions.ael, line=165, column=49: Mismatched '}' in expression!
LOG: lev:4 file:ael.y line:752 func: ael_yyerror ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
LOG: lev:4 file:ael.y line:752 func: ael_yyerror ==== File: ./extensions.ael, Line 169, Cols: 24-24: Error: syntax error, unexpected '&'
LOG: lev:4 file:ael.y line:755 func: ael_yyerror ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
LOG: lev:4 file:ael.flex line:276 func: ael_yylex File=./extensions.ael, line=174, column=49: Mismatched '}' in expression!
LOG: lev:4 file:ael.y line:755 func: ael_yyerror ==== File: ./extensions.ael, Line 174, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
LOG: lev:4 file:ael.flex line:276 func: ael_yylex File=./extensions.ael, line=222, column=41: Mismatched '}' in expression!
LOG: lev:4 file:ael.y line:752 func: ael_yyerror ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
LOG: lev:4 file:ael.y line:752 func: ael_yyerror ==== File: ./extensions.ael, Line 226, Cols: 16-16: Error: syntax error, unexpected '&'
LOG: lev:4 file:ael.y line:752 func: ael_yyerror ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
LOG: lev:2 file:pbx_ael.c line:3818 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:4 file:pbx_ael.c line:3831 func: pbx_load_module Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:479 func: main 0 contexts, 0 extensions, 0 priorities
LOG: lev:4 file:ael.y line:755 func: ael_yyerror ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
LOG: lev:4 file:ael.y line:755 func: ael_yyerror ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
LOG: lev:4 file:ael.y line:755 func: ael_yyerror ==== File: ./extensions.ael, Line 291, Cols: 32-32: Error: syntax error, unexpected '|', expecting '(' or ';' or '=' or ':'
LOG: lev:2 file:pbx_ael.c line:3993 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:4 file:pbx_ael.c line:4006 func: pbx_load_module Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:523 func: main 0 contexts, 0 extensions, 0 priorities

View File

@@ -490,7 +490,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 14
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 350
#define YYLAST 302
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 42
@@ -499,7 +499,7 @@ union yyalloc
/* YYNRULES -- Number of rules. */
#define YYNRULES 133
/* YYNRULES -- Number of states. */
#define YYNSTATES 267
#define YYNSTATES 271
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -572,15 +572,15 @@ static const yytype_int8 yyrhs[] =
-1, 41, -1, 36, -1, 48, 3, 46, 4, 55,
5, -1, 23, -1, -1, 15, 41, 6, 54, 7,
4, 88, 5, -1, 16, 4, 51, 5, -1, -1,
52, 51, -1, 51, 1, -1, -1, 41, 9, 53,
52, 51, -1, 1, 51, -1, -1, 41, 9, 53,
41, 8, -1, -1, 41, -1, 54, 10, 41, -1,
54, 1, -1, -1, 56, 55, -1, 55, 1, -1,
54, 1, -1, -1, 56, 55, -1, 1, 55, -1,
58, -1, 95, -1, 90, -1, 91, -1, 57, -1,
52, -1, 41, 1, -1, 8, -1, 17, 24, 41,
8, -1, 41, 24, 70, -1, 30, 41, 24, 70,
-1, 31, 6, 66, 7, 41, 24, 70, -1, 30,
31, 6, 66, 7, 41, 24, 70, -1, -1, 70,
59, -1, 59, 1, -1, 67, 11, 67, 11, 67,
59, -1, 1, 59, -1, 67, 11, 67, 11, 67,
-1, 41, -1, 60, 13, 67, 13, 67, 13, 67,
-1, -1, 6, 63, 65, 7, -1, 19, 62, -1,
22, 62, -1, 20, 6, 61, 7, -1, 41, -1,
@@ -608,7 +608,7 @@ static const yytype_int8 yyrhs[] =
88, -1, 70, -1, 95, -1, 37, 41, 4, 59,
5, -1, 38, 4, 92, 5, -1, 39, 4, 92,
5, -1, -1, 41, 8, 92, -1, 41, 14, 41,
8, 92, -1, 92, 1, -1, 46, -1, 46, 13,
8, 92, -1, 1, 92, -1, 46, -1, 46, 13,
61, -1, 93, 8, -1, 94, 93, 8, -1, 94,
1, -1, 40, 4, 94, 5, -1, 40, 4, 5,
-1
@@ -716,173 +716,165 @@ static const yytype_uint8 yyr2[] =
static const yytype_uint8 yydefact[] =
{
14, 9, 0, 0, 13, 0, 0, 3, 6, 0,
7, 8, 0, 17, 1, 5, 4, 0, 22, 0,
0, 17, 11, 10, 0, 23, 0, 20, 19, 16,
0, 26, 25, 0, 0, 0, 36, 0, 0, 0,
0, 0, 0, 0, 34, 0, 26, 33, 29, 31,
32, 30, 116, 24, 0, 0, 0, 0, 0, 123,
123, 0, 35, 0, 28, 12, 0, 42, 85, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 66, 0, 75, 118, 109, 0, 0,
116, 119, 21, 0, 0, 0, 55, 0, 0, 0,
0, 133, 127, 0, 0, 38, 0, 42, 0, 0,
48, 0, 50, 0, 51, 0, 61, 88, 0, 95,
0, 82, 81, 83, 70, 0, 0, 102, 78, 69,
87, 105, 53, 108, 0, 77, 79, 15, 117, 37,
0, 39, 0, 0, 56, 123, 0, 126, 121, 122,
0, 129, 131, 132, 0, 44, 65, 0, 99, 76,
0, 111, 46, 0, 0, 0, 0, 0, 62, 0,
0, 0, 67, 0, 97, 68, 0, 74, 42, 103,
0, 84, 54, 104, 107, 0, 0, 0, 57, 0,
0, 128, 130, 101, 109, 0, 0, 0, 0, 0,
111, 59, 0, 52, 0, 0, 0, 90, 63, 89,
96, 0, 0, 0, 86, 106, 110, 0, 0, 0,
123, 0, 49, 0, 0, 42, 64, 112, 60, 58,
0, 0, 0, 0, 0, 0, 98, 71, 120, 80,
0, 40, 0, 100, 42, 42, 0, 0, 0, 94,
93, 92, 91, 0, 41, 0, 0, 0, 45, 0,
0, 72, 47, 0, 0, 0, 73
7, 8, 0, 0, 1, 5, 4, 0, 22, 0,
0, 0, 0, 11, 10, 0, 23, 0, 19, 20,
16, 18, 0, 25, 0, 0, 0, 0, 36, 0,
0, 0, 0, 0, 0, 0, 34, 0, 0, 33,
29, 31, 32, 30, 116, 24, 0, 28, 0, 0,
0, 0, 0, 0, 0, 35, 0, 12, 27, 0,
85, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 66, 0, 75, 118, 109,
0, 0, 116, 119, 21, 0, 0, 0, 55, 0,
0, 0, 0, 0, 133, 127, 0, 0, 38, 0,
0, 0, 0, 0, 48, 0, 50, 0, 51, 0,
61, 88, 0, 95, 0, 82, 81, 83, 70, 0,
0, 102, 78, 69, 87, 105, 53, 108, 0, 77,
79, 15, 117, 37, 0, 39, 0, 0, 56, 126,
0, 0, 121, 122, 0, 129, 131, 132, 0, 44,
65, 43, 99, 76, 0, 111, 46, 0, 0, 0,
0, 0, 62, 0, 0, 0, 67, 0, 97, 68,
0, 74, 0, 103, 0, 84, 54, 104, 107, 0,
0, 0, 57, 124, 0, 128, 130, 101, 109, 0,
0, 0, 0, 0, 111, 59, 0, 52, 0, 0,
0, 90, 63, 89, 96, 0, 0, 0, 86, 106,
110, 0, 0, 0, 0, 0, 49, 0, 0, 0,
64, 112, 60, 58, 0, 0, 0, 0, 0, 0,
98, 71, 120, 80, 0, 40, 125, 100, 0, 0,
114, 0, 0, 94, 93, 92, 91, 0, 41, 113,
115, 0, 45, 0, 0, 72, 47, 0, 0, 0,
73
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
-1, 5, 6, 7, 102, 8, 9, 10, 11, 20,
83, 35, 26, 45, 46, 47, 48, 106, 163, 164,
111, 160, 84, 133, 97, 165, 117, 85, 107, 176,
253, 263, 185, 181, 118, 174, 120, 109, 194, 87,
179, 88, 216, 134, 199, 200, 89, 90, 49, 50,
99, 103, 104, 51
-1, 5, 6, 7, 105, 8, 9, 10, 11, 21,
85, 36, 27, 47, 48, 49, 50, 110, 167, 168,
115, 164, 86, 137, 99, 169, 121, 87, 111, 180,
257, 267, 189, 185, 122, 178, 124, 113, 198, 89,
183, 90, 220, 138, 203, 204, 91, 92, 51, 52,
102, 106, 107, 53
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
#define YYPACT_NINF -198
#define YYPACT_NINF -201
static const yytype_int16 yypact[] =
{
91, -198, -25, 14, -198, 37, 69, -198, -198, 65,
-198, -198, 55, 78, -198, -198, -198, 26, 107, 140,
75, 78, -198, -198, 74, -198, 23, -198, -198, -198,
81, 138, -198, 152, 130, 133, -198, 159, -14, 184,
187, 201, 205, 12, -198, 116, 138, -198, -198, -198,
-198, -198, 83, -198, 202, 146, 206, 191, 170, 173,
173, 3, -198, 125, -198, -198, 126, 125, -198, 175,
211, 211, 212, 211, 77, 178, 213, 214, 215, 218,
211, 185, 164, -198, 125, -198, -198, 7, 117, 220,
83, -198, -198, 219, 170, 125, -198, 8, 20, 129,
131, -198, 207, 221, 5, -198, 134, 125, 222, 223,
-198, 226, -198, 192, -198, 87, 194, 183, 224, 154,
228, -198, -198, -198, -198, 125, 230, -198, -198, -198,
216, -198, 198, -198, 182, -198, -198, -198, -198, -198,
33, -198, 199, 200, -198, 173, 203, -198, -198, -198,
192, -198, -198, -198, 234, -198, -198, 18, 231, -198,
204, 167, 1, 233, 236, 237, 178, 178, -198, 178,
208, 178, -198, 209, 238, -198, 210, -198, 125, -198,
125, -198, -198, -198, 217, 225, 227, 229, -198, 179,
239, -198, -198, -198, 204, 247, 232, 235, 244, 251,
167, 240, 241, -198, 241, 188, 127, 197, -198, 193,
-198, 26, 249, 180, -198, -198, -198, 252, 243, 125,
173, 190, -198, 248, 250, 125, -198, -198, -198, 242,
256, 253, 178, 178, 178, 178, -198, -198, -198, -198,
125, -198, 181, -198, 125, 125, 21, 241, 241, 254,
254, 254, 254, 245, -198, 24, 30, 257, -198, 255,
241, -198, -198, 246, 264, 125, -198
136, -201, -30, 11, -201, 26, 233, -201, -201, 27,
-201, -201, 59, 9, -201, -201, -201, -17, 43, 9,
141, 155, 9, -201, -201, 90, -201, 78, -201, -201,
-201, -201, 17, -201, 164, 99, 129, 17, -201, 115,
-14, 172, 175, 176, 178, 12, -201, 179, 17, -201,
-201, -201, -201, -201, 169, -201, 177, -201, 145, 186,
180, 152, 30, 30, 96, -201, 199, -201, -201, 41,
-201, 159, 202, 202, 206, 202, 51, 173, 197, 205,
208, 214, 202, 181, 147, -201, 199, -201, -201, 37,
31, 218, 169, -201, -201, 221, 152, 199, -201, 21,
30, 15, 225, 230, -201, 224, 231, 130, -201, 85,
237, 85, 232, 235, -201, 240, -201, 204, -201, 89,
209, 70, 238, 98, 239, -201, -201, -201, -201, 199,
247, -201, -201, -201, 234, -201, 211, -201, 126, -201,
-201, -201, -201, -201, 65, -201, 212, 213, -201, -201,
30, 216, -201, -201, 204, -201, -201, -201, 250, -201,
-201, -201, 252, -201, 219, 140, -4, 248, 255, 253,
173, 173, -201, 173, 222, 173, -201, 226, 251, -201,
227, -201, 41, -201, 199, -201, -201, -201, 228, 229,
236, 242, -201, -201, 263, -201, -201, -201, 219, 265,
241, 243, 262, 269, 140, 244, 245, -201, 245, 105,
111, 118, -201, 134, -201, -17, 267, 271, -201, -201,
-201, 270, 256, 199, 30, 131, -201, 268, 272, 85,
-201, -201, -201, 246, 275, 278, 173, 173, 173, 173,
-201, -201, -201, -201, 199, -201, -201, -201, 85, 85,
-201, 245, 245, 279, 279, 279, 279, 254, -201, -201,
-201, 280, -201, 273, 245, -201, -201, 257, 284, 199,
-201
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
-198, -198, -198, 266, -16, -198, -198, -198, -198, 258,
58, -198, -198, 259, -198, -198, -198, -103, -198, 112,
10, -198, -198, 114, 186, -197, -73, -198, -52, -198,
-198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
-198, -198, -198, 84, 85, -198, 260, -198, -198, -198,
-57, 171, -198, -43
-201, -201, -201, 286, -16, -201, -201, -201, -201, 127,
135, -201, -201, -28, -201, -201, -201, -106, -201, 142,
52, -201, -201, 133, 198, -200, -75, -201, -54, -201,
-201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
-201, -201, -201, 101, 97, -201, 210, -201, -201, -201,
-59, 193, -201, -38
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -126
#define YYTABLE_NINF -124
static const yytype_int16 yytable[] =
{
86, 24, 119, 100, 157, 230, 152, 231, 101, 91,
153, 105, -58, 62, 131, 142, 12, 56, 13, 155,
143, 27, 155, -43, 32, 155, -114, 57, 145, -113,
33, 155, 130, 34, 146, -115, 63, 14, 86, 22,
186, 22, 201, 141, 23, 143, 23, 91, 132, 144,
257, 258, -43, -43, -43, -114, -114, -114, -113, -113,
-113, 18, 22, 262, -115, -115, -115, 23, 17, -2,
15, 21, -14, 177, 144, 213, 28, 1, 31, 21,
29, 112, 28, 114, 2, 3, -18, 67, 189, 44,
125, 68, 4, 205, 206, 69, 207, 166, 209, 1,
167, 70, 71, 72, 44, 73, 2, 3, 74, 75,
76, 77, 78, 115, 4, 79, 80, 64, 116, 19,
81, 65, 246, 42, 82, 135, 136, 64, 214, 67,
147, -27, 147, 68, 148, 155, 149, 69, 170, 156,
233, 255, 256, 70, 71, 72, 36, 73, 25, 27,
74, 75, 76, 77, 78, 37, 52, 79, 80, 249,
250, 251, 252, 242, 173, 170, 82, 241, 38, 39,
127, 53, 128, 27, 54, 129, 40, 41, 42, 43,
147, 155, 147, 55, -124, 238, -125, 93, 254, 183,
58, 59, 184, 169, 170, 236, 171, 243, 232, 170,
184, 196, 197, 198, 170, 60, 235, 234, 170, 61,
92, 96, 94, 266, 98, 95, 108, 110, 113, 116,
150, 121, 122, 123, 124, 137, 126, 139, 158, 151,
161, 159, 172, 162, 178, 168, 175, 180, 193, 182,
187, 188, 192, 203, 190, 132, 202, 220, 204, 208,
210, 212, 211, 219, 222, 225, 226, 237, 215, 244,
239, 245, 191, 261, 248, 170, 217, 240, 218, 247,
260, 265, 16, 223, 195, 154, 224, 0, 221, 30,
140, 228, 229, 201, 0, 227, 259, 264, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 66, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
138
88, 25, 123, 159, 103, 161, 234, -58, 235, 57,
19, 12, 108, 65, -17, 13, 93, 59, 37, 23,
68, 29, -26, 150, 24, 38, 14, 60, 146, 151,
17, 100, 134, 147, 39, -123, 66, 205, 88, 139,
140, 149, 109, 145, 135, 69, -42, 40, 41, 70,
20, 261, 262, 71, 93, 42, 43, 44, 45, 72,
73, 74, 148, 75, 266, 18, 76, 77, 78, 79,
80, 101, 190, 81, 82, 181, 217, 147, 136, 33,
173, 174, 84, 175, 26, 34, 109, 119, 35, 69,
-42, 193, 120, 70, 32, 209, 210, 71, 211, 170,
213, 104, 171, 72, 73, 74, 148, 75, 177, 174,
76, 77, 78, 79, 80, 236, 174, 81, 82, -42,
-42, -42, 174, 250, 237, 116, 84, 118, 238, 174,
218, 156, 23, 187, 129, 157, 188, 24, 247, 58,
55, 188, 259, 260, 1, 174, 28, 239, 22, 31,
29, 2, 3, 131, 22, 132, 29, 22, 133, 4,
30, 253, 254, 255, 256, 246, 23, 46, 54, 245,
56, 24, 46, 69, 200, 201, 202, 70, 61, 62,
63, 71, 64, 46, 67, 94, 95, 72, 73, 74,
258, 75, 96, 98, 76, 77, 78, 79, 80, 240,
112, 81, 82, 69, 97, 125, 83, 70, 114, 44,
84, 71, 117, 126, 120, 270, 127, 72, 73, 74,
128, 75, 130, 141, 76, 77, 78, 79, 80, 143,
152, 81, 82, -2, 15, 153, -14, 154, 162, 155,
84, 1, 160, 163, 165, 166, 176, 179, 2, 3,
172, 182, 186, 191, 192, 184, 4, 194, 196, 197,
136, 206, 207, 212, 208, 215, 223, 214, 216, 219,
221, 224, 226, 229, 230, 241, 242, 222, 243, 248,
244, 265, 227, 249, 228, 232, 233, 205, 251, 252,
174, 269, 16, 264, 144, 263, 195, 199, 268, 225,
158, 231, 142
};
static const yytype_int16 yycheck[] =
static const yytype_uint16 yycheck[] =
{
52, 17, 75, 60, 107, 202, 1, 204, 5, 52,
5, 63, 11, 1, 7, 7, 41, 31, 4, 1,
12, 9, 1, 5, 1, 1, 5, 41, 8, 5,
7, 1, 84, 10, 14, 5, 24, 0, 90, 36,
7, 36, 41, 95, 41, 12, 41, 90, 41, 41,
247, 248, 34, 35, 36, 34, 35, 36, 34, 35,
36, 6, 36, 260, 34, 35, 36, 41, 3, 0,
1, 13, 3, 125, 41, 178, 1, 8, 4, 21,
5, 71, 1, 73, 15, 16, 5, 4, 145, 31,
80, 8, 23, 166, 167, 12, 169, 10, 171, 8,
13, 18, 19, 20, 46, 22, 15, 16, 25, 26,
27, 28, 29, 36, 23, 32, 33, 1, 41, 41,
37, 5, 225, 40, 41, 8, 9, 1, 180, 4,
1, 5, 1, 8, 5, 1, 5, 12, 11, 5,
13, 244, 245, 18, 19, 20, 8, 22, 41, 9,
25, 26, 27, 28, 29, 17, 4, 32, 33, 232,
233, 234, 235, 220, 10, 11, 41, 219, 30, 31,
6, 41, 8, 9, 41, 11, 38, 39, 40, 41,
1, 1, 1, 24, 5, 5, 5, 41, 240, 7,
6, 4, 10, 10, 11, 211, 13, 7, 10, 11,
10, 34, 35, 36, 11, 4, 13, 10, 11, 4,
8, 41, 6, 265, 41, 24, 41, 6, 6, 41,
13, 8, 8, 8, 6, 5, 41, 8, 6, 8,
4, 8, 8, 41, 4, 41, 8, 21, 7, 41,
41, 41, 8, 7, 41, 41, 13, 8, 11, 41,
41, 41, 14, 24, 7, 11, 5, 8, 41, 11,
8, 11, 150, 8, 11, 11, 41, 24, 41, 13,
13, 7, 6, 41, 160, 104, 41, -1, 194, 21,
94, 41, 41, 41, -1, 200, 41, 41, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 46, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90
54, 17, 77, 109, 63, 111, 206, 11, 208, 37,
1, 41, 66, 1, 5, 4, 54, 31, 1, 36,
48, 9, 5, 8, 41, 8, 0, 41, 7, 14,
3, 1, 86, 12, 17, 5, 24, 41, 92, 8,
9, 100, 1, 97, 7, 4, 5, 30, 31, 8,
41, 251, 252, 12, 92, 38, 39, 40, 41, 18,
19, 20, 41, 22, 264, 6, 25, 26, 27, 28,
29, 41, 7, 32, 33, 129, 182, 12, 41, 1,
10, 11, 41, 13, 41, 7, 1, 36, 10, 4,
5, 150, 41, 8, 4, 170, 171, 12, 173, 10,
175, 5, 13, 18, 19, 20, 41, 22, 10, 11,
25, 26, 27, 28, 29, 10, 11, 32, 33, 34,
35, 36, 11, 229, 13, 73, 41, 75, 10, 11,
184, 1, 36, 7, 82, 5, 10, 41, 7, 24,
41, 10, 248, 249, 8, 11, 19, 13, 13, 22,
9, 15, 16, 6, 19, 8, 9, 22, 11, 23,
5, 236, 237, 238, 239, 224, 36, 32, 4, 223,
41, 41, 37, 4, 34, 35, 36, 8, 6, 4,
4, 12, 4, 48, 5, 8, 41, 18, 19, 20,
244, 22, 6, 41, 25, 26, 27, 28, 29, 215,
41, 32, 33, 4, 24, 8, 37, 8, 6, 40,
41, 12, 6, 8, 41, 269, 8, 18, 19, 20,
6, 22, 41, 5, 25, 26, 27, 28, 29, 8,
5, 32, 33, 0, 1, 5, 3, 13, 6, 8,
41, 8, 5, 8, 4, 41, 8, 8, 15, 16,
41, 4, 41, 41, 41, 21, 23, 41, 8, 7,
41, 13, 7, 41, 11, 14, 24, 41, 41, 41,
41, 8, 7, 11, 5, 8, 5, 41, 8, 11,
24, 8, 41, 11, 41, 41, 41, 41, 13, 11,
11, 7, 6, 13, 96, 41, 154, 164, 41, 198,
107, 204, 92
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -890,32 +882,33 @@ static const yytype_int16 yycheck[] =
static const yytype_uint8 yystos[] =
{
0, 8, 15, 16, 23, 43, 44, 45, 47, 48,
49, 50, 41, 4, 0, 1, 45, 3, 6, 41,
51, 52, 36, 41, 46, 41, 54, 9, 1, 5,
51, 4, 1, 7, 10, 53, 8, 17, 30, 31,
38, 39, 40, 41, 52, 55, 56, 57, 58, 90,
91, 95, 4, 41, 41, 24, 31, 41, 6, 4,
4, 4, 1, 24, 1, 5, 55, 4, 8, 12,
18, 19, 20, 22, 25, 26, 27, 28, 29, 32,
33, 37, 41, 52, 64, 69, 70, 81, 83, 88,
89, 95, 8, 41, 6, 24, 41, 66, 41, 92,
92, 5, 46, 93, 94, 70, 59, 70, 41, 79,
6, 62, 62, 6, 62, 36, 41, 68, 76, 68,
78, 8, 8, 8, 6, 62, 41, 6, 8, 11,
70, 7, 41, 65, 85, 8, 9, 5, 88, 8,
66, 70, 7, 12, 41, 8, 14, 1, 5, 5,
13, 8, 1, 5, 93, 1, 5, 59, 6, 8,
63, 4, 41, 60, 61, 67, 10, 13, 41, 10,
11, 13, 8, 10, 77, 8, 71, 70, 4, 82,
21, 75, 41, 7, 10, 74, 7, 41, 41, 92,
41, 61, 8, 7, 80, 65, 34, 35, 36, 86,
87, 41, 13, 7, 11, 68, 68, 68, 41, 68,
41, 14, 41, 59, 70, 41, 84, 41, 41, 24,
8, 85, 7, 41, 41, 11, 5, 86, 41, 41,
67, 67, 10, 13, 10, 13, 46, 8, 5, 8,
24, 70, 92, 7, 11, 11, 59, 13, 11, 68,
68, 68, 68, 72, 70, 59, 59, 67, 67, 41,
13, 8, 67, 73, 41, 7, 70
49, 50, 41, 4, 0, 1, 45, 3, 6, 1,
41, 51, 52, 36, 41, 46, 41, 54, 51, 9,
5, 51, 4, 1, 7, 10, 53, 1, 8, 17,
30, 31, 38, 39, 40, 41, 52, 55, 56, 57,
58, 90, 91, 95, 4, 41, 41, 55, 24, 31,
41, 6, 4, 4, 4, 1, 24, 5, 55, 4,
8, 12, 18, 19, 20, 22, 25, 26, 27, 28,
29, 32, 33, 37, 41, 52, 64, 69, 70, 81,
83, 88, 89, 95, 8, 41, 6, 24, 41, 66,
1, 41, 92, 92, 5, 46, 93, 94, 70, 1,
59, 70, 41, 79, 6, 62, 62, 6, 62, 36,
41, 68, 76, 68, 78, 8, 8, 8, 6, 62,
41, 6, 8, 11, 70, 7, 41, 65, 85, 8,
9, 5, 88, 8, 66, 70, 7, 12, 41, 92,
8, 14, 5, 5, 13, 8, 1, 5, 93, 59,
5, 59, 6, 8, 63, 4, 41, 60, 61, 67,
10, 13, 41, 10, 11, 13, 8, 10, 77, 8,
71, 70, 4, 82, 21, 75, 41, 7, 10, 74,
7, 41, 41, 92, 41, 61, 8, 7, 80, 65,
34, 35, 36, 86, 87, 41, 13, 7, 11, 68,
68, 68, 41, 68, 41, 14, 41, 59, 70, 41,
84, 41, 41, 24, 8, 85, 7, 41, 41, 11,
5, 86, 41, 41, 67, 67, 10, 13, 10, 13,
46, 8, 5, 8, 24, 70, 92, 7, 11, 11,
59, 13, 11, 68, 68, 68, 68, 72, 70, 59,
59, 67, 67, 41, 13, 8, 67, 73, 41, 7,
70
};
#define yyerrok (yyerrstatus = 0)
@@ -1440,7 +1433,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
case 41: /* "word" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1444 "ael.tab.c"
#line 1437 "ael.tab.c"
break;
case 44: /* "objects" */
#line 164 "ael.y"
@@ -1448,7 +1441,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1452 "ael.tab.c"
#line 1445 "ael.tab.c"
break;
case 45: /* "object" */
#line 164 "ael.y"
@@ -1456,12 +1449,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1460 "ael.tab.c"
#line 1453 "ael.tab.c"
break;
case 46: /* "context_name" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1465 "ael.tab.c"
#line 1458 "ael.tab.c"
break;
case 47: /* "context" */
#line 164 "ael.y"
@@ -1469,7 +1462,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1473 "ael.tab.c"
#line 1466 "ael.tab.c"
break;
case 49: /* "macro" */
#line 164 "ael.y"
@@ -1477,7 +1470,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1481 "ael.tab.c"
#line 1474 "ael.tab.c"
break;
case 50: /* "globals" */
#line 164 "ael.y"
@@ -1485,7 +1478,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1489 "ael.tab.c"
#line 1482 "ael.tab.c"
break;
case 51: /* "global_statements" */
#line 164 "ael.y"
@@ -1493,7 +1486,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1497 "ael.tab.c"
#line 1490 "ael.tab.c"
break;
case 52: /* "assignment" */
#line 164 "ael.y"
@@ -1501,7 +1494,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1505 "ael.tab.c"
#line 1498 "ael.tab.c"
break;
case 54: /* "arglist" */
#line 164 "ael.y"
@@ -1509,7 +1502,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1513 "ael.tab.c"
#line 1506 "ael.tab.c"
break;
case 55: /* "elements" */
#line 164 "ael.y"
@@ -1517,7 +1510,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1521 "ael.tab.c"
#line 1514 "ael.tab.c"
break;
case 56: /* "element" */
#line 164 "ael.y"
@@ -1525,7 +1518,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1529 "ael.tab.c"
#line 1522 "ael.tab.c"
break;
case 57: /* "ignorepat" */
#line 164 "ael.y"
@@ -1533,7 +1526,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1537 "ael.tab.c"
#line 1530 "ael.tab.c"
break;
case 58: /* "extension" */
#line 164 "ael.y"
@@ -1541,7 +1534,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1545 "ael.tab.c"
#line 1538 "ael.tab.c"
break;
case 59: /* "statements" */
#line 164 "ael.y"
@@ -1549,12 +1542,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1553 "ael.tab.c"
#line 1546 "ael.tab.c"
break;
case 60: /* "timerange" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1558 "ael.tab.c"
#line 1551 "ael.tab.c"
break;
case 61: /* "timespec" */
#line 164 "ael.y"
@@ -1562,12 +1555,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1566 "ael.tab.c"
#line 1559 "ael.tab.c"
break;
case 62: /* "test_expr" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1571 "ael.tab.c"
#line 1564 "ael.tab.c"
break;
case 64: /* "if_like_head" */
#line 164 "ael.y"
@@ -1575,22 +1568,22 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1579 "ael.tab.c"
#line 1572 "ael.tab.c"
break;
case 65: /* "word_list" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1584 "ael.tab.c"
#line 1577 "ael.tab.c"
break;
case 67: /* "word3_list" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1589 "ael.tab.c"
#line 1582 "ael.tab.c"
break;
case 68: /* "goto_word" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1594 "ael.tab.c"
#line 1587 "ael.tab.c"
break;
case 69: /* "switch_statement" */
#line 164 "ael.y"
@@ -1598,7 +1591,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1602 "ael.tab.c"
#line 1595 "ael.tab.c"
break;
case 70: /* "statement" */
#line 164 "ael.y"
@@ -1606,7 +1599,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1610 "ael.tab.c"
#line 1603 "ael.tab.c"
break;
case 75: /* "opt_else" */
#line 164 "ael.y"
@@ -1614,7 +1607,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1618 "ael.tab.c"
#line 1611 "ael.tab.c"
break;
case 76: /* "target" */
#line 164 "ael.y"
@@ -1622,12 +1615,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1626 "ael.tab.c"
#line 1619 "ael.tab.c"
break;
case 77: /* "opt_pri" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1631 "ael.tab.c"
#line 1624 "ael.tab.c"
break;
case 78: /* "jumptarget" */
#line 164 "ael.y"
@@ -1635,7 +1628,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1639 "ael.tab.c"
#line 1632 "ael.tab.c"
break;
case 79: /* "macro_call" */
#line 164 "ael.y"
@@ -1643,7 +1636,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1647 "ael.tab.c"
#line 1640 "ael.tab.c"
break;
case 81: /* "application_call_head" */
#line 164 "ael.y"
@@ -1651,7 +1644,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1655 "ael.tab.c"
#line 1648 "ael.tab.c"
break;
case 83: /* "application_call" */
#line 164 "ael.y"
@@ -1659,12 +1652,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1663 "ael.tab.c"
#line 1656 "ael.tab.c"
break;
case 84: /* "opt_word" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
#line 1668 "ael.tab.c"
#line 1661 "ael.tab.c"
break;
case 85: /* "eval_arglist" */
#line 164 "ael.y"
@@ -1672,7 +1665,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1676 "ael.tab.c"
#line 1669 "ael.tab.c"
break;
case 86: /* "case_statements" */
#line 164 "ael.y"
@@ -1680,7 +1673,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1684 "ael.tab.c"
#line 1677 "ael.tab.c"
break;
case 87: /* "case_statement" */
#line 164 "ael.y"
@@ -1688,7 +1681,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1692 "ael.tab.c"
#line 1685 "ael.tab.c"
break;
case 88: /* "macro_statements" */
#line 164 "ael.y"
@@ -1696,7 +1689,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1700 "ael.tab.c"
#line 1693 "ael.tab.c"
break;
case 89: /* "macro_statement" */
#line 164 "ael.y"
@@ -1704,7 +1697,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1708 "ael.tab.c"
#line 1701 "ael.tab.c"
break;
case 90: /* "switches" */
#line 164 "ael.y"
@@ -1712,7 +1705,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1716 "ael.tab.c"
#line 1709 "ael.tab.c"
break;
case 91: /* "eswitches" */
#line 164 "ael.y"
@@ -1720,7 +1713,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1724 "ael.tab.c"
#line 1717 "ael.tab.c"
break;
case 92: /* "switchlist" */
#line 164 "ael.y"
@@ -1728,7 +1721,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1732 "ael.tab.c"
#line 1725 "ael.tab.c"
break;
case 93: /* "included_entry" */
#line 164 "ael.y"
@@ -1736,7 +1729,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1740 "ael.tab.c"
#line 1733 "ael.tab.c"
break;
case 94: /* "includeslist" */
#line 164 "ael.y"
@@ -1744,7 +1737,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1748 "ael.tab.c"
#line 1741 "ael.tab.c"
break;
case 95: /* "includes" */
#line 164 "ael.y"
@@ -1752,7 +1745,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1756 "ael.tab.c"
#line 1749 "ael.tab.c"
break;
default:
@@ -2178,7 +2171,7 @@ yyreduce:
case 19:
#line 236 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
{(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
case 20:
@@ -2226,7 +2219,7 @@ yyreduce:
case 28:
#line 254 "ael.y"
{ (yyval.pval)=(yyvsp[(1) - (2)].pval);;}
{ (yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
case 29:
@@ -2324,7 +2317,7 @@ yyreduce:
case 44:
#line 298 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
{(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
case 45:
@@ -2890,7 +2883,7 @@ yyreduce:
case 126:
#line 601 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
{(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
case 127:
@@ -2936,7 +2929,7 @@ yyreduce:
/* Line 1270 of yacc.c. */
#line 2940 "ael.tab.c"
#line 2933 "ael.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

View File

@@ -153,7 +153,7 @@ static pval *update_last(pval *, YYLTYPE *);
/* there will be two shift/reduce conflicts, they involve the if statement, where a single statement occurs not wrapped in curlies in the "true" section
the default action to shift will attach the else to the preceeding if. */
%expect 8
%expect 3
%error-verbose
/*
@@ -233,7 +233,7 @@ globals : KW_GLOBALS LC global_statements RC {
global_statements : { $$ = NULL; }
| assignment global_statements {$$ = linku1($1, $2); }
| global_statements error {$$=$1;}
| error global_statements {$$=$2;}
;
assignment : word EQ { reset_semicount(parseio->scanner); } word SEMI {
@@ -251,7 +251,7 @@ arglist : /* empty */ { $$ = NULL; }
elements : {$$=0;}
| element elements { $$ = linku1($1, $2); }
| elements error { $$=$1;}
| error elements { $$=$2;}
;
element : extension {$$=$1;}
@@ -295,7 +295,7 @@ extension : word EXTENMARK statement {
/* list of statements in a block or after a case label - can be empty */
statements : /* empty */ { $$ = NULL; }
| statement statements { $$ = linku1($1, $2); }
| statements error {$$=$1;}
| error statements {$$=$2;}
;
/* hh:mm-hh:mm, due to the way the parser works we do not
@@ -469,7 +469,7 @@ statement : LC statements RC {
opt_else : KW_ELSE statement { $$ = $2; }
| { $$ = NULL ; }
target : goto_word { $$ = nword($1, &@1); }
| goto_word BAR goto_word {
$$ = nword($1, &@1);
@@ -598,7 +598,7 @@ switchlist : /* empty */ { $$ = NULL; }
| word SEMI switchlist { $$ = linku1(nword($1, &@1), $3); }
| word AT word SEMI switchlist { char *x; asprintf(&x,"%s@%s", $1,$3); free($1); free($3);
$$ = linku1(nword(x, &@1), $5);}
| switchlist error {$$=$1;}
| error switchlist {$$=$2;}
;
included_entry : context_name { $$ = nword($1, &@1); }