diff options
author | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-04-27 18:09:20 +0000 |
---|---|---|
committer | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-04-27 18:09:20 +0000 |
commit | c4484da6b07c342d7ef663a99f176d4a815ccef2 (patch) | |
tree | 35b2c636a9f786ff07e6fe681e636bb0fce56004 /pbx | |
parent | cdd3c42ddad38723af635069c359654a990311a2 (diff) |
introduce a simplified interface for npval and start using it
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@22928 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r-- | pbx/ael/ael.tab.c | 513 | ||||
-rw-r--r-- | pbx/ael/ael.tab.h | 2 | ||||
-rw-r--r-- | pbx/ael/ael.y | 20 |
3 files changed, 280 insertions, 255 deletions
diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c index 673fd45d2..bad9056fe 100644 --- a/pbx/ael/ael.tab.c +++ b/pbx/ael/ael.tab.c @@ -181,8 +181,10 @@ #include "asterisk/utils.h" /* ast_calloc() */ #include "asterisk/ael_structs.h" +/* create a new object with start-end marker */ static pval *npval(pvaltype type, int first_line, int last_line, int first_column, int last_column); + static void linku1(pval *head, pval *tail); void reset_parencount(yyscan_t yyscanner); @@ -219,13 +221,13 @@ static char *ael_token_subst(char *mess); #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 51 "ael.y" +#line 53 "ael.y" typedef union YYSTYPE { char *str; struct pval *pval; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 229 "ael.tab.c" +#line 231 "ael.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -246,16 +248,20 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ -#line 56 "ael.y" +#line 58 "ael.y" /* declaring these AFTER the union makes things a lot simpler! */ void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s); int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , void * yyscanner); +/* create a new object with start-end marker, simplified interface. + * Must be declared here because YYLTYPE is not known before + */ +static pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last); /* Line 219 of yacc.c. */ -#line 259 "ael.tab.c" +#line 265 "ael.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -555,22 +561,22 @@ static const yysigned_char yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 130, 130, 133, 134, 145, 148, 149, 150, 151, - 154, 159, 163, 168, 172, 178, 183, 189, 196, 199, - 202, 205, 210, 213, 218, 219, 220, 223, 223, 229, - 232, 237, 240, 241, 242, 245, 248, 249, 250, 251, - 252, 253, 253, 257, 258, 261, 266, 270, 275, 280, - 289, 290, 293, 296, 296, 301, 301, 306, 322, 342, - 343, 349, 350, 355, 363, 364, 368, 374, 374, 379, - 382, 382, 386, 389, 392, 395, 396, 397, 395, 403, - 403, 407, 411, 416, 420, 424, 427, 427, 460, 462, - 464, 466, 471, 477, 482, 488, 493, 499, 502, 503, - 508, 513, 520, 527, 534, 543, 548, 553, 560, 567, - 574, 583, 583, 587, 592, 592, 602, 608, 611, 614, - 617, 622, 629, 630, 635, 637, 638, 639, 640, 641, - 644, 645, 650, 651, 654, 655, 658, 659, 662, 663, - 664, 667, 668, 684, 697, 698, 713, 726, 729, 730, - 733, 736 + 0, 136, 136, 139, 140, 151, 154, 155, 156, 157, + 160, 164, 168, 173, 177, 183, 188, 194, 201, 204, + 207, 210, 215, 218, 223, 224, 225, 228, 228, 234, + 237, 242, 245, 246, 247, 250, 253, 254, 255, 256, + 257, 258, 258, 262, 263, 266, 271, 275, 280, 285, + 294, 295, 298, 301, 301, 306, 306, 311, 327, 347, + 348, 354, 355, 360, 368, 369, 373, 379, 379, 387, + 390, 390, 394, 397, 400, 403, 404, 405, 403, 411, + 411, 415, 419, 424, 428, 432, 435, 435, 468, 470, + 472, 474, 479, 485, 490, 496, 501, 507, 510, 511, + 516, 521, 528, 535, 542, 551, 556, 561, 568, 575, + 582, 591, 591, 595, 600, 600, 610, 616, 619, 622, + 625, 630, 637, 638, 643, 645, 646, 647, 648, 649, + 652, 653, 658, 659, 662, 663, 666, 667, 670, 671, + 672, 675, 676, 692, 705, 706, 721, 734, 737, 738, + 741, 744 }; #endif @@ -1307,194 +1313,194 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp) switch (yytype) { case 41: /* "word" */ -#line 125 "ael.y" +#line 131 "ael.y" { free((yyvaluep->str));}; -#line 1313 "ael.tab.c" +#line 1319 "ael.tab.c" break; case 44: /* "objects" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1318 "ael.tab.c" +#line 1324 "ael.tab.c" break; case 45: /* "object" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1323 "ael.tab.c" +#line 1329 "ael.tab.c" break; case 46: /* "context" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1328 "ael.tab.c" +#line 1334 "ael.tab.c" break; case 47: /* "macro" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1333 "ael.tab.c" +#line 1339 "ael.tab.c" break; case 48: /* "globals" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1338 "ael.tab.c" +#line 1344 "ael.tab.c" break; case 49: /* "global_statements" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1343 "ael.tab.c" +#line 1349 "ael.tab.c" break; case 50: /* "global_statement" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1348 "ael.tab.c" +#line 1354 "ael.tab.c" break; case 52: /* "arglist" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1353 "ael.tab.c" +#line 1359 "ael.tab.c" break; case 53: /* "elements" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1358 "ael.tab.c" +#line 1364 "ael.tab.c" break; case 54: /* "element" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1363 "ael.tab.c" +#line 1369 "ael.tab.c" break; case 56: /* "ignorepat" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1368 "ael.tab.c" +#line 1374 "ael.tab.c" break; case 57: /* "extension" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1373 "ael.tab.c" +#line 1379 "ael.tab.c" break; case 58: /* "statements" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1378 "ael.tab.c" +#line 1384 "ael.tab.c" break; case 59: /* "if_head" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1383 "ael.tab.c" +#line 1389 "ael.tab.c" break; case 61: /* "random_head" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1388 "ael.tab.c" +#line 1394 "ael.tab.c" break; case 63: /* "iftime_head" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1393 "ael.tab.c" +#line 1399 "ael.tab.c" break; case 64: /* "word_list" */ -#line 125 "ael.y" +#line 131 "ael.y" { free((yyvaluep->str));}; -#line 1398 "ael.tab.c" +#line 1404 "ael.tab.c" break; case 65: /* "word3_list" */ -#line 125 "ael.y" +#line 131 "ael.y" { free((yyvaluep->str));}; -#line 1403 "ael.tab.c" +#line 1409 "ael.tab.c" break; case 66: /* "goto_word" */ -#line 125 "ael.y" +#line 131 "ael.y" { free((yyvaluep->str));}; -#line 1408 "ael.tab.c" +#line 1414 "ael.tab.c" break; case 67: /* "switch_head" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1413 "ael.tab.c" +#line 1419 "ael.tab.c" break; case 69: /* "statement" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1418 "ael.tab.c" +#line 1424 "ael.tab.c" break; case 76: /* "target" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1423 "ael.tab.c" +#line 1429 "ael.tab.c" break; case 77: /* "jumptarget" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1428 "ael.tab.c" +#line 1434 "ael.tab.c" break; case 78: /* "macro_call" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1433 "ael.tab.c" +#line 1439 "ael.tab.c" break; case 80: /* "application_call_head" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1438 "ael.tab.c" +#line 1444 "ael.tab.c" break; case 82: /* "application_call" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1443 "ael.tab.c" +#line 1449 "ael.tab.c" break; case 83: /* "eval_arglist" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1448 "ael.tab.c" +#line 1454 "ael.tab.c" break; case 84: /* "case_statements" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1453 "ael.tab.c" +#line 1459 "ael.tab.c" break; case 85: /* "case_statement" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1458 "ael.tab.c" +#line 1464 "ael.tab.c" break; case 86: /* "macro_statements" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1463 "ael.tab.c" +#line 1469 "ael.tab.c" break; case 87: /* "macro_statement" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1468 "ael.tab.c" +#line 1474 "ael.tab.c" break; case 88: /* "switches" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1473 "ael.tab.c" +#line 1479 "ael.tab.c" break; case 89: /* "eswitches" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1478 "ael.tab.c" +#line 1484 "ael.tab.c" break; case 90: /* "switchlist" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1483 "ael.tab.c" +#line 1489 "ael.tab.c" break; case 91: /* "includeslist" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1488 "ael.tab.c" +#line 1494 "ael.tab.c" break; case 92: /* "includedname" */ -#line 125 "ael.y" +#line 131 "ael.y" { free((yyvaluep->str));}; -#line 1493 "ael.tab.c" +#line 1499 "ael.tab.c" break; case 93: /* "includes" */ -#line 122 "ael.y" +#line 128 "ael.y" { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} }; -#line 1498 "ael.tab.c" +#line 1504 "ael.tab.c" break; default: @@ -1811,17 +1817,17 @@ yyreduce: switch (yyn) { case 2: -#line 130 "ael.y" +#line 136 "ael.y" { (yyval.pval) = parseio->pval = (yyvsp[0].pval); ;} break; case 3: -#line 133 "ael.y" +#line 139 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 4: -#line 135 "ael.y" +#line 141 "ael.y" { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) { (yyval.pval)=(yyvsp[-1].pval); @@ -1835,41 +1841,40 @@ yyreduce: break; case 5: -#line 145 "ael.y" +#line 151 "ael.y" {(yyval.pval)=(yyvsp[-1].pval);;} break; case 6: -#line 148 "ael.y" +#line 154 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 7: -#line 149 "ael.y" +#line 155 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 8: -#line 150 "ael.y" +#line 156 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 9: -#line 151 "ael.y" +#line 157 "ael.y" {(yyval.pval)=0;/* allow older docs to be read */;} break; case 10: -#line 154 "ael.y" +#line 160 "ael.y" { - (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line, - (yylsp[-4]).first_column, (yylsp[0]).last_column); + (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-4]), &(yylsp[0])); (yyval.pval)->u1.str = (yyvsp[-3].str); (yyval.pval)->u2.statements = (yyvsp[-1].pval); ;} break; case 11: -#line 159 "ael.y" +#line 164 "ael.y" { (yyval.pval) = npval(PV_CONTEXT, (yylsp[-3]).first_line, (yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); @@ -1877,7 +1882,7 @@ yyreduce: break; case 12: -#line 163 "ael.y" +#line 168 "ael.y" { (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); @@ -1886,7 +1891,7 @@ yyreduce: break; case 13: -#line 168 "ael.y" +#line 173 "ael.y" { (yyval.pval) = npval(PV_CONTEXT, (yylsp[-3]).first_line, (yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); @@ -1894,7 +1899,7 @@ yyreduce: break; case 14: -#line 172 "ael.y" +#line 177 "ael.y" { (yyval.pval) = npval(PV_CONTEXT, (yylsp[-5]).first_line, (yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); @@ -1904,7 +1909,7 @@ yyreduce: break; case 15: -#line 178 "ael.y" +#line 183 "ael.y" { (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); @@ -1913,7 +1918,7 @@ yyreduce: break; case 16: -#line 183 "ael.y" +#line 188 "ael.y" { (yyval.pval) = npval(PV_CONTEXT, (yylsp[-5]).first_line, (yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); @@ -1923,7 +1928,7 @@ yyreduce: break; case 17: -#line 189 "ael.y" +#line 194 "ael.y" { (yyval.pval) = npval(PV_CONTEXT, (yylsp[-4]).first_line, (yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); @@ -1932,69 +1937,69 @@ yyreduce: break; case 18: -#line 196 "ael.y" +#line 201 "ael.y" { (yyval.pval)=npval(PV_MACRO,(yylsp[-7]).first_line,(yylsp[0]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-6].str); (yyval.pval)->u2.arglist = (yyvsp[-4].pval); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;} break; case 19: -#line 199 "ael.y" +#line 204 "ael.y" { (yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u2.arglist = (yyvsp[-3].pval); ;} break; case 20: -#line 202 "ael.y" +#line 207 "ael.y" { (yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;} break; case 21: -#line 205 "ael.y" +#line 210 "ael.y" { (yyval.pval)=npval(PV_MACRO,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); /* pretty empty! */ ;} break; case 22: -#line 210 "ael.y" +#line 215 "ael.y" { (yyval.pval)=npval(PV_GLOBALS,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.statements = (yyvsp[-1].pval);;} break; case 23: -#line 213 "ael.y" +#line 218 "ael.y" { (yyval.pval)=npval(PV_GLOBALS,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); /* and that's all */ ;} break; case 24: -#line 218 "ael.y" +#line 223 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 25: -#line 219 "ael.y" +#line 224 "ael.y" {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));;} break; case 26: -#line 220 "ael.y" +#line 225 "ael.y" {(yyval.pval)=(yyvsp[-1].pval);;} break; case 27: -#line 223 "ael.y" +#line 228 "ael.y" { reset_semicount(parseio->scanner); ;} break; case 28: -#line 223 "ael.y" +#line 228 "ael.y" { (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); @@ -2002,14 +2007,14 @@ yyreduce: break; case 29: -#line 229 "ael.y" +#line 234 "ael.y" { (yyval.pval)= npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str); ;} break; case 30: -#line 232 "ael.y" +#line 237 "ael.y" { pval *z = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); z->u1.str = (yyvsp[0].str); @@ -2018,64 +2023,64 @@ yyreduce: break; case 31: -#line 237 "ael.y" +#line 242 "ael.y" {(yyval.pval)=(yyvsp[-1].pval);;} break; case 32: -#line 240 "ael.y" +#line 245 "ael.y" { (yyval.pval)=(yyvsp[0].pval);;} break; case 33: -#line 241 "ael.y" +#line 246 "ael.y" {(yyval.pval)=0;;} break; case 34: -#line 242 "ael.y" +#line 247 "ael.y" { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));} else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);} else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;} break; case 35: -#line 245 "ael.y" +#line 250 "ael.y" { (yyval.pval)=(yyvsp[-1].pval);;} break; case 36: -#line 248 "ael.y" +#line 253 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 37: -#line 249 "ael.y" +#line 254 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 38: -#line 250 "ael.y" +#line 255 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 39: -#line 251 "ael.y" +#line 256 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 40: -#line 252 "ael.y" +#line 257 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 41: -#line 253 "ael.y" +#line 258 "ael.y" { reset_semicount(parseio->scanner); ;} break; case 42: -#line 253 "ael.y" +#line 258 "ael.y" { (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); @@ -2083,24 +2088,24 @@ yyreduce: break; case 43: -#line 257 "ael.y" +#line 262 "ael.y" {free((yyvsp[-1].str)); (yyval.pval)=0;;} break; case 44: -#line 258 "ael.y" +#line 263 "ael.y" {(yyval.pval)=0;/* allow older docs to be read */;} break; case 45: -#line 261 "ael.y" +#line 266 "ael.y" { (yyval.pval)=npval(PV_IGNOREPAT,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;} break; case 46: -#line 266 "ael.y" +#line 271 "ael.y" { (yyval.pval) = npval(PV_EXTENSION,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2108,7 +2113,7 @@ yyreduce: break; case 47: -#line 270 "ael.y" +#line 275 "ael.y" { (yyval.pval) = npval(PV_EXTENSION,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2117,7 +2122,7 @@ yyreduce: break; case 48: -#line 275 "ael.y" +#line 280 "ael.y" { (yyval.pval) = npval(PV_EXTENSION,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2126,7 +2131,7 @@ yyreduce: break; case 49: -#line 280 "ael.y" +#line 285 "ael.y" { (yyval.pval) = npval(PV_EXTENSION,(yylsp[-7]).first_line,(yylsp[0]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2136,48 +2141,48 @@ yyreduce: break; case 50: -#line 289 "ael.y" +#line 294 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 51: -#line 290 "ael.y" +#line 295 "ael.y" {if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));} else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);} else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;} break; case 52: -#line 293 "ael.y" +#line 298 "ael.y" {(yyval.pval)=(yyvsp[-1].pval);;} break; case 53: -#line 296 "ael.y" +#line 301 "ael.y" { reset_parencount(parseio->scanner); ;} break; case 54: -#line 296 "ael.y" +#line 301 "ael.y" { (yyval.pval)= npval(PV_IF,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str); ;} break; case 55: -#line 301 "ael.y" +#line 306 "ael.y" { reset_parencount(parseio->scanner); ;} break; case 56: -#line 301 "ael.y" +#line 306 "ael.y" { (yyval.pval)= npval(PV_RANDOM,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str=(yyvsp[-1].str);;} break; case 57: -#line 307 "ael.y" +#line 312 "ael.y" { (yyval.pval)= npval(PV_IFTIME,(yylsp[-13]).first_line,(yylsp[-9]).last_line, (yylsp[-13]).first_column, (yylsp[-9]).last_column); (yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column); @@ -2196,7 +2201,7 @@ yyreduce: break; case 58: -#line 322 "ael.y" +#line 327 "ael.y" { (yyval.pval)= npval(PV_IFTIME,(yylsp[-9]).first_line,(yylsp[-5]).last_line, (yylsp[-9]).first_column, (yylsp[-5]).last_column); (yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column); @@ -2212,12 +2217,12 @@ yyreduce: break; case 59: -#line 342 "ael.y" +#line 347 "ael.y" { (yyval.str) = (yyvsp[0].str);;} break; case 60: -#line 343 "ael.y" +#line 348 "ael.y" { asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str)); free((yyvsp[-1].str)); @@ -2226,12 +2231,12 @@ yyreduce: break; case 61: -#line 349 "ael.y" +#line 354 "ael.y" { (yyval.str) = (yyvsp[0].str);;} break; case 62: -#line 350 "ael.y" +#line 355 "ael.y" { asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str)); free((yyvsp[-1].str)); @@ -2240,7 +2245,7 @@ yyreduce: break; case 63: -#line 355 "ael.y" +#line 360 "ael.y" { asprintf(&((yyval.str)), "%s%s%s", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)); free((yyvsp[-2].str)); @@ -2250,12 +2255,12 @@ yyreduce: break; case 64: -#line 363 "ael.y" +#line 368 "ael.y" { (yyval.str) = (yyvsp[0].str);;} break; case 65: -#line 364 "ael.y" +#line 369 "ael.y" { asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str)); free((yyvsp[-1].str)); @@ -2263,7 +2268,7 @@ yyreduce: break; case 66: -#line 368 "ael.y" +#line 373 "ael.y" { asprintf(&((yyval.str)), "%s:%s", (yyvsp[-2].str), (yyvsp[0].str)); free((yyvsp[-2].str)); @@ -2271,31 +2276,31 @@ yyreduce: break; case 67: -#line 374 "ael.y" +#line 379 "ael.y" { reset_parencount(parseio->scanner); ;} break; case 68: -#line 374 "ael.y" +#line 379 "ael.y" { (yyval.pval)=npval(PV_SWITCH,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); ;} break; case 69: -#line 379 "ael.y" +#line 387 "ael.y" { - (yyval.pval)=npval(PV_STATEMENTBLOCK,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); + (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[-2]), &(yylsp[0])); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;} break; case 70: -#line 382 "ael.y" +#line 390 "ael.y" {reset_semicount(parseio->scanner);;} break; case 71: -#line 382 "ael.y" +#line 390 "ael.y" { (yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); @@ -2303,43 +2308,43 @@ yyreduce: break; case 72: -#line 386 "ael.y" +#line 394 "ael.y" { (yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;} break; case 73: -#line 389 "ael.y" +#line 397 "ael.y" { (yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;} break; case 74: -#line 392 "ael.y" +#line 400 "ael.y" { (yyval.pval)=npval(PV_LABEL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str); ;} break; case 75: -#line 395 "ael.y" +#line 403 "ael.y" {reset_semicount(parseio->scanner);;} break; case 76: -#line 396 "ael.y" +#line 404 "ael.y" {reset_semicount(parseio->scanner);;} break; case 77: -#line 397 "ael.y" +#line 405 "ael.y" {reset_parencount(parseio->scanner);;} break; case 78: -#line 397 "ael.y" +#line 405 "ael.y" { (yyval.pval)=npval(PV_FOR,(yylsp[-11]).first_line,(yylsp[0]).last_line, (yylsp[-11]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.for_init = (yyvsp[-8].str); @@ -2349,12 +2354,12 @@ yyreduce: break; case 79: -#line 403 "ael.y" +#line 411 "ael.y" {reset_parencount(parseio->scanner);;} break; case 80: -#line 403 "ael.y" +#line 411 "ael.y" { (yyval.pval)=npval(PV_WHILE,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2362,7 +2367,7 @@ yyreduce: break; case 81: -#line 407 "ael.y" +#line 415 "ael.y" { (yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->endline = (yylsp[0]).last_line; @@ -2370,7 +2375,7 @@ yyreduce: break; case 82: -#line 411 "ael.y" +#line 419 "ael.y" { (yyval.pval)=(yyvsp[-2].pval); (yyval.pval)->u2.statements = (yyvsp[-1].pval); @@ -2379,7 +2384,7 @@ yyreduce: break; case 83: -#line 416 "ael.y" +#line 424 "ael.y" { (yyval.pval) = (yyvsp[-1].pval); (yyval.pval)->endline = (yylsp[-1]).last_line; @@ -2387,7 +2392,7 @@ yyreduce: break; case 84: -#line 420 "ael.y" +#line 428 "ael.y" { (yyval.pval) = (yyvsp[-1].pval); (yyval.pval)->endline = (yylsp[0]).last_line; @@ -2395,19 +2400,19 @@ yyreduce: break; case 85: -#line 424 "ael.y" +#line 432 "ael.y" { (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;} break; case 86: -#line 427 "ael.y" +#line 435 "ael.y" {reset_semicount(parseio->scanner);;} break; case 87: -#line 427 "ael.y" +#line 435 "ael.y" { char *bufx; int tot=0; @@ -2444,25 +2449,25 @@ yyreduce: break; case 88: -#line 460 "ael.y" +#line 468 "ael.y" { (yyval.pval) = npval(PV_BREAK,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;} break; case 89: -#line 462 "ael.y" +#line 470 "ael.y" { (yyval.pval) = npval(PV_RETURN,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;} break; case 90: -#line 464 "ael.y" +#line 472 "ael.y" { (yyval.pval) = npval(PV_CONTINUE,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;} break; case 91: -#line 466 "ael.y" +#line 474 "ael.y" { (yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval); @@ -2471,7 +2476,7 @@ yyreduce: break; case 92: -#line 471 "ael.y" +#line 479 "ael.y" { (yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval); @@ -2481,7 +2486,7 @@ yyreduce: break; case 93: -#line 477 "ael.y" +#line 485 "ael.y" { (yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval); @@ -2490,7 +2495,7 @@ yyreduce: break; case 94: -#line 482 "ael.y" +#line 490 "ael.y" { (yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval); @@ -2500,7 +2505,7 @@ yyreduce: break; case 95: -#line 488 "ael.y" +#line 496 "ael.y" { (yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval); @@ -2509,7 +2514,7 @@ yyreduce: break; case 96: -#line 493 "ael.y" +#line 501 "ael.y" { (yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval); @@ -2519,17 +2524,17 @@ yyreduce: break; case 97: -#line 499 "ael.y" +#line 507 "ael.y" { (yyval.pval)=0; ;} break; case 98: -#line 502 "ael.y" +#line 510 "ael.y" { (yyval.pval) = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str);;} break; case 99: -#line 503 "ael.y" +#line 511 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2538,7 +2543,7 @@ yyreduce: break; case 100: -#line 508 "ael.y" +#line 516 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2547,7 +2552,7 @@ yyreduce: break; case 101: -#line 513 "ael.y" +#line 521 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); @@ -2558,7 +2563,7 @@ yyreduce: break; case 102: -#line 520 "ael.y" +#line 528 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); @@ -2569,7 +2574,7 @@ yyreduce: break; case 103: -#line 527 "ael.y" +#line 535 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column); (yyval.pval)->u1.str = strdup("default"); @@ -2580,7 +2585,7 @@ yyreduce: break; case 104: -#line 534 "ael.y" +#line 542 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column); (yyval.pval)->u1.str = strdup("default"); @@ -2591,7 +2596,7 @@ yyreduce: break; case 105: -#line 543 "ael.y" +#line 551 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str); @@ -2600,7 +2605,7 @@ yyreduce: break; case 106: -#line 548 "ael.y" +#line 556 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); @@ -2609,7 +2614,7 @@ yyreduce: break; case 107: -#line 553 "ael.y" +#line 561 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str); @@ -2620,7 +2625,7 @@ yyreduce: break; case 108: -#line 560 "ael.y" +#line 568 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str); @@ -2631,7 +2636,7 @@ yyreduce: break; case 109: -#line 567 "ael.y" +#line 575 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column); (yyval.pval)->u1.str = strdup("default"); @@ -2642,7 +2647,7 @@ yyreduce: break; case 110: -#line 574 "ael.y" +#line 582 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column); (yyval.pval)->u1.str = strdup("default"); @@ -2653,12 +2658,12 @@ yyreduce: break; case 111: -#line 583 "ael.y" +#line 591 "ael.y" {reset_argcount(parseio->scanner);;} break; case 112: -#line 583 "ael.y" +#line 591 "ael.y" { (yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-4]).first_line,(yylsp[-3]).last_line, (yylsp[-4]).first_column, (yylsp[-3]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); @@ -2666,19 +2671,19 @@ yyreduce: break; case 113: -#line 587 "ael.y" +#line 595 "ael.y" { (yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); ;} break; case 114: -#line 592 "ael.y" +#line 600 "ael.y" {reset_argcount(parseio->scanner);;} break; case 115: -#line 592 "ael.y" +#line 600 "ael.y" { if (strcasecmp((yyvsp[-2].str),"goto") == 0) { (yyval.pval)= npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); @@ -2690,7 +2695,7 @@ yyreduce: break; case 116: -#line 602 "ael.y" +#line 610 "ael.y" {(yyval.pval) = (yyvsp[-2].pval); if( (yyval.pval)->type == PV_GOTO ) (yyval.pval)->u1.list = (yyvsp[-1].pval); @@ -2700,26 +2705,26 @@ yyreduce: break; case 117: -#line 608 "ael.y" +#line 616 "ael.y" {(yyval.pval)=(yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;} break; case 118: -#line 611 "ael.y" +#line 619 "ael.y" { (yyval.pval)= npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str);;} break; case 119: -#line 614 "ael.y" +#line 622 "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 120: -#line 617 "ael.y" +#line 625 "ael.y" { pval *z = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval) = (yyvsp[-2].pval); @@ -2728,7 +2733,7 @@ yyreduce: break; case 121: -#line 622 "ael.y" +#line 630 "ael.y" { pval *z = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval) = (yyvsp[-1].pval); @@ -2737,112 +2742,112 @@ yyreduce: break; case 122: -#line 629 "ael.y" +#line 637 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 123: -#line 630 "ael.y" +#line 638 "ael.y" { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));} else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);} else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;} break; case 124: -#line 635 "ael.y" +#line 643 "ael.y" { (yyval.pval) = npval(PV_CASE,(yylsp[-3]).first_line,(yylsp[-1]).last_line, (yylsp[-3]).first_column, (yylsp[-1]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval);;} break; case 125: -#line 637 "ael.y" +#line 645 "ael.y" {(yyval.pval) = npval(PV_DEFAULT,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = 0; (yyval.pval)->u2.statements = (yyvsp[0].pval);;} break; case 126: -#line 638 "ael.y" +#line 646 "ael.y" {(yyval.pval) = npval(PV_PATTERN,(yylsp[-3]).first_line,(yylsp[-1]).last_line, (yylsp[-3]).first_column, (yylsp[-1]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval);;} break; case 127: -#line 639 "ael.y" +#line 647 "ael.y" {(yyval.pval) = npval(PV_CASE,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;} break; case 128: -#line 640 "ael.y" +#line 648 "ael.y" {(yyval.pval) = npval(PV_DEFAULT,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = 0;;} break; case 129: -#line 641 "ael.y" +#line 649 "ael.y" {(yyval.pval) = npval(PV_PATTERN,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;} break; case 130: -#line 644 "ael.y" +#line 652 "ael.y" {(yyval.pval) = (yyvsp[0].pval);;} break; case 131: -#line 645 "ael.y" +#line 653 "ael.y" { if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));} else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);} else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;} break; case 132: -#line 650 "ael.y" +#line 658 "ael.y" {(yyval.pval)=(yyvsp[0].pval);;} break; case 133: -#line 651 "ael.y" +#line 659 "ael.y" {(yyval.pval)=npval(PV_CATCH,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-3].str); (yyval.pval)->u2.statements = (yyvsp[-1].pval);;} break; case 134: -#line 654 "ael.y" +#line 662 "ael.y" {(yyval.pval)= npval(PV_SWITCHES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;} break; case 135: -#line 655 "ael.y" +#line 663 "ael.y" {(yyval.pval)= npval(PV_SWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;} break; case 136: -#line 658 "ael.y" +#line 666 "ael.y" {(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;} break; case 137: -#line 659 "ael.y" +#line 667 "ael.y" {(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); ;} break; case 138: -#line 662 "ael.y" +#line 670 "ael.y" {(yyval.pval)=npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;} break; case 139: -#line 663 "ael.y" +#line 671 "ael.y" {pval *z = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)=(yyvsp[-2].pval); z->u1.str = (yyvsp[-1].str); linku1((yyval.pval),z); ;} break; case 140: -#line 664 "ael.y" +#line 672 "ael.y" {(yyval.pval)=(yyvsp[-1].pval);;} break; case 141: -#line 667 "ael.y" +#line 675 "ael.y" {(yyval.pval)=npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;} break; case 142: -#line 668 "ael.y" +#line 676 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column); (yyval.pval)->u1.str = (yyvsp[-13].str); @@ -2862,7 +2867,7 @@ yyreduce: break; case 143: -#line 684 "ael.y" +#line 692 "ael.y" { (yyval.pval)=npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-8]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column); (yyval.pval)->u1.str = (yyvsp[-9].str); @@ -2879,12 +2884,12 @@ yyreduce: break; case 144: -#line 697 "ael.y" +#line 705 "ael.y" {pval *z = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)=(yyvsp[-2].pval); z->u1.str = (yyvsp[-1].str); linku1((yyval.pval),z); ;} break; case 145: -#line 698 "ael.y" +#line 706 "ael.y" {pval *z = npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column); (yyval.pval)=(yyvsp[-14].pval); z->u1.str = (yyvsp[-13].str); linku1((yyval.pval),z); z->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column); @@ -2903,7 +2908,7 @@ yyreduce: break; case 146: -#line 714 "ael.y" +#line 722 "ael.y" {pval *z = npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-9]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column); (yyval.pval)=(yyvsp[-10].pval); z->u1.str = (yyvsp[-9].str); linku1((yyval.pval),z); z->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column); @@ -2919,29 +2924,29 @@ yyreduce: break; case 147: -#line 726 "ael.y" +#line 734 "ael.y" {(yyval.pval)=(yyvsp[-1].pval);;} break; case 148: -#line 729 "ael.y" +#line 737 "ael.y" { (yyval.str) = (yyvsp[0].str);;} break; case 149: -#line 730 "ael.y" +#line 738 "ael.y" {(yyval.str)=strdup("default");;} break; case 150: -#line 733 "ael.y" +#line 741 "ael.y" { (yyval.pval)= npval(PV_INCLUDES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;} break; case 151: -#line 736 "ael.y" +#line 744 "ael.y" { (yyval.pval)= npval(PV_INCLUDES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;} break; @@ -2951,7 +2956,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 2955 "ael.tab.c" +#line 2960 "ael.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -3226,7 +3231,7 @@ yyreturn: } -#line 741 "ael.y" +#line 749 "ael.y" static char *token_equivs1[] = @@ -3379,6 +3384,12 @@ static struct pval *npval(pvaltype type, int first_line, int last_line, return z; } +static struct pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last) +{ + return npval(type, first->first_line, last->last_line, + first->first_column, last->last_column); +} + /* append second element to the list in the first one */ static void linku1(pval *head, pval *tail) { diff --git a/pbx/ael/ael.tab.h b/pbx/ael/ael.tab.h index 9328eb746..d4a924b63 100644 --- a/pbx/ael/ael.tab.h +++ b/pbx/ael/ael.tab.h @@ -115,7 +115,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 51 "ael.y" +#line 53 "ael.y" typedef union YYSTYPE { char *str; struct pval *pval; diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y index f2594c1d1..56df52b82 100644 --- a/pbx/ael/ael.y +++ b/pbx/ael/ael.y @@ -28,8 +28,10 @@ #include "asterisk/utils.h" /* ast_calloc() */ #include "asterisk/ael_structs.h" +/* create a new object with start-end marker */ static pval *npval(pvaltype type, int first_line, int last_line, int first_column, int last_column); + static void linku1(pval *head, pval *tail); void reset_parencount(yyscan_t yyscanner); @@ -58,6 +60,10 @@ static char *ael_token_subst(char *mess); void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s); int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , void * yyscanner); +/* create a new object with start-end marker, simplified interface. + * Must be declared here because YYLTYPE is not known before + */ +static pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last); %} @@ -152,8 +158,7 @@ object : context {$$=$1;} ; context : KW_CONTEXT word LC elements RC { - $$ = npval(PV_CONTEXT, @1.first_line, @5.last_line, - @1.first_column, @5.last_column); + $$ = npval2(PV_CONTEXT, &@1, &@5); $$->u1.str = $2; $$->u2.statements = $4; } | KW_CONTEXT word LC RC /* empty context OK */ { @@ -376,8 +381,11 @@ switch_head : KW_SWITCH LP { reset_parencount(parseio->scanner); } word RP LC { $$->u1.str = $4; } ; +/* + * Definition of a statememt in our language + */ statement : LC statements RC { - $$=npval(PV_STATEMENTBLOCK,@1.first_line,@3.last_line, @1.first_column, @3.last_column); + $$ = npval2(PV_STATEMENTBLOCK, &@1, &@3); $$->u1.list = $2; } | word EQ {reset_semicount(parseio->scanner);} word SEMI { $$=npval(PV_VARDEC,@1.first_line,@5.last_line, @1.first_column, @5.last_column); @@ -890,6 +898,12 @@ static struct pval *npval(pvaltype type, int first_line, int last_line, return z; } +static struct pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last) +{ + return npval(type, first->first_line, last->last_line, + first->first_column, last->last_column); +} + /* append second element to the list in the first one */ static void linku1(pval *head, pval *tail) { |