From 38baf534db6b8e186f6da5bbb7c485756da2846c Mon Sep 17 00:00:00 2001 From: seanbright Date: Mon, 20 Apr 2009 20:58:39 +0000 Subject: Properly handle @s within hints in AEL. AEL was not handling the case of a device hint containing an @ symbol, which caused parking hints (e.g. hint(park:exten@context)) to error out the parser. This patch makes AEL treat the @ the same way it treats colon and ampersand now, meaning the characters are included in verbatim. (closes issue #14941) Reported by: bpgoldsb Patches: bug14941.patch uploaded by seanbright (license 71) Tested by: bpgoldsb git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@189462 f38db490-d61c-443f-a65b-d21fe96a405b --- pbx/ael/ael.tab.c | 820 ++++++++++++++++++++++++++++-------------------------- pbx/ael/ael.y | 9 + 2 files changed, 427 insertions(+), 402 deletions(-) (limited to 'pbx/ael') diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c index 44ca3f2a9..941e334ec 100644 --- a/pbx/ael/ael.tab.c +++ b/pbx/ael/ael.tab.c @@ -506,16 +506,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 17 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 350 +#define YYLAST 353 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 43 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 54 /* YYNRULES -- Number of rules. */ -#define YYNRULES 137 +#define YYNRULES 138 /* YYNRULES -- Number of states. */ -#define YYNSTATES 269 +#define YYNSTATES 271 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -570,14 +570,14 @@ static const yytype_uint16 yyprhs[] = 82, 85, 88, 90, 92, 94, 96, 98, 100, 103, 105, 110, 114, 119, 127, 136, 137, 140, 143, 149, 151, 159, 160, 165, 168, 171, 176, 178, 181, 183, - 186, 190, 194, 196, 199, 203, 205, 208, 212, 218, - 222, 224, 228, 232, 235, 236, 237, 238, 251, 255, - 257, 261, 264, 267, 268, 274, 277, 280, 283, 287, - 289, 292, 293, 295, 299, 303, 309, 315, 321, 327, - 328, 331, 334, 339, 340, 346, 350, 351, 355, 359, - 362, 364, 365, 367, 368, 372, 373, 376, 381, 385, - 390, 391, 394, 396, 398, 404, 409, 414, 415, 419, - 425, 428, 430, 434, 437, 441, 444, 449 + 186, 190, 194, 198, 200, 203, 207, 209, 212, 216, + 222, 226, 228, 232, 236, 239, 240, 241, 242, 255, + 259, 261, 265, 268, 271, 272, 278, 281, 284, 287, + 291, 293, 296, 297, 299, 303, 307, 313, 319, 325, + 331, 332, 335, 338, 343, 344, 350, 354, 355, 359, + 363, 366, 368, 369, 371, 372, 376, 377, 380, 385, + 389, 394, 395, 398, 400, 402, 408, 413, 418, 419, + 423, 429, 432, 434, 438, 441, 445, 448, 453 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -602,33 +602,33 @@ static const yytype_int8 yyrhs[] = 6, 64, 66, 7, -1, 19, 63, -1, 22, 63, -1, 20, 6, 62, 7, -1, 42, -1, 42, 42, -1, 42, -1, 67, 42, -1, 67, 11, 42, -1, - 67, 12, 42, -1, 42, -1, 42, 42, -1, 42, - 42, 42, -1, 42, -1, 42, 42, -1, 69, 11, - 42, -1, 18, 63, 4, 87, 5, -1, 4, 60, - 5, -1, 53, -1, 26, 77, 8, -1, 27, 79, - 8, -1, 42, 11, -1, -1, -1, -1, 33, 6, - 72, 42, 8, 73, 42, 8, 74, 42, 7, 71, - -1, 34, 63, 71, -1, 70, -1, 12, 80, 8, - -1, 84, 8, -1, 42, 8, -1, -1, 84, 9, - 75, 42, 8, -1, 29, 8, -1, 28, 8, -1, - 30, 8, -1, 65, 71, 76, -1, 8, -1, 21, - 71, -1, -1, 69, -1, 69, 13, 69, -1, 69, - 10, 69, -1, 69, 13, 69, 13, 69, -1, 69, - 10, 69, 10, 69, -1, 37, 13, 69, 13, 69, - -1, 37, 10, 69, 10, 69, -1, -1, 10, 42, - -1, 69, 78, -1, 69, 78, 14, 47, -1, -1, - 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, 87, 88, -1, 35, 42, 11, 60, - -1, 37, 11, 60, -1, 36, 42, 11, 60, -1, - -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, 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 + 67, 12, 42, -1, 67, 14, 42, -1, 42, -1, + 42, 42, -1, 42, 42, 42, -1, 42, -1, 42, + 42, -1, 69, 11, 42, -1, 18, 63, 4, 87, + 5, -1, 4, 60, 5, -1, 53, -1, 26, 77, + 8, -1, 27, 79, 8, -1, 42, 11, -1, -1, + -1, -1, 33, 6, 72, 42, 8, 73, 42, 8, + 74, 42, 7, 71, -1, 34, 63, 71, -1, 70, + -1, 12, 80, 8, -1, 84, 8, -1, 42, 8, + -1, -1, 84, 9, 75, 42, 8, -1, 29, 8, + -1, 28, 8, -1, 30, 8, -1, 65, 71, 76, + -1, 8, -1, 21, 71, -1, -1, 69, -1, 69, + 13, 69, -1, 69, 10, 69, -1, 69, 13, 69, + 13, 69, -1, 69, 10, 69, 10, 69, -1, 37, + 13, 69, 13, 69, -1, 37, 10, 69, 10, 69, + -1, -1, 10, 42, -1, 69, 78, -1, 69, 78, + 14, 47, -1, -1, 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, 87, 88, -1, + 35, 42, 11, 60, -1, 37, 11, 60, -1, 36, + 42, 11, 60, -1, -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, 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 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -640,14 +640,14 @@ static const yytype_uint16 yyrline[] = 252, 253, 256, 257, 258, 259, 260, 261, 262, 263, 266, 271, 275, 280, 285, 295, 296, 297, 303, 313, 317, 325, 325, 329, 332, 335, 346, 347, 359, 360, - 369, 378, 389, 390, 400, 413, 414, 423, 434, 443, - 446, 447, 450, 453, 456, 457, 458, 456, 464, 468, - 469, 470, 471, 474, 474, 507, 508, 509, 510, 514, - 517, 518, 521, 522, 525, 528, 532, 536, 540, 546, - 547, 551, 554, 560, 560, 565, 573, 573, 584, 591, - 594, 595, 598, 599, 602, 605, 606, 609, 613, 617, - 623, 624, 627, 628, 629, 635, 640, 645, 646, 647, - 658, 661, 662, 669, 670, 671, 674, 677 + 369, 378, 387, 398, 399, 409, 422, 423, 432, 443, + 452, 455, 456, 459, 462, 465, 466, 467, 465, 473, + 477, 478, 479, 480, 483, 483, 516, 517, 518, 519, + 523, 526, 527, 530, 531, 534, 537, 541, 545, 549, + 555, 556, 560, 563, 569, 569, 574, 582, 582, 593, + 600, 603, 604, 607, 608, 611, 614, 615, 618, 622, + 626, 632, 633, 636, 637, 638, 644, 649, 654, 655, + 656, 667, 670, 671, 678, 679, 680, 683, 686 }; #endif @@ -699,14 +699,14 @@ static const yytype_uint8 yyr1[] = 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 59, 59, 59, 59, 60, 60, 60, 61, 61, 62, 64, 63, 65, 65, 65, 66, 66, 67, 67, - 67, 67, 68, 68, 68, 69, 69, 69, 70, 71, - 71, 71, 71, 71, 72, 73, 74, 71, 71, 71, - 71, 71, 71, 75, 71, 71, 71, 71, 71, 71, - 76, 76, 77, 77, 77, 77, 77, 77, 77, 78, - 78, 79, 79, 81, 80, 80, 83, 82, 84, 84, - 85, 85, 86, 86, 86, 87, 87, 88, 88, 88, - 89, 89, 90, 90, 90, 91, 92, 93, 93, 93, - 93, 94, 94, 95, 95, 95, 96, 96 + 67, 67, 67, 68, 68, 68, 69, 69, 69, 70, + 71, 71, 71, 71, 71, 72, 73, 74, 71, 71, + 71, 71, 71, 71, 75, 71, 71, 71, 71, 71, + 71, 76, 76, 77, 77, 77, 77, 77, 77, 77, + 78, 78, 79, 79, 81, 80, 80, 83, 82, 84, + 84, 85, 85, 86, 86, 86, 87, 87, 88, 88, + 88, 89, 89, 90, 90, 90, 91, 92, 93, 93, + 93, 93, 94, 94, 95, 95, 95, 96, 96 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -718,14 +718,14 @@ static const yytype_uint8 yyr2[] = 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 4, 3, 4, 7, 8, 0, 2, 2, 5, 1, 7, 0, 4, 2, 2, 4, 1, 2, 1, 2, - 3, 3, 1, 2, 3, 1, 2, 3, 5, 3, - 1, 3, 3, 2, 0, 0, 0, 12, 3, 1, - 3, 2, 2, 0, 5, 2, 2, 2, 3, 1, - 2, 0, 1, 3, 3, 5, 5, 5, 5, 0, - 2, 2, 4, 0, 5, 3, 0, 3, 3, 2, - 1, 0, 1, 0, 3, 0, 2, 4, 3, 4, - 0, 2, 1, 1, 5, 4, 4, 0, 3, 5, - 2, 1, 3, 2, 3, 2, 4, 3 + 3, 3, 3, 1, 2, 3, 1, 2, 3, 5, + 3, 1, 3, 3, 2, 0, 0, 0, 12, 3, + 1, 3, 2, 2, 0, 5, 2, 2, 2, 3, + 1, 2, 0, 1, 3, 3, 5, 5, 5, 5, + 0, 2, 2, 4, 0, 5, 3, 0, 3, 3, + 2, 1, 0, 1, 0, 3, 0, 2, 4, 3, + 4, 0, 2, 1, 1, 5, 4, 4, 0, 3, + 5, 2, 1, 3, 2, 3, 2, 4, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -737,170 +737,172 @@ static const yytype_uint8 yydefact[] = 0, 7, 8, 0, 0, 17, 16, 1, 5, 4, 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, + 121, 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, 121, 123, 24, 0, 0, 0, - 58, 0, 0, 0, 0, 137, 131, 0, 0, 41, + 0, 0, 18, 90, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, + 80, 123, 114, 0, 122, 124, 24, 0, 0, 0, + 58, 0, 0, 0, 0, 138, 132, 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, 68, 0, 0, 0, 116, 64, 62, 0, - 0, 0, 0, 0, 0, 102, 75, 124, 84, 0, - 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 + 66, 93, 0, 100, 0, 87, 86, 88, 75, 0, + 0, 107, 83, 74, 92, 110, 56, 113, 0, 82, + 84, 40, 0, 42, 0, 0, 0, 0, 59, 131, + 126, 0, 127, 0, 134, 136, 137, 0, 47, 70, + 46, 104, 81, 0, 116, 49, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 72, 0, 102, 73, 0, + 79, 0, 108, 0, 89, 57, 109, 112, 0, 0, + 0, 60, 61, 62, 129, 0, 133, 135, 106, 114, + 0, 0, 64, 0, 55, 0, 0, 0, 95, 68, + 94, 101, 0, 0, 0, 91, 111, 115, 0, 0, + 0, 0, 0, 52, 69, 0, 0, 0, 117, 65, + 63, 0, 0, 0, 0, 0, 0, 103, 76, 125, + 85, 0, 43, 130, 105, 0, 0, 0, 0, 0, + 99, 98, 97, 96, 0, 44, 0, 0, 119, 0, + 48, 0, 118, 120, 0, 77, 50, 0, 0, 0, + 78 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -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, + 88, 42, 28, 39, 54, 55, 56, 111, 166, 167, + 115, 163, 89, 137, 101, 168, 121, 90, 160, 179, + 254, 267, 188, 184, 122, 177, 124, 113, 199, 92, + 182, 93, 217, 138, 201, 228, 60, 94, 57, 58, 103, 107, 108, 59 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -198 +#define YYPACT_NINF -200 static const yytype_int16 yypact[] = { - 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 + 171, -200, -24, 37, 35, 53, 83, 305, -200, -200, + 95, -200, -200, 103, 16, -200, -200, -200, -200, -200, + 45, 88, 16, 0, -200, -200, 141, -200, 74, 117, + -200, 128, -200, 130, -200, 160, 125, -200, 130, 112, + -200, -200, 131, 262, -200, -200, 155, 68, 178, 187, + 201, 209, 63, -200, -200, -200, -200, -200, -200, -200, + 170, 210, 175, 213, 198, 183, 26, 26, 20, -200, + 256, 85, -200, -200, 184, 221, 221, 232, 221, 64, + 197, 234, 235, 237, 240, 221, 208, 157, -200, 256, + -200, -200, 21, 133, -200, -200, -200, 244, 183, 256, + -200, 1, 26, 28, 29, -200, 227, 245, 19, -200, + 18, 202, 248, 253, -200, 261, -200, 224, -200, 111, + 225, 115, 264, 166, 265, -200, -200, -200, -200, 256, + 273, -200, -200, -200, 259, -200, 239, -200, 4, -200, + -200, -200, 66, -200, 246, 249, 250, 254, -200, 255, + -200, 108, -200, 224, -200, -200, -200, 279, 256, -200, + -200, 288, -200, 257, -200, 24, 287, 300, 258, 197, + 197, -200, 197, 267, 197, -200, 268, 297, -200, 270, + -200, 85, -200, 256, -200, -200, -200, 272, 274, 275, + 290, -200, -200, -200, -200, 276, -200, -200, -200, 257, + 312, 97, 280, 281, -200, 281, 191, 135, 205, -200, + 172, -200, 45, 316, 229, -200, -200, -200, 317, 301, + 256, 319, 129, -200, -200, 289, 291, 321, -200, -200, + 292, 322, 325, 197, 197, 197, 197, -200, -200, -200, + -200, 256, -200, -200, -200, 326, 327, 18, 281, 281, + 328, 328, 328, 328, 298, -200, 18, 18, 256, 329, + -200, 333, 256, 256, 281, -200, -200, 302, 323, 256, + -200 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -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 + -200, -200, -200, 336, -19, -200, -200, -200, -200, 324, + 56, -200, -200, 307, -200, -200, -200, -107, -200, 194, + -69, -200, -200, 185, 251, -199, -78, -200, -60, -200, + -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, + -200, -200, -200, 151, -200, -200, -200, -200, -200, -200, + -35, 243, -200, 293 }; /* 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 -128 +#define YYTABLE_NINF -129 static const yytype_int16 yytable[] = { - 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 + 91, 26, 123, 158, 231, 30, 232, 116, 144, 118, + 109, 186, 145, 146, 187, 147, 129, 22, 13, 110, + 155, -20, -45, -45, 156, 105, -45, 102, 135, 134, + -45, -128, 104, 150, 152, -63, -45, -45, -45, 143, + -45, 14, 31, 148, -45, -45, -45, -45, -45, 259, + 260, -45, -45, -45, -45, -45, 24, 24, -20, 15, + -45, 25, 25, 136, 69, 266, 202, 149, -128, 180, + 151, 151, 37, 189, 214, 34, 16, 145, 146, 32, + 147, 35, 24, 17, 36, 32, 110, 25, 70, -45, + -45, 206, 207, -45, 208, 53, 210, -45, 20, 53, + 63, 119, 224, -45, -45, -45, 120, -45, 148, 21, + 64, -45, -45, -45, -45, -45, 194, 44, -45, -45, + 45, 169, 195, 215, 170, 172, 173, -45, 174, 46, + 27, 38, 225, 226, 227, -29, 244, 37, -29, 187, + 258, 139, 140, 47, 48, 33, 173, -29, 234, 262, + 263, 49, 50, 51, 52, 250, 251, 252, 253, 31, + 242, -29, -29, 131, 40, 132, 37, 41, 133, -29, + -29, -29, -29, 61, 71, 72, 176, 173, 73, 1, + 62, 255, 74, 173, 65, 236, 2, 3, 75, 76, + 77, 66, 78, 237, 4, 5, 79, 80, 81, 82, + 83, 233, 173, 84, 85, 67, 71, 159, 86, 270, + 73, 51, 87, 68, 74, 235, 173, 97, 96, 98, + 75, 76, 77, 99, 78, 100, 112, 114, 79, 80, + 81, 82, 83, 71, 239, 84, 85, 73, 117, 120, + 153, 74, 125, 126, 87, 127, 128, 75, 76, 77, + 130, 78, 141, 154, 161, 79, 80, 81, 82, 83, + 71, 162, 84, 85, 73, 164, 165, 171, 74, 205, + 45, 87, 175, 178, 75, 76, 77, 181, 78, 46, + 183, 185, 79, 80, 81, 82, 83, 197, 190, 84, + 85, 191, 192, 47, 48, 198, 193, 151, 87, 136, + 203, 49, 50, 51, 52, -2, 18, 204, -14, 209, + 211, 212, 213, 1, 216, 220, 218, 219, 221, 223, + 2, 3, 229, 230, 238, 240, 241, 243, 4, 5, + 269, 245, 247, 246, 202, 248, 249, 256, 257, 173, + 261, 265, 264, 19, 268, 43, 29, 196, 200, 142, + 222, 157, 0, 95 }; static const yytype_int16 yycheck[] = { - 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 + 60, 20, 80, 110, 203, 5, 205, 76, 7, 78, + 70, 7, 11, 12, 10, 14, 85, 1, 42, 1, + 1, 5, 4, 5, 5, 5, 8, 1, 7, 89, + 12, 5, 67, 5, 5, 11, 18, 19, 20, 99, + 22, 4, 42, 42, 26, 27, 28, 29, 30, 248, + 249, 33, 34, 35, 36, 37, 37, 37, 42, 24, + 42, 42, 42, 42, 1, 264, 42, 102, 42, 129, + 42, 42, 9, 7, 181, 1, 23, 11, 12, 23, + 14, 7, 37, 0, 10, 29, 1, 42, 25, 4, + 5, 169, 170, 8, 172, 39, 174, 12, 3, 43, + 32, 37, 5, 18, 19, 20, 42, 22, 42, 6, + 42, 26, 27, 28, 29, 30, 8, 5, 33, 34, + 8, 10, 14, 183, 13, 10, 11, 42, 13, 17, + 42, 1, 35, 36, 37, 5, 7, 9, 8, 10, + 247, 8, 9, 31, 32, 4, 11, 17, 13, 256, + 257, 39, 40, 41, 42, 233, 234, 235, 236, 42, + 220, 31, 32, 6, 4, 8, 9, 42, 11, 39, + 40, 41, 42, 42, 4, 5, 10, 11, 8, 8, + 25, 241, 12, 11, 6, 13, 15, 16, 18, 19, + 20, 4, 22, 212, 23, 24, 26, 27, 28, 29, + 30, 10, 11, 33, 34, 4, 4, 5, 38, 269, + 8, 41, 42, 4, 12, 10, 11, 42, 8, 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, + 42, 22, 8, 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, 42, + 13, 39, 40, 41, 42, 0, 1, 7, 3, 42, + 42, 14, 42, 8, 42, 25, 42, 42, 42, 7, + 15, 16, 42, 42, 8, 8, 25, 8, 23, 24, + 7, 42, 11, 42, 42, 13, 11, 11, 11, 11, + 42, 8, 13, 7, 42, 38, 22, 153, 163, 98, + 199, 108, -1, 60 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -921,19 +923,20 @@ static const yytype_uint8 yystos[] = 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, 42, - 86, 7, 5, 35, 36, 37, 88, 42, 42, 68, - 68, 10, 13, 10, 13, 47, 8, 5, 8, 25, - 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 + 9, 8, 67, 71, 7, 11, 12, 14, 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, 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, 42, 86, 7, 5, 35, 36, 37, 88, 42, + 42, 68, 68, 10, 13, 10, 13, 47, 8, 5, + 8, 25, 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) @@ -1458,7 +1461,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) case 42: /* "word" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1462 "ael.tab.c" +#line 1465 "ael.tab.c" break; case 45: /* "objects" */ #line 166 "ael.y" @@ -1466,7 +1469,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1470 "ael.tab.c" +#line 1473 "ael.tab.c" break; case 46: /* "object" */ #line 166 "ael.y" @@ -1474,12 +1477,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1478 "ael.tab.c" +#line 1481 "ael.tab.c" break; case 47: /* "context_name" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1483 "ael.tab.c" +#line 1486 "ael.tab.c" break; case 48: /* "context" */ #line 166 "ael.y" @@ -1487,7 +1490,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1491 "ael.tab.c" +#line 1494 "ael.tab.c" break; case 50: /* "macro" */ #line 166 "ael.y" @@ -1495,7 +1498,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1499 "ael.tab.c" +#line 1502 "ael.tab.c" break; case 51: /* "globals" */ #line 166 "ael.y" @@ -1503,7 +1506,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1507 "ael.tab.c" +#line 1510 "ael.tab.c" break; case 52: /* "global_statements" */ #line 166 "ael.y" @@ -1511,7 +1514,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1515 "ael.tab.c" +#line 1518 "ael.tab.c" break; case 53: /* "assignment" */ #line 166 "ael.y" @@ -1519,7 +1522,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1523 "ael.tab.c" +#line 1526 "ael.tab.c" break; case 55: /* "arglist" */ #line 166 "ael.y" @@ -1527,7 +1530,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1531 "ael.tab.c" +#line 1534 "ael.tab.c" break; case 56: /* "elements" */ #line 166 "ael.y" @@ -1535,7 +1538,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1539 "ael.tab.c" +#line 1542 "ael.tab.c" break; case 57: /* "element" */ #line 166 "ael.y" @@ -1543,7 +1546,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1547 "ael.tab.c" +#line 1550 "ael.tab.c" break; case 58: /* "ignorepat" */ #line 166 "ael.y" @@ -1551,7 +1554,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1555 "ael.tab.c" +#line 1558 "ael.tab.c" break; case 59: /* "extension" */ #line 166 "ael.y" @@ -1559,7 +1562,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1563 "ael.tab.c" +#line 1566 "ael.tab.c" break; case 60: /* "statements" */ #line 166 "ael.y" @@ -1567,12 +1570,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1571 "ael.tab.c" +#line 1574 "ael.tab.c" break; case 61: /* "timerange" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1576 "ael.tab.c" +#line 1579 "ael.tab.c" break; case 62: /* "timespec" */ #line 166 "ael.y" @@ -1580,12 +1583,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1584 "ael.tab.c" +#line 1587 "ael.tab.c" break; case 63: /* "test_expr" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1589 "ael.tab.c" +#line 1592 "ael.tab.c" break; case 65: /* "if_like_head" */ #line 166 "ael.y" @@ -1593,22 +1596,22 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1597 "ael.tab.c" +#line 1600 "ael.tab.c" break; case 66: /* "word_list" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1602 "ael.tab.c" +#line 1605 "ael.tab.c" break; case 68: /* "word3_list" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1607 "ael.tab.c" +#line 1610 "ael.tab.c" break; case 69: /* "goto_word" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1612 "ael.tab.c" +#line 1615 "ael.tab.c" break; case 70: /* "switch_statement" */ #line 166 "ael.y" @@ -1616,7 +1619,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1620 "ael.tab.c" +#line 1623 "ael.tab.c" break; case 71: /* "statement" */ #line 166 "ael.y" @@ -1624,7 +1627,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1628 "ael.tab.c" +#line 1631 "ael.tab.c" break; case 76: /* "opt_else" */ #line 166 "ael.y" @@ -1632,7 +1635,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1636 "ael.tab.c" +#line 1639 "ael.tab.c" break; case 77: /* "target" */ #line 166 "ael.y" @@ -1640,12 +1643,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1644 "ael.tab.c" +#line 1647 "ael.tab.c" break; case 78: /* "opt_pri" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1649 "ael.tab.c" +#line 1652 "ael.tab.c" break; case 79: /* "jumptarget" */ #line 166 "ael.y" @@ -1653,7 +1656,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1657 "ael.tab.c" +#line 1660 "ael.tab.c" break; case 80: /* "macro_call" */ #line 166 "ael.y" @@ -1661,7 +1664,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1665 "ael.tab.c" +#line 1668 "ael.tab.c" break; case 82: /* "application_call_head" */ #line 166 "ael.y" @@ -1669,7 +1672,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1673 "ael.tab.c" +#line 1676 "ael.tab.c" break; case 84: /* "application_call" */ #line 166 "ael.y" @@ -1677,12 +1680,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1681 "ael.tab.c" +#line 1684 "ael.tab.c" break; case 85: /* "opt_word" */ #line 179 "ael.y" { free((yyvaluep->str));}; -#line 1686 "ael.tab.c" +#line 1689 "ael.tab.c" break; case 86: /* "eval_arglist" */ #line 166 "ael.y" @@ -1690,7 +1693,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1694 "ael.tab.c" +#line 1697 "ael.tab.c" break; case 87: /* "case_statements" */ #line 166 "ael.y" @@ -1698,7 +1701,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1702 "ael.tab.c" +#line 1705 "ael.tab.c" break; case 88: /* "case_statement" */ #line 166 "ael.y" @@ -1706,7 +1709,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1710 "ael.tab.c" +#line 1713 "ael.tab.c" break; case 89: /* "macro_statements" */ #line 166 "ael.y" @@ -1714,7 +1717,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1718 "ael.tab.c" +#line 1721 "ael.tab.c" break; case 90: /* "macro_statement" */ #line 166 "ael.y" @@ -1722,7 +1725,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1726 "ael.tab.c" +#line 1729 "ael.tab.c" break; case 91: /* "switches" */ #line 166 "ael.y" @@ -1730,7 +1733,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1734 "ael.tab.c" +#line 1737 "ael.tab.c" break; case 92: /* "eswitches" */ #line 166 "ael.y" @@ -1738,7 +1741,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1742 "ael.tab.c" +#line 1745 "ael.tab.c" break; case 93: /* "switchlist" */ #line 166 "ael.y" @@ -1746,7 +1749,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1750 "ael.tab.c" +#line 1753 "ael.tab.c" break; case 94: /* "included_entry" */ #line 166 "ael.y" @@ -1754,7 +1757,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1758 "ael.tab.c" +#line 1761 "ael.tab.c" break; case 95: /* "includeslist" */ #line 166 "ael.y" @@ -1762,7 +1765,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1766 "ael.tab.c" +#line 1769 "ael.tab.c" break; case 96: /* "includes" */ #line 166 "ael.y" @@ -1770,7 +1773,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1774 "ael.tab.c" +#line 1777 "ael.tab.c" break; default: @@ -2478,12 +2481,25 @@ yyreduce: break; case 62: -#line 389 "ael.y" - { (yyval.str) = (yyvsp[(1) - (1)].str);;} +#line 387 "ael.y" + { + if (asprintf(&((yyval.str)), "%s@%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) { + ast_log(LOG_WARNING, "asprintf() failed\n"); + (yyval.str) = NULL; + } else { + free((yyvsp[(1) - (3)].str)); + free((yyvsp[(3) - (3)].str)); + } + ;} break; case 63: -#line 390 "ael.y" +#line 398 "ael.y" + { (yyval.str) = (yyvsp[(1) - (1)].str);;} + break; + + case 64: +#line 399 "ael.y" { if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) { ast_log(LOG_WARNING, "asprintf() failed\n"); @@ -2496,8 +2512,8 @@ yyreduce: ;} break; - case 64: -#line 400 "ael.y" + case 65: +#line 409 "ael.y" { if (asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) { ast_log(LOG_WARNING, "asprintf() failed\n"); @@ -2511,13 +2527,13 @@ yyreduce: ;} break; - case 65: -#line 413 "ael.y" + case 66: +#line 422 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str);;} break; - case 66: -#line 414 "ael.y" + case 67: +#line 423 "ael.y" { if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) { ast_log(LOG_WARNING, "asprintf() failed\n"); @@ -2529,8 +2545,8 @@ yyreduce: ;} break; - case 67: -#line 423 "ael.y" + case 68: +#line 432 "ael.y" { if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) { ast_log(LOG_WARNING, "asprintf() failed\n"); @@ -2542,64 +2558,64 @@ yyreduce: ;} break; - case 68: -#line 434 "ael.y" + case 69: +#line 443 "ael.y" { (yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)])); (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str); (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;} break; - case 69: -#line 443 "ael.y" + case 70: +#line 452 "ael.y" { (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));;} break; - case 70: -#line 446 "ael.y" + case 71: +#line 455 "ael.y" { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;} break; - case 71: -#line 447 "ael.y" + case 72: +#line 456 "ael.y" { (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;} break; - case 72: -#line 450 "ael.y" + case 73: +#line 459 "ael.y" { (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;} break; - case 73: -#line 453 "ael.y" + case 74: +#line 462 "ael.y" { (yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;} break; - case 74: -#line 456 "ael.y" + case 75: +#line 465 "ael.y" {reset_semicount(parseio->scanner);;} break; - case 75: -#line 457 "ael.y" + case 76: +#line 466 "ael.y" {reset_semicount(parseio->scanner);;} break; - case 76: -#line 458 "ael.y" + case 77: +#line 467 "ael.y" {reset_parencount(parseio->scanner);;} break; - case 77: -#line 458 "ael.y" + case 78: +#line 467 "ael.y" { /* XXX word_list maybe ? */ (yyval.pval) = npval2(PV_FOR, &(yylsp[(1) - (12)]), &(yylsp[(12) - (12)])); (yyval.pval)->u1.for_init = (yyvsp[(4) - (12)].str); @@ -2608,43 +2624,43 @@ yyreduce: (yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;} break; - case 78: -#line 464 "ael.y" + case 79: +#line 473 "ael.y" { (yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.str = (yyvsp[(2) - (3)].str); (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;} break; - case 79: -#line 468 "ael.y" + case 80: +#line 477 "ael.y" { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;} break; - case 80: -#line 469 "ael.y" + case 81: +#line 478 "ael.y" { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;} break; - case 81: -#line 470 "ael.y" + case 82: +#line 479 "ael.y" { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;} break; - case 82: -#line 471 "ael.y" + case 83: +#line 480 "ael.y" { (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;} break; - case 83: -#line 474 "ael.y" + case 84: +#line 483 "ael.y" {reset_semicount(parseio->scanner);;} break; - case 84: -#line 474 "ael.y" + case 85: +#line 483 "ael.y" { char *bufx; int tot=0; @@ -2680,127 +2696,127 @@ yyreduce: ;} break; - case 85: -#line 507 "ael.y" + case 86: +#line 516 "ael.y" { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;} break; - case 86: -#line 508 "ael.y" + case 87: +#line 517 "ael.y" { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;} break; - case 87: -#line 509 "ael.y" + case 88: +#line 518 "ael.y" { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;} break; - case 88: -#line 510 "ael.y" + case 89: +#line 519 "ael.y" { (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)])); (yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval)); (yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;} break; - case 89: -#line 514 "ael.y" + case 90: +#line 523 "ael.y" { (yyval.pval)=0; ;} break; - case 90: -#line 517 "ael.y" + case 91: +#line 526 "ael.y" { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;} break; - case 91: -#line 518 "ael.y" + case 92: +#line 527 "ael.y" { (yyval.pval) = NULL ; ;} break; - case 92: -#line 521 "ael.y" + case 93: +#line 530 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} break; - case 93: -#line 522 "ael.y" + case 94: +#line 531 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])); (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;} break; - case 94: -#line 525 "ael.y" + case 95: +#line 534 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])); (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;} break; - case 95: -#line 528 "ael.y" + case 96: +#line 537 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)])); (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)])); (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;} break; - case 96: -#line 532 "ael.y" + case 97: +#line 541 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)])); (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)])); (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;} break; - case 97: -#line 536 "ael.y" + case 98: +#line 545 "ael.y" { (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)])); (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)])); (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;} break; - case 98: -#line 540 "ael.y" + case 99: +#line 549 "ael.y" { (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)])); (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)])); (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;} break; - case 99: -#line 546 "ael.y" + case 100: +#line 555 "ael.y" { (yyval.str) = strdup("1"); ;} break; - case 100: -#line 547 "ael.y" + case 101: +#line 556 "ael.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 101: -#line 551 "ael.y" + case 102: +#line 560 "ael.y" { /* ext[, pri] default 1 */ (yyval.pval) = nword((yyvsp[(1) - (2)].str), &(yylsp[(1) - (2)])); (yyval.pval)->next = nword((yyvsp[(2) - (2)].str), &(yylsp[(2) - (2)])); ;} break; - case 102: -#line 554 "ael.y" + case 103: +#line 563 "ael.y" { /* context, ext, pri */ (yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)])); (yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)])); (yyval.pval)->next->next = nword((yyvsp[(2) - (4)].str), &(yylsp[(2) - (4)])); ;} break; - case 103: -#line 560 "ael.y" + case 104: +#line 569 "ael.y" {reset_argcount(parseio->scanner);;} break; - case 104: -#line 560 "ael.y" + case 105: +#line 569 "ael.y" { /* XXX original code had @2 but i think we need @5 */ (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)])); @@ -2808,20 +2824,20 @@ yyreduce: (yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;} break; - case 105: -#line 565 "ael.y" + case 106: +#line 574 "ael.y" { (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;} break; - case 106: -#line 573 "ael.y" + case 107: +#line 582 "ael.y" {reset_argcount(parseio->scanner);;} break; - case 107: -#line 573 "ael.y" + case 108: +#line 582 "ael.y" { if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) { (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)])); @@ -2833,8 +2849,8 @@ yyreduce: } ;} break; - case 108: -#line 584 "ael.y" + case 109: +#line 593 "ael.y" { (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)])); if( (yyval.pval)->type == PV_GOTO ) @@ -2844,126 +2860,126 @@ yyreduce: ;} break; - case 109: -#line 591 "ael.y" + case 110: +#line 600 "ael.y" { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;} break; - case 110: -#line 594 "ael.y" + case 111: +#line 603 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str) ;} break; - case 111: -#line 595 "ael.y" + case 112: +#line 604 "ael.y" { (yyval.str) = strdup(""); ;} break; - case 112: -#line 598 "ael.y" + case 113: +#line 607 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} break; - case 113: -#line 599 "ael.y" + case 114: +#line 608 "ael.y" { (yyval.pval)= npval(PV_WORD,0/*@1.first_line*/,0/*@1.last_line*/,0/* @1.first_column*/, 0/*@1.last_column*/); (yyval.pval)->u1.str = strdup(""); ;} break; - case 114: -#line 602 "ael.y" + case 115: +#line 611 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;} break; - case 115: -#line 605 "ael.y" + case 116: +#line 614 "ael.y" { (yyval.pval) = NULL; ;} break; - case 116: -#line 606 "ael.y" + case 117: +#line 615 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; - case 117: -#line 609 "ael.y" + case 118: +#line 618 "ael.y" { (yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)])); /* XXX 3 or 4 ? */ (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str); (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;} break; - case 118: -#line 613 "ael.y" + case 119: +#line 622 "ael.y" { (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.str = NULL; (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;} break; - case 119: -#line 617 "ael.y" + case 120: +#line 626 "ael.y" { (yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX@3 or @4 ? */ (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str); (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;} break; - case 120: -#line 623 "ael.y" + case 121: +#line 632 "ael.y" { (yyval.pval) = NULL; ;} break; - case 121: -#line 624 "ael.y" + case 122: +#line 633 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; - case 122: -#line 627 "ael.y" + case 123: +#line 636 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; - case 123: -#line 628 "ael.y" + case 124: +#line 637 "ael.y" { (yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; - case 124: -#line 629 "ael.y" + case 125: +#line 638 "ael.y" { (yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)])); (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str); (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;} break; - case 125: -#line 635 "ael.y" + case 126: +#line 644 "ael.y" { (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)])); (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;} break; - case 126: -#line 640 "ael.y" + case 127: +#line 649 "ael.y" { (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)])); (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;} break; - case 127: -#line 645 "ael.y" + case 128: +#line 654 "ael.y" { (yyval.pval) = NULL; ;} break; - case 128: -#line 646 "ael.y" + case 129: +#line 655 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;} break; - case 129: -#line 647 "ael.y" + case 130: +#line 656 "ael.y" { char *x; if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) { @@ -2977,55 +2993,55 @@ yyreduce: ;} break; - case 130: -#line 658 "ael.y" + case 131: +#line 667 "ael.y" {(yyval.pval)=(yyvsp[(2) - (2)].pval);;} break; - case 131: -#line 661 "ael.y" + case 132: +#line 670 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} break; - case 132: -#line 662 "ael.y" + case 133: +#line 671 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])); (yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval); prev_word=0; /* XXX sure ? */ ;} break; - case 133: -#line 669 "ael.y" + case 134: +#line 678 "ael.y" { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;} break; - case 134: -#line 670 "ael.y" + case 135: +#line 679 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;} break; - case 135: -#line 671 "ael.y" + case 136: +#line 680 "ael.y" {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; - case 136: -#line 674 "ael.y" + case 137: +#line 683 "ael.y" { (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;} break; - case 137: -#line 677 "ael.y" + case 138: +#line 686 "ael.y" { (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;} break; /* Line 1267 of yacc.c. */ -#line 3029 "ael.tab.c" +#line 3045 "ael.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3245,7 +3261,7 @@ yyreturn: } -#line 682 "ael.y" +#line 691 "ael.y" static char *token_equivs1[] = diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y index e2ddda1ad..57f0e085c 100644 --- a/pbx/ael/ael.y +++ b/pbx/ael/ael.y @@ -384,6 +384,15 @@ hint_word : word { $$ = $1; } free($3); } } + | hint_word AT word { + if (asprintf(&($$), "%s@%s", $1, $3) < 0) { + ast_log(LOG_WARNING, "asprintf() failed\n"); + $$ = NULL; + } else { + free($1); + free($3); + } + } ; word3_list : word { $$ = $1;} -- cgit v1.2.3