[asterisk-commits] murf: branch 1.4 r177225 - in /branches/1.4/pbx/ael: ael.tab.c ael.y

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Feb 18 16:43:14 CST 2009


Author: murf
Date: Wed Feb 18 16:43:14 2009
New Revision: 177225

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=177225
Log:
This patch fixes a regression of sorts that was introduced in 
rev 24425.

It basically fixes AST-190/ABE-1782.

What was wrong: the user has 6000 extensions in one context; and
then 6000 contexts, one per extension. The parser could only handle
about 4893 of the 6000 extens in the single context.

This was due to the regression I mentioned. To get rid of
shift/reduce conflicts, Luigi set up right-recursive lists
for globals, context elements, switch lists, and statements.
Right recursive lists got rid of the warnings, but instead, they
use up a tremendous amount of stack space when the lists are long.

I saw this a few years back, and resolved not to fix it until
someone complained. That day has arrived!

After the changes were made, I ran the regression test suite,
and there were no problems.

I took the test case the user provided, and added 100,000 
extensions to the single context, that already had 6,000 extens
in it. (I'll see your 6, and raise you 100!) It takes a few minutes
to read it all in, check it and generate code for it, but no
problems.

So, I think I can say that fundamentally, there are no longer
any limits on the number of items you can place in contexts,
statement blocks, switches, or globals, beyond your virt mem
constraints.



Modified:
    branches/1.4/pbx/ael/ael.tab.c
    branches/1.4/pbx/ael/ael.y

Modified: branches/1.4/pbx/ael/ael.tab.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/pbx/ael/ael.tab.c?view=diff&rev=177225&r1=177224&r2=177225
==============================================================================
--- branches/1.4/pbx/ael/ael.tab.c (original)
+++ branches/1.4/pbx/ael/ael.tab.c Wed Feb 18 16:43:14 2009
@@ -506,7 +506,7 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  17
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   311
+#define YYLAST   350
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  43
@@ -515,7 +515,7 @@
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  137
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  276
+#define YYNSTATES  269
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -588,15 +588,15 @@
       -1,    42,    -1,    37,    -1,    49,     3,    47,     4,    56,
        5,    -1,    23,    -1,    -1,    24,    -1,    24,    23,    -1,
       23,    24,    -1,    15,    42,     6,    55,     7,     4,    89,
-       5,    -1,    16,     4,    52,     5,    -1,    -1,    53,    52,
+       5,    -1,    16,     4,    52,     5,    -1,    -1,    52,    53,
       -1,     1,    52,    -1,    -1,    42,     9,    54,    42,     8,
       -1,    -1,    42,    -1,    55,    10,    42,    -1,    55,     1,
-      -1,    -1,    57,    56,    -1,     1,    56,    -1,    59,    -1,
+      -1,    -1,    56,    57,    -1,     1,    56,    -1,    59,    -1,
       96,    -1,    91,    -1,    92,    -1,    58,    -1,    53,    -1,
       42,     1,    -1,     8,    -1,    17,    25,    42,     8,    -1,
       42,    25,    71,    -1,    31,    42,    25,    71,    -1,    32,
        6,    67,     7,    42,    25,    71,    -1,    31,    32,     6,
-      67,     7,    42,    25,    71,    -1,    -1,    71,    60,    -1,
+      67,     7,    42,    25,    71,    -1,    -1,    60,    71,    -1,
        1,    60,    -1,    68,    11,    68,    11,    68,    -1,    42,
       -1,    61,    13,    68,    13,    68,    13,    68,    -1,    -1,
        6,    64,    66,     7,    -1,    19,    63,    -1,    22,    63,
@@ -620,12 +620,12 @@
       42,     6,    81,    86,     7,    -1,    42,     6,     7,    -1,
       -1,    42,     6,    83,    -1,    82,    86,     7,    -1,    82,
        7,    -1,    42,    -1,    -1,    66,    -1,    -1,    86,    10,
-      85,    -1,    -1,    88,    87,    -1,    35,    42,    11,    60,
+      85,    -1,    -1,    87,    88,    -1,    35,    42,    11,    60,
       -1,    37,    11,    60,    -1,    36,    42,    11,    60,    -1,
-      -1,    90,    89,    -1,    71,    -1,    96,    -1,    38,    42,
+      -1,    89,    90,    -1,    71,    -1,    96,    -1,    38,    42,
        4,    60,     5,    -1,    39,     4,    93,     5,    -1,    40,
-       4,    93,     5,    -1,    -1,    42,     8,    93,    -1,    42,
-      14,    42,     8,    93,    -1,     1,    93,    -1,    47,    -1,
+       4,    93,     5,    -1,    -1,    93,    42,     8,    -1,    93,
+      42,    14,    42,     8,    -1,     1,    93,    -1,    47,    -1,
       47,    13,    62,    -1,    94,     8,    -1,    95,    94,     8,
       -1,    95,     1,    -1,    41,     4,    95,     5,    -1,    41,
        4,     5,    -1
@@ -735,89 +735,87 @@
 {
       14,     9,     0,     0,    13,    15,     0,     0,     3,     6,
        0,     7,     8,     0,     0,    17,    16,     1,     5,     4,
-       0,    25,     0,     0,     0,     0,    11,    10,     0,    26,
-       0,    22,    23,    19,    21,     0,    28,     0,     0,     0,
-       0,    39,     0,     0,     0,     0,     0,     0,     0,    37,
-       0,     0,    36,    32,    34,    35,    33,   120,    27,     0,
-      31,     0,     0,     0,     0,     0,     0,     0,    38,     0,
-      12,    30,     0,    89,     0,     0,     0,     0,     0,     0,
+       0,    25,     0,     0,    11,    10,     0,    26,     0,    22,
+      19,     0,    21,     0,    28,     0,     0,    23,     0,     0,
+     120,    27,     0,    31,    12,    39,     0,     0,     0,     0,
+       0,     0,     0,    37,    30,    36,    32,    34,    35,    33,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
+       0,     0,    18,    89,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    70,     0,
-      79,   122,   113,     0,     0,   120,   123,    24,     0,     0,
-       0,    58,     0,     0,     0,     0,     0,   137,   131,     0,
-       0,    41,     0,     0,     0,     0,     0,    51,     0,    53,
-       0,    54,     0,    65,    92,     0,    99,     0,    86,    85,
-      87,    74,     0,     0,   106,    82,    73,    91,   109,    56,
-     112,     0,    81,    83,    18,   121,    40,     0,    42,     0,
-       0,     0,    59,   130,     0,     0,   125,   126,     0,   133,
-     135,   136,     0,    47,    69,    46,   103,    80,     0,   115,
-      49,     0,     0,     0,     0,     0,    66,     0,     0,     0,
-      71,     0,   101,    72,     0,    78,     0,   107,     0,    88,
-      57,   108,   111,     0,     0,     0,    60,    61,   128,     0,
-     132,   134,   105,   113,     0,     0,     0,     0,     0,   115,
+      79,   122,   113,     0,   121,   123,    24,     0,     0,     0,
+      58,     0,     0,     0,     0,   137,   131,     0,     0,    41,
+       0,     0,     0,     0,    51,     0,    53,     0,    54,     0,
+      65,    92,     0,    99,     0,    86,    85,    87,    74,     0,
+       0,   106,    82,    73,    91,   109,    56,   112,     0,    81,
+      83,    40,     0,    42,     0,     0,     0,    59,   130,   125,
+       0,   126,     0,   133,   135,   136,     0,    47,    69,    46,
+     103,    80,     0,   115,    49,     0,     0,     0,     0,     0,
+      66,     0,     0,     0,    71,     0,   101,    72,     0,    78,
+       0,   107,     0,    88,    57,   108,   111,     0,     0,     0,
+      60,    61,   128,     0,   132,   134,   105,   113,     0,     0,
       63,     0,    55,     0,     0,     0,    94,    67,    93,   100,
        0,     0,     0,    90,   110,   114,     0,     0,     0,     0,
-       0,    52,     0,     0,     0,    68,   116,    64,    62,     0,
+       0,    52,    68,     0,     0,     0,   116,    64,    62,     0,
        0,     0,     0,     0,     0,   102,    75,   124,    84,     0,
-      43,   129,   104,     0,     0,   118,     0,     0,    98,    97,
-      96,    95,     0,    44,   117,   119,     0,    48,     0,     0,
-      76,    50,     0,     0,     0,    77
+      43,   129,   104,     0,     0,     0,     0,     0,    98,    97,
+      96,    95,     0,    44,     0,     0,   118,     0,    48,     0,
+     117,   119,     0,    76,    50,     0,     0,     0,    77
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     6,     7,     8,   108,     9,    10,    11,    12,    24,
-      88,    39,    30,    50,    51,    52,    53,   113,   171,   172,
-     118,   168,    89,   140,   102,   173,   124,    90,   114,   184,
-     262,   272,   193,   189,   125,   182,   127,   116,   203,    92,
-     187,    93,   225,   141,   208,   209,    94,    95,    54,    55,
-     105,   109,   110,    56
+      -1,     6,     7,     8,   106,     9,    10,    11,    12,    23,
+      88,    42,    28,    39,    54,    55,    56,   111,   165,   166,
+     115,   162,    89,   137,   101,   167,   121,    90,   159,   178,
+     252,   265,   187,   183,   122,   176,   124,   113,   197,    92,
+     181,    93,   215,   138,   199,   226,    60,    94,    57,    58,
+     103,   107,   108,    59
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -206
+#define YYPACT_NINF -198
 static const yytype_int16 yypact[] =
 {
-      65,  -206,     2,    64,    -1,    70,    84,   231,  -206,  -206,
-     108,  -206,  -206,   120,    13,  -206,  -206,  -206,  -206,  -206,
-      29,    88,    13,   130,   163,    13,  -206,  -206,   165,  -206,
-      75,  -206,  -206,  -206,  -206,     8,  -206,   171,   134,   136,
-       8,  -206,   154,   -22,   178,   182,   186,   189,    61,  -206,
-     200,     8,  -206,  -206,  -206,  -206,  -206,   169,  -206,   198,
-    -206,   152,   203,   187,   177,    14,    14,    23,  -206,   196,
-    -206,  -206,   128,  -206,   179,   207,   207,   214,   207,    58,
-     185,   220,   225,   227,   230,   207,   195,   174,  -206,   196,
-    -206,  -206,    17,    94,   235,   169,  -206,  -206,   233,   177,
-     196,  -206,    19,    14,    55,   237,   238,  -206,   232,   236,
-      16,  -206,    86,   243,    86,   244,   241,  -206,   247,  -206,
-     210,  -206,    97,   211,    24,   248,   107,   249,  -206,  -206,
-    -206,  -206,   196,   254,  -206,  -206,  -206,   239,  -206,   217,
-    -206,   117,  -206,  -206,  -206,  -206,  -206,    67,  -206,   219,
-     221,   222,  -206,  -206,    14,   223,  -206,  -206,   210,  -206,
-    -206,  -206,   258,  -206,  -206,  -206,   255,  -206,   226,   106,
-       0,   256,   260,   259,   185,   185,  -206,   185,   229,   185,
-    -206,   234,   261,  -206,   240,  -206,   128,  -206,   196,  -206,
-    -206,  -206,   242,   245,   246,   252,  -206,  -206,  -206,   264,
-    -206,  -206,  -206,   226,   266,   250,   251,   263,   273,   106,
-     253,   257,  -206,   257,   142,   138,   149,  -206,   161,  -206,
-      29,   271,   275,  -206,  -206,  -206,   277,   265,   196,    14,
-     127,  -206,   270,   272,    86,  -206,  -206,  -206,   262,   276,
-     280,   185,   185,   185,   185,  -206,  -206,  -206,  -206,   196,
-    -206,  -206,  -206,    86,    86,  -206,   257,   257,   283,   283,
-     283,   283,   267,  -206,  -206,  -206,   284,  -206,   278,   257,
-    -206,  -206,   268,   289,   196,  -206
+     169,  -198,   -27,   112,    77,   106,   140,   303,  -198,  -198,
+     142,  -198,  -198,   114,    16,  -198,  -198,  -198,  -198,  -198,
+      38,    94,    16,     0,  -198,  -198,   166,  -198,    71,   115,
+    -198,   165,  -198,   120,  -198,   171,   147,  -198,   120,    92,
+    -198,  -198,   157,   260,  -198,  -198,   175,   -14,   172,   178,
+     199,   207,    73,  -198,  -198,  -198,  -198,  -198,  -198,  -198,
+     168,   206,   174,   211,   196,   181,    26,    26,    20,  -198,
+     254,    84,  -198,  -198,   182,   219,   219,   230,   219,    42,
+     195,   232,   233,   235,   238,   219,   208,   133,  -198,   254,
+    -198,  -198,    25,    78,  -198,  -198,  -198,   240,   181,   254,
+    -198,     1,    26,    28,    29,  -198,   225,   243,    19,  -198,
+      18,   200,   246,   251,  -198,   259,  -198,   222,  -198,   117,
+     223,   158,   262,    97,   263,  -198,  -198,  -198,  -198,   254,
+     271,  -198,  -198,  -198,   257,  -198,   237,  -198,     4,  -198,
+    -198,  -198,    52,  -198,   244,   247,   248,  -198,   252,  -198,
+      69,  -198,   222,  -198,  -198,  -198,   277,   254,  -198,  -198,
+     286,  -198,   253,  -198,    24,   284,   291,   256,   195,   195,
+    -198,   195,   265,   195,  -198,   266,   295,  -198,   268,  -198,
+      84,  -198,   254,  -198,  -198,  -198,   270,   272,   273,   280,
+    -198,  -198,  -198,   274,  -198,  -198,  -198,   253,   306,   130,
+     275,   278,  -198,   278,   139,   170,   153,  -198,   202,  -198,
+      38,   313,   227,  -198,  -198,  -198,   314,   298,   254,   316,
+     136,  -198,  -198,   283,   287,   317,  -198,  -198,   288,   318,
+     321,   195,   195,   195,   195,  -198,  -198,  -198,  -198,   254,
+    -198,  -198,  -198,   322,   323,    18,   278,   278,   324,   324,
+     324,   324,   294,  -198,    18,    18,   254,   325,  -198,   329,
+     254,   254,   278,  -198,  -198,   297,   333,   254,  -198
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -206,  -206,  -206,   291,   -19,  -206,  -206,  -206,  -206,   113,
-      32,  -206,  -206,   -18,  -206,  -206,  -206,  -109,  -206,   143,
-     -49,  -206,  -206,   132,   204,  -205,   -78,  -206,   -57,  -206,
-    -206,  -206,  -206,  -206,  -206,  -206,  -206,  -206,  -206,  -206,
-    -206,  -206,  -206,    99,    96,  -206,   212,  -206,  -206,  -206,
-     -62,   201,  -206,   -50
+    -198,  -198,  -198,   334,   -19,  -198,  -198,  -198,  -198,   320,
+      76,  -198,  -198,   305,  -198,  -198,  -198,  -107,  -198,   192,
+     -69,  -198,  -198,   183,   249,  -197,   -78,  -198,   -60,  -198,
+    -198,  -198,  -198,  -198,  -198,  -198,  -198,  -198,  -198,  -198,
+    -198,  -198,  -198,   149,  -198,  -198,  -198,  -198,  -198,  -198,
+     -26,   241,  -198,   290
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -827,74 +825,82 @@
 #define YYTABLE_NINF -128
 static const yytype_int16 yytable[] =
 {
-      91,    28,   126,   163,   106,   165,   239,    96,   240,    40,
-      62,   -62,   111,   -29,    22,   103,    41,   160,   -20,  -127,
-      63,   161,    60,    15,   138,    42,   149,   119,   107,   121,
-     150,   151,   137,    71,   177,   178,   132,   179,    91,    43,
-      44,   153,   210,   148,    13,    96,    25,    45,    46,    47,
-      48,   266,   267,    26,    25,    23,   104,    25,    27,   139,
-      26,   152,    68,   154,   271,    27,    26,    49,    14,   155,
-      32,    27,    49,     1,   194,   185,    36,   222,   150,   151,
-       2,     3,    37,    49,    17,    38,    69,   112,     4,     5,
-      72,   -45,   198,    16,    73,   122,   214,   215,    74,   216,
-     123,   218,   142,   143,    75,    76,    77,   174,    78,   152,
-     175,    20,    79,    80,    81,    82,    83,   181,   178,    84,
-      85,   -45,   -45,   -45,   191,   255,    21,   192,    87,   112,
-      29,   223,    72,   -45,   252,    31,    73,   192,    34,    32,
-      74,   205,   206,   207,   264,   265,    75,    76,    77,   178,
-      78,   242,   241,   178,    79,    80,    81,    82,    83,   243,
-     178,    84,    85,   258,   259,   260,   261,   251,    33,    35,
-      87,   250,   178,    72,   244,    57,    58,    73,    59,    61,
-     134,    74,   135,    32,    64,   136,    65,    75,    76,    77,
-      66,    78,   263,    67,    98,    79,    80,    81,    82,    83,
-      72,   245,    84,    85,    73,    70,    97,    86,    74,    99,
-      47,    87,   100,   117,    75,    76,    77,   275,    78,   101,
-     120,   115,    79,    80,    81,    82,    83,   123,   128,    84,
-      85,    -2,    18,   129,   -14,   130,   131,   133,    87,     1,
-     144,   146,   156,   157,   159,   158,     2,     3,   164,   167,
-     166,   169,   170,   176,     4,     5,   180,   183,   186,   190,
-     188,   195,   202,   196,   197,   199,   201,   212,   139,   211,
-     213,   217,   229,   231,   234,   220,   219,   228,   235,   246,
-     247,   253,   221,   254,   224,   248,   270,   226,   227,   256,
-     249,   257,   232,   233,   178,   237,   274,   269,    19,   238,
-     204,   200,   230,   147,   210,   236,     0,   145,     0,   268,
-     273,   162
+      91,    26,   123,   157,   229,    30,   230,   116,   144,   118,
+     109,   185,   145,   146,   186,    13,   129,    22,    63,   110,
+     154,   -20,   -45,   -45,   155,   105,   -45,   102,    64,   134,
+     -45,  -127,   135,   149,   151,   -62,   -45,   -45,   -45,   143,
+     -45,   104,    31,   147,   -45,   -45,   -45,   -45,   -45,   257,
+     258,   -45,   -45,   -45,   -45,   -45,    24,    24,   -20,   188,
+     -45,    25,    25,   145,   146,   264,   200,   136,  -127,   179,
+     150,   150,    34,   212,    69,    24,   148,   192,    35,   119,
+      25,    36,    37,   193,   120,   110,   139,   140,   -45,   -45,
+     204,   205,   -45,   206,   147,   208,   -45,    44,    70,    32,
+      45,    15,   -45,   -45,   -45,    32,   -45,   175,   172,    46,
+     -45,   -45,   -45,   -45,   -45,    53,    14,   -45,   -45,    53,
+      21,    38,   213,    47,    48,   -29,   -45,   168,   -29,    16,
+     169,    49,    50,    51,    52,   222,    27,   -29,   256,   131,
+      17,   132,    37,   242,   133,    20,   186,   260,   261,   231,
+     172,   -29,   -29,   248,   249,   250,   251,    31,   240,   -29,
+     -29,   -29,   -29,   233,   172,   223,   224,   225,   171,   172,
+      33,   173,    71,    72,    37,    40,    73,     1,    65,   253,
+      74,   172,    66,   232,     2,     3,    75,    76,    77,    41,
+      78,   235,     4,     5,    79,    80,    81,    82,    83,    61,
+      62,    84,    85,    67,    71,   158,    86,   268,    73,    51,
+      87,    68,    74,   172,    96,   234,    97,    98,    75,    76,
+      77,    99,    78,   100,   112,   114,    79,    80,    81,    82,
+      83,    71,   237,    84,    85,    73,   117,   120,   152,    74,
+     125,   126,    87,   127,   128,    75,    76,    77,   141,    78,
+     130,   153,   160,    79,    80,    81,    82,    83,    71,   161,
+      84,    85,    73,   163,   164,   170,    74,   203,    45,    87,
+     174,   177,    75,    76,    77,   180,    78,    46,   182,   184,
+      79,    80,    81,    82,    83,   195,   189,    84,    85,   190,
+     191,    47,    48,   196,   150,   136,    87,   201,   202,    49,
+      50,    51,    52,    -2,    18,   218,   -14,   207,   209,   210,
+     211,     1,   214,   221,   216,   217,   219,   227,     2,     3,
+     228,   236,   238,   239,   241,   243,     4,     5,   245,   244,
+     200,   246,   247,   254,   255,   172,   259,   263,   262,   266,
+     267,    19,    29,    43,   194,   198,   220,   142,     0,   156,
+      95
 };
 
 static const yytype_int16 yycheck[] =
 {
-      57,    20,    80,   112,    66,   114,   211,    57,   213,     1,
-      32,    11,    69,     5,     1,     1,     8,     1,     5,     5,
-      42,     5,    40,    24,     7,    17,     7,    76,     5,    78,
-      11,    12,    89,    51,    10,    11,    85,    13,    95,    31,
-      32,   103,    42,   100,    42,    95,    14,    39,    40,    41,
-      42,   256,   257,    37,    22,    42,    42,    25,    42,    42,
-      37,    42,     1,     8,   269,    42,    37,    35,     4,    14,
-       9,    42,    40,     8,     7,   132,     1,   186,    11,    12,
-      15,    16,     7,    51,     0,    10,    25,     1,    23,    24,
-       4,     5,   154,    23,     8,    37,   174,   175,    12,   177,
-      42,   179,     8,     9,    18,    19,    20,    10,    22,    42,
-      13,     3,    26,    27,    28,    29,    30,    10,    11,    33,
-      34,    35,    36,    37,     7,   234,     6,    10,    42,     1,
-      42,   188,     4,     5,     7,    22,     8,    10,    25,     9,
-      12,    35,    36,    37,   253,   254,    18,    19,    20,    11,
-      22,    13,    10,    11,    26,    27,    28,    29,    30,    10,
-      11,    33,    34,   241,   242,   243,   244,   229,     5,     4,
-      42,   228,    11,     4,    13,     4,    42,     8,    42,    25,
-       6,    12,     8,     9,     6,    11,     4,    18,    19,    20,
-       4,    22,   249,     4,    42,    26,    27,    28,    29,    30,
-       4,   220,    33,    34,     8,     5,     8,    38,    12,     6,
-      41,    42,    25,     6,    18,    19,    20,   274,    22,    42,
-       6,    42,    26,    27,    28,    29,    30,    42,     8,    33,
-      34,     0,     1,     8,     3,     8,     6,    42,    42,     8,
-       5,     8,     5,     5,     8,    13,    15,    16,     5,     8,
-       6,     4,    42,    42,    23,    24,     8,     8,     4,    42,
-      21,    42,     7,    42,    42,    42,     8,     7,    42,    13,
-      11,    42,     8,     7,    11,    14,    42,    25,     5,     8,
-       5,    11,    42,    11,    42,     8,     8,    42,    42,    13,
-      25,    11,    42,    42,    11,    42,     7,    13,     7,    42,
-     168,   158,   203,    99,    42,   209,    -1,    95,    -1,    42,
-      42,   110
+      60,    20,    80,   110,   201,     5,   203,    76,     7,    78,
+      70,     7,    11,    12,    10,    42,    85,     1,    32,     1,
+       1,     5,     4,     5,     5,     5,     8,     1,    42,    89,
+      12,     5,     7,     5,     5,    11,    18,    19,    20,    99,
+      22,    67,    42,    42,    26,    27,    28,    29,    30,   246,
+     247,    33,    34,    35,    36,    37,    37,    37,    42,     7,
+      42,    42,    42,    11,    12,   262,    42,    42,    42,   129,
+      42,    42,     1,   180,     1,    37,   102,     8,     7,    37,
+      42,    10,     9,    14,    42,     1,     8,     9,     4,     5,
+     168,   169,     8,   171,    42,   173,    12,     5,    25,    23,
+       8,    24,    18,    19,    20,    29,    22,    10,    11,    17,
+      26,    27,    28,    29,    30,    39,     4,    33,    34,    43,
+       6,     1,   182,    31,    32,     5,    42,    10,     8,    23,
+      13,    39,    40,    41,    42,     5,    42,    17,   245,     6,
+       0,     8,     9,     7,    11,     3,    10,   254,   255,    10,
+      11,    31,    32,   231,   232,   233,   234,    42,   218,    39,
+      40,    41,    42,    10,    11,    35,    36,    37,    10,    11,
+       4,    13,     4,     5,     9,     4,     8,     8,     6,   239,
+      12,    11,     4,    13,    15,    16,    18,    19,    20,    42,
+      22,   210,    23,    24,    26,    27,    28,    29,    30,    42,
+      25,    33,    34,     4,     4,     5,    38,   267,     8,    41,
+      42,     4,    12,    11,     8,    13,    42,     6,    18,    19,
+      20,    25,    22,    42,    42,     6,    26,    27,    28,    29,
+      30,     4,     5,    33,    34,     8,     6,    42,    13,    12,
+       8,     8,    42,     8,     6,    18,    19,    20,     8,    22,
+      42,     8,     6,    26,    27,    28,    29,    30,     4,     8,
+      33,    34,     8,     4,    42,    42,    12,    11,     8,    42,
+       8,     8,    18,    19,    20,     4,    22,    17,    21,    42,
+      26,    27,    28,    29,    30,     8,    42,    33,    34,    42,
+      42,    31,    32,     7,    42,    42,    42,    13,     7,    39,
+      40,    41,    42,     0,     1,    25,     3,    42,    42,    14,
+      42,     8,    42,     7,    42,    42,    42,    42,    15,    16,
+      42,     8,     8,    25,     8,    42,    23,    24,    11,    42,
+      42,    13,    11,    11,    11,    11,    42,     8,    13,    42,
+       7,     7,    22,    38,   152,   162,   197,    98,    -1,   108,
+      60
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -903,32 +909,31 @@
 {
        0,     8,    15,    16,    23,    24,    44,    45,    46,    48,
       49,    50,    51,    42,     4,    24,    23,     0,     1,    46,
-       3,     6,     1,    42,    52,    53,    37,    42,    47,    42,
-      55,    52,     9,     5,    52,     4,     1,     7,    10,    54,
-       1,     8,    17,    31,    32,    39,    40,    41,    42,    53,
-      56,    57,    58,    59,    91,    92,    96,     4,    42,    42,
-      56,    25,    32,    42,     6,     4,     4,     4,     1,    25,
-       5,    56,     4,     8,    12,    18,    19,    20,    22,    26,
+       3,     6,     1,    52,    37,    42,    47,    42,    55,    52,
+       5,    42,    53,     4,     1,     7,    10,     9,     1,    56,
+       4,    42,    54,    56,     5,     8,    17,    31,    32,    39,
+      40,    41,    42,    53,    57,    58,    59,    91,    92,    96,
+      89,    42,    25,    32,    42,     6,     4,     4,     4,     1,
+      25,     4,     5,     8,    12,    18,    19,    20,    22,    26,
       27,    28,    29,    30,    33,    34,    38,    42,    53,    65,
-      70,    71,    82,    84,    89,    90,    96,     8,    42,     6,
-      25,    42,    67,     1,    42,    93,    93,     5,    47,    94,
-      95,    71,     1,    60,    71,    42,    80,     6,    63,    63,
-       6,    63,    37,    42,    69,    77,    69,    79,     8,     8,
-       8,     6,    63,    42,     6,     8,    11,    71,     7,    42,
-      66,    86,     8,     9,     5,    89,     8,    67,    71,     7,
-      11,    12,    42,    93,     8,    14,     5,     5,    13,     8,
-       1,     5,    94,    60,     5,    60,     6,     8,    64,     4,
-      42,    61,    62,    68,    10,    13,    42,    10,    11,    13,
-       8,    10,    78,     8,    72,    71,     4,    83,    21,    76,
-      42,     7,    10,    75,     7,    42,    42,    42,    93,    42,
-      62,     8,     7,    81,    66,    35,    36,    37,    87,    88,
+      70,    71,    82,    84,    90,    96,     8,    42,     6,    25,
+      42,    67,     1,    93,    93,     5,    47,    94,    95,    71,
+       1,    60,    42,    80,     6,    63,    63,     6,    63,    37,
+      42,    69,    77,    69,    79,     8,     8,     8,     6,    63,
+      42,     6,     8,    11,    71,     7,    42,    66,    86,     8,
+       9,     8,    67,    71,     7,    11,    12,    42,    93,     5,
+      42,     5,    13,     8,     1,     5,    94,    60,     5,    71,
+       6,     8,    64,     4,    42,    61,    62,    68,    10,    13,
+      42,    10,    11,    13,     8,    10,    78,     8,    72,    71,
+       4,    83,    21,    76,    42,     7,    10,    75,     7,    42,
+      42,    42,     8,    14,    62,     8,     7,    81,    66,    87,
       42,    13,     7,    11,    69,    69,    69,    42,    69,    42,
-      14,    42,    60,    71,    42,    85,    42,    42,    25,     8,
-      86,     7,    42,    42,    11,     5,    87,    42,    42,    68,
+      14,    42,    60,    71,    42,    85,    42,    42,    25,    42,
+      86,     7,     5,    35,    36,    37,    88,    42,    42,    68,
       68,    10,    13,    10,    13,    47,     8,     5,     8,    25,
-      71,    93,     7,    11,    11,    60,    13,    11,    69,    69,
-      69,    69,    73,    71,    60,    60,    68,    68,    42,    13,
-       8,    68,    74,    42,     7,    71
+      71,     8,     7,    42,    42,    11,    13,    11,    69,    69,
+      69,    69,    73,    71,    11,    11,    60,    68,    68,    42,
+      60,    60,    13,     8,    68,    74,    42,     7,    71
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1453,7 +1458,7 @@
       case 42: /* "word" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1457 "ael.tab.c"
+#line 1462 "ael.tab.c"
 	break;
       case 45: /* "objects" */
 #line 166 "ael.y"
@@ -1461,7 +1466,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1465 "ael.tab.c"
+#line 1470 "ael.tab.c"
 	break;
       case 46: /* "object" */
 #line 166 "ael.y"
@@ -1469,12 +1474,12 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1473 "ael.tab.c"
+#line 1478 "ael.tab.c"
 	break;
       case 47: /* "context_name" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1478 "ael.tab.c"
+#line 1483 "ael.tab.c"
 	break;
       case 48: /* "context" */
 #line 166 "ael.y"
@@ -1482,7 +1487,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1486 "ael.tab.c"
+#line 1491 "ael.tab.c"
 	break;
       case 50: /* "macro" */
 #line 166 "ael.y"
@@ -1490,7 +1495,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1494 "ael.tab.c"
+#line 1499 "ael.tab.c"
 	break;
       case 51: /* "globals" */
 #line 166 "ael.y"
@@ -1498,7 +1503,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1502 "ael.tab.c"
+#line 1507 "ael.tab.c"
 	break;
       case 52: /* "global_statements" */
 #line 166 "ael.y"
@@ -1506,7 +1511,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1510 "ael.tab.c"
+#line 1515 "ael.tab.c"
 	break;
       case 53: /* "assignment" */
 #line 166 "ael.y"
@@ -1514,7 +1519,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1518 "ael.tab.c"
+#line 1523 "ael.tab.c"
 	break;
       case 55: /* "arglist" */
 #line 166 "ael.y"
@@ -1522,7 +1527,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1526 "ael.tab.c"
+#line 1531 "ael.tab.c"
 	break;
       case 56: /* "elements" */
 #line 166 "ael.y"
@@ -1530,7 +1535,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1534 "ael.tab.c"
+#line 1539 "ael.tab.c"
 	break;
       case 57: /* "element" */
 #line 166 "ael.y"
@@ -1538,7 +1543,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1542 "ael.tab.c"
+#line 1547 "ael.tab.c"
 	break;
       case 58: /* "ignorepat" */
 #line 166 "ael.y"
@@ -1546,7 +1551,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1550 "ael.tab.c"
+#line 1555 "ael.tab.c"
 	break;
       case 59: /* "extension" */
 #line 166 "ael.y"
@@ -1554,7 +1559,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1558 "ael.tab.c"
+#line 1563 "ael.tab.c"
 	break;
       case 60: /* "statements" */
 #line 166 "ael.y"
@@ -1562,12 +1567,12 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1566 "ael.tab.c"
+#line 1571 "ael.tab.c"
 	break;
       case 61: /* "timerange" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1571 "ael.tab.c"
+#line 1576 "ael.tab.c"
 	break;
       case 62: /* "timespec" */
 #line 166 "ael.y"
@@ -1575,12 +1580,12 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1579 "ael.tab.c"
+#line 1584 "ael.tab.c"
 	break;
       case 63: /* "test_expr" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1584 "ael.tab.c"
+#line 1589 "ael.tab.c"
 	break;
       case 65: /* "if_like_head" */
 #line 166 "ael.y"
@@ -1588,22 +1593,22 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1592 "ael.tab.c"
+#line 1597 "ael.tab.c"
 	break;
       case 66: /* "word_list" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1597 "ael.tab.c"
+#line 1602 "ael.tab.c"
 	break;
       case 68: /* "word3_list" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1602 "ael.tab.c"
+#line 1607 "ael.tab.c"
 	break;
       case 69: /* "goto_word" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1607 "ael.tab.c"
+#line 1612 "ael.tab.c"
 	break;
       case 70: /* "switch_statement" */
 #line 166 "ael.y"
@@ -1611,7 +1616,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1615 "ael.tab.c"
+#line 1620 "ael.tab.c"
 	break;
       case 71: /* "statement" */
 #line 166 "ael.y"
@@ -1619,7 +1624,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1623 "ael.tab.c"
+#line 1628 "ael.tab.c"
 	break;
       case 76: /* "opt_else" */
 #line 166 "ael.y"
@@ -1627,7 +1632,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1631 "ael.tab.c"
+#line 1636 "ael.tab.c"
 	break;
       case 77: /* "target" */
 #line 166 "ael.y"
@@ -1635,12 +1640,12 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1639 "ael.tab.c"
+#line 1644 "ael.tab.c"
 	break;
       case 78: /* "opt_pri" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1644 "ael.tab.c"
+#line 1649 "ael.tab.c"
 	break;
       case 79: /* "jumptarget" */
 #line 166 "ael.y"
@@ -1648,7 +1653,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1652 "ael.tab.c"
+#line 1657 "ael.tab.c"
 	break;
       case 80: /* "macro_call" */
 #line 166 "ael.y"
@@ -1656,7 +1661,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1660 "ael.tab.c"
+#line 1665 "ael.tab.c"
 	break;
       case 82: /* "application_call_head" */
 #line 166 "ael.y"
@@ -1664,7 +1669,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1668 "ael.tab.c"
+#line 1673 "ael.tab.c"
 	break;
       case 84: /* "application_call" */
 #line 166 "ael.y"
@@ -1672,12 +1677,12 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1676 "ael.tab.c"
+#line 1681 "ael.tab.c"
 	break;
       case 85: /* "opt_word" */
 #line 179 "ael.y"
 	{ free((yyvaluep->str));};
-#line 1681 "ael.tab.c"
+#line 1686 "ael.tab.c"
 	break;
       case 86: /* "eval_arglist" */
 #line 166 "ael.y"
@@ -1685,7 +1690,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1689 "ael.tab.c"
+#line 1694 "ael.tab.c"
 	break;
       case 87: /* "case_statements" */
 #line 166 "ael.y"
@@ -1693,7 +1698,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1697 "ael.tab.c"
+#line 1702 "ael.tab.c"
 	break;
       case 88: /* "case_statement" */
 #line 166 "ael.y"
@@ -1701,7 +1706,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1705 "ael.tab.c"
+#line 1710 "ael.tab.c"
 	break;
       case 89: /* "macro_statements" */
 #line 166 "ael.y"
@@ -1709,7 +1714,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1713 "ael.tab.c"
+#line 1718 "ael.tab.c"
 	break;
       case 90: /* "macro_statement" */
 #line 166 "ael.y"
@@ -1717,7 +1722,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1721 "ael.tab.c"
+#line 1726 "ael.tab.c"
 	break;
       case 91: /* "switches" */
 #line 166 "ael.y"
@@ -1725,7 +1730,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1729 "ael.tab.c"
+#line 1734 "ael.tab.c"
 	break;
       case 92: /* "eswitches" */
 #line 166 "ael.y"
@@ -1733,7 +1738,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1737 "ael.tab.c"
+#line 1742 "ael.tab.c"
 	break;
       case 93: /* "switchlist" */
 #line 166 "ael.y"
@@ -1741,7 +1746,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1745 "ael.tab.c"
+#line 1750 "ael.tab.c"
 	break;
       case 94: /* "included_entry" */
 #line 166 "ael.y"
@@ -1749,7 +1754,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1753 "ael.tab.c"
+#line 1758 "ael.tab.c"
 	break;
       case 95: /* "includeslist" */
 #line 166 "ael.y"
@@ -1757,7 +1762,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1761 "ael.tab.c"
+#line 1766 "ael.tab.c"
 	break;
       case 96: /* "includes" */
 #line 166 "ael.y"
@@ -1765,7 +1770,7 @@
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
-#line 1769 "ael.tab.c"
+#line 1774 "ael.tab.c"
 	break;
 
       default:
@@ -2954,20 +2959,20 @@
 
   case 128:
 #line 646 "ael.y"
-    { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
+    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;}
     break;
 
   case 129:
 #line 647 "ael.y"
     {
 	  char *x;
-	  if (asprintf(&x,"%s@%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str)) < 0) {
+	  if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) {
 		ast_log(LOG_WARNING, "asprintf() failed\n");
 		(yyval.pval) = NULL;
 	  } else {
-		free((yyvsp[(1) - (5)].str));
-		free((yyvsp[(3) - (5)].str));
-		(yyval.pval) = linku1(nword(x, &(yylsp[(1) - (5)])), (yyvsp[(5) - (5)].pval));
+		free((yyvsp[(2) - (5)].str));
+		free((yyvsp[(4) - (5)].str));
+		(yyval.pval) = linku1((yyvsp[(1) - (5)].pval),nword(x, &(yylsp[(2) - (5)])));
 	  }
 	;}
     break;
@@ -3020,7 +3025,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 3024 "ael.tab.c"
+#line 3029 "ael.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

Modified: branches/1.4/pbx/ael/ael.y
URL: http://svn.digium.com/svn-view/asterisk/branches/1.4/pbx/ael/ael.y?view=diff&rev=177225&r1=177224&r2=177225
==============================================================================
--- branches/1.4/pbx/ael/ael.y (original)
+++ branches/1.4/pbx/ael/ael.y Wed Feb 18 16:43:14 2009
@@ -155,7 +155,7 @@
 
 /* there will be two shift/reduce conflicts, they involve the if statement, where a single statement occurs not wrapped in curlies in the "true" section
    the default action to shift will attach the else to the preceeding if. */
-%expect 3
+%expect 28
 %error-verbose
 
 /*
@@ -231,7 +231,7 @@
 	;
 
 global_statements : { $$ = NULL; }
-	| assignment global_statements {$$ = linku1($1, $2); }
+	| global_statements assignment {$$ = linku1($1, $2); }
 	| error global_statements {$$=$2;}
 	;
 
@@ -249,7 +249,7 @@
 	;
 
 elements : {$$=0;}
-	| element elements { $$ = linku1($1, $2); }
+	| elements element { $$ = linku1($1, $2); }
 	| error elements  { $$=$2;}
 	;
 
@@ -293,7 +293,7 @@
 
 /* list of statements in a block or after a case label - can be empty */
 statements : /* empty */ { $$ = NULL; }
-	| statement statements { $$ = linku1($1, $2); }
+	| statements statement { $$ = linku1($1, $2); }
 	| error statements {$$=$2;}
 	;
 
@@ -603,7 +603,7 @@
 	;
 
 case_statements: /* empty */ { $$ = NULL; }
-	| case_statement case_statements { $$ = linku1($1, $2); }
+	| case_statements case_statement { $$ = linku1($1, $2); }
 	;
 
 case_statement: KW_CASE word COLON statements {
@@ -621,7 +621,7 @@
 	;
 
 macro_statements: /* empty */ { $$ = NULL; }
-	| macro_statement macro_statements { $$ = linku1($1, $2); }
+	| macro_statements macro_statement { $$ = linku1($1, $2); }
 	;
 
 macro_statement : statement {$$=$1;}
@@ -643,16 +643,16 @@
 	;
 
 switchlist : /* empty */ { $$ = NULL; }
-	| word SEMI switchlist { $$ = linku1(nword($1, &@1), $3); }
-	| word AT word SEMI switchlist {
+	| switchlist word SEMI { $$ = linku1($1,nword($2, &@2)); }
+	| switchlist word AT word SEMI {
 	  char *x;
-	  if (asprintf(&x,"%s@%s", $1, $3) < 0) {
+	  if (asprintf(&x,"%s@%s", $2, $4) < 0) {
 		ast_log(LOG_WARNING, "asprintf() failed\n");
 		$$ = NULL;
 	  } else {
-		free($1);
-		free($3);
-		$$ = linku1(nword(x, &@1), $5);
+		free($2);
+		free($4);
+		$$ = linku1($1,nword(x, &@2));
 	  }
 	}
 	| error switchlist {$$=$2;}




More information about the asterisk-commits mailing list