aboutsummaryrefslogtreecommitdiffstats
path: root/pbx
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2009-02-18 22:43:14 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2009-02-18 22:43:14 +0000
commitc34b77f216b53c4bfbd6c008b8573d6cb6753722 (patch)
tree7e7b13035ccbc5bccb0073a618461bbc2beb7f06 /pbx
parentc79298cc220361483baf3b9fe4352841352a3e92 (diff)
This patch fixes a regression of sorts that was introduced in
rev 24425. It basically fixes AST-190/ABE-1782. What was wrong: the user has 6000 extensions in one context; and then 6000 contexts, one per extension. The parser could only handle about 4893 of the 6000 extens in the single context. This was due to the regression I mentioned. To get rid of shift/reduce conflicts, Luigi set up right-recursive lists for globals, context elements, switch lists, and statements. Right recursive lists got rid of the warnings, but instead, they use up a tremendous amount of stack space when the lists are long. I saw this a few years back, and resolved not to fix it until someone complained. That day has arrived! After the changes were made, I ran the regression test suite, and there were no problems. I took the test case the user provided, and added 100,000 extensions to the single context, that already had 6,000 extens in it. (I'll see your 6, and raise you 100!) It takes a few minutes to read it all in, check it and generate code for it, but no problems. So, I think I can say that fundamentally, there are no longer any limits on the number of items you can place in contexts, statement blocks, switches, or globals, beyond your virt mem constraints. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@177225 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r--pbx/ael/ael.tab.c421
-rw-r--r--pbx/ael/ael.y24
2 files changed, 225 insertions, 220 deletions
diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c
index 189537017..44ca3f2a9 100644
--- a/pbx/ael/ael.tab.c
+++ b/pbx/ael/ael.tab.c
@@ -506,7 +506,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 17
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 311
+#define YYLAST 350
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 43
@@ -515,7 +515,7 @@ union yyalloc
/* YYNRULES -- Number of rules. */
#define YYNRULES 137
/* YYNRULES -- Number of states. */
-#define YYNSTATES 276
+#define YYNSTATES 269
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -588,15 +588,15 @@ static const yytype_int8 yyrhs[] =
-1, 42, -1, 37, -1, 49, 3, 47, 4, 56,
5, -1, 23, -1, -1, 24, -1, 24, 23, -1,
23, 24, -1, 15, 42, 6, 55, 7, 4, 89,
- 5, -1, 16, 4, 52, 5, -1, -1, 53, 52,
+ 5, -1, 16, 4, 52, 5, -1, -1, 52, 53,
-1, 1, 52, -1, -1, 42, 9, 54, 42, 8,
-1, -1, 42, -1, 55, 10, 42, -1, 55, 1,
- -1, -1, 57, 56, -1, 1, 56, -1, 59, -1,
+ -1, -1, 56, 57, -1, 1, 56, -1, 59, -1,
96, -1, 91, -1, 92, -1, 58, -1, 53, -1,
42, 1, -1, 8, -1, 17, 25, 42, 8, -1,
42, 25, 71, -1, 31, 42, 25, 71, -1, 32,
6, 67, 7, 42, 25, 71, -1, 31, 32, 6,
- 67, 7, 42, 25, 71, -1, -1, 71, 60, -1,
+ 67, 7, 42, 25, 71, -1, -1, 60, 71, -1,
1, 60, -1, 68, 11, 68, 11, 68, -1, 42,
-1, 61, 13, 68, 13, 68, 13, 68, -1, -1,
6, 64, 66, 7, -1, 19, 63, -1, 22, 63,
@@ -620,12 +620,12 @@ static const yytype_int8 yyrhs[] =
42, 6, 81, 86, 7, -1, 42, 6, 7, -1,
-1, 42, 6, 83, -1, 82, 86, 7, -1, 82,
7, -1, 42, -1, -1, 66, -1, -1, 86, 10,
- 85, -1, -1, 88, 87, -1, 35, 42, 11, 60,
+ 85, -1, -1, 87, 88, -1, 35, 42, 11, 60,
-1, 37, 11, 60, -1, 36, 42, 11, 60, -1,
- -1, 90, 89, -1, 71, -1, 96, -1, 38, 42,
+ -1, 89, 90, -1, 71, -1, 96, -1, 38, 42,
4, 60, 5, -1, 39, 4, 93, 5, -1, 40,
- 4, 93, 5, -1, -1, 42, 8, 93, -1, 42,
- 14, 42, 8, 93, -1, 1, 93, -1, 47, -1,
+ 4, 93, 5, -1, -1, 93, 42, 8, -1, 93,
+ 42, 14, 42, 8, -1, 1, 93, -1, 47, -1,
47, 13, 62, -1, 94, 8, -1, 95, 94, 8,
-1, 95, 1, -1, 41, 4, 95, 5, -1, 41,
4, 5, -1
@@ -735,89 +735,87 @@ static const yytype_uint8 yydefact[] =
{
14, 9, 0, 0, 13, 15, 0, 0, 3, 6,
0, 7, 8, 0, 0, 17, 16, 1, 5, 4,
- 0, 25, 0, 0, 0, 0, 11, 10, 0, 26,
- 0, 22, 23, 19, 21, 0, 28, 0, 0, 0,
- 0, 39, 0, 0, 0, 0, 0, 0, 0, 37,
- 0, 0, 36, 32, 34, 35, 33, 120, 27, 0,
- 31, 0, 0, 0, 0, 0, 0, 0, 38, 0,
- 12, 30, 0, 89, 0, 0, 0, 0, 0, 0,
+ 0, 25, 0, 0, 11, 10, 0, 26, 0, 22,
+ 19, 0, 21, 0, 28, 0, 0, 23, 0, 0,
+ 120, 27, 0, 31, 12, 39, 0, 0, 0, 0,
+ 0, 0, 0, 37, 30, 36, 32, 34, 35, 33,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
+ 0, 0, 18, 89, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 70, 0,
- 79, 122, 113, 0, 0, 120, 123, 24, 0, 0,
- 0, 58, 0, 0, 0, 0, 0, 137, 131, 0,
- 0, 41, 0, 0, 0, 0, 0, 51, 0, 53,
- 0, 54, 0, 65, 92, 0, 99, 0, 86, 85,
- 87, 74, 0, 0, 106, 82, 73, 91, 109, 56,
- 112, 0, 81, 83, 18, 121, 40, 0, 42, 0,
- 0, 0, 59, 130, 0, 0, 125, 126, 0, 133,
- 135, 136, 0, 47, 69, 46, 103, 80, 0, 115,
- 49, 0, 0, 0, 0, 0, 66, 0, 0, 0,
- 71, 0, 101, 72, 0, 78, 0, 107, 0, 88,
- 57, 108, 111, 0, 0, 0, 60, 61, 128, 0,
- 132, 134, 105, 113, 0, 0, 0, 0, 0, 115,
+ 79, 122, 113, 0, 121, 123, 24, 0, 0, 0,
+ 58, 0, 0, 0, 0, 137, 131, 0, 0, 41,
+ 0, 0, 0, 0, 51, 0, 53, 0, 54, 0,
+ 65, 92, 0, 99, 0, 86, 85, 87, 74, 0,
+ 0, 106, 82, 73, 91, 109, 56, 112, 0, 81,
+ 83, 40, 0, 42, 0, 0, 0, 59, 130, 125,
+ 0, 126, 0, 133, 135, 136, 0, 47, 69, 46,
+ 103, 80, 0, 115, 49, 0, 0, 0, 0, 0,
+ 66, 0, 0, 0, 71, 0, 101, 72, 0, 78,
+ 0, 107, 0, 88, 57, 108, 111, 0, 0, 0,
+ 60, 61, 128, 0, 132, 134, 105, 113, 0, 0,
63, 0, 55, 0, 0, 0, 94, 67, 93, 100,
0, 0, 0, 90, 110, 114, 0, 0, 0, 0,
- 0, 52, 0, 0, 0, 68, 116, 64, 62, 0,
+ 0, 52, 68, 0, 0, 0, 116, 64, 62, 0,
0, 0, 0, 0, 0, 102, 75, 124, 84, 0,
- 43, 129, 104, 0, 0, 118, 0, 0, 98, 97,
- 96, 95, 0, 44, 117, 119, 0, 48, 0, 0,
- 76, 50, 0, 0, 0, 77
+ 43, 129, 104, 0, 0, 0, 0, 0, 98, 97,
+ 96, 95, 0, 44, 0, 0, 118, 0, 48, 0,
+ 117, 119, 0, 76, 50, 0, 0, 0, 77
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 6, 7, 8, 108, 9, 10, 11, 12, 24,
- 88, 39, 30, 50, 51, 52, 53, 113, 171, 172,
- 118, 168, 89, 140, 102, 173, 124, 90, 114, 184,
- 262, 272, 193, 189, 125, 182, 127, 116, 203, 92,
- 187, 93, 225, 141, 208, 209, 94, 95, 54, 55,
- 105, 109, 110, 56
+ -1, 6, 7, 8, 106, 9, 10, 11, 12, 23,
+ 88, 42, 28, 39, 54, 55, 56, 111, 165, 166,
+ 115, 162, 89, 137, 101, 167, 121, 90, 159, 178,
+ 252, 265, 187, 183, 122, 176, 124, 113, 197, 92,
+ 181, 93, 215, 138, 199, 226, 60, 94, 57, 58,
+ 103, 107, 108, 59
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -206
+#define YYPACT_NINF -198
static const yytype_int16 yypact[] =
{
- 65, -206, 2, 64, -1, 70, 84, 231, -206, -206,
- 108, -206, -206, 120, 13, -206, -206, -206, -206, -206,
- 29, 88, 13, 130, 163, 13, -206, -206, 165, -206,
- 75, -206, -206, -206, -206, 8, -206, 171, 134, 136,
- 8, -206, 154, -22, 178, 182, 186, 189, 61, -206,
- 200, 8, -206, -206, -206, -206, -206, 169, -206, 198,
- -206, 152, 203, 187, 177, 14, 14, 23, -206, 196,
- -206, -206, 128, -206, 179, 207, 207, 214, 207, 58,
- 185, 220, 225, 227, 230, 207, 195, 174, -206, 196,
- -206, -206, 17, 94, 235, 169, -206, -206, 233, 177,
- 196, -206, 19, 14, 55, 237, 238, -206, 232, 236,
- 16, -206, 86, 243, 86, 244, 241, -206, 247, -206,
- 210, -206, 97, 211, 24, 248, 107, 249, -206, -206,
- -206, -206, 196, 254, -206, -206, -206, 239, -206, 217,
- -206, 117, -206, -206, -206, -206, -206, 67, -206, 219,
- 221, 222, -206, -206, 14, 223, -206, -206, 210, -206,
- -206, -206, 258, -206, -206, -206, 255, -206, 226, 106,
- 0, 256, 260, 259, 185, 185, -206, 185, 229, 185,
- -206, 234, 261, -206, 240, -206, 128, -206, 196, -206,
- -206, -206, 242, 245, 246, 252, -206, -206, -206, 264,
- -206, -206, -206, 226, 266, 250, 251, 263, 273, 106,
- 253, 257, -206, 257, 142, 138, 149, -206, 161, -206,
- 29, 271, 275, -206, -206, -206, 277, 265, 196, 14,
- 127, -206, 270, 272, 86, -206, -206, -206, 262, 276,
- 280, 185, 185, 185, 185, -206, -206, -206, -206, 196,
- -206, -206, -206, 86, 86, -206, 257, 257, 283, 283,
- 283, 283, 267, -206, -206, -206, 284, -206, 278, 257,
- -206, -206, 268, 289, 196, -206
+ 169, -198, -27, 112, 77, 106, 140, 303, -198, -198,
+ 142, -198, -198, 114, 16, -198, -198, -198, -198, -198,
+ 38, 94, 16, 0, -198, -198, 166, -198, 71, 115,
+ -198, 165, -198, 120, -198, 171, 147, -198, 120, 92,
+ -198, -198, 157, 260, -198, -198, 175, -14, 172, 178,
+ 199, 207, 73, -198, -198, -198, -198, -198, -198, -198,
+ 168, 206, 174, 211, 196, 181, 26, 26, 20, -198,
+ 254, 84, -198, -198, 182, 219, 219, 230, 219, 42,
+ 195, 232, 233, 235, 238, 219, 208, 133, -198, 254,
+ -198, -198, 25, 78, -198, -198, -198, 240, 181, 254,
+ -198, 1, 26, 28, 29, -198, 225, 243, 19, -198,
+ 18, 200, 246, 251, -198, 259, -198, 222, -198, 117,
+ 223, 158, 262, 97, 263, -198, -198, -198, -198, 254,
+ 271, -198, -198, -198, 257, -198, 237, -198, 4, -198,
+ -198, -198, 52, -198, 244, 247, 248, -198, 252, -198,
+ 69, -198, 222, -198, -198, -198, 277, 254, -198, -198,
+ 286, -198, 253, -198, 24, 284, 291, 256, 195, 195,
+ -198, 195, 265, 195, -198, 266, 295, -198, 268, -198,
+ 84, -198, 254, -198, -198, -198, 270, 272, 273, 280,
+ -198, -198, -198, 274, -198, -198, -198, 253, 306, 130,
+ 275, 278, -198, 278, 139, 170, 153, -198, 202, -198,
+ 38, 313, 227, -198, -198, -198, 314, 298, 254, 316,
+ 136, -198, -198, 283, 287, 317, -198, -198, 288, 318,
+ 321, 195, 195, 195, 195, -198, -198, -198, -198, 254,
+ -198, -198, -198, 322, 323, 18, 278, 278, 324, 324,
+ 324, 324, 294, -198, 18, 18, 254, 325, -198, 329,
+ 254, 254, 278, -198, -198, 297, 333, 254, -198
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -206, -206, -206, 291, -19, -206, -206, -206, -206, 113,
- 32, -206, -206, -18, -206, -206, -206, -109, -206, 143,
- -49, -206, -206, 132, 204, -205, -78, -206, -57, -206,
- -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
- -206, -206, -206, 99, 96, -206, 212, -206, -206, -206,
- -62, 201, -206, -50
+ -198, -198, -198, 334, -19, -198, -198, -198, -198, 320,
+ 76, -198, -198, 305, -198, -198, -198, -107, -198, 192,
+ -69, -198, -198, 183, 249, -197, -78, -198, -60, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, 149, -198, -198, -198, -198, -198, -198,
+ -26, 241, -198, 290
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -827,74 +825,82 @@ static const yytype_int16 yypgoto[] =
#define YYTABLE_NINF -128
static const yytype_int16 yytable[] =
{
- 91, 28, 126, 163, 106, 165, 239, 96, 240, 40,
- 62, -62, 111, -29, 22, 103, 41, 160, -20, -127,
- 63, 161, 60, 15, 138, 42, 149, 119, 107, 121,
- 150, 151, 137, 71, 177, 178, 132, 179, 91, 43,
- 44, 153, 210, 148, 13, 96, 25, 45, 46, 47,
- 48, 266, 267, 26, 25, 23, 104, 25, 27, 139,
- 26, 152, 68, 154, 271, 27, 26, 49, 14, 155,
- 32, 27, 49, 1, 194, 185, 36, 222, 150, 151,
- 2, 3, 37, 49, 17, 38, 69, 112, 4, 5,
- 72, -45, 198, 16, 73, 122, 214, 215, 74, 216,
- 123, 218, 142, 143, 75, 76, 77, 174, 78, 152,
- 175, 20, 79, 80, 81, 82, 83, 181, 178, 84,
- 85, -45, -45, -45, 191, 255, 21, 192, 87, 112,
- 29, 223, 72, -45, 252, 31, 73, 192, 34, 32,
- 74, 205, 206, 207, 264, 265, 75, 76, 77, 178,
- 78, 242, 241, 178, 79, 80, 81, 82, 83, 243,
- 178, 84, 85, 258, 259, 260, 261, 251, 33, 35,
- 87, 250, 178, 72, 244, 57, 58, 73, 59, 61,
- 134, 74, 135, 32, 64, 136, 65, 75, 76, 77,
- 66, 78, 263, 67, 98, 79, 80, 81, 82, 83,
- 72, 245, 84, 85, 73, 70, 97, 86, 74, 99,
- 47, 87, 100, 117, 75, 76, 77, 275, 78, 101,
- 120, 115, 79, 80, 81, 82, 83, 123, 128, 84,
- 85, -2, 18, 129, -14, 130, 131, 133, 87, 1,
- 144, 146, 156, 157, 159, 158, 2, 3, 164, 167,
- 166, 169, 170, 176, 4, 5, 180, 183, 186, 190,
- 188, 195, 202, 196, 197, 199, 201, 212, 139, 211,
- 213, 217, 229, 231, 234, 220, 219, 228, 235, 246,
- 247, 253, 221, 254, 224, 248, 270, 226, 227, 256,
- 249, 257, 232, 233, 178, 237, 274, 269, 19, 238,
- 204, 200, 230, 147, 210, 236, 0, 145, 0, 268,
- 273, 162
+ 91, 26, 123, 157, 229, 30, 230, 116, 144, 118,
+ 109, 185, 145, 146, 186, 13, 129, 22, 63, 110,
+ 154, -20, -45, -45, 155, 105, -45, 102, 64, 134,
+ -45, -127, 135, 149, 151, -62, -45, -45, -45, 143,
+ -45, 104, 31, 147, -45, -45, -45, -45, -45, 257,
+ 258, -45, -45, -45, -45, -45, 24, 24, -20, 188,
+ -45, 25, 25, 145, 146, 264, 200, 136, -127, 179,
+ 150, 150, 34, 212, 69, 24, 148, 192, 35, 119,
+ 25, 36, 37, 193, 120, 110, 139, 140, -45, -45,
+ 204, 205, -45, 206, 147, 208, -45, 44, 70, 32,
+ 45, 15, -45, -45, -45, 32, -45, 175, 172, 46,
+ -45, -45, -45, -45, -45, 53, 14, -45, -45, 53,
+ 21, 38, 213, 47, 48, -29, -45, 168, -29, 16,
+ 169, 49, 50, 51, 52, 222, 27, -29, 256, 131,
+ 17, 132, 37, 242, 133, 20, 186, 260, 261, 231,
+ 172, -29, -29, 248, 249, 250, 251, 31, 240, -29,
+ -29, -29, -29, 233, 172, 223, 224, 225, 171, 172,
+ 33, 173, 71, 72, 37, 40, 73, 1, 65, 253,
+ 74, 172, 66, 232, 2, 3, 75, 76, 77, 41,
+ 78, 235, 4, 5, 79, 80, 81, 82, 83, 61,
+ 62, 84, 85, 67, 71, 158, 86, 268, 73, 51,
+ 87, 68, 74, 172, 96, 234, 97, 98, 75, 76,
+ 77, 99, 78, 100, 112, 114, 79, 80, 81, 82,
+ 83, 71, 237, 84, 85, 73, 117, 120, 152, 74,
+ 125, 126, 87, 127, 128, 75, 76, 77, 141, 78,
+ 130, 153, 160, 79, 80, 81, 82, 83, 71, 161,
+ 84, 85, 73, 163, 164, 170, 74, 203, 45, 87,
+ 174, 177, 75, 76, 77, 180, 78, 46, 182, 184,
+ 79, 80, 81, 82, 83, 195, 189, 84, 85, 190,
+ 191, 47, 48, 196, 150, 136, 87, 201, 202, 49,
+ 50, 51, 52, -2, 18, 218, -14, 207, 209, 210,
+ 211, 1, 214, 221, 216, 217, 219, 227, 2, 3,
+ 228, 236, 238, 239, 241, 243, 4, 5, 245, 244,
+ 200, 246, 247, 254, 255, 172, 259, 263, 262, 266,
+ 267, 19, 29, 43, 194, 198, 220, 142, 0, 156,
+ 95
};
static const yytype_int16 yycheck[] =
{
- 57, 20, 80, 112, 66, 114, 211, 57, 213, 1,
- 32, 11, 69, 5, 1, 1, 8, 1, 5, 5,
- 42, 5, 40, 24, 7, 17, 7, 76, 5, 78,
- 11, 12, 89, 51, 10, 11, 85, 13, 95, 31,
- 32, 103, 42, 100, 42, 95, 14, 39, 40, 41,
- 42, 256, 257, 37, 22, 42, 42, 25, 42, 42,
- 37, 42, 1, 8, 269, 42, 37, 35, 4, 14,
- 9, 42, 40, 8, 7, 132, 1, 186, 11, 12,
- 15, 16, 7, 51, 0, 10, 25, 1, 23, 24,
- 4, 5, 154, 23, 8, 37, 174, 175, 12, 177,
- 42, 179, 8, 9, 18, 19, 20, 10, 22, 42,
- 13, 3, 26, 27, 28, 29, 30, 10, 11, 33,
- 34, 35, 36, 37, 7, 234, 6, 10, 42, 1,
- 42, 188, 4, 5, 7, 22, 8, 10, 25, 9,
- 12, 35, 36, 37, 253, 254, 18, 19, 20, 11,
- 22, 13, 10, 11, 26, 27, 28, 29, 30, 10,
- 11, 33, 34, 241, 242, 243, 244, 229, 5, 4,
- 42, 228, 11, 4, 13, 4, 42, 8, 42, 25,
- 6, 12, 8, 9, 6, 11, 4, 18, 19, 20,
- 4, 22, 249, 4, 42, 26, 27, 28, 29, 30,
- 4, 220, 33, 34, 8, 5, 8, 38, 12, 6,
- 41, 42, 25, 6, 18, 19, 20, 274, 22, 42,
- 6, 42, 26, 27, 28, 29, 30, 42, 8, 33,
- 34, 0, 1, 8, 3, 8, 6, 42, 42, 8,
- 5, 8, 5, 5, 8, 13, 15, 16, 5, 8,
- 6, 4, 42, 42, 23, 24, 8, 8, 4, 42,
- 21, 42, 7, 42, 42, 42, 8, 7, 42, 13,
- 11, 42, 8, 7, 11, 14, 42, 25, 5, 8,
- 5, 11, 42, 11, 42, 8, 8, 42, 42, 13,
- 25, 11, 42, 42, 11, 42, 7, 13, 7, 42,
- 168, 158, 203, 99, 42, 209, -1, 95, -1, 42,
- 42, 110
+ 60, 20, 80, 110, 201, 5, 203, 76, 7, 78,
+ 70, 7, 11, 12, 10, 42, 85, 1, 32, 1,
+ 1, 5, 4, 5, 5, 5, 8, 1, 42, 89,
+ 12, 5, 7, 5, 5, 11, 18, 19, 20, 99,
+ 22, 67, 42, 42, 26, 27, 28, 29, 30, 246,
+ 247, 33, 34, 35, 36, 37, 37, 37, 42, 7,
+ 42, 42, 42, 11, 12, 262, 42, 42, 42, 129,
+ 42, 42, 1, 180, 1, 37, 102, 8, 7, 37,
+ 42, 10, 9, 14, 42, 1, 8, 9, 4, 5,
+ 168, 169, 8, 171, 42, 173, 12, 5, 25, 23,
+ 8, 24, 18, 19, 20, 29, 22, 10, 11, 17,
+ 26, 27, 28, 29, 30, 39, 4, 33, 34, 43,
+ 6, 1, 182, 31, 32, 5, 42, 10, 8, 23,
+ 13, 39, 40, 41, 42, 5, 42, 17, 245, 6,
+ 0, 8, 9, 7, 11, 3, 10, 254, 255, 10,
+ 11, 31, 32, 231, 232, 233, 234, 42, 218, 39,
+ 40, 41, 42, 10, 11, 35, 36, 37, 10, 11,
+ 4, 13, 4, 5, 9, 4, 8, 8, 6, 239,
+ 12, 11, 4, 13, 15, 16, 18, 19, 20, 42,
+ 22, 210, 23, 24, 26, 27, 28, 29, 30, 42,
+ 25, 33, 34, 4, 4, 5, 38, 267, 8, 41,
+ 42, 4, 12, 11, 8, 13, 42, 6, 18, 19,
+ 20, 25, 22, 42, 42, 6, 26, 27, 28, 29,
+ 30, 4, 5, 33, 34, 8, 6, 42, 13, 12,
+ 8, 8, 42, 8, 6, 18, 19, 20, 8, 22,
+ 42, 8, 6, 26, 27, 28, 29, 30, 4, 8,
+ 33, 34, 8, 4, 42, 42, 12, 11, 8, 42,
+ 8, 8, 18, 19, 20, 4, 22, 17, 21, 42,
+ 26, 27, 28, 29, 30, 8, 42, 33, 34, 42,
+ 42, 31, 32, 7, 42, 42, 42, 13, 7, 39,
+ 40, 41, 42, 0, 1, 25, 3, 42, 42, 14,
+ 42, 8, 42, 7, 42, 42, 42, 42, 15, 16,
+ 42, 8, 8, 25, 8, 42, 23, 24, 11, 42,
+ 42, 13, 11, 11, 11, 11, 42, 8, 13, 42,
+ 7, 7, 22, 38, 152, 162, 197, 98, -1, 108,
+ 60
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -903,32 +909,31 @@ static const yytype_uint8 yystos[] =
{
0, 8, 15, 16, 23, 24, 44, 45, 46, 48,
49, 50, 51, 42, 4, 24, 23, 0, 1, 46,
- 3, 6, 1, 42, 52, 53, 37, 42, 47, 42,
- 55, 52, 9, 5, 52, 4, 1, 7, 10, 54,
- 1, 8, 17, 31, 32, 39, 40, 41, 42, 53,
- 56, 57, 58, 59, 91, 92, 96, 4, 42, 42,
- 56, 25, 32, 42, 6, 4, 4, 4, 1, 25,
- 5, 56, 4, 8, 12, 18, 19, 20, 22, 26,
+ 3, 6, 1, 52, 37, 42, 47, 42, 55, 52,
+ 5, 42, 53, 4, 1, 7, 10, 9, 1, 56,
+ 4, 42, 54, 56, 5, 8, 17, 31, 32, 39,
+ 40, 41, 42, 53, 57, 58, 59, 91, 92, 96,
+ 89, 42, 25, 32, 42, 6, 4, 4, 4, 1,
+ 25, 4, 5, 8, 12, 18, 19, 20, 22, 26,
27, 28, 29, 30, 33, 34, 38, 42, 53, 65,
- 70, 71, 82, 84, 89, 90, 96, 8, 42, 6,
- 25, 42, 67, 1, 42, 93, 93, 5, 47, 94,
- 95, 71, 1, 60, 71, 42, 80, 6, 63, 63,
- 6, 63, 37, 42, 69, 77, 69, 79, 8, 8,
- 8, 6, 63, 42, 6, 8, 11, 71, 7, 42,
- 66, 86, 8, 9, 5, 89, 8, 67, 71, 7,
- 11, 12, 42, 93, 8, 14, 5, 5, 13, 8,
- 1, 5, 94, 60, 5, 60, 6, 8, 64, 4,
- 42, 61, 62, 68, 10, 13, 42, 10, 11, 13,
- 8, 10, 78, 8, 72, 71, 4, 83, 21, 76,
- 42, 7, 10, 75, 7, 42, 42, 42, 93, 42,
- 62, 8, 7, 81, 66, 35, 36, 37, 87, 88,
+ 70, 71, 82, 84, 90, 96, 8, 42, 6, 25,
+ 42, 67, 1, 93, 93, 5, 47, 94, 95, 71,
+ 1, 60, 42, 80, 6, 63, 63, 6, 63, 37,
+ 42, 69, 77, 69, 79, 8, 8, 8, 6, 63,
+ 42, 6, 8, 11, 71, 7, 42, 66, 86, 8,
+ 9, 8, 67, 71, 7, 11, 12, 42, 93, 5,
+ 42, 5, 13, 8, 1, 5, 94, 60, 5, 71,
+ 6, 8, 64, 4, 42, 61, 62, 68, 10, 13,
+ 42, 10, 11, 13, 8, 10, 78, 8, 72, 71,
+ 4, 83, 21, 76, 42, 7, 10, 75, 7, 42,
+ 42, 42, 8, 14, 62, 8, 7, 81, 66, 87,
42, 13, 7, 11, 69, 69, 69, 42, 69, 42,
- 14, 42, 60, 71, 42, 85, 42, 42, 25, 8,
- 86, 7, 42, 42, 11, 5, 87, 42, 42, 68,
+ 14, 42, 60, 71, 42, 85, 42, 42, 25, 42,
+ 86, 7, 5, 35, 36, 37, 88, 42, 42, 68,
68, 10, 13, 10, 13, 47, 8, 5, 8, 25,
- 71, 93, 7, 11, 11, 60, 13, 11, 69, 69,
- 69, 69, 73, 71, 60, 60, 68, 68, 42, 13,
- 8, 68, 74, 42, 7, 71
+ 71, 8, 7, 42, 42, 11, 13, 11, 69, 69,
+ 69, 69, 73, 71, 11, 11, 60, 68, 68, 42,
+ 60, 60, 13, 8, 68, 74, 42, 7, 71
};
#define yyerrok (yyerrstatus = 0)
@@ -1453,7 +1458,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
case 42: /* "word" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1457 "ael.tab.c"
+#line 1462 "ael.tab.c"
break;
case 45: /* "objects" */
#line 166 "ael.y"
@@ -1461,7 +1466,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1465 "ael.tab.c"
+#line 1470 "ael.tab.c"
break;
case 46: /* "object" */
#line 166 "ael.y"
@@ -1469,12 +1474,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1473 "ael.tab.c"
+#line 1478 "ael.tab.c"
break;
case 47: /* "context_name" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1478 "ael.tab.c"
+#line 1483 "ael.tab.c"
break;
case 48: /* "context" */
#line 166 "ael.y"
@@ -1482,7 +1487,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1486 "ael.tab.c"
+#line 1491 "ael.tab.c"
break;
case 50: /* "macro" */
#line 166 "ael.y"
@@ -1490,7 +1495,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1494 "ael.tab.c"
+#line 1499 "ael.tab.c"
break;
case 51: /* "globals" */
#line 166 "ael.y"
@@ -1498,7 +1503,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1502 "ael.tab.c"
+#line 1507 "ael.tab.c"
break;
case 52: /* "global_statements" */
#line 166 "ael.y"
@@ -1506,7 +1511,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1510 "ael.tab.c"
+#line 1515 "ael.tab.c"
break;
case 53: /* "assignment" */
#line 166 "ael.y"
@@ -1514,7 +1519,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1518 "ael.tab.c"
+#line 1523 "ael.tab.c"
break;
case 55: /* "arglist" */
#line 166 "ael.y"
@@ -1522,7 +1527,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1526 "ael.tab.c"
+#line 1531 "ael.tab.c"
break;
case 56: /* "elements" */
#line 166 "ael.y"
@@ -1530,7 +1535,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1534 "ael.tab.c"
+#line 1539 "ael.tab.c"
break;
case 57: /* "element" */
#line 166 "ael.y"
@@ -1538,7 +1543,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1542 "ael.tab.c"
+#line 1547 "ael.tab.c"
break;
case 58: /* "ignorepat" */
#line 166 "ael.y"
@@ -1546,7 +1551,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1550 "ael.tab.c"
+#line 1555 "ael.tab.c"
break;
case 59: /* "extension" */
#line 166 "ael.y"
@@ -1554,7 +1559,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1558 "ael.tab.c"
+#line 1563 "ael.tab.c"
break;
case 60: /* "statements" */
#line 166 "ael.y"
@@ -1562,12 +1567,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1566 "ael.tab.c"
+#line 1571 "ael.tab.c"
break;
case 61: /* "timerange" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1571 "ael.tab.c"
+#line 1576 "ael.tab.c"
break;
case 62: /* "timespec" */
#line 166 "ael.y"
@@ -1575,12 +1580,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1579 "ael.tab.c"
+#line 1584 "ael.tab.c"
break;
case 63: /* "test_expr" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1584 "ael.tab.c"
+#line 1589 "ael.tab.c"
break;
case 65: /* "if_like_head" */
#line 166 "ael.y"
@@ -1588,22 +1593,22 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1592 "ael.tab.c"
+#line 1597 "ael.tab.c"
break;
case 66: /* "word_list" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1597 "ael.tab.c"
+#line 1602 "ael.tab.c"
break;
case 68: /* "word3_list" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1602 "ael.tab.c"
+#line 1607 "ael.tab.c"
break;
case 69: /* "goto_word" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1607 "ael.tab.c"
+#line 1612 "ael.tab.c"
break;
case 70: /* "switch_statement" */
#line 166 "ael.y"
@@ -1611,7 +1616,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1615 "ael.tab.c"
+#line 1620 "ael.tab.c"
break;
case 71: /* "statement" */
#line 166 "ael.y"
@@ -1619,7 +1624,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1623 "ael.tab.c"
+#line 1628 "ael.tab.c"
break;
case 76: /* "opt_else" */
#line 166 "ael.y"
@@ -1627,7 +1632,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1631 "ael.tab.c"
+#line 1636 "ael.tab.c"
break;
case 77: /* "target" */
#line 166 "ael.y"
@@ -1635,12 +1640,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1639 "ael.tab.c"
+#line 1644 "ael.tab.c"
break;
case 78: /* "opt_pri" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1644 "ael.tab.c"
+#line 1649 "ael.tab.c"
break;
case 79: /* "jumptarget" */
#line 166 "ael.y"
@@ -1648,7 +1653,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1652 "ael.tab.c"
+#line 1657 "ael.tab.c"
break;
case 80: /* "macro_call" */
#line 166 "ael.y"
@@ -1656,7 +1661,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1660 "ael.tab.c"
+#line 1665 "ael.tab.c"
break;
case 82: /* "application_call_head" */
#line 166 "ael.y"
@@ -1664,7 +1669,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1668 "ael.tab.c"
+#line 1673 "ael.tab.c"
break;
case 84: /* "application_call" */
#line 166 "ael.y"
@@ -1672,12 +1677,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1676 "ael.tab.c"
+#line 1681 "ael.tab.c"
break;
case 85: /* "opt_word" */
#line 179 "ael.y"
{ free((yyvaluep->str));};
-#line 1681 "ael.tab.c"
+#line 1686 "ael.tab.c"
break;
case 86: /* "eval_arglist" */
#line 166 "ael.y"
@@ -1685,7 +1690,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1689 "ael.tab.c"
+#line 1694 "ael.tab.c"
break;
case 87: /* "case_statements" */
#line 166 "ael.y"
@@ -1693,7 +1698,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1697 "ael.tab.c"
+#line 1702 "ael.tab.c"
break;
case 88: /* "case_statement" */
#line 166 "ael.y"
@@ -1701,7 +1706,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1705 "ael.tab.c"
+#line 1710 "ael.tab.c"
break;
case 89: /* "macro_statements" */
#line 166 "ael.y"
@@ -1709,7 +1714,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1713 "ael.tab.c"
+#line 1718 "ael.tab.c"
break;
case 90: /* "macro_statement" */
#line 166 "ael.y"
@@ -1717,7 +1722,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1721 "ael.tab.c"
+#line 1726 "ael.tab.c"
break;
case 91: /* "switches" */
#line 166 "ael.y"
@@ -1725,7 +1730,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1729 "ael.tab.c"
+#line 1734 "ael.tab.c"
break;
case 92: /* "eswitches" */
#line 166 "ael.y"
@@ -1733,7 +1738,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1737 "ael.tab.c"
+#line 1742 "ael.tab.c"
break;
case 93: /* "switchlist" */
#line 166 "ael.y"
@@ -1741,7 +1746,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1745 "ael.tab.c"
+#line 1750 "ael.tab.c"
break;
case 94: /* "included_entry" */
#line 166 "ael.y"
@@ -1749,7 +1754,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1753 "ael.tab.c"
+#line 1758 "ael.tab.c"
break;
case 95: /* "includeslist" */
#line 166 "ael.y"
@@ -1757,7 +1762,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1761 "ael.tab.c"
+#line 1766 "ael.tab.c"
break;
case 96: /* "includes" */
#line 166 "ael.y"
@@ -1765,7 +1770,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1769 "ael.tab.c"
+#line 1774 "ael.tab.c"
break;
default:
@@ -2954,20 +2959,20 @@ yyreduce:
case 128:
#line 646 "ael.y"
- { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
+ { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;}
break;
case 129:
#line 647 "ael.y"
{
char *x;
- if (asprintf(&x,"%s@%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str)) < 0) {
+ if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) {
ast_log(LOG_WARNING, "asprintf() failed\n");
(yyval.pval) = NULL;
} else {
- free((yyvsp[(1) - (5)].str));
- free((yyvsp[(3) - (5)].str));
- (yyval.pval) = linku1(nword(x, &(yylsp[(1) - (5)])), (yyvsp[(5) - (5)].pval));
+ free((yyvsp[(2) - (5)].str));
+ free((yyvsp[(4) - (5)].str));
+ (yyval.pval) = linku1((yyvsp[(1) - (5)].pval),nword(x, &(yylsp[(2) - (5)])));
}
;}
break;
@@ -3020,7 +3025,7 @@ yyreduce:
/* Line 1267 of yacc.c. */
-#line 3024 "ael.tab.c"
+#line 3029 "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 7ff058b91..e2ddda1ad 100644
--- a/pbx/ael/ael.y
+++ b/pbx/ael/ael.y
@@ -155,7 +155,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 3
+%expect 28
%error-verbose
/*
@@ -231,7 +231,7 @@ globals : KW_GLOBALS LC global_statements RC {
;
global_statements : { $$ = NULL; }
- | assignment global_statements {$$ = linku1($1, $2); }
+ | global_statements assignment {$$ = linku1($1, $2); }
| error global_statements {$$=$2;}
;
@@ -249,7 +249,7 @@ arglist : /* empty */ { $$ = NULL; }
;
elements : {$$=0;}
- | element elements { $$ = linku1($1, $2); }
+ | elements element { $$ = linku1($1, $2); }
| error elements { $$=$2;}
;
@@ -293,7 +293,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 statement { $$ = linku1($1, $2); }
| error statements {$$=$2;}
;
@@ -603,7 +603,7 @@ eval_arglist : word_list { $$ = nword($1, &@1); }
;
case_statements: /* empty */ { $$ = NULL; }
- | case_statement case_statements { $$ = linku1($1, $2); }
+ | case_statements case_statement { $$ = linku1($1, $2); }
;
case_statement: KW_CASE word COLON statements {
@@ -621,7 +621,7 @@ case_statement: KW_CASE word COLON statements {
;
macro_statements: /* empty */ { $$ = NULL; }
- | macro_statement macro_statements { $$ = linku1($1, $2); }
+ | macro_statements macro_statement { $$ = linku1($1, $2); }
;
macro_statement : statement {$$=$1;}
@@ -643,16 +643,16 @@ eswitches : KW_ESWITCHES LC switchlist RC {
;
switchlist : /* empty */ { $$ = NULL; }
- | word SEMI switchlist { $$ = linku1(nword($1, &@1), $3); }
- | word AT word SEMI switchlist {
+ | switchlist word SEMI { $$ = linku1($1,nword($2, &@2)); }
+ | switchlist word AT word SEMI {
char *x;
- if (asprintf(&x,"%s@%s", $1, $3) < 0) {
+ if (asprintf(&x,"%s@%s", $2, $4) < 0) {
ast_log(LOG_WARNING, "asprintf() failed\n");
$$ = NULL;
} else {
- free($1);
- free($3);
- $$ = linku1(nword(x, &@1), $5);
+ free($2);
+ free($4);
+ $$ = linku1($1,nword(x, &@2));
}
}
| error switchlist {$$=$2;}