switch statement in one place
authorLuigi Rizzo <rizzo@icir.org>
Wed, 3 May 2006 16:08:35 +0000 (16:08 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Wed, 3 May 2006 16:08:35 +0000 (16:08 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@24423 65c4cc65-6c06-0410-ace0-fbb531ad65f3

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

index a48d12a..251e119 100644 (file)
@@ -420,7 +420,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  14
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   386
+#define YYLAST   400
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  42
@@ -484,8 +484,8 @@ static const unsigned short int yyprhs[] =
       85,    87,    90,    93,    95,    97,    99,   101,   103,   105,
      108,   110,   115,   119,   124,   132,   141,   143,   146,   149,
      155,   157,   165,   166,   171,   174,   177,   182,   184,   187,
-     189,   192,   196,   198,   201,   205,   209,   213,   215,   219,
-     223,   226,   227,   228,   229,   242,   246,   250,   254,   257,
+     189,   192,   196,   198,   201,   205,   211,   215,   217,   221,
+     225,   228,   229,   230,   231,   244,   248,   250,   254,   257,
      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,
@@ -517,11 +517,11 @@ static const yysigned_char yyrhs[] =
       -1,    19,    63,    -1,    22,    63,    -1,    20,     6,    62,
        7,    -1,    41,    -1,    41,    41,    -1,    41,    -1,    41,
       41,    -1,    41,    41,    41,    -1,    41,    -1,    41,    41,
-      -1,    41,    11,    41,    -1,    18,    63,     4,    -1,     4,
-      60,     5,    -1,    52,    -1,    25,    76,     8,    -1,    26,
-      77,     8,    -1,    41,    11,    -1,    -1,    -1,    -1,    32,
-       6,    71,    41,     8,    72,    41,     8,    73,    41,     7,
-      70,    -1,    33,    63,    70,    -1,    69,    85,     5,    -1,
+      -1,    41,    11,    41,    -1,    18,    63,     4,    85,     5,
+      -1,     4,    60,     5,    -1,    52,    -1,    25,    76,     8,
+      -1,    26,    77,     8,    -1,    41,    11,    -1,    -1,    -1,
+      -1,    32,     6,    71,    41,     8,    72,    41,     8,    73,
+      41,     7,    70,    -1,    33,    63,    70,    -1,    69,    -1,
       12,    78,     8,    -1,    82,     8,    -1,    41,     8,    -1,
       -1,    82,     9,    74,    41,     8,    -1,    28,     8,    -1,
       27,     8,    -1,    29,     8,    -1,    65,    70,    75,    -1,
@@ -555,14 +555,14 @@ static const unsigned short int yyrline[] =
      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,   375,   378,   379,   382,
-     385,   388,   389,   390,   388,   396,   400,   403,   405,   407,
-     410,   410,   443,   444,   445,   446,   450,   453,   454,   459,
-     460,   463,   466,   470,   474,   478,   485,   488,   491,   495,
-     501,   501,   506,   514,   514,   525,   532,   535,   536,   539,
-     540,   543,   546,   547,   548,   551,   555,   559,   563,   566,
-     569,   574,   575,   576,   579,   580,   586,   591,   596,   597,
-     600,   601,   602,   605,   606,   613,   614,   615,   618,   621
+     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
 };
 #endif
 
@@ -582,9 +582,9 @@ static const char *const yytname[] =
   "globals", "global_statements", "assignment", "@1", "arglist",
   "elements_block", "elements", "element", "ignorepat", "extension",
   "statements", "timerange", "timespec", "test_expr", "@2", "if_like_head",
-  "word_list", "word3_list", "goto_word", "switch_head", "statement", "@3",
-  "@4", "@5", "@6", "opt_else", "target", "jumptarget", "macro_call", "@7",
-  "application_call_head", "@8", "application_call", "opt_word",
+  "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
@@ -632,8 +632,8 @@ static const unsigned char yyr2[] =
        1,     2,     2,     1,     1,     1,     1,     1,     1,     2,
        1,     4,     3,     4,     7,     8,     1,     2,     2,     5,
        1,     7,     0,     4,     2,     2,     4,     1,     2,     1,
-       2,     3,     1,     2,     3,     3,     3,     1,     3,     3,
-       2,     0,     0,     0,    12,     3,     3,     3,     2,     2,
+       2,     3,     1,     2,     3,     5,     3,     1,     3,     3,
+       2,     0,     0,     0,    12,     3,     1,     3,     2,     2,
        0,     5,     2,     2,     2,     3,     1,     2,     0,     1,
        3,     3,     5,     5,     5,     5,     1,     3,     5,     3,
        0,     5,     3,     0,     3,     3,     2,     1,     0,     1,
@@ -656,23 +656,23 @@ static const unsigned char yydefact[] =
        0,     0,     0,     0,   126,   127,     0,    39,     0,    32,
       28,    31,     0,    86,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    67,     0,
-     112,   124,   110,     0,     0,   122,    22,     0,     0,     0,
+      76,   124,   110,     0,     0,   122,    22,     0,     0,     0,
       59,     0,   129,     0,     0,   139,     0,   135,     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,     0,     0,     0,     0,   113,
-     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,   100,    77,     0,    65,    50,
-       0,     0,     0,     0,     0,     0,    63,     0,     0,    68,
-       0,     0,    69,     0,    75,     0,   104,     0,    85,     0,
-       0,   119,    76,   114,    58,   105,   108,     0,     0,    61,
-       0,   131,     0,   102,   110,     0,     0,    56,     0,     0,
-       0,    64,    91,    90,    62,    97,    99,     0,     0,    87,
-     118,   120,     0,   107,   111,     0,     0,     0,   134,     0,
-      53,     0,     0,     0,     0,     0,     0,     0,    72,   125,
-       0,     0,    81,     0,    44,   101,     0,     0,    95,    94,
-      93,    92,    98,     0,    45,     0,    49,     0,     0,    73,
+       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,
+     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,
+     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
 };
 
@@ -680,56 +680,56 @@ static const unsigned char yydefact[] =
 static const short int yydefgoto[] =
 {
       -1,     5,     6,     7,   106,     8,     9,    10,    11,    21,
-      88,    37,    27,    33,    49,    50,    51,    52,   110,   170,
-     171,   115,   167,    89,   142,   172,   121,    90,   111,   183,
-     253,   261,   197,   188,   122,   124,   113,   204,    92,   186,
-      93,   224,   143,   138,   139,    94,    95,    53,    54,    64,
+      88,    37,    27,    33,    49,    50,    51,    52,   110,   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
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -139
+#define YYPACT_NINF -178
 static const short int yypact[] =
 {
-      93,  -139,   -30,    18,  -139,    35,   176,  -139,  -139,   112,
-    -139,  -139,    82,    24,  -139,  -139,  -139,   -21,    99,  -139,
-     125,     5,  -139,  -139,  -139,   148,  -139,    74,  -139,  -139,
-    -139,  -139,    20,  -139,  -139,   150,   118,   121,  -139,  -139,
-    -139,   154,   -15,   174,   177,   177,   178,     8,  -139,   130,
-    -139,  -139,  -139,  -139,  -139,  -139,   319,  -139,   175,   146,
-     187,   170,   155,    26,  -139,  -139,    86,  -139,   345,  -139,
-    -139,  -139,   345,  -139,   156,   189,   189,   192,   189,    51,
-     161,   197,   198,   201,   204,   189,   171,   133,  -139,   345,
-     139,  -139,     1,   157,   293,  -139,  -139,   205,   155,   345,
-     173,   208,  -139,   214,    13,  -139,    11,  -139,     2,  -139,
-     237,  -139,   210,   215,  -139,   225,  -139,   195,  -139,    23,
-      57,   135,   222,   119,   229,  -139,  -139,  -139,  -139,   345,
-     235,  -139,  -139,  -139,   223,   202,   206,   239,    89,  -139,
-    -139,   207,  -139,   136,  -139,  -139,  -139,  -139,  -139,   244,
-    -139,   211,   212,  -139,  -139,  -139,   238,  -139,   195,  -139,
-    -139,  -139,  -139,  -139,  -139,   247,  -139,   217,  -139,    95,
-     248,   253,   256,   161,   161,   232,  -139,   161,   161,  -139,
-     233,   -21,  -139,   236,  -139,   345,  -139,   345,  -139,   265,
-     269,   345,  -139,  -139,  -139,  -139,   240,   241,   242,  -139,
-     260,  -139,   280,  -139,   217,   283,   155,  -139,   155,   281,
-     289,  -139,   294,   290,    16,  -139,  -139,   298,   267,  -139,
-     345,   345,    44,  -139,  -139,   299,   285,   345,  -139,   143,
-    -139,   297,   303,   161,   161,   161,   161,   -21,  -139,  -139,
-      85,   199,  -139,   345,  -139,  -139,   155,   155,  -139,  -139,
-    -139,  -139,  -139,   275,  -139,   304,  -139,   316,   155,  -139,
-    -139,   287,   322,   345,  -139
+      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
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short int yypgoto[] =
 {
-    -139,  -139,  -139,   326,   -17,  -139,  -139,  -139,  -139,  -139,
-      -9,  -139,  -139,  -139,  -139,   284,  -139,  -139,  -138,  -139,
-     182,    52,  -139,  -139,   168,   -57,   -78,  -139,   -55,  -139,
-    -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,  -139,
-    -139,  -139,   132,  -139,   216,  -139,   249,  -139,  -139,   305,
-    -139,   234,  -139,  -139
+    -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
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -739,88 +739,92 @@ static const short int yypgoto[] =
 #define YYTABLE_NINF -118
 static const short int yytable[] =
 {
-      25,    91,   123,   159,    22,   101,    29,   160,   140,    67,
-      30,    12,    31,   109,   154,    23,    60,    28,   155,   157,
-      24,    38,    13,    48,   158,    39,    61,   175,    40,    19,
-     237,   102,    68,   173,   134,    14,   174,    41,    23,    91,
-      48,   149,   141,    24,   150,   162,    20,   218,    72,  -116,
-      42,    43,    73,   222,   156,   164,    74,   176,    44,    45,
-      46,    47,    75,    76,    77,    20,    78,   103,   175,    79,
-      80,    81,    82,    83,   184,    34,    84,    85,  -116,  -116,
-    -116,    35,   240,   241,    36,    87,   162,   119,    18,    72,
-    -115,   105,   120,    73,   192,   209,   210,    74,   176,   212,
-     213,     1,   215,    75,    76,    77,   -59,    78,     2,     3,
-      79,    80,    81,    82,    83,    17,     4,    84,    85,  -115,
-    -115,  -115,    23,   135,   136,   137,    87,    24,   116,   180,
-     118,    69,   219,   181,    28,    70,   151,   129,    40,   131,
-      26,   132,    28,   195,   133,   177,   196,    41,   178,   231,
-     245,   232,    32,   196,    56,   248,   249,   250,   251,    57,
-      42,    43,    58,   164,   216,   144,   145,   164,    44,    45,
-      46,    47,   244,   135,   136,   137,    -2,    15,    59,   -14,
-      62,    63,    66,    96,     1,   164,   164,    97,   254,   255,
-     256,     2,     3,    98,    99,   114,   100,   112,   117,     4,
-     162,   260,   120,    72,  -117,   125,   126,    73,   264,   127,
-     128,    74,   130,   148,   151,   152,   165,    75,    76,    77,
-     252,    78,   153,   166,    79,    80,    81,    82,    83,   168,
-     179,    84,    85,  -117,  -117,  -117,   169,   182,   162,   185,
-      87,    72,   163,   189,   187,    73,   201,   190,   194,    74,
-     191,   198,   199,   200,   203,    75,    76,    77,   141,    78,
-     207,   206,    79,    80,    81,    82,    83,   208,   162,    84,
-      85,    72,   239,   211,   214,    73,   220,   217,    87,    74,
-     221,   223,   225,   226,   227,    75,    76,    77,   228,    78,
-     230,   233,    79,    80,    81,    82,    83,    72,   146,    84,
-      85,    73,   234,   236,   235,    74,   238,   242,    87,   243,
-     246,    75,    76,    77,   247,    78,   257,   258,    79,    80,
-      81,    82,    83,    72,   259,    84,    85,    73,   262,   263,
-      86,    74,    16,    71,    87,   205,   229,    75,    76,    77,
-     202,    78,   161,   147,    79,    80,    81,    82,    83,    72,
-      65,    84,    85,    73,   193,     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,   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
 };
 
 static const short int yycheck[] =
 {
-      17,    56,    80,     1,    13,    62,     1,     5,     7,     1,
-       5,    41,    21,    68,     1,    36,    31,     9,     5,     8,
-      41,     1,     4,    32,    13,     5,    41,    11,     8,     5,
-      14,     5,    24,    10,    89,     0,    13,    17,    36,    94,
-      49,    98,    41,    41,    99,     1,    41,   185,     4,     5,
-      30,    31,     8,   191,    41,   110,    12,    41,    38,    39,
-      40,    41,    18,    19,    20,    41,    22,    41,    11,    25,
-      26,    27,    28,    29,   129,     1,    32,    33,    34,    35,
-      36,     7,   220,   221,    10,    41,     1,    36,     6,     4,
-       5,     5,    41,     8,     5,   173,   174,    12,    41,   177,
-     178,     8,   180,    18,    19,    20,    11,    22,    15,    16,
-      25,    26,    27,    28,    29,     3,    23,    32,    33,    34,
-      35,    36,    36,    34,    35,    36,    41,    41,    76,    10,
-      78,     1,   187,    14,     9,     5,    41,    85,     8,     6,
-      41,     8,     9,     7,    11,    10,    10,    17,    13,   206,
-       7,   208,     4,    10,     4,   233,   234,   235,   236,    41,
-      30,    31,    41,   218,   181,     8,     9,   222,    38,    39,
-      40,    41,   227,    34,    35,    36,     0,     1,    24,     3,
-       6,     4,     4,     8,     8,   240,   241,    41,   243,   246,
-     247,    15,    16,     6,    24,     6,    41,    41,     6,    23,
-       1,   258,    41,     4,     5,     8,     8,     8,   263,     8,
-       6,    12,    41,     8,    41,     7,     6,    18,    19,    20,
-     237,    22,     8,     8,    25,    26,    27,    28,    29,     4,
-       8,    32,    33,    34,    35,    36,    41,     8,     1,     4,
-      41,     4,     5,    41,    21,     8,     8,    41,    41,    12,
-      11,     7,    41,    41,     7,    18,    19,    20,    41,    22,
-       7,    13,    25,    26,    27,    28,    29,    11,     1,    32,
-      33,     4,     5,    41,    41,     8,    11,    41,    41,    12,
-      11,    41,    41,    41,    24,    18,    19,    20,     8,    22,
-       7,    10,    25,    26,    27,    28,    29,     4,     5,    32,
-      33,     8,    13,    13,    10,    12,     8,     8,    41,    24,
-      13,    18,    19,    20,    11,    22,    41,    13,    25,    26,
-      27,    28,    29,     4,     8,    32,    33,     8,    41,     7,
-      37,    12,     6,    49,    41,   167,   204,    18,    19,    20,
-     158,    22,   108,    94,    25,    26,    27,    28,    29,     4,
-      45,    32,    33,     8,   138,    -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,    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
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -840,19 +844,19 @@ static const unsigned char yystos[] =
       41,    67,     5,    41,    92,     5,    46,    93,    94,    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,    34,    35,    36,    85,    86,
-       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,     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,
-      41,    11,     5,    86,    41,     7,    10,    74,     7,    41,
-      41,     8,    62,     7,    79,    66,    13,     7,    11,    68,
-      68,    41,    68,    68,    41,    68,    46,    41,    60,    70,
-      11,    11,    60,    41,    83,    41,    41,    24,     8,    84,
-       7,    67,    67,    10,    13,    10,    13,    14,     8,     5,
-      60,    60,     8,    24,    70,     7,    13,    11,    68,    68,
-      68,    68,    46,    72,    70,    67,    67,    41,    13,     8,
+      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,
+       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,
+      68,    46,    41,    60,    70,    41,    83,    41,    41,    24,
+       8,    84,     7,    41,    41,    11,     5,    86,    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
 };
 
@@ -1231,7 +1235,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
       case 41: /* "word" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1235 "ael.tab.c"
+#line 1239 "ael.tab.c"
         break;
       case 44: /* "objects" */
 #line 159 "ael.y"
@@ -1239,7 +1243,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1243 "ael.tab.c"
+#line 1247 "ael.tab.c"
         break;
       case 45: /* "object" */
 #line 159 "ael.y"
@@ -1247,12 +1251,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1251 "ael.tab.c"
+#line 1255 "ael.tab.c"
         break;
       case 46: /* "context_name" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1256 "ael.tab.c"
+#line 1260 "ael.tab.c"
         break;
       case 47: /* "context" */
 #line 159 "ael.y"
@@ -1260,7 +1264,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1264 "ael.tab.c"
+#line 1268 "ael.tab.c"
         break;
       case 49: /* "macro" */
 #line 159 "ael.y"
@@ -1268,7 +1272,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1272 "ael.tab.c"
+#line 1276 "ael.tab.c"
         break;
       case 50: /* "globals" */
 #line 159 "ael.y"
@@ -1276,7 +1280,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1280 "ael.tab.c"
+#line 1284 "ael.tab.c"
         break;
       case 51: /* "global_statements" */
 #line 159 "ael.y"
@@ -1284,7 +1288,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1288 "ael.tab.c"
+#line 1292 "ael.tab.c"
         break;
       case 52: /* "assignment" */
 #line 159 "ael.y"
@@ -1292,7 +1296,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1296 "ael.tab.c"
+#line 1300 "ael.tab.c"
         break;
       case 54: /* "arglist" */
 #line 159 "ael.y"
@@ -1300,7 +1304,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1304 "ael.tab.c"
+#line 1308 "ael.tab.c"
         break;
       case 55: /* "elements_block" */
 #line 159 "ael.y"
@@ -1308,7 +1312,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1312 "ael.tab.c"
+#line 1316 "ael.tab.c"
         break;
       case 56: /* "elements" */
 #line 159 "ael.y"
@@ -1316,7 +1320,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1320 "ael.tab.c"
+#line 1324 "ael.tab.c"
         break;
       case 57: /* "element" */
 #line 159 "ael.y"
@@ -1324,7 +1328,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1328 "ael.tab.c"
+#line 1332 "ael.tab.c"
         break;
       case 58: /* "ignorepat" */
 #line 159 "ael.y"
@@ -1332,7 +1336,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1336 "ael.tab.c"
+#line 1340 "ael.tab.c"
         break;
       case 59: /* "extension" */
 #line 159 "ael.y"
@@ -1340,7 +1344,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1344 "ael.tab.c"
+#line 1348 "ael.tab.c"
         break;
       case 60: /* "statements" */
 #line 159 "ael.y"
@@ -1348,12 +1352,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1352 "ael.tab.c"
+#line 1356 "ael.tab.c"
         break;
       case 61: /* "timerange" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1357 "ael.tab.c"
+#line 1361 "ael.tab.c"
         break;
       case 62: /* "timespec" */
 #line 159 "ael.y"
@@ -1361,12 +1365,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1365 "ael.tab.c"
+#line 1369 "ael.tab.c"
         break;
       case 63: /* "test_expr" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1370 "ael.tab.c"
+#line 1374 "ael.tab.c"
         break;
       case 65: /* "if_like_head" */
 #line 159 "ael.y"
@@ -1374,30 +1378,30 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1378 "ael.tab.c"
+#line 1382 "ael.tab.c"
         break;
       case 66: /* "word_list" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1383 "ael.tab.c"
+#line 1387 "ael.tab.c"
         break;
       case 67: /* "word3_list" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1388 "ael.tab.c"
+#line 1392 "ael.tab.c"
         break;
       case 68: /* "goto_word" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1393 "ael.tab.c"
+#line 1397 "ael.tab.c"
         break;
-      case 69: /* "switch_head" */
+      case 69: /* "switch_statement" */
 #line 159 "ael.y"
         {
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1401 "ael.tab.c"
+#line 1405 "ael.tab.c"
         break;
       case 70: /* "statement" */
 #line 159 "ael.y"
@@ -1405,7 +1409,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1409 "ael.tab.c"
+#line 1413 "ael.tab.c"
         break;
       case 75: /* "opt_else" */
 #line 159 "ael.y"
@@ -1413,7 +1417,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1417 "ael.tab.c"
+#line 1421 "ael.tab.c"
         break;
       case 76: /* "target" */
 #line 159 "ael.y"
@@ -1421,7 +1425,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1425 "ael.tab.c"
+#line 1429 "ael.tab.c"
         break;
       case 77: /* "jumptarget" */
 #line 159 "ael.y"
@@ -1429,7 +1433,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1433 "ael.tab.c"
+#line 1437 "ael.tab.c"
         break;
       case 78: /* "macro_call" */
 #line 159 "ael.y"
@@ -1437,7 +1441,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1441 "ael.tab.c"
+#line 1445 "ael.tab.c"
         break;
       case 80: /* "application_call_head" */
 #line 159 "ael.y"
@@ -1445,7 +1449,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1449 "ael.tab.c"
+#line 1453 "ael.tab.c"
         break;
       case 82: /* "application_call" */
 #line 159 "ael.y"
@@ -1453,12 +1457,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1457 "ael.tab.c"
+#line 1461 "ael.tab.c"
         break;
       case 83: /* "opt_word" */
 #line 173 "ael.y"
         { free((yyvaluep->str));};
-#line 1462 "ael.tab.c"
+#line 1466 "ael.tab.c"
         break;
       case 84: /* "eval_arglist" */
 #line 159 "ael.y"
@@ -1466,7 +1470,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1470 "ael.tab.c"
+#line 1474 "ael.tab.c"
         break;
       case 85: /* "case_statements" */
 #line 159 "ael.y"
@@ -1474,7 +1478,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1478 "ael.tab.c"
+#line 1482 "ael.tab.c"
         break;
       case 86: /* "case_statement" */
 #line 159 "ael.y"
@@ -1482,7 +1486,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1486 "ael.tab.c"
+#line 1490 "ael.tab.c"
         break;
       case 87: /* "macro_statements" */
 #line 159 "ael.y"
@@ -1490,7 +1494,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1494 "ael.tab.c"
+#line 1498 "ael.tab.c"
         break;
       case 88: /* "macro_statement" */
 #line 159 "ael.y"
@@ -1498,7 +1502,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1502 "ael.tab.c"
+#line 1506 "ael.tab.c"
         break;
       case 89: /* "switches" */
 #line 159 "ael.y"
@@ -1506,7 +1510,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1510 "ael.tab.c"
+#line 1514 "ael.tab.c"
         break;
       case 90: /* "eswitches" */
 #line 159 "ael.y"
@@ -1514,7 +1518,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1518 "ael.tab.c"
+#line 1522 "ael.tab.c"
         break;
       case 91: /* "switchlist_block" */
 #line 159 "ael.y"
@@ -1522,7 +1526,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1526 "ael.tab.c"
+#line 1530 "ael.tab.c"
         break;
       case 92: /* "switchlist" */
 #line 159 "ael.y"
@@ -1530,7 +1534,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1534 "ael.tab.c"
+#line 1538 "ael.tab.c"
         break;
       case 93: /* "included_entry" */
 #line 159 "ael.y"
@@ -1538,7 +1542,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1542 "ael.tab.c"
+#line 1546 "ael.tab.c"
         break;
       case 94: /* "includeslist" */
 #line 159 "ael.y"
@@ -1546,7 +1550,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1550 "ael.tab.c"
+#line 1554 "ael.tab.c"
         break;
       case 95: /* "includes" */
 #line 159 "ael.y"
@@ -1554,7 +1558,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
                destroy_pval((yyvaluep->pval));
                prev_word=0;
        };
-#line 1558 "ael.tab.c"
+#line 1562 "ael.tab.c"
         break;
 
       default:
@@ -2253,60 +2257,61 @@ yyreduce:
   case 65:
 #line 367 "ael.y"
     {
-               (yyval.pval) = npval2(PV_SWITCH, &(yylsp[-2]), &(yylsp[0]));
-               (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
+               (yyval.pval) = npval2(PV_SWITCH, &(yylsp[-4]), &(yylsp[0]));
+               (yyval.pval)->u1.str = (yyvsp[-3].str);
+               (yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
     break;
 
   case 66:
-#line 375 "ael.y"
+#line 376 "ael.y"
     {
                (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
     break;
 
   case 67:
-#line 378 "ael.y"
+#line 379 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 68:
-#line 379 "ael.y"
+#line 380 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 69:
-#line 382 "ael.y"
+#line 383 "ael.y"
     {
                (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 70:
-#line 385 "ael.y"
+#line 386 "ael.y"
     {
                (yyval.pval) = npval2(PV_LABEL, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
     break;
 
   case 71:
-#line 388 "ael.y"
+#line 389 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 72:
-#line 389 "ael.y"
+#line 390 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 73:
-#line 390 "ael.y"
+#line 391 "ael.y"
     {reset_parencount(parseio->scanner);;}
     break;
 
   case 74:
-#line 390 "ael.y"
+#line 391 "ael.y"
     { /* XXX word_list maybe ? */
                (yyval.pval) = npval2(PV_FOR, &(yylsp[-11]), &(yylsp[0]));
                (yyval.pval)->u1.for_init = (yyvsp[-8].str);
@@ -2316,7 +2321,7 @@ yyreduce:
     break;
 
   case 75:
-#line 396 "ael.y"
+#line 397 "ael.y"
     {
                (yyval.pval) = npval2(PV_WHILE, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);
@@ -2324,38 +2329,36 @@ yyreduce:
     break;
 
   case 76:
-#line 400 "ael.y"
-    {
-               (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[0]));
-               (yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
+#line 401 "ael.y"
+    { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 77:
-#line 403 "ael.y"
+#line 402 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[-1])); ;}
     break;
 
   case 78:
-#line 405 "ael.y"
+#line 404 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
   case 79:
-#line 407 "ael.y"
+#line 406 "ael.y"
     {
                (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 80:
-#line 410 "ael.y"
+#line 409 "ael.y"
     {reset_semicount(parseio->scanner);;}
     break;
 
   case 81:
-#line 410 "ael.y"
+#line 409 "ael.y"
     {
                char *bufx;
                int tot=0;
@@ -2392,22 +2395,22 @@ yyreduce:
     break;
 
   case 82:
-#line 443 "ael.y"
+#line 442 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 83:
-#line 444 "ael.y"
+#line 443 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 84:
-#line 445 "ael.y"
+#line 444 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[-1]), &(yylsp[0])); ;}
     break;
 
   case 85:
-#line 446 "ael.y"
+#line 445 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[-1]));
                (yyval.pval)->u2.statements = (yyvsp[-1].pval);
@@ -2415,41 +2418,41 @@ yyreduce:
     break;
 
   case 86:
-#line 450 "ael.y"
+#line 449 "ael.y"
     { (yyval.pval)=0; ;}
     break;
 
   case 87:
-#line 453 "ael.y"
+#line 452 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 88:
-#line 454 "ael.y"
+#line 453 "ael.y"
     { (yyval.pval) = NULL ; ;}
     break;
 
   case 89:
-#line 459 "ael.y"
+#line 458 "ael.y"
     { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 90:
-#line 460 "ael.y"
+#line 459 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
                (yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 91:
-#line 463 "ael.y"
+#line 462 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-2].str), &(yylsp[-2]));
                (yyval.pval)->next = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 92:
-#line 466 "ael.y"
+#line 465 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-4].str), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2457,7 +2460,7 @@ yyreduce:
     break;
 
   case 93:
-#line 470 "ael.y"
+#line 469 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-4].str), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2465,7 +2468,7 @@ yyreduce:
     break;
 
   case 94:
-#line 474 "ael.y"
+#line 473 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2473,7 +2476,7 @@ yyreduce:
     break;
 
   case 95:
-#line 478 "ael.y"
+#line 477 "ael.y"
     {
                (yyval.pval) = nword(strdup("default"), &(yylsp[-4]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2481,21 +2484,21 @@ yyreduce:
     break;
 
   case 96:
-#line 485 "ael.y"
+#line 484 "ael.y"
     {                  /* ext, 1 */
                (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
                (yyval.pval)->next = nword(strdup("1"), &(yylsp[0])); ;}
     break;
 
   case 97:
-#line 488 "ael.y"
+#line 487 "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 491 "ael.y"
+#line 490 "ael.y"
     {  /* context, ext, pri */
                (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
                (yyval.pval)->next = nword((yyvsp[-4].str), &(yylsp[-4]));
@@ -2503,7 +2506,7 @@ yyreduce:
     break;
 
   case 99:
-#line 495 "ael.y"
+#line 494 "ael.y"
     {          /* context, ext, 1 */
                (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0]));
                (yyval.pval)->next = nword((yyvsp[-2].str), &(yylsp[-2]));
@@ -2511,12 +2514,12 @@ yyreduce:
     break;
 
   case 100:
-#line 501 "ael.y"
+#line 500 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 101:
-#line 501 "ael.y"
+#line 500 "ael.y"
     {
                /* XXX original code had @2 but i think we need @5 */
                (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[-4]), &(yylsp[0]));
@@ -2525,19 +2528,19 @@ yyreduce:
     break;
 
   case 102:
-#line 506 "ael.y"
+#line 505 "ael.y"
     {
                (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
     break;
 
   case 103:
-#line 514 "ael.y"
+#line 513 "ael.y"
     {reset_argcount(parseio->scanner);;}
     break;
 
   case 104:
-#line 514 "ael.y"
+#line 513 "ael.y"
     {
                if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
                        (yyval.pval) = npval2(PV_GOTO, &(yylsp[-2]), &(yylsp[-1]));
@@ -2550,7 +2553,7 @@ yyreduce:
     break;
 
   case 105:
-#line 525 "ael.y"
+#line 524 "ael.y"
     {
                (yyval.pval) = update_last((yyvsp[-2].pval), &(yylsp[0]));
                if( (yyval.pval)->type == PV_GOTO )
@@ -2561,54 +2564,54 @@ yyreduce:
     break;
 
   case 106:
-#line 532 "ael.y"
+#line 531 "ael.y"
     { (yyval.pval) = update_last((yyvsp[-1].pval), &(yylsp[0])); ;}
     break;
 
   case 107:
-#line 535 "ael.y"
+#line 534 "ael.y"
     { (yyval.str) = (yyvsp[0].str) ;}
     break;
 
   case 108:
-#line 536 "ael.y"
+#line 535 "ael.y"
     { (yyval.str) = strdup(""); ;}
     break;
 
   case 109:
-#line 539 "ael.y"
+#line 538 "ael.y"
     { (yyval.pval) = nword((yyvsp[0].str), &(yylsp[0])); ;}
     break;
 
   case 110:
-#line 540 "ael.y"
+#line 539 "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 543 "ael.y"
+#line 542 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[0].str), &(yylsp[0]))); ;}
     break;
 
   case 112:
-#line 546 "ael.y"
+#line 545 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 113:
-#line 547 "ael.y"
+#line 546 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 114:
-#line 548 "ael.y"
+#line 547 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 115:
-#line 551 "ael.y"
+#line 550 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[-3]), &(yylsp[-1])); /* XXX 3 or 4 ? */
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2616,7 +2619,7 @@ yyreduce:
     break;
 
   case 116:
-#line 555 "ael.y"
+#line 554 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = NULL;
@@ -2624,7 +2627,7 @@ yyreduce:
     break;
 
   case 117:
-#line 559 "ael.y"
+#line 558 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-3]), &(yylsp[0])); /* XXX@3 or @4 ? */
                (yyval.pval)->u1.str = (yyvsp[-2].str);
@@ -2632,48 +2635,48 @@ yyreduce:
     break;
 
   case 118:
-#line 563 "ael.y"
+#line 562 "ael.y"
     {
                (yyval.pval) = npval2(PV_CASE, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 119:
-#line 566 "ael.y"
+#line 565 "ael.y"
     {
                (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.str = NULL;;}
     break;
 
   case 120:
-#line 569 "ael.y"
+#line 568 "ael.y"
     {
                (yyval.pval) = npval2(PV_PATTERN, &(yylsp[-2]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-1].str);;}
     break;
 
   case 121:
-#line 574 "ael.y"
+#line 573 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 122:
-#line 575 "ael.y"
+#line 574 "ael.y"
     {(yyval.pval) = (yyvsp[0].pval);;}
     break;
 
   case 123:
-#line 576 "ael.y"
+#line 575 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 124:
-#line 579 "ael.y"
+#line 578 "ael.y"
     {(yyval.pval)=(yyvsp[0].pval);;}
     break;
 
   case 125:
-#line 580 "ael.y"
+#line 579 "ael.y"
     {
                (yyval.pval) = npval2(PV_CATCH, &(yylsp[-4]), &(yylsp[0]));
                (yyval.pval)->u1.str = (yyvsp[-3].str);
@@ -2681,51 +2684,51 @@ yyreduce:
     break;
 
   case 126:
-#line 586 "ael.y"
+#line 585 "ael.y"
     {
                (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[0].pval); ;}
     break;
 
   case 127:
-#line 591 "ael.y"
+#line 590 "ael.y"
     {
                (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[-1]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[0].pval); ;}
     break;
 
   case 128:
-#line 596 "ael.y"
+#line 595 "ael.y"
     { (yyval.pval) = (yyvsp[-1].pval); ;}
     break;
 
   case 129:
-#line 597 "ael.y"
+#line 596 "ael.y"
     { (yyval.pval) = NULL; ;}
     break;
 
   case 130:
-#line 600 "ael.y"
+#line 599 "ael.y"
     { (yyval.pval) = nword((yyvsp[-1].str), &(yylsp[-1])); ;}
     break;
 
   case 131:
-#line 601 "ael.y"
+#line 600 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-2].pval), nword((yyvsp[-1].str), &(yylsp[-1]))); ;}
     break;
 
   case 132:
-#line 602 "ael.y"
+#line 601 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 133:
-#line 605 "ael.y"
+#line 604 "ael.y"
     { (yyval.pval) = nword((yyvsp[-1].str), &(yylsp[-1])); ;}
     break;
 
   case 134:
-#line 606 "ael.y"
+#line 605 "ael.y"
     {
                (yyval.pval) = nword((yyvsp[-3].str), &(yylsp[-3]));
                (yyval.pval)->u2.arglist = (yyvsp[-1].pval);
@@ -2733,29 +2736,29 @@ yyreduce:
     break;
 
   case 135:
-#line 613 "ael.y"
+#line 612 "ael.y"
     { (yyval.pval) = (yyvsp[0].pval); ;}
     break;
 
   case 136:
-#line 614 "ael.y"
+#line 613 "ael.y"
     { (yyval.pval) = linku1((yyvsp[-1].pval), (yyvsp[0].pval)); ;}
     break;
 
   case 137:
-#line 615 "ael.y"
+#line 614 "ael.y"
     {(yyval.pval)=(yyvsp[-1].pval);;}
     break;
 
   case 138:
-#line 618 "ael.y"
+#line 617 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-3]), &(yylsp[0]));
                (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
     break;
 
   case 139:
-#line 621 "ael.y"
+#line 620 "ael.y"
     {
                (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[-2]), &(yylsp[0]));;}
     break;
@@ -2765,7 +2768,7 @@ yyreduce:
     }
 
 /* Line 1126 of yacc.c.  */
-#line 2769 "ael.tab.c"
+#line 2772 "ael.tab.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -3040,7 +3043,7 @@ yyreturn:
 }
 
 
-#line 626 "ael.y"
+#line 625 "ael.y"
 
 
 static char *token_equivs1[] =
index 2ef55c3..f73b385 100644 (file)
@@ -98,7 +98,7 @@ static pval *update_last(pval *, YYLTYPE *);
 %type <pval>macro_call
 %type <pval>target jumptarget
 %type <pval>statement
-%type <pval>switch_head
+%type <pval>switch_statement
 
 %type <pval>if_like_head
 %type <pval>statements
@@ -162,7 +162,7 @@ static pval *update_last(pval *, YYLTYPE *);
        }       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
+               macro_call target jumptarget statement switch_statement
                if_like_head statements extension
                ignorepat element elements arglist assignment
                global_statements globals macro context object objects
@@ -364,9 +364,10 @@ goto_word : word { $$ = $1;}
                free($3);}
        ;
 
-switch_head : KW_SWITCH test_expr LC {
-               $$ = npval2(PV_SWITCH, &@1, &@3);
-               $$->u1.str = $2; }
+switch_statement : KW_SWITCH test_expr LC case_statements RC {
+               $$ = npval2(PV_SWITCH, &@1, &@5);
+               $$->u1.str = $2;
+               $$->u2.statements = $4;}
        ;
 
 /*
@@ -397,9 +398,7 @@ statement : LC statements RC {
                $$ = npval2(PV_WHILE, &@1, &@3);
                $$->u1.str = $2;
                $$->u2.statements = $3; }
-       | switch_head case_statements RC {
-               $$ = update_last($1, &@3);
-               $$->u2.statements = $2;}
+       | switch_statement { $$ = $1; }
        | AMPER macro_call SEMI {
                $$ = update_last($2, &@2); }
        | application_call SEMI {