]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
document options, move objects of the same type close to
authorLuigi Rizzo <rizzo@icir.org>
Thu, 27 Apr 2006 19:51:59 +0000 (19:51 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Thu, 27 Apr 2006 19:51:59 +0000 (19:51 +0000)
each other so it is evident what they are.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@22958 65c4cc65-6c06-0410-ace0-fbb531ad65f3

pbx/ael/ael.tab.c
pbx/ael/ael.y

index bcb502d691d7b5d5166ca339f8ab23149b67031c..627592215f20928e86b37341375930ba2b9afda2 100644 (file)
@@ -561,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,   136,   136,   139,   140,   151,   154,   155,   156,   157,
-     160,   164,   167,   171,   174,   179,   183,   188,   194,   197,
-     200,   203,   208,   211,   216,   217,   218,   221,   221,   227,
-     230,   235,   238,   239,   240,   243,   246,   247,   248,   249,
-     250,   251,   251,   255,   256,   259,   264,   268,   273,   278,
-     287,   288,   291,   294,   294,   299,   299,   304,   320,   340,
-     341,   348,   349,   354,   362,   363,   367,   373,   373,   381,
-     384,   384,   388,   391,   394,   397,   398,   399,   397,   405,
-     405,   409,   413,   418,   422,   426,   429,   429,   462,   464,
-     466,   468,   473,   479,   484,   490,   495,   501,   504,   505,
-     510,   515,   522,   529,   536,   545,   550,   555,   562,   569,
-     576,   585,   585,   590,   595,   595,   605,   611,   614,   617,
-     620,   625,   632,   633,   638,   642,   646,   650,   653,   656,
-     661,   662,   667,   668,   671,   672,   675,   676,   679,   680,
-     681,   684,   685,   701,   714,   715,   730,   743,   746,   747,
-     750,   753
+       0,   160,   160,   163,   164,   175,   178,   179,   180,   181,
+     184,   188,   191,   195,   198,   203,   207,   212,   218,   221,
+     224,   227,   232,   235,   240,   241,   242,   245,   245,   251,
+     254,   259,   262,   263,   264,   267,   270,   271,   272,   273,
+     274,   275,   275,   279,   280,   283,   288,   292,   297,   302,
+     311,   312,   315,   318,   318,   323,   323,   328,   344,   364,
+     365,   372,   373,   378,   386,   387,   391,   397,   397,   405,
+     408,   408,   412,   415,   418,   421,   422,   423,   421,   429,
+     429,   433,   437,   442,   446,   450,   453,   453,   486,   488,
+     490,   492,   497,   503,   508,   514,   519,   525,   528,   529,
+     534,   539,   546,   553,   560,   569,   574,   579,   586,   593,
+     600,   609,   609,   614,   619,   619,   629,   635,   638,   641,
+     644,   649,   656,   657,   662,   666,   670,   674,   677,   680,
+     685,   686,   691,   692,   695,   696,   699,   700,   703,   704,
+     705,   708,   709,   725,   738,   739,   754,   767,   770,   771,
+     774,   777
 };
 #endif
 
@@ -1313,194 +1313,425 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
   switch (yytype)
     {
       case 41: /* "word" */
-#line 131 "ael.y"
+#line 155 "ael.y"
         { free((yyvaluep->str));};
 #line 1319 "ael.tab.c"
         break;
       case 44: /* "objects" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1324 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1331 "ael.tab.c"
         break;
       case 45: /* "object" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1329 "ael.tab.c"
+#line 140 "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"
         break;
       case 46: /* "context" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1334 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1355 "ael.tab.c"
         break;
       case 47: /* "macro" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1339 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1367 "ael.tab.c"
         break;
       case 48: /* "globals" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1344 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1379 "ael.tab.c"
         break;
       case 49: /* "global_statements" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1349 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1391 "ael.tab.c"
         break;
       case 50: /* "global_statement" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1354 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1403 "ael.tab.c"
         break;
       case 52: /* "arglist" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1359 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1415 "ael.tab.c"
         break;
       case 53: /* "elements" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1364 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1427 "ael.tab.c"
         break;
       case 54: /* "element" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1369 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1439 "ael.tab.c"
         break;
       case 56: /* "ignorepat" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1374 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1451 "ael.tab.c"
         break;
       case 57: /* "extension" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1379 "ael.tab.c"
+#line 140 "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"
         break;
       case 58: /* "statements" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1384 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1475 "ael.tab.c"
         break;
       case 59: /* "if_head" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1389 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1487 "ael.tab.c"
         break;
       case 61: /* "random_head" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1394 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1499 "ael.tab.c"
         break;
       case 63: /* "iftime_head" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1399 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1511 "ael.tab.c"
         break;
       case 64: /* "word_list" */
-#line 131 "ael.y"
+#line 155 "ael.y"
         { free((yyvaluep->str));};
-#line 1404 "ael.tab.c"
+#line 1516 "ael.tab.c"
         break;
       case 65: /* "word3_list" */
-#line 131 "ael.y"
+#line 155 "ael.y"
         { free((yyvaluep->str));};
-#line 1409 "ael.tab.c"
+#line 1521 "ael.tab.c"
         break;
       case 66: /* "goto_word" */
-#line 131 "ael.y"
+#line 155 "ael.y"
         { free((yyvaluep->str));};
-#line 1414 "ael.tab.c"
+#line 1526 "ael.tab.c"
         break;
       case 67: /* "switch_head" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1419 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1538 "ael.tab.c"
         break;
       case 69: /* "statement" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1424 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1550 "ael.tab.c"
         break;
       case 76: /* "target" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1429 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1562 "ael.tab.c"
         break;
       case 77: /* "jumptarget" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1434 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1574 "ael.tab.c"
         break;
       case 78: /* "macro_call" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1439 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1586 "ael.tab.c"
         break;
       case 80: /* "application_call_head" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1444 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1598 "ael.tab.c"
         break;
       case 82: /* "application_call" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1449 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1610 "ael.tab.c"
         break;
       case 83: /* "eval_arglist" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1454 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1622 "ael.tab.c"
         break;
       case 84: /* "case_statements" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1459 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1634 "ael.tab.c"
         break;
       case 85: /* "case_statement" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1464 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1646 "ael.tab.c"
         break;
       case 86: /* "macro_statements" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1469 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1658 "ael.tab.c"
         break;
       case 87: /* "macro_statement" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1474 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1670 "ael.tab.c"
         break;
       case 88: /* "switches" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1479 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1682 "ael.tab.c"
         break;
       case 89: /* "eswitches" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1484 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1694 "ael.tab.c"
         break;
       case 90: /* "switchlist" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1489 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1706 "ael.tab.c"
         break;
       case 91: /* "includeslist" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1494 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1718 "ael.tab.c"
         break;
       case 92: /* "includedname" */
-#line 131 "ael.y"
+#line 155 "ael.y"
         { free((yyvaluep->str));};
-#line 1499 "ael.tab.c"
+#line 1723 "ael.tab.c"
         break;
       case 93: /* "includes" */
-#line 128 "ael.y"
-        { if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1504 "ael.tab.c"
+#line 140 "ael.y"
+        {
+               if (yymsg[0] != 'C') {
+                       destroy_pval((yyvaluep->pval));
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       };
+#line 1735 "ael.tab.c"
         break;
 
       default:
@@ -1817,17 +2048,17 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 136 "ael.y"
+#line 160 "ael.y"
     { (yyval.pval) = parseio->pval = (yyvsp[0].pval); ;}
     break;
 
   case 3:
-#line 139 "ael.y"
+#line 163 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 4:
-#line 141 "ael.y"
+#line 165 "ael.y"
     {
                        if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {
                                (yyval.pval)=(yyvsp[-1].pval);
@@ -1841,32 +2072,32 @@ yyreduce:
     break;
 
   case 5:
-#line 151 "ael.y"
+#line 175 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 6:
-#line 154 "ael.y"
+#line 178 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 7:
-#line 155 "ael.y"
+#line 179 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 8:
-#line 156 "ael.y"
+#line 180 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 9:
-#line 157 "ael.y"
+#line 181 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 10:
-#line 160 "ael.y"
+#line 184 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-3].str);
@@ -1874,14 +2105,14 @@ yyreduce:
     break;
 
   case 11:
-#line 164 "ael.y"
+#line 188 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
     break;
 
   case 12:
-#line 167 "ael.y"
+#line 191 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = strdup("default");
@@ -1889,14 +2120,14 @@ yyreduce:
     break;
 
   case 13:
-#line 171 "ael.y"
+#line 195 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = strdup("default"); ;}
     break;
 
   case 14:
-#line 174 "ael.y"
+#line 198 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-5]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-3].str);
@@ -1905,7 +2136,7 @@ yyreduce:
     break;
 
   case 15:
-#line 179 "ael.y"
+#line 203 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -1913,7 +2144,7 @@ yyreduce:
     break;
 
   case 16:
-#line 183 "ael.y"
+#line 207 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-5]), &(yylsp[0]));
                (yyval.pval)->u1.str = strdup("default");
@@ -1922,7 +2153,7 @@ yyreduce:
     break;
 
   case 17:
-#line 188 "ael.y"
+#line 212 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = strdup("default");
@@ -1930,69 +2161,69 @@ yyreduce:
     break;
 
   case 18:
-#line 194 "ael.y"
+#line 218 "ael.y"
     {
                (yyval.pval) = npval2(PV_MACRO, &(yylsp[-7]), &(yylsp[0]));
                (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 197 "ael.y"
+#line 221 "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 200 "ael.y"
+#line 224 "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 203 "ael.y"
+#line 227 "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 208 "ael.y"
+#line 232 "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 211 "ael.y"
+#line 235 "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 216 "ael.y"
+#line 240 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 25:
-#line 217 "ael.y"
+#line 241 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));;}
     break;
 
   case 26:
-#line 218 "ael.y"
+#line 242 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 27:
-#line 221 "ael.y"
+#line 245 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
   case 28:
-#line 221 "ael.y"
+#line 245 "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);
@@ -2000,14 +2231,14 @@ yyreduce:
     break;
 
   case 29:
-#line 227 "ael.y"
+#line 251 "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 230 "ael.y"
+#line 254 "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);
@@ -2016,64 +2247,64 @@ yyreduce:
     break;
 
   case 31:
-#line 235 "ael.y"
+#line 259 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 32:
-#line 238 "ael.y"
+#line 262 "ael.y"
     { (yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 33:
-#line 239 "ael.y"
+#line 263 "ael.y"
     {(yyval.pval)=0;;}
     break;
 
   case 34:
-#line 240 "ael.y"
+#line 264 "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 243 "ael.y"
+#line 267 "ael.y"
     { (yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 36:
-#line 246 "ael.y"
+#line 270 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 37:
-#line 247 "ael.y"
+#line 271 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 38:
-#line 248 "ael.y"
+#line 272 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 39:
-#line 249 "ael.y"
+#line 273 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 40:
-#line 250 "ael.y"
+#line 274 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 41:
-#line 251 "ael.y"
+#line 275 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
   case 42:
-#line 251 "ael.y"
+#line 275 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
@@ -2081,24 +2312,24 @@ yyreduce:
     break;
 
   case 43:
-#line 255 "ael.y"
+#line 279 "ael.y"
     {free((yyvsp[-1].str)); (yyval.pval)=0;;}
     break;
 
   case 44:
-#line 256 "ael.y"
+#line 280 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 45:
-#line 259 "ael.y"
+#line 283 "ael.y"
     {
                (yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 46:
-#line 264 "ael.y"
+#line 288 "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);
@@ -2106,7 +2337,7 @@ yyreduce:
     break;
 
   case 47:
-#line 268 "ael.y"
+#line 292 "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);
@@ -2115,7 +2346,7 @@ yyreduce:
     break;
 
   case 48:
-#line 273 "ael.y"
+#line 297 "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);
@@ -2124,7 +2355,7 @@ yyreduce:
     break;
 
   case 49:
-#line 278 "ael.y"
+#line 302 "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);
@@ -2134,48 +2365,48 @@ yyreduce:
     break;
 
   case 50:
-#line 287 "ael.y"
+#line 311 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 51:
-#line 288 "ael.y"
+#line 312 "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 291 "ael.y"
+#line 315 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 53:
-#line 294 "ael.y"
+#line 318 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 54:
-#line 294 "ael.y"
+#line 318 "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 299 "ael.y"
+#line 323 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 56:
-#line 299 "ael.y"
+#line 323 "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 305 "ael.y"
+#line 329 "ael.y"
     {
                (yyval.pval) = npval2(PV_IFTIME, &(yylsp[-13]), &(yylsp[-9])); /* XXX really @5 or more ? */
                (yyval.pval)->u1.list = npval2(PV_WORD, &(yylsp[-11]), &(yylsp[-11]));
@@ -2194,7 +2425,7 @@ yyreduce:
     break;
 
   case 58:
-#line 320 "ael.y"
+#line 344 "ael.y"
     {
                (yyval.pval) = npval2(PV_IFTIME, &(yylsp[-9]), &(yylsp[-5])); /* XXX @5 or greater ? */
                (yyval.pval)->u1.list = npval2(PV_WORD, &(yylsp[-7]), &(yylsp[-7]));
@@ -2210,12 +2441,12 @@ yyreduce:
     break;
 
   case 59:
-#line 340 "ael.y"
+#line 364 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 60:
-#line 341 "ael.y"
+#line 365 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2224,12 +2455,12 @@ yyreduce:
     break;
 
   case 61:
-#line 348 "ael.y"
+#line 372 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 62:
-#line 349 "ael.y"
+#line 373 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2238,7 +2469,7 @@ yyreduce:
     break;
 
   case 63:
-#line 354 "ael.y"
+#line 378 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s%s", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-2].str));
@@ -2248,12 +2479,12 @@ yyreduce:
     break;
 
   case 64:
-#line 362 "ael.y"
+#line 386 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 65:
-#line 363 "ael.y"
+#line 387 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2261,7 +2492,7 @@ yyreduce:
     break;
 
   case 66:
-#line 367 "ael.y"
+#line 391 "ael.y"
     {
                asprintf(&((yyval.str)), "%s:%s", (yyvsp[-2].str), (yyvsp[0].str));
                free((yyvsp[-2].str));
@@ -2269,31 +2500,31 @@ yyreduce:
     break;
 
   case 67:
-#line 373 "ael.y"
+#line 397 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 68:
-#line 373 "ael.y"
+#line 397 "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 381 "ael.y"
+#line 405 "ael.y"
     {
                (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
     break;
 
   case 70:
-#line 384 "ael.y"
+#line 408 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 71:
-#line 384 "ael.y"
+#line 408 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
@@ -2301,43 +2532,43 @@ yyreduce:
     break;
 
   case 72:
-#line 388 "ael.y"
+#line 412 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 73:
-#line 391 "ael.y"
+#line 415 "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 394 "ael.y"
+#line 418 "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 397 "ael.y"
+#line 421 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 76:
-#line 398 "ael.y"
+#line 422 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 77:
-#line 399 "ael.y"
+#line 423 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 78:
-#line 399 "ael.y"
+#line 423 "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);
@@ -2347,12 +2578,12 @@ yyreduce:
     break;
 
   case 79:
-#line 405 "ael.y"
+#line 429 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 80:
-#line 405 "ael.y"
+#line 429 "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);
@@ -2360,7 +2591,7 @@ yyreduce:
     break;
 
   case 81:
-#line 409 "ael.y"
+#line 433 "ael.y"
     {
                (yyval.pval)=(yyvsp[-1].pval);
                (yyval.pval)->endline = (yylsp[0]).last_line;
@@ -2368,7 +2599,7 @@ yyreduce:
     break;
 
   case 82:
-#line 413 "ael.y"
+#line 437 "ael.y"
     {
                (yyval.pval)=(yyvsp[-2].pval);
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);
@@ -2377,7 +2608,7 @@ yyreduce:
     break;
 
   case 83:
-#line 418 "ael.y"
+#line 442 "ael.y"
     {
                (yyval.pval) = (yyvsp[-1].pval);
                (yyval.pval)->endline = (yylsp[-1]).last_line;
@@ -2385,7 +2616,7 @@ yyreduce:
     break;
 
   case 84:
-#line 422 "ael.y"
+#line 446 "ael.y"
     {
                (yyval.pval) = (yyvsp[-1].pval);
                (yyval.pval)->endline = (yylsp[0]).last_line;
@@ -2393,19 +2624,19 @@ yyreduce:
     break;
 
   case 85:
-#line 426 "ael.y"
+#line 450 "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 429 "ael.y"
+#line 453 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 87:
-#line 429 "ael.y"
+#line 453 "ael.y"
     {
                char *bufx;
                int tot=0;
@@ -2442,25 +2673,25 @@ yyreduce:
     break;
 
   case 88:
-#line 462 "ael.y"
+#line 486 "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 464 "ael.y"
+#line 488 "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 466 "ael.y"
+#line 490 "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 468 "ael.y"
+#line 492 "ael.y"
     {
                (yyval.pval)=(yyvsp[-1].pval);
                (yyval.pval)->u2.statements = (yyvsp[0].pval);
@@ -2469,7 +2700,7 @@ yyreduce:
     break;
 
   case 92:
-#line 473 "ael.y"
+#line 497 "ael.y"
     {
                (yyval.pval)=(yyvsp[-3].pval);
                (yyval.pval)->u2.statements = (yyvsp[-2].pval);
@@ -2479,7 +2710,7 @@ yyreduce:
     break;
 
   case 93:
-#line 479 "ael.y"
+#line 503 "ael.y"
     {
                (yyval.pval)=(yyvsp[-1].pval);
                (yyval.pval)->u2.statements = (yyvsp[0].pval);
@@ -2488,7 +2719,7 @@ yyreduce:
     break;
 
   case 94:
-#line 484 "ael.y"
+#line 508 "ael.y"
     {
                (yyval.pval)=(yyvsp[-3].pval);
                (yyval.pval)->u2.statements = (yyvsp[-2].pval);
@@ -2498,7 +2729,7 @@ yyreduce:
     break;
 
   case 95:
-#line 490 "ael.y"
+#line 514 "ael.y"
     {
                (yyval.pval)=(yyvsp[-1].pval);
                (yyval.pval)->u2.statements = (yyvsp[0].pval);
@@ -2507,7 +2738,7 @@ yyreduce:
     break;
 
   case 96:
-#line 495 "ael.y"
+#line 519 "ael.y"
     {
                (yyval.pval)=(yyvsp[-3].pval);
                (yyval.pval)->u2.statements = (yyvsp[-2].pval);
@@ -2517,17 +2748,17 @@ yyreduce:
     break;
 
   case 97:
-#line 501 "ael.y"
+#line 525 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
   case 98:
-#line 504 "ael.y"
+#line 528 "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 505 "ael.y"
+#line 529 "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);
@@ -2536,7 +2767,7 @@ yyreduce:
     break;
 
   case 100:
-#line 510 "ael.y"
+#line 534 "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);
@@ -2545,7 +2776,7 @@ yyreduce:
     break;
 
   case 101:
-#line 515 "ael.y"
+#line 539 "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);
@@ -2556,7 +2787,7 @@ yyreduce:
     break;
 
   case 102:
-#line 522 "ael.y"
+#line 546 "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);
@@ -2567,7 +2798,7 @@ yyreduce:
     break;
 
   case 103:
-#line 529 "ael.y"
+#line 553 "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");
@@ -2578,7 +2809,7 @@ yyreduce:
     break;
 
   case 104:
-#line 536 "ael.y"
+#line 560 "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");
@@ -2589,7 +2820,7 @@ yyreduce:
     break;
 
   case 105:
-#line 545 "ael.y"
+#line 569 "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);
@@ -2598,7 +2829,7 @@ yyreduce:
     break;
 
   case 106:
-#line 550 "ael.y"
+#line 574 "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);
@@ -2607,7 +2838,7 @@ yyreduce:
     break;
 
   case 107:
-#line 555 "ael.y"
+#line 579 "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);
@@ -2618,7 +2849,7 @@ yyreduce:
     break;
 
   case 108:
-#line 562 "ael.y"
+#line 586 "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);
@@ -2629,7 +2860,7 @@ yyreduce:
     break;
 
   case 109:
-#line 569 "ael.y"
+#line 593 "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");
@@ -2640,7 +2871,7 @@ yyreduce:
     break;
 
   case 110:
-#line 576 "ael.y"
+#line 600 "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");
@@ -2651,12 +2882,12 @@ yyreduce:
     break;
 
   case 111:
-#line 585 "ael.y"
+#line 609 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 112:
-#line 585 "ael.y"
+#line 609 "ael.y"
     {
                /* XXX original code had @2 but i think we need @5 */
                (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[-4]), &(yylsp[0]));
@@ -2665,19 +2896,19 @@ yyreduce:
     break;
 
   case 113:
-#line 590 "ael.y"
+#line 614 "ael.y"
     {
                (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
     break;
 
   case 114:
-#line 595 "ael.y"
+#line 619 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 115:
-#line 595 "ael.y"
+#line 619 "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);
@@ -2689,7 +2920,7 @@ yyreduce:
     break;
 
   case 116:
-#line 605 "ael.y"
+#line 629 "ael.y"
     {(yyval.pval) = (yyvsp[-2].pval);
                if( (yyval.pval)->type == PV_GOTO )
                        (yyval.pval)->u1.list = (yyvsp[-1].pval);
@@ -2699,26 +2930,26 @@ yyreduce:
     break;
 
   case 117:
-#line 611 "ael.y"
+#line 635 "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 614 "ael.y"
+#line 638 "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 617 "ael.y"
+#line 641 "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 620 "ael.y"
+#line 644 "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);
@@ -2727,7 +2958,7 @@ yyreduce:
     break;
 
   case 121:
-#line 625 "ael.y"
+#line 649 "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);
@@ -2736,19 +2967,19 @@ yyreduce:
     break;
 
   case 122:
-#line 632 "ael.y"
+#line 656 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 123:
-#line 633 "ael.y"
+#line 657 "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 638 "ael.y"
+#line 662 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[-3]), &(yylsp[-1])); /* XXX 3 or 4 ? */
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2756,7 +2987,7 @@ yyreduce:
     break;
 
   case 125:
-#line 642 "ael.y"
+#line 666 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = NULL;
@@ -2764,7 +2995,7 @@ yyreduce:
     break;
 
   case 126:
-#line 646 "ael.y"
+#line 670 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-3]), &(yylsp[0])); /* XXX@3 or @4 ? */
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2772,90 +3003,90 @@ yyreduce:
     break;
 
   case 127:
-#line 650 "ael.y"
+#line 674 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 128:
-#line 653 "ael.y"
+#line 677 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = NULL;;}
     break;
 
   case 129:
-#line 656 "ael.y"
+#line 680 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 130:
-#line 661 "ael.y"
+#line 685 "ael.y"
     {(yyval.pval) = (yyvsp[0].pval);;}
     break;
 
   case 131:
-#line 662 "ael.y"
+#line 686 "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 667 "ael.y"
+#line 691 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 133:
-#line 668 "ael.y"
+#line 692 "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 671 "ael.y"
+#line 695 "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 672 "ael.y"
+#line 696 "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 675 "ael.y"
+#line 699 "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 676 "ael.y"
+#line 700 "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 679 "ael.y"
+#line 703 "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 680 "ael.y"
+#line 704 "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 681 "ael.y"
+#line 705 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 141:
-#line 684 "ael.y"
+#line 708 "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 685 "ael.y"
+#line 709 "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);
@@ -2875,7 +3106,7 @@ yyreduce:
     break;
 
   case 143:
-#line 701 "ael.y"
+#line 725 "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);
@@ -2892,12 +3123,12 @@ yyreduce:
     break;
 
   case 144:
-#line 714 "ael.y"
+#line 738 "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 715 "ael.y"
+#line 739 "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);
@@ -2916,7 +3147,7 @@ yyreduce:
     break;
 
   case 146:
-#line 731 "ael.y"
+#line 755 "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);
@@ -2932,29 +3163,29 @@ yyreduce:
     break;
 
   case 147:
-#line 743 "ael.y"
+#line 767 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 148:
-#line 746 "ael.y"
+#line 770 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 149:
-#line 747 "ael.y"
+#line 771 "ael.y"
     {(yyval.str)=strdup("default");;}
     break;
 
   case 150:
-#line 750 "ael.y"
+#line 774 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 151:
-#line 753 "ael.y"
+#line 777 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-2]), &(yylsp[0]));;}
     break;
@@ -2964,7 +3195,7 @@ yyreduce:
     }
 
 /* Line 1126 of yacc.c.  */
-#line 2968 "ael.tab.c"
+#line 3199 "ael.tab.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -3239,7 +3470,7 @@ yyreturn:
 }
 
 
-#line 758 "ael.y"
+#line 782 "ael.y"
 
 
 static char *token_equivs1[] =
index f09e291ef70c61d7be48857cf9ac7fa06d3c0dcb..48fac1c77770b8eeb9964e0d06ff7fe999e37477 100644 (file)
@@ -91,9 +91,7 @@ static pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last);
 %type <pval>target jumptarget
 %type <pval>statement
 %type <pval>switch_head
-%type <str>word_list goto_word
-%type <str>word3_list
-%type <str>includedname
+
 %type <pval>if_head
 %type <pval>random_head
 %type <pval>iftime_head
@@ -112,22 +110,48 @@ static pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last);
 %type <pval>objects
 %type <pval>file
 
-/* OPTIONS */
-%locations
-%pure-parser
+%type <str>goto_word
+%type <str>word_list
+%type <str>word3_list
+%type <str>includedname
+
+/*
+ * OPTIONS
+ */
+
+%locations     /* track source location using @n variables (yylloc in flex) */
+%pure-parser   /* pass yylval and yylloc as arguments to yylex(). */
 %name-prefix="ael_yy"
-/* the following option does two things:
-    it adds the locp arg to the yyerror
-    and it adds the NULL to the yyerrr arg list, and calls yyerror with NULL for that arg.
   You can't get the locp arg without the NULL arg, don't ask me why. */
+/*
+ * add an additional argument, parseio, to yyparse(),
+ * which is then accessible in the grammar actions
+ */
 %parse-param {struct parse_io *parseio}
+
 /* 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 5
 %error-verbose
-%destructor { if (yymsg[0] != 'C') {destroy_pval($$); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} } includes includeslist switchlist eswitches switches macro_statement macro_statements case_statement case_statements eval_arglist application_call
-                                application_call_head macro_call target jumptarget statement switch_head if_head random_head iftime_head statements extension ignorepat element
-                                elements arglist global_statement global_statements globals macro context object objects
+
+/*
+ * declare destructors for objects.
+ * The former is for pval, the latter for strings.
+ */
+%destructor {
+               if (yymsg[0] != 'C') {
+                       destroy_pval($$);
+                       prev_word=0;
+               } else {
+                       printf("Cleanup destructor called for pvals\n");
+               }
+       }       includes includeslist switchlist eswitches switches
+               macro_statement macro_statements case_statement case_statements
+               eval_arglist application_call application_call_head
+               macro_call target jumptarget statement switch_head
+               if_head random_head iftime_head statements extension
+               ignorepat element elements arglist global_statement
+               global_statements globals macro context object objects
+
 %destructor { free($$);}  word word_list goto_word word3_list includedname