simplify case_statements
authorLuigi Rizzo <rizzo@icir.org>
Wed, 3 May 2006 16:12:31 +0000 (16:12 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Wed, 3 May 2006 16:12:31 +0000 (16:12 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@24424 65c4cc65-6c06-0410-ace0-fbb531ad65f3

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

index 251e119..5e8b38a 100644 (file)
@@ -420,16 +420,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  14
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   400
+#define YYLAST   327
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  42
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  54
+#define YYNNTS  55
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  139
+#define YYNRULES  138
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  265
+#define YYNSTATES  266
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -489,9 +489,9 @@ static const unsigned short int yyprhs[] =
      260,   261,   267,   270,   273,   276,   280,   282,   285,   286,
      288,   292,   296,   302,   308,   314,   320,   322,   326,   332,
      336,   337,   343,   347,   348,   352,   356,   359,   361,   362,
-     364,   365,   369,   370,   372,   375,   380,   384,   389,   393,
-     396,   400,   401,   403,   406,   408,   414,   417,   420,   424,
-     427,   430,   434,   437,   440,   445,   447,   450,   453,   458
+     364,   365,   369,   370,   372,   375,   376,   378,   383,   387,
+     392,   393,   395,   398,   400,   406,   409,   412,   416,   419,
+     422,   426,   429,   432,   437,   439,   442,   445,   450
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -500,13 +500,13 @@ static const yysigned_char yyrhs[] =
       43,     0,    -1,    44,    -1,    45,    -1,    44,    45,    -1,
       44,     1,    -1,    47,    -1,    49,    -1,    50,    -1,     8,
       -1,    41,    -1,    36,    -1,    48,     3,    46,    55,    -1,
-      23,    -1,    -1,    15,    41,     6,    54,     7,     4,    87,
+      23,    -1,    -1,    15,    41,     6,    54,     7,     4,    88,
        5,    -1,    16,     4,    51,     5,    -1,    16,     4,     5,
       -1,    52,    -1,    51,    52,    -1,    51,     1,    -1,    -1,
       41,     9,    53,    41,     8,    -1,    -1,    41,    -1,    54,
       10,    41,    -1,    54,     1,    -1,     4,     5,    -1,     4,
       56,     5,    -1,    57,    -1,     1,    -1,    56,    57,    -1,
-      56,     1,    -1,    59,    -1,    95,    -1,    89,    -1,    90,
+      56,     1,    -1,    59,    -1,    96,    -1,    90,    -1,    91,
       -1,    58,    -1,    52,    -1,    41,     1,    -1,     8,    -1,
       17,    24,    41,     8,    -1,    41,    24,    70,    -1,    30,
       41,    24,    70,    -1,    31,     6,    67,     7,    41,    24,
@@ -534,35 +534,34 @@ static const yysigned_char yyrhs[] =
       84,     7,    -1,    41,     6,     7,    -1,    -1,    41,     6,
       81,    -1,    80,    84,     7,    -1,    80,     7,    -1,    41,
       -1,    -1,    66,    -1,    -1,    84,    10,    83,    -1,    -1,
-      86,    -1,    85,    86,    -1,    34,    41,    11,    60,    -1,
-      36,    11,    60,    -1,    35,    41,    11,    60,    -1,    34,
-      41,    11,    -1,    36,    11,    -1,    35,    41,    11,    -1,
-      -1,    88,    -1,    87,    88,    -1,    70,    -1,    37,    41,
-       4,    60,     5,    -1,    38,    91,    -1,    39,    91,    -1,
-       4,    92,     5,    -1,     4,     5,    -1,    41,     8,    -1,
-      92,    41,     8,    -1,    92,     1,    -1,    46,     8,    -1,
-      46,    13,    62,     8,    -1,    93,    -1,    94,    93,    -1,
-      94,     1,    -1,    40,     4,    94,     5,    -1,    40,     4,
-       5,    -1
+      87,    -1,    85,    87,    -1,    -1,    60,    -1,    34,    41,
+      11,    86,    -1,    36,    11,    86,    -1,    35,    41,    11,
+      86,    -1,    -1,    89,    -1,    88,    89,    -1,    70,    -1,
+      37,    41,     4,    60,     5,    -1,    38,    92,    -1,    39,
+      92,    -1,     4,    93,     5,    -1,     4,     5,    -1,    41,
+       8,    -1,    93,    41,     8,    -1,    93,     1,    -1,    46,
+       8,    -1,    46,    13,    62,     8,    -1,    94,    -1,    95,
+      94,    -1,    95,     1,    -1,    40,     4,    95,     5,    -1,
+      40,     4,     5,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   180,   180,   183,   184,   185,   188,   189,   190,   191,
-     194,   195,   198,   206,   207,   210,   215,   218,   222,   223,
-     224,   227,   227,   233,   234,   235,   236,   239,   240,   243,
-     244,   245,   246,   249,   250,   251,   252,   253,   254,   255,
-     256,   259,   264,   268,   273,   278,   287,   288,   289,   295,
-     300,   304,   312,   312,   317,   320,   323,   334,   335,   342,
-     343,   348,   356,   357,   361,   367,   376,   379,   380,   383,
-     386,   389,   390,   391,   389,   397,   401,   402,   404,   406,
-     409,   409,   442,   443,   444,   445,   449,   452,   453,   458,
-     459,   462,   465,   469,   473,   477,   484,   487,   490,   494,
-     500,   500,   505,   513,   513,   524,   531,   534,   535,   538,
-     539,   542,   545,   546,   547,   550,   554,   558,   562,   565,
-     568,   573,   574,   575,   578,   579,   585,   590,   595,   596,
-     599,   600,   601,   604,   605,   612,   613,   614,   617,   620
+       0,   182,   182,   185,   186,   187,   190,   191,   192,   193,
+     196,   197,   200,   208,   209,   212,   217,   220,   224,   225,
+     226,   229,   229,   235,   236,   237,   238,   241,   242,   245,
+     246,   247,   248,   251,   252,   253,   254,   255,   256,   257,
+     258,   261,   266,   270,   275,   280,   289,   290,   291,   297,
+     302,   306,   314,   314,   319,   322,   325,   336,   337,   344,
+     345,   350,   358,   359,   363,   369,   378,   381,   382,   385,
+     388,   391,   392,   393,   391,   399,   403,   404,   406,   408,
+     411,   411,   444,   445,   446,   447,   451,   454,   455,   460,
+     461,   464,   467,   471,   475,   479,   486,   489,   492,   496,
+     502,   502,   507,   515,   515,   526,   533,   536,   537,   540,
+     541,   544,   547,   548,   549,   553,   554,   557,   561,   565,
+     571,   572,   573,   576,   577,   583,   588,   593,   594,   597,
+     598,   599,   602,   603,   610,   611,   612,   615,   618
 };
 #endif
 
@@ -585,9 +584,10 @@ static const char *const yytname[] =
   "word_list", "word3_list", "goto_word", "switch_statement", "statement",
   "@3", "@4", "@5", "@6", "opt_else", "target", "jumptarget", "macro_call",
   "@7", "application_call_head", "@8", "application_call", "opt_word",
-  "eval_arglist", "case_statements", "case_statement", "macro_statements",
-  "macro_statement", "switches", "eswitches", "switchlist_block",
-  "switchlist", "included_entry", "includeslist", "includes", 0
+  "eval_arglist", "case_statements", "opt_statements", "case_statement",
+  "macro_statements", "macro_statement", "switches", "eswitches",
+  "switchlist_block", "switchlist", "included_entry", "includeslist",
+  "includes", 0
 };
 #endif
 
@@ -618,9 +618,9 @@ static const unsigned char yyr1[] =
       74,    70,    70,    70,    70,    70,    70,    75,    75,    76,
       76,    76,    76,    76,    76,    76,    77,    77,    77,    77,
       79,    78,    78,    81,    80,    82,    82,    83,    83,    84,
-      84,    84,    85,    85,    85,    86,    86,    86,    86,    86,
-      86,    87,    87,    87,    88,    88,    89,    90,    91,    91,
-      92,    92,    92,    93,    93,    94,    94,    94,    95,    95
+      84,    84,    85,    85,    85,    86,    86,    87,    87,    87,
+      88,    88,    88,    89,    89,    90,    91,    92,    92,    93,
+      93,    93,    94,    94,    95,    95,    95,    96,    96
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -637,9 +637,9 @@ static const unsigned char yyr2[] =
        0,     5,     2,     2,     2,     3,     1,     2,     0,     1,
        3,     3,     5,     5,     5,     5,     1,     3,     5,     3,
        0,     5,     3,     0,     3,     3,     2,     1,     0,     1,
-       0,     3,     0,     1,     2,     4,     3,     4,     3,     2,
-       3,     0,     1,     2,     1,     5,     2,     2,     3,     2,
-       2,     3,     2,     2,     4,     1,     2,     2,     4,     3
+       0,     3,     0,     1,     2,     0,     1,     4,     3,     4,
+       0,     1,     2,     1,     5,     2,     2,     3,     2,     2,
+       3,     2,     2,     4,     1,     2,     2,     4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -652,179 +652,163 @@ static const unsigned char yydefact[] =
        0,     0,    18,    11,    10,     0,    24,     0,    21,    20,
       16,    19,     0,    12,    26,     0,     0,     0,    30,    27,
       40,     0,     0,     0,     0,     0,     0,     0,    38,     0,
-      29,    37,    33,    35,    36,    34,   121,    25,     0,     0,
-       0,     0,     0,     0,   126,   127,     0,    39,     0,    32,
+      29,    37,    33,    35,    36,    34,   120,    25,     0,     0,
+       0,     0,     0,     0,   125,   126,     0,    39,     0,    32,
       28,    31,     0,    86,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    67,     0,
-      76,   124,   110,     0,     0,   122,    22,     0,     0,     0,
-      59,     0,   129,     0,     0,   139,     0,   135,     0,    42,
+      76,   123,   110,     0,     0,   121,    22,     0,     0,     0,
+      59,     0,   128,     0,     0,   138,     0,   134,     0,    42,
        0,    46,     0,     0,    52,     0,    54,     0,    55,     0,
       62,    89,     0,    96,     0,    83,    82,    84,    71,     0,
        0,   103,    79,    70,    88,   106,    57,   109,     0,    78,
-      80,    15,   123,    41,     0,    43,    60,     0,   130,   132,
-     128,     0,   133,     0,   137,   138,   136,    48,    66,    47,
+      80,    15,   122,    41,     0,    43,    60,     0,   129,   131,
+     127,     0,   132,     0,   136,   137,   135,    48,    66,    47,
      100,    77,     0,   112,    50,     0,     0,     0,     0,     0,
        0,    63,     0,     0,    68,     0,     0,    69,     0,    75,
        0,   104,     0,    85,    58,   105,   108,     0,     0,    61,
-       0,   131,     0,   102,   110,     0,     0,     0,     0,     0,
+       0,   130,     0,   102,   110,     0,     0,     0,     0,     0,
      113,     0,    56,     0,     0,     0,    64,    91,    90,    62,
       97,    99,     0,     0,    87,   107,   111,     0,     0,     0,
-     134,     0,    53,     0,     0,   119,    65,   114,     0,     0,
-       0,     0,     0,     0,     0,    72,   125,    81,     0,    44,
-     101,   118,   120,     0,     0,     0,    95,    94,    93,    92,
-      98,     0,    45,     0,     0,     0,    49,     0,     0,    73,
-      51,     0,     0,     0,    74
+     133,     0,    53,     0,     0,   115,    65,   114,     0,     0,
+       0,     0,     0,     0,     0,    72,   124,    81,     0,    44,
+     101,   115,   115,     0,   118,     0,     0,    95,    94,    93,
+      92,    98,     0,    45,   117,   119,     0,    49,     0,     0,
+      73,    51,     0,     0,     0,    74
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short int yydefgoto[] =
 {
       -1,     5,     6,     7,   106,     8,     9,    10,    11,    21,
-      88,    37,    27,    33,    49,    50,    51,    52,   110,   165,
+      88,    37,    27,    33,    49,    50,    51,    52,   243,   165,
      166,   115,   162,    89,   137,   167,   121,    90,   111,   178,
-     251,   261,   187,   183,   122,   124,   113,   194,    92,   181,
-      93,   216,   138,   199,   200,    94,    95,    53,    54,    64,
-     104,   107,   108,    55
+     252,   262,   187,   183,   122,   124,   113,   194,    92,   181,
+      93,   216,   138,   199,   244,   200,    94,    95,    53,    54,
+      64,   104,   107,   108,    55
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -178
+#define YYPACT_NINF -78
 static const short int yypact[] =
 {
-      64,  -178,   -22,    23,  -178,    63,   117,  -178,  -178,    67,
-    -178,  -178,    70,    12,  -178,  -178,  -178,    30,    41,  -178,
-      95,     6,  -178,  -178,  -178,   107,  -178,    76,  -178,  -178,
-    -178,  -178,   130,  -178,  -178,   146,   101,   116,  -178,  -178,
-    -178,   132,    -6,   156,   159,   159,   161,    51,  -178,   283,
-    -178,  -178,  -178,  -178,  -178,  -178,   333,  -178,   158,   126,
-     169,   152,   137,    16,  -178,  -178,    15,  -178,   359,  -178,
-    -178,  -178,   359,  -178,   139,   171,   171,   173,   171,    83,
-     140,   174,   176,   177,   183,   171,   149,   128,  -178,   359,
-    -178,  -178,     8,   121,   307,  -178,  -178,   184,   137,   359,
-     150,   186,  -178,   187,    13,  -178,   115,  -178,     5,  -178,
-       4,  -178,   188,   189,  -178,   192,  -178,   160,  -178,   131,
-      17,   136,   195,   112,   196,  -178,  -178,  -178,  -178,   359,
-     203,  -178,  -178,  -178,   190,  -178,   175,  -178,    86,  -178,
-    -178,  -178,  -178,  -178,   205,  -178,   181,   191,  -178,  -178,
-    -178,   202,  -178,   160,  -178,  -178,  -178,  -178,  -178,  -178,
-     207,  -178,   197,   138,    32,   211,   208,   214,   140,   140,
-     198,  -178,   140,   140,  -178,   200,    30,  -178,   204,  -178,
-     359,  -178,   359,  -178,  -178,  -178,   209,   212,   213,  -178,
-     194,  -178,   223,  -178,   197,   241,   215,   219,   235,    33,
-    -178,   137,  -178,   137,   242,   236,  -178,   245,   249,    48,
-    -178,  -178,   255,   277,  -178,  -178,  -178,   261,   246,   359,
-    -178,   141,  -178,   265,   266,   359,  -178,  -178,   270,   268,
-     140,   140,   140,   140,    30,  -178,  -178,  -178,   359,  -178,
-    -178,   359,   359,    80,   137,   137,  -178,  -178,  -178,  -178,
-    -178,   251,  -178,   201,   239,   273,  -178,   279,   137,  -178,
-    -178,   252,   287,   359,  -178
+     105,   -78,   -25,    32,   -78,    68,   302,   -78,   -78,    72,
+     -78,   -78,    87,    24,   -78,   -78,   -78,   -21,    85,   -78,
+     125,     6,   -78,   -78,   -78,   120,   -78,   129,   -78,   -78,
+     -78,   -78,    20,   -78,   -78,   146,   101,   103,   -78,   -78,
+     -78,   128,   -19,   151,   159,   159,   171,     8,   -78,   130,
+     -78,   -78,   -78,   -78,   -78,   -78,   242,   -78,   168,   136,
+     172,   156,   141,    26,   -78,   -78,    48,   -78,   268,   -78,
+     -78,   -78,   268,   -78,   143,   173,   173,   175,   173,    96,
+     148,   184,   185,   187,   190,   173,   160,   140,   -78,   268,
+     -78,   -78,     1,    73,   216,   -78,   -78,   189,   141,   268,
+     161,   193,   -78,   195,    13,   -78,   132,   -78,     5,   -78,
+      82,   -78,   201,   202,   -78,   212,   -78,   181,   -78,    30,
+      -6,    93,   215,     9,   217,   -78,   -78,   -78,   -78,   268,
+     222,   -78,   -78,   -78,   208,   -78,   191,   -78,   115,   -78,
+     -78,   -78,   -78,   -78,   223,   -78,   192,   196,   -78,   -78,
+     -78,   231,   -78,   181,   -78,   -78,   -78,   -78,   -78,   -78,
+     224,   -78,   199,   138,    88,   234,   244,   241,   148,   148,
+     214,   -78,   148,   148,   -78,   218,   -21,   -78,   225,   -78,
+     268,   -78,   268,   -78,   -78,   -78,   232,   236,   237,   -78,
+     239,   -78,   248,   -78,   199,   251,   240,   243,   254,    83,
+     -78,   141,   -78,   141,   272,   276,   -78,   275,   278,    16,
+     -78,   -78,   284,   186,   -78,   -78,   -78,   290,   280,   268,
+     -78,   155,   -78,   288,   295,   268,   -78,   -78,   294,   297,
+     148,   148,   148,   148,   -21,   -78,   -78,   -78,   268,   -78,
+     -78,   268,   268,    44,   -78,   141,   141,   -78,   -78,   -78,
+     -78,   -78,   270,   -78,   -78,   -78,   299,   -78,   305,   141,
+     -78,   -78,   273,   308,   268,   -78
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -178,  -178,  -178,   284,   -17,  -178,  -178,  -178,  -178,  -178,
-      29,  -178,  -178,  -178,  -178,   258,  -178,  -178,  -177,  -178,
-     145,    25,  -178,  -178,   154,   -58,   -78,  -178,   -55,  -178,
-    -178,  -178,  -178,  -178,  -178,  -178,  -178,  -178,  -178,  -178,
-    -178,  -178,   114,  -178,   102,  -178,   226,  -178,  -178,   272,
-    -178,   220,  -178,  -178
+     -78,   -78,   -78,   310,   -17,   -78,   -78,   -78,   -78,   -78,
+      84,   -78,   -78,   -78,   -78,   271,   -78,   -78,   -68,   -78,
+     166,   -52,   -78,   -78,   162,   -60,   -77,   -78,   -55,   -78,
+     -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,   -78,
+     -78,   -78,   127,   -78,   -75,   123,   -78,   229,   -78,   -78,
+     281,   -78,   219,   -78,   -78
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -118
+#define YYTABLE_NINF -117
 static const short int yytable[] =
 {
-      25,    91,   123,   213,   101,   157,   154,    29,    72,   158,
-     155,    30,    73,   109,   149,   135,    74,    19,   150,    12,
-     105,   102,    75,    76,    77,    60,    78,    13,   170,    79,
-      80,    81,    82,    83,   134,    61,    84,    85,   226,    91,
-     144,    23,    22,   -59,   145,    87,    24,    20,   243,   136,
-      31,    23,    67,    20,   151,   159,    24,   103,   171,   170,
-      28,    48,   234,    14,   253,   254,    23,   196,   197,   198,
-      17,    24,     1,   146,   179,    68,    18,    34,    48,     2,
-       3,   157,    26,    35,    72,  -116,    36,     4,    73,   171,
-     204,   205,    74,   185,   207,   208,   186,   210,    75,    76,
-      77,   116,    78,   118,    28,    79,    80,    81,    82,    83,
-     129,    32,    84,    85,  -116,  -116,  -116,    -2,    15,   119,
-     -14,    87,   175,   152,   120,     1,   176,   214,   153,   139,
-     140,    38,     2,     3,   131,    39,   132,    28,    40,   133,
-       4,   168,    57,   228,   169,   229,   172,    41,   240,   173,
-      56,   186,   246,   247,   248,   249,    59,    58,   159,   211,
-      42,    43,    62,    63,   239,    66,    96,    97,    44,    45,
-      46,    47,   196,   197,   198,    98,    99,   114,   100,   117,
-     112,   120,   125,   252,   126,   127,   255,   256,   159,   128,
-     130,   146,   143,   147,   160,   148,   163,   161,   159,   159,
-     260,   164,   157,   174,   177,    72,  -115,   180,   264,    73,
-     191,   182,   188,    74,   193,   202,   184,   250,   219,    75,
-      76,    77,   189,    78,   201,   203,    79,    80,    81,    82,
-      83,   220,   190,    84,    85,  -115,  -115,  -115,   136,   206,
-     157,   209,    87,    72,  -117,   212,   225,    73,   222,   231,
-     215,    74,   230,   217,   218,   232,   223,    75,    76,    77,
-     224,    78,   233,   235,    79,    80,    81,    82,    83,   237,
-     238,    84,    85,  -117,  -117,  -117,   241,   242,   157,   245,
-      87,    72,   236,   244,    69,    73,   258,   259,    70,    74,
-      16,    40,   257,   262,   263,    75,    76,    77,   192,    78,
-      41,   227,    79,    80,    81,    82,    83,    71,   221,    84,
-      85,    72,   141,    42,    43,    73,   195,    65,    87,    74,
-     142,    44,    45,    46,    47,    75,    76,    77,   156,    78,
-       0,     0,    79,    80,    81,    82,    83,    72,     0,    84,
-      85,    73,     0,     0,    86,    74,     0,     0,    87,     0,
-       0,    75,    76,    77,     0,    78,     0,     0,    79,    80,
-      81,    82,    83,    72,     0,    84,    85,    73,     0,     0,
-      86,    74,     0,     0,    87,     0,     0,    75,    76,    77,
-       0,    78,     0,     0,    79,    80,    81,    82,    83,     0,
-       0,    84,    85,     0,     0,     0,     0,     0,     0,     0,
-      87
+      25,    91,   101,   123,   110,   170,   154,    29,   135,    67,
+     155,    30,    60,   109,   149,    23,    12,    28,   150,   175,
+      24,    38,    61,   176,   116,    39,   118,   170,    40,    19,
+     234,   102,    68,   129,   134,   171,    13,    41,   144,    91,
+     168,    23,   136,   169,   145,   157,    24,    20,    72,  -116,
+      42,    43,    73,   105,   151,   159,    74,   171,    44,    45,
+      46,    47,    75,    76,    77,    20,    78,   103,    14,    79,
+      80,    81,    82,    83,   179,    17,    84,    85,  -116,  -116,
+    -116,   139,   140,   157,    23,    87,    72,   158,   226,    24,
+      73,   204,   205,    18,    74,   207,   208,    22,   210,   -59,
+      75,    76,    77,   172,    78,    31,   173,    79,    80,    81,
+      82,    83,   213,     1,    84,    85,    48,   196,   197,   198,
+       2,     3,   185,    87,    32,   186,    26,   214,     4,   146,
+      34,    69,   119,    48,    28,    70,    35,   120,    40,    36,
+     152,   228,    57,   229,    58,   153,   131,    41,   132,    28,
+      56,   133,    59,   247,   248,   249,   250,    62,   159,   211,
+      42,    43,   240,    63,   239,   186,   254,   255,    44,    45,
+      46,    47,   196,   197,   198,    66,    96,    97,    98,   114,
+      99,   117,   100,   253,   112,   256,   257,   157,   159,   120,
+      72,   236,   125,   126,    73,   127,   128,   143,    74,   261,
+     147,   130,   146,   148,    75,    76,    77,   160,    78,   265,
+     161,    79,    80,    81,    82,    83,   163,   251,    84,    85,
+      72,   141,   164,   174,    73,   177,   180,    87,    74,   182,
+     188,   193,   184,   189,    75,    76,    77,   190,    78,   191,
+     136,    79,    80,    81,    82,    83,    72,   201,    84,    85,
+      73,   202,   203,    86,    74,   206,   220,    87,   222,   209,
+      75,    76,    77,   219,    78,   225,   212,    79,    80,    81,
+      82,    83,    72,   215,    84,    85,    73,   217,   218,    86,
+      74,   223,   230,    87,   224,   232,    75,    76,    77,   231,
+      78,   233,   235,    79,    80,    81,    82,    83,   237,   241,
+      84,    85,    -2,    15,   238,   -14,   242,   245,   246,    87,
+       1,   258,   259,   260,   263,   264,    16,     2,     3,   192,
+      71,   221,   227,   142,   195,     4,    65,   156
 };
 
-static const short int yycheck[] =
+static const unsigned short int yycheck[] =
 {
-      17,    56,    80,   180,    62,     1,     1,     1,     4,     5,
-       5,     5,     8,    68,     1,     7,    12,     5,     5,    41,
-       5,     5,    18,    19,    20,    31,    22,     4,    11,    25,
-      26,    27,    28,    29,    89,    41,    32,    33,     5,    94,
-      98,    36,    13,    11,    99,    41,    41,    41,   225,    41,
-      21,    36,     1,    41,    41,   110,    41,    41,    41,    11,
-       9,    32,    14,     0,   241,   242,    36,    34,    35,    36,
-       3,    41,     8,    41,   129,    24,     6,     1,    49,    15,
-      16,     1,    41,     7,     4,     5,    10,    23,     8,    41,
-     168,   169,    12,     7,   172,   173,    10,   175,    18,    19,
-      20,    76,    22,    78,     9,    25,    26,    27,    28,    29,
-      85,     4,    32,    33,    34,    35,    36,     0,     1,    36,
-       3,    41,    10,     8,    41,     8,    14,   182,    13,     8,
-       9,     1,    15,    16,     6,     5,     8,     9,     8,    11,
-      23,    10,    41,   201,    13,   203,    10,    17,     7,    13,
-       4,    10,   230,   231,   232,   233,    24,    41,   213,   176,
-      30,    31,     6,     4,   219,     4,     8,    41,    38,    39,
-      40,    41,    34,    35,    36,     6,    24,     6,    41,     6,
-      41,    41,     8,   238,     8,     8,   244,   245,   243,     6,
-      41,    41,     8,     7,     6,     8,     4,     8,   253,   254,
-     258,    41,     1,     8,     8,     4,     5,     4,   263,     8,
-       8,    21,     7,    12,     7,     7,    41,   234,    24,    18,
-      19,    20,    41,    22,    13,    11,    25,    26,    27,    28,
-      29,     8,    41,    32,    33,    34,    35,    36,    41,    41,
-       1,    41,    41,     4,     5,    41,    11,     8,     7,    13,
-      41,    12,    10,    41,    41,    10,    41,    18,    19,    20,
-      41,    22,    13,     8,    25,    26,    27,    28,    29,     8,
-      24,    32,    33,    34,    35,    36,    11,    11,     1,    11,
-      41,     4,     5,    13,     1,     8,    13,     8,     5,    12,
-       6,     8,    41,    41,     7,    18,    19,    20,   153,    22,
-      17,   199,    25,    26,    27,    28,    29,    49,   194,    32,
-      33,     4,     5,    30,    31,     8,   162,    45,    41,    12,
-      94,    38,    39,    40,    41,    18,    19,    20,   108,    22,
-      -1,    -1,    25,    26,    27,    28,    29,     4,    -1,    32,
-      33,     8,    -1,    -1,    37,    12,    -1,    -1,    41,    -1,
-      -1,    18,    19,    20,    -1,    22,    -1,    -1,    25,    26,
-      27,    28,    29,     4,    -1,    32,    33,     8,    -1,    -1,
-      37,    12,    -1,    -1,    41,    -1,    -1,    18,    19,    20,
-      -1,    22,    -1,    -1,    25,    26,    27,    28,    29,    -1,
-      -1,    32,    33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      41
+      17,    56,    62,    80,    72,    11,     1,     1,     7,     1,
+       5,     5,    31,    68,     1,    36,    41,     9,     5,    10,
+      41,     1,    41,    14,    76,     5,    78,    11,     8,     5,
+      14,     5,    24,    85,    89,    41,     4,    17,    98,    94,
+      10,    36,    41,    13,    99,     1,    41,    41,     4,     5,
+      30,    31,     8,     5,    41,   110,    12,    41,    38,    39,
+      40,    41,    18,    19,    20,    41,    22,    41,     0,    25,
+      26,    27,    28,    29,   129,     3,    32,    33,    34,    35,
+      36,     8,     9,     1,    36,    41,     4,     5,     5,    41,
+       8,   168,   169,     6,    12,   172,   173,    13,   175,    11,
+      18,    19,    20,    10,    22,    21,    13,    25,    26,    27,
+      28,    29,   180,     8,    32,    33,    32,    34,    35,    36,
+      15,    16,     7,    41,     4,    10,    41,   182,    23,    41,
+       1,     1,    36,    49,     9,     5,     7,    41,     8,    10,
+       8,   201,    41,   203,    41,    13,     6,    17,     8,     9,
+       4,    11,    24,   230,   231,   232,   233,     6,   213,   176,
+      30,    31,     7,     4,   219,    10,   241,   242,    38,    39,
+      40,    41,    34,    35,    36,     4,     8,    41,     6,     6,
+      24,     6,    41,   238,    41,   245,   246,     1,   243,    41,
+       4,     5,     8,     8,     8,     8,     6,     8,    12,   259,
+       7,    41,    41,     8,    18,    19,    20,     6,    22,   264,
+       8,    25,    26,    27,    28,    29,     4,   234,    32,    33,
+       4,     5,    41,     8,     8,     8,     4,    41,    12,    21,
+       7,     7,    41,    41,    18,    19,    20,    41,    22,     8,
+      41,    25,    26,    27,    28,    29,     4,    13,    32,    33,
+       8,     7,    11,    37,    12,    41,     8,    41,     7,    41,
+      18,    19,    20,    24,    22,    11,    41,    25,    26,    27,
+      28,    29,     4,    41,    32,    33,     8,    41,    41,    37,
+      12,    41,    10,    41,    41,    10,    18,    19,    20,    13,
+      22,    13,     8,    25,    26,    27,    28,    29,     8,    11,
+      32,    33,     0,     1,    24,     3,    11,    13,    11,    41,
+       8,    41,    13,     8,    41,     7,     6,    15,    16,   153,
+      49,   194,   199,    94,   162,    23,    45,   108
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -836,28 +820,28 @@ static const unsigned char yystos[] =
       41,    51,    52,    36,    41,    46,    41,    54,     9,     1,
        5,    52,     4,    55,     1,     7,    10,    53,     1,     5,
        8,    17,    30,    31,    38,    39,    40,    41,    52,    56,
-      57,    58,    59,    89,    90,    95,     4,    41,    41,    24,
-      31,    41,     6,     4,    91,    91,     4,     1,    24,     1,
+      57,    58,    59,    90,    91,    96,     4,    41,    41,    24,
+      31,    41,     6,     4,    92,    92,     4,     1,    24,     1,
        5,    57,     4,     8,    12,    18,    19,    20,    22,    25,
       26,    27,    28,    29,    32,    33,    37,    41,    52,    65,
-      69,    70,    80,    82,    87,    88,     8,    41,     6,    24,
-      41,    67,     5,    41,    92,     5,    46,    93,    94,    70,
+      69,    70,    80,    82,    88,    89,     8,    41,     6,    24,
+      41,    67,     5,    41,    93,     5,    46,    94,    95,    70,
       60,    70,    41,    78,     6,    63,    63,     6,    63,    36,
       41,    68,    76,    68,    77,     8,     8,     8,     6,    63,
       41,     6,     8,    11,    70,     7,    41,    66,    84,     8,
-       9,     5,    88,     8,    67,    70,    41,     7,     8,     1,
-       5,    41,     8,    13,     1,     5,    93,     1,     5,    70,
+       9,     5,    89,     8,    67,    70,    41,     7,     8,     1,
+       5,    41,     8,    13,     1,     5,    94,     1,     5,    70,
        6,     8,    64,     4,    41,    61,    62,    67,    10,    13,
       11,    41,    10,    13,     8,    10,    14,     8,    71,    70,
        4,    81,    21,    75,    41,     7,    10,    74,     7,    41,
       41,     8,    62,     7,    79,    66,    34,    35,    36,    85,
-      86,    13,     7,    11,    68,    68,    41,    68,    68,    41,
+      87,    13,     7,    11,    68,    68,    41,    68,    68,    41,
       68,    46,    41,    60,    70,    41,    83,    41,    41,    24,
-       8,    84,     7,    41,    41,    11,     5,    86,    67,    67,
+       8,    84,     7,    41,    41,    11,     5,    87,    67,    67,
       10,    13,    10,    13,    14,     8,     5,     8,    24,    70,
-       7,    11,    11,    60,    13,    11,    68,    68,    68,    68,
-      46,    72,    70,    60,    60,    67,    67,    41,    13,     8,
-      67,    73,    41,     7,    70
+       7,    11,    11,    60,    86,    13,    11,    68,    68,    68,
+      68,    46,    72,    70,    86,    86,    67,    67,    41,    13,
+       8,    67,    73,    41,     7,    70
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1233,333 +1217,341 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
   switch (yytype)
     {
       case 41: /* "word" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1239 "ael.tab.c"
+#line 1223 "ael.tab.c"
         break;
       case 44: /* "objects" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1247 "ael.tab.c"
+#line 1231 "ael.tab.c"
         break;
       case 45: /* "object" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1255 "ael.tab.c"
+#line 1239 "ael.tab.c"
         break;
       case 46: /* "context_name" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1260 "ael.tab.c"
+#line 1244 "ael.tab.c"
         break;
       case 47: /* "context" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1268 "ael.tab.c"
+#line 1252 "ael.tab.c"
         break;
       case 49: /* "macro" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1276 "ael.tab.c"
+#line 1260 "ael.tab.c"
         break;
       case 50: /* "globals" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1284 "ael.tab.c"
+#line 1268 "ael.tab.c"
         break;
       case 51: /* "global_statements" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1292 "ael.tab.c"
+#line 1276 "ael.tab.c"
         break;
       case 52: /* "assignment" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1300 "ael.tab.c"
+#line 1284 "ael.tab.c"
         break;
       case 54: /* "arglist" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1308 "ael.tab.c"
+#line 1292 "ael.tab.c"
         break;
       case 55: /* "elements_block" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1316 "ael.tab.c"
+#line 1300 "ael.tab.c"
         break;
       case 56: /* "elements" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1324 "ael.tab.c"
+#line 1308 "ael.tab.c"
         break;
       case 57: /* "element" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1332 "ael.tab.c"
+#line 1316 "ael.tab.c"
         break;
       case 58: /* "ignorepat" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1340 "ael.tab.c"
+#line 1324 "ael.tab.c"
         break;
       case 59: /* "extension" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1348 "ael.tab.c"
+#line 1332 "ael.tab.c"
         break;
       case 60: /* "statements" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1356 "ael.tab.c"
+#line 1340 "ael.tab.c"
         break;
       case 61: /* "timerange" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1361 "ael.tab.c"
+#line 1345 "ael.tab.c"
         break;
       case 62: /* "timespec" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1369 "ael.tab.c"
+#line 1353 "ael.tab.c"
         break;
       case 63: /* "test_expr" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1374 "ael.tab.c"
+#line 1358 "ael.tab.c"
         break;
       case 65: /* "if_like_head" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1382 "ael.tab.c"
+#line 1366 "ael.tab.c"
         break;
       case 66: /* "word_list" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1387 "ael.tab.c"
+#line 1371 "ael.tab.c"
         break;
       case 67: /* "word3_list" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1392 "ael.tab.c"
+#line 1376 "ael.tab.c"
         break;
       case 68: /* "goto_word" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1397 "ael.tab.c"
+#line 1381 "ael.tab.c"
         break;
       case 69: /* "switch_statement" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1405 "ael.tab.c"
+#line 1389 "ael.tab.c"
         break;
       case 70: /* "statement" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1413 "ael.tab.c"
+#line 1397 "ael.tab.c"
         break;
       case 75: /* "opt_else" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1421 "ael.tab.c"
+#line 1405 "ael.tab.c"
         break;
       case 76: /* "target" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1429 "ael.tab.c"
+#line 1413 "ael.tab.c"
         break;
       case 77: /* "jumptarget" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1437 "ael.tab.c"
+#line 1421 "ael.tab.c"
         break;
       case 78: /* "macro_call" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1445 "ael.tab.c"
+#line 1429 "ael.tab.c"
         break;
       case 80: /* "application_call_head" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1453 "ael.tab.c"
+#line 1437 "ael.tab.c"
         break;
       case 82: /* "application_call" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1461 "ael.tab.c"
+#line 1445 "ael.tab.c"
         break;
       case 83: /* "opt_word" */
-#line 173 "ael.y"
+#line 175 "ael.y"
         { free((yyvaluep->str));};
-#line 1466 "ael.tab.c"
+#line 1450 "ael.tab.c"
         break;
       case 84: /* "eval_arglist" */
-#line 159 "ael.y"
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1474 "ael.tab.c"
+#line 1458 "ael.tab.c"
         break;
       case 85: /* "case_statements" */
-#line 159 "ael.y"
+#line 160 "ael.y"
+        {
+               destroy_pval((yyvaluep->pval));
+               prev_word=0;
+       };
+#line 1466 "ael.tab.c"
+        break;
+      case 86: /* "opt_statements" */
+#line 160 "ael.y"
+        {
+               destroy_pval((yyvaluep->pval));
+               prev_word=0;
+       };
+#line 1474 "ael.tab.c"
+        break;
+      case 87: /* "case_statement" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1482 "ael.tab.c"
         break;
-      case 86: /* "case_statement" */
-#line 159 "ael.y"
+      case 88: /* "macro_statements" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1490 "ael.tab.c"
         break;
-      case 87: /* "macro_statements" */
-#line 159 "ael.y"
+      case 89: /* "macro_statement" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1498 "ael.tab.c"
         break;
-      case 88: /* "macro_statement" */
-#line 159 "ael.y"
+      case 90: /* "switches" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1506 "ael.tab.c"
         break;
-      case 89: /* "switches" */
-#line 159 "ael.y"
+      case 91: /* "eswitches" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1514 "ael.tab.c"
         break;
-      case 90: /* "eswitches" */
-#line 159 "ael.y"
+      case 92: /* "switchlist_block" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1522 "ael.tab.c"
         break;
-      case 91: /* "switchlist_block" */
-#line 159 "ael.y"
+      case 93: /* "switchlist" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1530 "ael.tab.c"
         break;
-      case 92: /* "switchlist" */
-#line 159 "ael.y"
+      case 94: /* "included_entry" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1538 "ael.tab.c"
         break;
-      case 93: /* "included_entry" */
-#line 159 "ael.y"
+      case 95: /* "includeslist" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1546 "ael.tab.c"
         break;
-      case 94: /* "includeslist" */
-#line 159 "ael.y"
+      case 96: /* "includes" */
+#line 160 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
 #line 1554 "ael.tab.c"
         break;
-      case 95: /* "includes" */
-#line 159 "ael.y"
-        {
-               destroy_pval((yyvaluep->pval));
-               prev_word=0;
-       };
-#line 1562 "ael.tab.c"
-        break;
 
       default:
         break;
@@ -1875,57 +1867,57 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 180 "ael.y"
+#line 182 "ael.y"
     { (yyval.pval) = parseio->pval = (yyvsp[0].pval); ;}
     break;
 
   case 3:
-#line 183 "ael.y"
+#line 185 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 4:
-#line 184 "ael.y"
+#line 186 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 5:
-#line 185 "ael.y"
+#line 187 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 6:
-#line 188 "ael.y"
+#line 190 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 7:
-#line 189 "ael.y"
+#line 191 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 8:
-#line 190 "ael.y"
+#line 192 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 9:
-#line 191 "ael.y"
+#line 193 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 10:
-#line 194 "ael.y"
+#line 196 "ael.y"
     { (yyval.str) = (yyvsp[0].str); ;}
     break;
 
   case 11:
-#line 195 "ael.y"
+#line 197 "ael.y"
     { (yyval.str) = strdup("default"); ;}
     break;
 
   case 12:
-#line 198 "ael.y"
+#line 200 "ael.y"
     {
                (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);
@@ -1934,57 +1926,57 @@ yyreduce:
     break;
 
   case 13:
-#line 206 "ael.y"
+#line 208 "ael.y"
     { (yyval.intval) = 1; ;}
     break;
 
   case 14:
-#line 207 "ael.y"
+#line 209 "ael.y"
     { (yyval.intval) = 0; ;}
     break;
 
   case 15:
-#line 210 "ael.y"
+#line 212 "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 16:
-#line 215 "ael.y"
+#line 217 "ael.y"
     {
                (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.statements = (yyvsp[-1].pval);;}
     break;
 
   case 17:
-#line 218 "ael.y"
+#line 220 "ael.y"
     { /* empty globals is OK */
                (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[-2]), &(yylsp[0])); ;}
     break;
 
   case 18:
-#line 222 "ael.y"
+#line 224 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 19:
-#line 223 "ael.y"
+#line 225 "ael.y"
     {(yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 20:
-#line 224 "ael.y"
+#line 226 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 21:
-#line 227 "ael.y"
+#line 229 "ael.y"
     { reset_semicount(parseio->scanner); ;}
     break;
 
   case 22:
-#line 227 "ael.y"
+#line 229 "ael.y"
     {
                (yyval.pval) = npval2(PV_VARDEC, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-4].str);
@@ -1992,104 +1984,104 @@ yyreduce:
     break;
 
   case 23:
-#line 233 "ael.y"
+#line 235 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 24:
-#line 234 "ael.y"
+#line 236 "ael.y"
     { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 25:
-#line 235 "ael.y"
+#line 237 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[0].str), &(yylsp[0]))); ;}
     break;
 
   case 26:
-#line 236 "ael.y"
+#line 238 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 27:
-#line 239 "ael.y"
+#line 241 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 28:
-#line 240 "ael.y"
+#line 242 "ael.y"
     { (yyval.pval) = (yyvsp[-1].pval); ;}
     break;
 
   case 29:
-#line 243 "ael.y"
+#line 245 "ael.y"
     { (yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 30:
-#line 244 "ael.y"
+#line 246 "ael.y"
     {(yyval.pval)=0;;}
     break;
 
   case 31:
-#line 245 "ael.y"
+#line 247 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 32:
-#line 246 "ael.y"
+#line 248 "ael.y"
     { (yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 33:
-#line 249 "ael.y"
+#line 251 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 34:
-#line 250 "ael.y"
+#line 252 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 35:
-#line 251 "ael.y"
+#line 253 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 36:
-#line 252 "ael.y"
+#line 254 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 37:
-#line 253 "ael.y"
+#line 255 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 38:
-#line 254 "ael.y"
+#line 256 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 39:
-#line 255 "ael.y"
+#line 257 "ael.y"
     {free((yyvsp[-1].str)); (yyval.pval)=0;;}
     break;
 
   case 40:
-#line 256 "ael.y"
+#line 258 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */;}
     break;
 
   case 41:
-#line 259 "ael.y"
+#line 261 "ael.y"
     {
                (yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 42:
-#line 264 "ael.y"
+#line 266 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2097,7 +2089,7 @@ yyreduce:
     break;
 
   case 43:
-#line 268 "ael.y"
+#line 270 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2106,7 +2098,7 @@ yyreduce:
     break;
 
   case 44:
-#line 273 "ael.y"
+#line 275 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-6]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2115,7 +2107,7 @@ yyreduce:
     break;
 
   case 45:
-#line 278 "ael.y"
+#line 280 "ael.y"
     {
                (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[-7]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2125,22 +2117,22 @@ yyreduce:
     break;
 
   case 46:
-#line 287 "ael.y"
+#line 289 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 47:
-#line 288 "ael.y"
+#line 290 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 48:
-#line 289 "ael.y"
+#line 291 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 49:
-#line 295 "ael.y"
+#line 297 "ael.y"
     {
                asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[-4].str), (yyvsp[-2].str), (yyvsp[0].str));
                free((yyvsp[-4].str));
@@ -2149,12 +2141,12 @@ yyreduce:
     break;
 
   case 50:
-#line 300 "ael.y"
+#line 302 "ael.y"
     { (yyval.str) = (yyvsp[0].str); ;}
     break;
 
   case 51:
-#line 304 "ael.y"
+#line 306 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-6].str), &(yylsp[-6]));
                (yyval.pval)->next = nword((yyvsp[-4].str), &(yylsp[-4]));
@@ -2163,32 +2155,32 @@ yyreduce:
     break;
 
   case 52:
-#line 312 "ael.y"
+#line 314 "ael.y"
     { reset_parencount(parseio->scanner); ;}
     break;
 
   case 53:
-#line 312 "ael.y"
+#line 314 "ael.y"
     {
                (yyval.str) = (yyvsp[-1].str); ;}
     break;
 
   case 54:
-#line 317 "ael.y"
+#line 319 "ael.y"
     {
                (yyval.pval)= npval2(PV_IF, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[0].str); ;}
     break;
 
   case 55:
-#line 320 "ael.y"
+#line 322 "ael.y"
     {
                (yyval.pval) = npval2(PV_RANDOM, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str=(yyvsp[0].str);;}
     break;
 
   case 56:
-#line 323 "ael.y"
+#line 325 "ael.y"
     {
                (yyval.pval) = npval2(PV_IFTIME, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);
@@ -2196,12 +2188,12 @@ yyreduce:
     break;
 
   case 57:
-#line 334 "ael.y"
+#line 336 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 58:
-#line 335 "ael.y"
+#line 337 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2210,12 +2202,12 @@ yyreduce:
     break;
 
   case 59:
-#line 342 "ael.y"
+#line 344 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 60:
-#line 343 "ael.y"
+#line 345 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2224,7 +2216,7 @@ yyreduce:
     break;
 
   case 61:
-#line 348 "ael.y"
+#line 350 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s%s", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-2].str));
@@ -2234,12 +2226,12 @@ yyreduce:
     break;
 
   case 62:
-#line 356 "ael.y"
+#line 358 "ael.y"
     { (yyval.str) = (yyvsp[0].str);;}
     break;
 
   case 63:
-#line 357 "ael.y"
+#line 359 "ael.y"
     {
                asprintf(&((yyval.str)), "%s%s", (yyvsp[-1].str), (yyvsp[0].str));
                free((yyvsp[-1].str));
@@ -2247,7 +2239,7 @@ yyreduce:
     break;
 
   case 64:
-#line 361 "ael.y"
+#line 363 "ael.y"
     {
                asprintf(&((yyval.str)), "%s:%s", (yyvsp[-2].str), (yyvsp[0].str));
                free((yyvsp[-2].str));
@@ -2255,7 +2247,7 @@ yyreduce:
     break;
 
   case 65:
-#line 367 "ael.y"
+#line 369 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCH, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-3].str);
@@ -2263,55 +2255,55 @@ yyreduce:
     break;
 
   case 66:
-#line 376 "ael.y"
+#line 378 "ael.y"
     {
                (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
     break;
 
   case 67:
-#line 379 "ael.y"
+#line 381 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 68:
-#line 380 "ael.y"
+#line 382 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 69:
-#line 383 "ael.y"
+#line 385 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 70:
-#line 386 "ael.y"
+#line 388 "ael.y"
     {
                (yyval.pval) = npval2(PV_LABEL, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
     break;
 
   case 71:
-#line 389 "ael.y"
+#line 391 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 72:
-#line 390 "ael.y"
+#line 392 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 73:
-#line 391 "ael.y"
+#line 393 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 74:
-#line 391 "ael.y"
+#line 393 "ael.y"
     { /* XXX word_list maybe ? */
                (yyval.pval) = npval2(PV_FOR, &(yylsp[-11]), &(yylsp[0]));
                (yyval.pval)->u1.for_init = (yyvsp[-8].str);
@@ -2321,7 +2313,7 @@ yyreduce:
     break;
 
   case 75:
-#line 397 "ael.y"
+#line 399 "ael.y"
     {
                (yyval.pval) = npval2(PV_WHILE, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);
@@ -2329,36 +2321,36 @@ yyreduce:
     break;
 
   case 76:
-#line 401 "ael.y"
+#line 403 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 77:
-#line 402 "ael.y"
+#line 404 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[-1])); ;}
     break;
 
   case 78:
-#line 404 "ael.y"
+#line 406 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
   case 79:
-#line 406 "ael.y"
+#line 408 "ael.y"
     {
                (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 80:
-#line 409 "ael.y"
+#line 411 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 81:
-#line 409 "ael.y"
+#line 411 "ael.y"
     {
                char *bufx;
                int tot=0;
@@ -2395,22 +2387,22 @@ yyreduce:
     break;
 
   case 82:
-#line 442 "ael.y"
+#line 444 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 83:
-#line 443 "ael.y"
+#line 445 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 84:
-#line 444 "ael.y"
+#line 446 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 85:
-#line 445 "ael.y"
+#line 447 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[-1]));
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);
@@ -2418,41 +2410,41 @@ yyreduce:
     break;
 
   case 86:
-#line 449 "ael.y"
+#line 451 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
   case 87:
-#line 452 "ael.y"
+#line 454 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 88:
-#line 453 "ael.y"
+#line 455 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
   case 89:
-#line 458 "ael.y"
+#line 460 "ael.y"
     { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 90:
-#line 459 "ael.y"
+#line 461 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
                (yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 91:
-#line 462 "ael.y"
+#line 464 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
                (yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 92:
-#line 465 "ael.y"
+#line 467 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-4].str), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2460,7 +2452,7 @@ yyreduce:
     break;
 
   case 93:
-#line 469 "ael.y"
+#line 471 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-4].str), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2468,7 +2460,7 @@ yyreduce:
     break;
 
   case 94:
-#line 473 "ael.y"
+#line 475 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2476,7 +2468,7 @@ yyreduce:
     break;
 
   case 95:
-#line 477 "ael.y"
+#line 479 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2484,21 +2476,21 @@ yyreduce:
     break;
 
   case 96:
-#line 484 "ael.y"
+#line 486 "ael.y"
     {                  /* ext, 1 */
                (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
                (yyval.pval)->next = nword(strdup("1"), &(yylsp[0])); ;}
     break;
 
   case 97:
-#line 487 "ael.y"
+#line 489 "ael.y"
     {          /* ext, pri */
                (yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
                (yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 98:
-#line 490 "ael.y"
+#line 492 "ael.y"
     {  /* context, ext, pri */
                (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
                (yyval.pval)->next = nword((yyvsp[-4].str), &(yylsp[-4]));
@@ -2506,7 +2498,7 @@ yyreduce:
     break;
 
   case 99:
-#line 494 "ael.y"
+#line 496 "ael.y"
     {          /* context, ext, 1 */
                (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2514,12 +2506,12 @@ yyreduce:
     break;
 
   case 100:
-#line 500 "ael.y"
+#line 502 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 101:
-#line 500 "ael.y"
+#line 502 "ael.y"
     {
                /* XXX original code had @2 but i think we need @5 */
                (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[-4]), &(yylsp[0]));
@@ -2528,19 +2520,19 @@ yyreduce:
     break;
 
   case 102:
-#line 505 "ael.y"
+#line 507 "ael.y"
     {
                (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
     break;
 
   case 103:
-#line 513 "ael.y"
+#line 515 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 104:
-#line 513 "ael.y"
+#line 515 "ael.y"
     {
                if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
                        (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[-1]));
@@ -2553,7 +2545,7 @@ yyreduce:
     break;
 
   case 105:
-#line 524 "ael.y"
+#line 526 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[0]));
                if( (yyval.pval)->type == PV_GOTO )
@@ -2564,201 +2556,190 @@ yyreduce:
     break;
 
   case 106:
-#line 531 "ael.y"
+#line 533 "ael.y"
     { (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
   case 107:
-#line 534 "ael.y"
+#line 536 "ael.y"
     { (yyval.str) = (yyvsp[0].str) ;}
     break;
 
   case 108:
-#line 535 "ael.y"
+#line 537 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
   case 109:
-#line 538 "ael.y"
+#line 540 "ael.y"
     { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 110:
-#line 539 "ael.y"
+#line 541 "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 111:
-#line 542 "ael.y"
+#line 544 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[0].str), &(yylsp[0]))); ;}
     break;
 
   case 112:
-#line 545 "ael.y"
+#line 547 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 113:
-#line 546 "ael.y"
+#line 548 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 114:
-#line 547 "ael.y"
+#line 549 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 115:
-#line 550 "ael.y"
-    {
-               (yyval.pval) = npval2(PV_CASE, &(yylsp[-3]), &(yylsp[-1])); /* XXX 3 or 4 ? */
-               (yyval.pval)->u1.str = (yyvsp[-2].str);
-               (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
+#line 553 "ael.y"
+    { (yyval.pval) = NULL; ;}
     break;
 
   case 116:
 #line 554 "ael.y"
-    {
-               (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-2]), &(yylsp[0]));
-               (yyval.pval)->u1.str = NULL;
-               (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
+    { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 117:
-#line 558 "ael.y"
+#line 557 "ael.y"
     {
-               (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-3]), &(yylsp[0])); /* XXX@3 or @4 ? */
+               (yyval.pval) = npval2(PV_CASE, &(yylsp[-3]), &(yylsp[-1])); /* XXX 3 or 4 ? */
                (yyval.pval)->u1.str = (yyvsp[-2].str);
                (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
     break;
 
   case 118:
-#line 562 "ael.y"
+#line 561 "ael.y"
     {
-               (yyval.pval) = npval2(PV_CASE, &(yylsp[-2]), &(yylsp[0]));
-               (yyval.pval)->u1.str = (yyvsp[-1].str);;}
+               (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-2]), &(yylsp[0]));
+               (yyval.pval)->u1.str = NULL;
+               (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
     break;
 
   case 119:
 #line 565 "ael.y"
     {
-               (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-1]), &(yylsp[0]));
-               (yyval.pval)->u1.str = NULL;;}
+               (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-3]), &(yylsp[0])); /* XXX@3 or @4 ? */
+               (yyval.pval)->u1.str = (yyvsp[-2].str);
+               (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
     break;
 
   case 120:
-#line 568 "ael.y"
-    {
-               (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-2]), &(yylsp[0]));
-               (yyval.pval)->u1.str = (yyvsp[-1].str);;}
-    break;
-
-  case 121:
-#line 573 "ael.y"
+#line 571 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 122:
-#line 574 "ael.y"
+  case 121:
+#line 572 "ael.y"
     {(yyval.pval) = (yyvsp[0].pval);;}
     break;
 
-  case 123:
-#line 575 "ael.y"
+  case 122:
+#line 573 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
-  case 124:
-#line 578 "ael.y"
+  case 123:
+#line 576 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
-  case 125:
-#line 579 "ael.y"
+  case 124:
+#line 577 "ael.y"
     {
                (yyval.pval) = npval2(PV_CATCH, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-3].str);
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
     break;
 
-  case 126:
-#line 585 "ael.y"
+  case 125:
+#line 583 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[0].pval); ;}
     break;
 
-  case 127:
-#line 590 "ael.y"
+  case 126:
+#line 588 "ael.y"
     {
                (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[0].pval); ;}
     break;
 
-  case 128:
-#line 595 "ael.y"
+  case 127:
+#line 593 "ael.y"
     { (yyval.pval) = (yyvsp[-1].pval); ;}
     break;
 
-  case 129:
-#line 596 "ael.y"
+  case 128:
+#line 594 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
-  case 130:
-#line 599 "ael.y"
+  case 129:
+#line 597 "ael.y"
     { (yyval.pval) = nword((yyvsp[-1].str), &(yylsp[-1])); ;}
     break;
 
-  case 131:
-#line 600 "ael.y"
+  case 130:
+#line 598 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[-1].str), &(yylsp[-1]))); ;}
     break;
 
-  case 132:
-#line 601 "ael.y"
+  case 131:
+#line 599 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
-  case 133:
-#line 604 "ael.y"
+  case 132:
+#line 602 "ael.y"
     { (yyval.pval) = nword((yyvsp[-1].str), &(yylsp[-1])); ;}
     break;
 
-  case 134:
-#line 605 "ael.y"
+  case 133:
+#line 603 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-3].str), &(yylsp[-3]));
                (yyval.pval)->u2.arglist = (yyvsp[-1].pval);
                prev_word=0; /* XXX sure ? */ ;}
     break;
 
-  case 135:
-#line 612 "ael.y"
+  case 134:
+#line 610 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
-  case 136:
-#line 613 "ael.y"
+  case 135:
+#line 611 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
-  case 137:
-#line 614 "ael.y"
+  case 136:
+#line 612 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
-  case 138:
-#line 617 "ael.y"
+  case 137:
+#line 615 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
-  case 139:
-#line 620 "ael.y"
+  case 138:
+#line 618 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-2]), &(yylsp[0]));;}
     break;
@@ -2768,7 +2749,7 @@ yyreduce:
     }
 
 /* Line 1126 of yacc.c.  */
-#line 2772 "ael.tab.c"
+#line 2753 "ael.tab.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -3043,7 +3024,7 @@ yyreturn:
 }
 
 
-#line 625 "ael.y"
+#line 623 "ael.y"
 
 
 static char *token_equivs1[] =
index f73b385..e46a002 100644 (file)
@@ -121,6 +121,7 @@ static pval *update_last(pval *, YYLTYPE *);
 %type <pval>switchlist_block
 %type <pval>timespec
 %type <pval>included_entry
+%type <pval>opt_statements
 
 %type <str>opt_word
 %type <str>context_name
@@ -169,6 +170,7 @@ static pval *update_last(pval *, YYLTYPE *);
                opt_else
                elements_block switchlist_block
                timespec included_entry
+               opt_statements
 
 %destructor { free($$);}  word word_list goto_word word3_list opt_word context_name
                timerange
@@ -547,27 +549,23 @@ case_statements: /* empty */ { $$ = NULL; }
        | case_statements case_statement { $$ = linku1($1, $2); }
        ;
 
-case_statement: KW_CASE word COLON statements {
+/* statement in a switch body after a label */
+opt_statements : { $$ = NULL; }
+       | statements { $$ = $1; }
+       ;
+
+case_statement: KW_CASE word COLON opt_statements {
                $$ = npval2(PV_CASE, &@1, &@3); /* XXX 3 or 4 ? */
                $$->u1.str = $2;
                $$->u2.statements = $4;}
-       | KW_DEFAULT COLON statements {
+       | KW_DEFAULT COLON opt_statements {
                $$ = npval2(PV_DEFAULT, &@1, &@3);
                $$->u1.str = NULL;
                $$->u2.statements = $3;}
-       | KW_PATTERN word COLON statements {
+       | KW_PATTERN word COLON opt_statements {
                $$ = npval2(PV_PATTERN, &@1, &@4); /* XXX@3 or @4 ? */
                $$->u1.str = $2;
                $$->u2.statements = $4;}
-       | KW_CASE word COLON {
-               $$ = npval2(PV_CASE, &@1, &@3);
-               $$->u1.str = $2;}
-       | KW_DEFAULT COLON {
-               $$ = npval2(PV_DEFAULT, &@1, &@2);
-               $$->u1.str = NULL;}
-       | KW_PATTERN word COLON  {
-               $$ = npval2(PV_PATTERN, &@1, &@3);
-               $$->u1.str = $2;}
        ;
 
 macro_statements: /* empty */ { $$ = NULL; }