From 5d3035b69ea6c895b47eb0b9b67db07c0af58b4f Mon Sep 17 00:00:00 2001 From: murf Date: Fri, 24 Aug 2007 13:20:18 +0000 Subject: 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: http://svn.digium.com/svn/asterisk/branches/1.4@80689 f38db490-d61c-443f-a65b-d21fe96a405b --- pbx/ael/ael-test/ref.ael-test6 | 21 +- pbx/ael/ael.tab.c | 433 ++++++++++++++++++++--------------------- pbx/ael/ael.y | 12 +- 3 files changed, 230 insertions(+), 236 deletions(-) (limited to 'pbx/ael') diff --git a/pbx/ael/ael-test/ref.ael-test6 b/pbx/ael/ael-test/ref.ael-test6 index b525d44f5..d63a78610 100644 --- a/pbx/ael/ael-test/ref.ael-test6 +++ b/pbx/ael/ael-test/ref.ael-test6 @@ -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 diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c index c5beb7b2f..cca6a39be 100644 --- a/pbx/ael/ael.tab.c +++ b/pbx/ael/ael.tab.c @@ -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); diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y index 9c332dc03..04df00c1a 100644 --- a/pbx/ael/ael.y +++ b/pbx/ael/ael.y @@ -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); } -- cgit v1.2.3