[asterisk-commits] murf: branch 1.4 r87168 - in /branches/1.4: include/asterisk/ pbx/ pbx/ael/ p...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Oct 26 11:34:02 CDT 2007


Author: murf
Date: Fri Oct 26 11:34:02 2007
New Revision: 87168

URL: http://svn.digium.com/view/asterisk?view=rev&rev=87168
Log:
closes issue #11086 where a user complains that references to following contexts report a problem; The problem was REALLy that he was referring to empty contexts, which were being ignored. Reporter stated that empty contexts should be OK. I checked it out against extensions.conf, and sure enough, empty contexts ARE ok. So, I removed the restriction from AEL. This, though, highlighted a problem with multiple contexts of the same name. This should be OK, also. So, I added the extend keyword to AEL, and it can preceed the 'context' keyword (mixed with 'abstract', if nec.). This will turn off the warnings in AEL if the same context name is used 2 or more times. Also, I now call ast_context_find_or_create for contexts now, instead of just ast_context_create; I did this because pbx_config does this. The 'extend' keyword thus becomes a statement of intent. AEL can now duplicate the behavior of pbx_config,

Modified:
    branches/1.4/include/asterisk/ael_structs.h
    branches/1.4/pbx/ael/ael-test/ref.ael-test16
    branches/1.4/pbx/ael/ael-test/ref.ael-test19
    branches/1.4/pbx/ael/ael.flex
    branches/1.4/pbx/ael/ael.tab.c
    branches/1.4/pbx/ael/ael.tab.h
    branches/1.4/pbx/ael/ael.y
    branches/1.4/pbx/ael/ael_lex.c
    branches/1.4/pbx/pbx_ael.c
    branches/1.4/utils/ael_main.c

Modified: branches/1.4/include/asterisk/ael_structs.h
URL: http://svn.digium.com/view/asterisk/branches/1.4/include/asterisk/ael_structs.h?view=diff&rev=87168&r1=87167&r2=87168
==============================================================================
--- branches/1.4/include/asterisk/ael_structs.h (original)
+++ branches/1.4/include/asterisk/ael_structs.h Fri Oct 26 11:34:02 2007
@@ -97,10 +97,11 @@
 		char *for_inc; /* used in FOR */
 		struct pval *else_statements; /* used in IF */
 		struct pval *macro_statements; /* used in MACRO */
-		int abstract;  /* used for context */
+		int abstract;  /* used for context 1=abstract; 2=extend; 3=both */
 		char *hints; /* used in EXTENSION */
 		int goto_target_in_case; /* used in GOTO */
 		struct ael_extension *compiled_label;
+		struct pval *extend; /* to link extended contexts to the 'original' */
 	} u3;
 	
 	union

Modified: branches/1.4/pbx/ael/ael-test/ref.ael-test16
URL: http://svn.digium.com/view/asterisk/branches/1.4/pbx/ael/ael-test/ref.ael-test16?view=diff&rev=87168&r1=87167&r2=87168
==============================================================================
--- branches/1.4/pbx/ael/ael-test/ref.ael-test16 (original)
+++ branches/1.4/pbx/ael/ael-test/ref.ael-test16 Fri Oct 26 11:34:02 2007
@@ -2,13 +2,12 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:3914 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:3921 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:3 file:ael.y  line:205 func: ael_yyparse  ==== File: ./extensions.ael, Line 1, Cols: 19-19: Warning! The empty context real-small will be IGNORED!
-LOG: lev:2 file:pbx_ael.c  line:3929 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3932 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:3 file:pbx_ael.c  line:3545 func: add_extensions  This file is Empty!
-LOG: lev:2 file:pbx_ael.c  line:3934 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3937 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3940 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:479 func: main  0 contexts, 0 extensions, 0 priorities
+LOG: lev:2 file:pbx_ael.c  line:4090 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:4097 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:4105 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:4108 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:3 file:pbx_ael.c  line:3685 func: add_extensions  This file is Empty!
+LOG: lev:2 file:pbx_ael.c  line:4110 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:4113 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:4116 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:543 func: main  1 contexts, 0 extensions, 0 priorities

Modified: branches/1.4/pbx/ael/ael-test/ref.ael-test19
URL: http://svn.digium.com/view/asterisk/branches/1.4/pbx/ael/ael-test/ref.ael-test19?view=diff&rev=87168&r1=87167&r2=87168
==============================================================================
--- branches/1.4/pbx/ael/ael-test/ref.ael-test19 (original)
+++ branches/1.4/pbx/ael/ael-test/ref.ael-test19 Fri Oct 26 11:34:02 2007
@@ -2,13 +2,13 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:3978 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:3985 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3993 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:4 file:pbx_ael.c  line:2250 func: check_context_names  Error: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69!
+LOG: lev:2 file:pbx_ael.c  line:4090 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:4097 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:4105 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:4 file:pbx_ael.c  line:2250 func: check_context_names  Error: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69! (and neither is marked 'extend')
 LOG: lev:3 file:pbx_ael.c  line:2234 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
 LOG: lev:3 file:pbx_ael.c  line:2347 func: check_pval_item  Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA ! Hopefully it is present in extensions.conf! 
 LOG: lev:3 file:pbx_ael.c  line:2347 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD ! Hopefully it is present in extensions.conf! 
 LOG: lev:3 file:pbx_ael.c  line:1287 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  no context test5 could be found that matches the goto target!
-LOG: lev:4 file:pbx_ael.c  line:4006 func: pbx_load_module  Sorry, but 0 syntax errors and 1 semantic errors were detected. It doesn't make sense to compile.
-LOG: lev:4 file:ael2_parse  line:523 func: main  0 contexts, 0 extensions, 0 priorities
+LOG: lev:4 file:pbx_ael.c  line:4118 func: pbx_load_module  Sorry, but 0 syntax errors and 1 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse  line:543 func: main  0 contexts, 0 extensions, 0 priorities

Modified: branches/1.4/pbx/ael/ael.flex
URL: http://svn.digium.com/view/asterisk/branches/1.4/pbx/ael/ael.flex?view=diff&rev=87168&r1=87167&r2=87168
==============================================================================
--- branches/1.4/pbx/ael/ael.flex (original)
+++ branches/1.4/pbx/ael/ael.flex Fri Oct 26 11:34:02 2007
@@ -195,6 +195,7 @@
 \/\/[^\n]*	{/*comment*/}
 context		{ STORE_POS; return KW_CONTEXT;}
 abstract	{ STORE_POS; return KW_ABSTRACT;}
+extend		{ STORE_POS; return KW_EXTEND;}
 macro		{ STORE_POS; return KW_MACRO;};
 globals		{ STORE_POS; return KW_GLOBALS;}
 ignorepat	{ STORE_POS; return KW_IGNOREPAT;}

Modified: branches/1.4/pbx/ael/ael.tab.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/pbx/ael/ael.tab.c?view=diff&rev=87168&r1=87167&r2=87168
==============================================================================
--- branches/1.4/pbx/ael/ael.tab.c (original)
+++ branches/1.4/pbx/ael/ael.tab.c Fri Oct 26 11:34:02 2007
@@ -85,24 +85,25 @@
      KW_ELSE = 276,
      KW_RANDOM = 277,
      KW_ABSTRACT = 278,
-     EXTENMARK = 279,
-     KW_GOTO = 280,
-     KW_JUMP = 281,
-     KW_RETURN = 282,
-     KW_BREAK = 283,
-     KW_CONTINUE = 284,
-     KW_REGEXTEN = 285,
-     KW_HINT = 286,
-     KW_FOR = 287,
-     KW_WHILE = 288,
-     KW_CASE = 289,
-     KW_PATTERN = 290,
-     KW_DEFAULT = 291,
-     KW_CATCH = 292,
-     KW_SWITCHES = 293,
-     KW_ESWITCHES = 294,
-     KW_INCLUDES = 295,
-     word = 296
+     KW_EXTEND = 279,
+     EXTENMARK = 280,
+     KW_GOTO = 281,
+     KW_JUMP = 282,
+     KW_RETURN = 283,
+     KW_BREAK = 284,
+     KW_CONTINUE = 285,
+     KW_REGEXTEN = 286,
+     KW_HINT = 287,
+     KW_FOR = 288,
+     KW_WHILE = 289,
+     KW_CASE = 290,
+     KW_PATTERN = 291,
+     KW_DEFAULT = 292,
+     KW_CATCH = 293,
+     KW_SWITCHES = 294,
+     KW_ESWITCHES = 295,
+     KW_INCLUDES = 296,
+     word = 297
    };
 #endif
 /* Tokens.  */
@@ -127,24 +128,25 @@
 #define KW_ELSE 276
 #define KW_RANDOM 277
 #define KW_ABSTRACT 278
-#define EXTENMARK 279
-#define KW_GOTO 280
-#define KW_JUMP 281
-#define KW_RETURN 282
-#define KW_BREAK 283
-#define KW_CONTINUE 284
-#define KW_REGEXTEN 285
-#define KW_HINT 286
-#define KW_FOR 287
-#define KW_WHILE 288
-#define KW_CASE 289
-#define KW_PATTERN 290
-#define KW_DEFAULT 291
-#define KW_CATCH 292
-#define KW_SWITCHES 293
-#define KW_ESWITCHES 294
-#define KW_INCLUDES 295
-#define word 296
+#define KW_EXTEND 279
+#define EXTENMARK 280
+#define KW_GOTO 281
+#define KW_JUMP 282
+#define KW_RETURN 283
+#define KW_BREAK 284
+#define KW_CONTINUE 285
+#define KW_REGEXTEN 286
+#define KW_HINT 287
+#define KW_FOR 288
+#define KW_WHILE 289
+#define KW_CASE 290
+#define KW_PATTERN 291
+#define KW_DEFAULT 292
+#define KW_CATCH 293
+#define KW_SWITCHES 294
+#define KW_ESWITCHES 295
+#define KW_INCLUDES 296
+#define word 297
 
 
 
@@ -230,7 +232,7 @@
 	struct pval *pval;	/* full objects */
 }
 /* Line 198 of yacc.c.  */
-#line 234 "ael.tab.c"
+#line 236 "ael.tab.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -275,7 +277,7 @@
 
 
 /* Line 221 of yacc.c.  */
-#line 279 "ael.tab.c"
+#line 281 "ael.tab.c"
 
 #ifdef short
 # undef short
@@ -488,22 +490,22 @@
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  14
+#define YYFINAL  17
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   314
+#define YYLAST   311
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  42
+#define YYNTOKENS  43
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  54
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  134
+#define YYNRULES  137
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  273
+#define YYNSTATES  276
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   296
+#define YYMAXUTOK   297
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -540,7 +542,7 @@
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41
+      35,    36,    37,    38,    39,    40,    41,    42
 };
 
 #if YYDEBUG
@@ -549,88 +551,89 @@
 static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     5,     7,    10,    13,    15,    17,    19,
-      21,    23,    25,    32,    34,    35,    44,    49,    50,    53,
-      56,    57,    63,    64,    66,    70,    73,    74,    77,    80,
-      82,    84,    86,    88,    90,    92,    95,    97,   102,   106,
-     111,   119,   128,   129,   132,   135,   141,   143,   151,   152,
-     157,   160,   163,   168,   170,   173,   175,   178,   182,   186,
-     188,   191,   195,   197,   200,   204,   210,   214,   216,   220,
-     224,   227,   228,   229,   230,   243,   247,   249,   253,   256,
-     259,   260,   266,   269,   272,   275,   279,   281,   284,   285,
-     287,   291,   295,   301,   307,   313,   319,   320,   323,   326,
-     331,   332,   338,   342,   343,   347,   351,   354,   356,   357,
-     359,   360,   364,   365,   368,   373,   377,   382,   383,   386,
-     388,   390,   396,   401,   406,   407,   411,   417,   420,   422,
-     426,   429,   433,   436,   441
+      21,    23,    25,    32,    34,    35,    37,    40,    43,    52,
+      57,    58,    61,    64,    65,    71,    72,    74,    78,    81,
+      82,    85,    88,    90,    92,    94,    96,    98,   100,   103,
+     105,   110,   114,   119,   127,   136,   137,   140,   143,   149,
+     151,   159,   160,   165,   168,   171,   176,   178,   181,   183,
+     186,   190,   194,   196,   199,   203,   205,   208,   212,   218,
+     222,   224,   228,   232,   235,   236,   237,   238,   251,   255,
+     257,   261,   264,   267,   268,   274,   277,   280,   283,   287,
+     289,   292,   293,   295,   299,   303,   309,   315,   321,   327,
+     328,   331,   334,   339,   340,   346,   350,   351,   355,   359,
+     362,   364,   365,   367,   368,   372,   373,   376,   381,   385,
+     390,   391,   394,   396,   398,   404,   409,   414,   415,   419,
+     425,   428,   430,   434,   437,   441,   444,   449
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      43,     0,    -1,    44,    -1,    45,    -1,    44,    45,    -1,
-      44,     1,    -1,    47,    -1,    49,    -1,    50,    -1,     8,
-      -1,    41,    -1,    36,    -1,    48,     3,    46,     4,    55,
-       5,    -1,    23,    -1,    -1,    15,    41,     6,    54,     7,
-       4,    88,     5,    -1,    16,     4,    51,     5,    -1,    -1,
-      52,    51,    -1,     1,    51,    -1,    -1,    41,     9,    53,
-      41,     8,    -1,    -1,    41,    -1,    54,    10,    41,    -1,
-      54,     1,    -1,    -1,    56,    55,    -1,     1,    55,    -1,
-      58,    -1,    95,    -1,    90,    -1,    91,    -1,    57,    -1,
-      52,    -1,    41,     1,    -1,     8,    -1,    17,    24,    41,
-       8,    -1,    41,    24,    70,    -1,    30,    41,    24,    70,
-      -1,    31,     6,    66,     7,    41,    24,    70,    -1,    30,
-      31,     6,    66,     7,    41,    24,    70,    -1,    -1,    70,
-      59,    -1,     1,    59,    -1,    67,    11,    67,    11,    67,
-      -1,    41,    -1,    60,    13,    67,    13,    67,    13,    67,
-      -1,    -1,     6,    63,    65,     7,    -1,    19,    62,    -1,
-      22,    62,    -1,    20,     6,    61,     7,    -1,    41,    -1,
-      41,    41,    -1,    41,    -1,    66,    41,    -1,    66,    11,
-      41,    -1,    66,    12,    41,    -1,    41,    -1,    41,    41,
-      -1,    41,    41,    41,    -1,    41,    -1,    41,    41,    -1,
-      68,    11,    41,    -1,    18,    62,     4,    86,     5,    -1,
-       4,    59,     5,    -1,    52,    -1,    25,    76,     8,    -1,
-      26,    78,     8,    -1,    41,    11,    -1,    -1,    -1,    -1,
-      32,     6,    71,    41,     8,    72,    41,     8,    73,    41,
-       7,    70,    -1,    33,    62,    70,    -1,    69,    -1,    12,
-      79,     8,    -1,    83,     8,    -1,    41,     8,    -1,    -1,
-      83,     9,    74,    41,     8,    -1,    28,     8,    -1,    27,
-       8,    -1,    29,     8,    -1,    64,    70,    75,    -1,     8,
-      -1,    21,    70,    -1,    -1,    68,    -1,    68,    13,    68,
-      -1,    68,    10,    68,    -1,    68,    13,    68,    13,    68,
-      -1,    68,    10,    68,    10,    68,    -1,    36,    13,    68,
-      13,    68,    -1,    36,    10,    68,    10,    68,    -1,    -1,
-      10,    41,    -1,    68,    77,    -1,    68,    77,    14,    46,
-      -1,    -1,    41,     6,    80,    85,     7,    -1,    41,     6,
-       7,    -1,    -1,    41,     6,    82,    -1,    81,    85,     7,
-      -1,    81,     7,    -1,    41,    -1,    -1,    65,    -1,    -1,
-      85,    10,    84,    -1,    -1,    87,    86,    -1,    34,    41,
-      11,    59,    -1,    36,    11,    59,    -1,    35,    41,    11,
-      59,    -1,    -1,    89,    88,    -1,    70,    -1,    95,    -1,
-      37,    41,     4,    59,     5,    -1,    38,     4,    92,     5,
-      -1,    39,     4,    92,     5,    -1,    -1,    41,     8,    92,
-      -1,    41,    14,    41,     8,    92,    -1,     1,    92,    -1,
-      46,    -1,    46,    13,    61,    -1,    93,     8,    -1,    94,
-      93,     8,    -1,    94,     1,    -1,    40,     4,    94,     5,
-      -1,    40,     4,     5,    -1
+      44,     0,    -1,    45,    -1,    46,    -1,    45,    46,    -1,
+      45,     1,    -1,    48,    -1,    50,    -1,    51,    -1,     8,
+      -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,
+      -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,
+      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,
+       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,
+      -1,    20,     6,    62,     7,    -1,    42,    -1,    42,    42,
+      -1,    42,    -1,    67,    42,    -1,    67,    11,    42,    -1,
+      67,    12,    42,    -1,    42,    -1,    42,    42,    -1,    42,
+      42,    42,    -1,    42,    -1,    42,    42,    -1,    69,    11,
+      42,    -1,    18,    63,     4,    87,     5,    -1,     4,    60,
+       5,    -1,    53,    -1,    26,    77,     8,    -1,    27,    79,
+       8,    -1,    42,    11,    -1,    -1,    -1,    -1,    33,     6,
+      72,    42,     8,    73,    42,     8,    74,    42,     7,    71,
+      -1,    34,    63,    71,    -1,    70,    -1,    12,    80,     8,
+      -1,    84,     8,    -1,    42,     8,    -1,    -1,    84,     9,
+      75,    42,     8,    -1,    29,     8,    -1,    28,     8,    -1,
+      30,     8,    -1,    65,    71,    76,    -1,     8,    -1,    21,
+      71,    -1,    -1,    69,    -1,    69,    13,    69,    -1,    69,
+      10,    69,    -1,    69,    13,    69,    13,    69,    -1,    69,
+      10,    69,    10,    69,    -1,    37,    13,    69,    13,    69,
+      -1,    37,    10,    69,    10,    69,    -1,    -1,    10,    42,
+      -1,    69,    78,    -1,    69,    78,    14,    47,    -1,    -1,
+      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,
+      -1,    37,    11,    60,    -1,    36,    42,    11,    60,    -1,
+      -1,    90,    89,    -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,
+      47,    13,    62,    -1,    94,     8,    -1,    95,    94,     8,
+      -1,    95,     1,    -1,    41,     4,    95,     5,    -1,    41,
+       4,     5,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
        0,   185,   185,   188,   189,   190,   193,   194,   195,   196,
-     199,   200,   203,   218,   219,   222,   228,   234,   235,   236,
-     239,   239,   246,   247,   248,   249,   252,   253,   254,   257,
-     258,   259,   260,   261,   262,   263,   264,   267,   272,   276,
-     281,   286,   296,   297,   298,   304,   309,   313,   321,   321,
-     325,   328,   331,   342,   343,   350,   351,   355,   359,   365,
-     366,   371,   379,   380,   384,   390,   399,   402,   403,   406,
-     409,   412,   413,   414,   412,   420,   424,   425,   426,   427,
-     430,   430,   463,   464,   465,   466,   470,   473,   474,   477,
-     478,   481,   484,   488,   492,   496,   502,   503,   507,   510,
-     516,   516,   521,   529,   529,   540,   547,   550,   551,   554,
-     555,   558,   561,   562,   565,   569,   573,   579,   580,   583,
-     584,   585,   591,   596,   601,   602,   603,   605,   608,   609,
-     616,   617,   618,   621,   624
+     199,   200,   203,   212,   213,   214,   215,   216,   219,   225,
+     231,   232,   233,   236,   236,   243,   244,   245,   246,   249,
+     250,   251,   254,   255,   256,   257,   258,   259,   260,   261,
+     264,   269,   273,   278,   283,   293,   294,   295,   301,   306,
+     310,   318,   318,   322,   325,   328,   339,   340,   347,   348,
+     352,   356,   362,   363,   368,   376,   377,   381,   387,   396,
+     399,   400,   403,   406,   409,   410,   411,   409,   417,   421,
+     422,   423,   424,   427,   427,   460,   461,   462,   463,   467,
+     470,   471,   474,   475,   478,   481,   485,   489,   493,   499,
+     500,   504,   507,   513,   513,   518,   526,   526,   537,   544,
+     547,   548,   551,   552,   555,   558,   559,   562,   566,   570,
+     576,   577,   580,   581,   582,   588,   593,   598,   599,   600,
+     602,   605,   606,   613,   614,   615,   618,   621
 };
 #endif
 
@@ -642,20 +645,21 @@
   "$end", "error", "$undefined", "KW_CONTEXT", "LC", "RC", "LP", "RP",
   "SEMI", "EQ", "COMMA", "COLON", "AMPER", "BAR", "AT", "KW_MACRO",
   "KW_GLOBALS", "KW_IGNOREPAT", "KW_SWITCH", "KW_IF", "KW_IFTIME",
-  "KW_ELSE", "KW_RANDOM", "KW_ABSTRACT", "EXTENMARK", "KW_GOTO", "KW_JUMP",
-  "KW_RETURN", "KW_BREAK", "KW_CONTINUE", "KW_REGEXTEN", "KW_HINT",
-  "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN", "KW_DEFAULT", "KW_CATCH",
-  "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES", "word", "$accept", "file",
-  "objects", "object", "context_name", "context", "opt_abstract", "macro",
-  "globals", "global_statements", "assignment", "@1", "arglist",
-  "elements", "element", "ignorepat", "extension", "statements",
-  "timerange", "timespec", "test_expr", "@2", "if_like_head", "word_list",
-  "hint_word", "word3_list", "goto_word", "switch_statement", "statement",
-  "@3", "@4", "@5", "@6", "opt_else", "target", "opt_pri", "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", "included_entry", "includeslist", "includes", 0
+  "KW_ELSE", "KW_RANDOM", "KW_ABSTRACT", "KW_EXTEND", "EXTENMARK",
+  "KW_GOTO", "KW_JUMP", "KW_RETURN", "KW_BREAK", "KW_CONTINUE",
+  "KW_REGEXTEN", "KW_HINT", "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN",
+  "KW_DEFAULT", "KW_CATCH", "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES",
+  "word", "$accept", "file", "objects", "object", "context_name",
+  "context", "opt_abstract", "macro", "globals", "global_statements",
+  "assignment", "@1", "arglist", "elements", "element", "ignorepat",
+  "extension", "statements", "timerange", "timespec", "test_expr", "@2",
+  "if_like_head", "word_list", "hint_word", "word3_list", "goto_word",
+  "switch_statement", "statement", "@3", "@4", "@5", "@6", "opt_else",
+  "target", "opt_pri", "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",
+  "included_entry", "includeslist", "includes", 0
 };
 #endif
 
@@ -668,46 +672,46 @@
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296
+     295,   296,   297
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    42,    43,    44,    44,    44,    45,    45,    45,    45,
-      46,    46,    47,    48,    48,    49,    50,    51,    51,    51,
-      53,    52,    54,    54,    54,    54,    55,    55,    55,    56,
-      56,    56,    56,    56,    56,    56,    56,    57,    58,    58,
-      58,    58,    59,    59,    59,    60,    60,    61,    63,    62,
-      64,    64,    64,    65,    65,    66,    66,    66,    66,    67,
-      67,    67,    68,    68,    68,    69,    70,    70,    70,    70,
-      70,    71,    72,    73,    70,    70,    70,    70,    70,    70,
-      74,    70,    70,    70,    70,    70,    70,    75,    75,    76,
-      76,    76,    76,    76,    76,    76,    77,    77,    78,    78,
-      80,    79,    79,    82,    81,    83,    83,    84,    84,    85,
-      85,    85,    86,    86,    87,    87,    87,    88,    88,    89,
-      89,    89,    90,    91,    92,    92,    92,    92,    93,    93,
-      94,    94,    94,    95,    95
+       0,    43,    44,    45,    45,    45,    46,    46,    46,    46,
+      47,    47,    48,    49,    49,    49,    49,    49,    50,    51,
+      52,    52,    52,    54,    53,    55,    55,    55,    55,    56,
+      56,    56,    57,    57,    57,    57,    57,    57,    57,    57,
+      58,    59,    59,    59,    59,    60,    60,    60,    61,    61,
+      62,    64,    63,    65,    65,    65,    66,    66,    67,    67,
+      67,    67,    68,    68,    68,    69,    69,    69,    70,    71,
+      71,    71,    71,    71,    72,    73,    74,    71,    71,    71,
+      71,    71,    71,    75,    71,    71,    71,    71,    71,    71,
+      76,    76,    77,    77,    77,    77,    77,    77,    77,    78,
+      78,    79,    79,    81,    80,    80,    83,    82,    84,    84,
+      85,    85,    86,    86,    86,    87,    87,    88,    88,    88,
+      89,    89,    90,    90,    90,    91,    92,    93,    93,    93,
+      93,    94,    94,    95,    95,    95,    96,    96
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     1,     2,     2,     1,     1,     1,     1,
-       1,     1,     6,     1,     0,     8,     4,     0,     2,     2,
-       0,     5,     0,     1,     3,     2,     0,     2,     2,     1,
-       1,     1,     1,     1,     1,     2,     1,     4,     3,     4,
-       7,     8,     0,     2,     2,     5,     1,     7,     0,     4,
-       2,     2,     4,     1,     2,     1,     2,     3,     3,     1,
-       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,     0,     2,     2,     4,
-       0,     5,     3,     0,     3,     3,     2,     1,     0,     1,
-       0,     3,     0,     2,     4,     3,     4,     0,     2,     1,
-       1,     5,     4,     4,     0,     3,     5,     2,     1,     3,
-       2,     3,     2,     4,     3
+       1,     1,     6,     1,     0,     1,     2,     2,     8,     4,
+       0,     2,     2,     0,     5,     0,     1,     3,     2,     0,
+       2,     2,     1,     1,     1,     1,     1,     1,     2,     1,
+       4,     3,     4,     7,     8,     0,     2,     2,     5,     1,
+       7,     0,     4,     2,     2,     4,     1,     2,     1,     2,
+       3,     3,     1,     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,     0,
+       2,     2,     4,     0,     5,     3,     0,     3,     3,     2,
+       1,     0,     1,     0,     3,     0,     2,     4,     3,     4,
+       0,     2,     1,     1,     5,     4,     4,     0,     3,     5,
+       2,     1,     3,     2,     3,     2,     4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -715,202 +719,202 @@
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-      14,     9,     0,     0,    13,     0,     0,     3,     6,     0,
-       7,     8,     0,     0,     1,     5,     4,     0,    22,     0,
-       0,     0,     0,    11,    10,     0,    23,     0,    19,    20,
-      16,    18,     0,    25,     0,     0,     0,     0,    36,     0,
-       0,     0,     0,     0,     0,     0,    34,     0,     0,    33,
-      29,    31,    32,    30,   117,    24,     0,    28,     0,     0,
-       0,     0,     0,     0,     0,    35,     0,    12,    27,     0,
-      86,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    67,     0,    76,   119,   110,
-       0,     0,   117,   120,    21,     0,     0,     0,    55,     0,
-       0,     0,     0,     0,   134,   128,     0,     0,    38,     0,
-       0,     0,     0,     0,    48,     0,    50,     0,    51,     0,
-      62,    89,     0,    96,     0,    83,    82,    84,    71,     0,
-       0,   103,    79,    70,    88,   106,    53,   109,     0,    78,
-      80,    15,   118,    37,     0,    39,     0,     0,     0,    56,
-     127,     0,     0,   122,   123,     0,   130,   132,   133,     0,
-      44,    66,    43,   100,    77,     0,   112,    46,     0,     0,
-       0,     0,     0,    63,     0,     0,     0,    68,     0,    98,
-      69,     0,    75,     0,   104,     0,    85,    54,   105,   108,
-       0,     0,     0,    57,    58,   125,     0,   129,   131,   102,
-     110,     0,     0,     0,     0,     0,   112,    60,     0,    52,
-       0,     0,     0,    91,    64,    90,    97,     0,     0,     0,
-      87,   107,   111,     0,     0,     0,     0,     0,    49,     0,
-       0,     0,    65,   113,    61,    59,     0,     0,     0,     0,
-       0,     0,    99,    72,   121,    81,     0,    40,   126,   101,
-       0,     0,   115,     0,     0,    95,    94,    93,    92,     0,
-      41,   114,   116,     0,    45,     0,     0,    73,    47,     0,
-       0,     0,    74
+      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,     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,
+      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,     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
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     5,     6,     7,   105,     8,     9,    10,    11,    21,
-      85,    36,    27,    47,    48,    49,    50,   110,   168,   169,
-     115,   165,    86,   137,    99,   170,   121,    87,   111,   181,
-     259,   269,   190,   186,   122,   179,   124,   113,   200,    89,
-     184,    90,   222,   138,   205,   206,    91,    92,    51,    52,
-     102,   106,   107,    53
+      -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
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -203
+#define YYPACT_NINF -206
 static const yytype_int16 yypact[] =
 {
-      92,  -203,    -1,    66,  -203,    85,   220,  -203,  -203,    88,
-    -203,  -203,   142,    15,  -203,  -203,  -203,   -26,   110,    15,
-     144,   155,    15,  -203,  -203,   151,  -203,   131,  -203,  -203,
-    -203,  -203,     6,  -203,   157,   139,   143,     6,  -203,   162,
-      53,   182,   196,   204,   207,    41,  -203,   193,     6,  -203,
-    -203,  -203,  -203,  -203,   150,  -203,   206,  -203,   171,   209,
-     195,   181,    20,    20,    13,  -203,   177,  -203,  -203,   101,
-    -203,   184,   218,   218,   221,   218,    57,   188,   222,   224,
-     225,   228,   218,   197,   141,  -203,   177,  -203,  -203,    28,
-      95,   232,   150,  -203,  -203,   231,   181,   177,  -203,    19,
-      20,    14,   235,   236,  -203,   233,   237,    12,  -203,    54,
-     239,    54,   241,   240,  -203,   245,  -203,   210,  -203,    58,
-     211,   146,   242,   125,   246,  -203,  -203,  -203,  -203,   177,
-     249,  -203,  -203,  -203,   234,  -203,   215,  -203,    17,  -203,
-    -203,  -203,  -203,  -203,    22,  -203,   216,   217,   219,  -203,
-    -203,    20,   223,  -203,  -203,   210,  -203,  -203,  -203,   251,
-    -203,  -203,  -203,   254,  -203,   226,    82,    -2,   250,   255,
-     257,   188,   188,  -203,   188,   229,   188,  -203,   230,   252,
-    -203,   238,  -203,   101,  -203,   177,  -203,  -203,  -203,   243,
-     244,   247,   248,  -203,  -203,  -203,   261,  -203,  -203,  -203,
-     226,   258,   253,   256,   262,   269,    82,   259,   260,  -203,
-     260,   163,    99,   183,  -203,   111,  -203,   -26,   267,   271,
-    -203,  -203,  -203,   270,   263,   177,    20,   104,  -203,   266,
-     272,    54,  -203,  -203,  -203,   264,   268,   275,   188,   188,
-     188,   188,  -203,  -203,  -203,  -203,   177,  -203,  -203,  -203,
-      54,    54,  -203,   260,   260,   278,   278,   278,   278,   265,
-    -203,  -203,  -203,   277,  -203,   274,   260,  -203,  -203,   273,
-     284,   177,  -203
+      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
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -203,  -203,  -203,   286,   -16,  -203,  -203,  -203,  -203,   121,
-     194,  -203,  -203,    30,  -203,  -203,  -203,  -106,  -203,   138,
-      64,  -203,  -203,   115,   199,  -202,   -75,  -203,   -54,  -203,
-    -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,
-    -203,  -203,  -203,    96,    93,  -203,   212,  -203,  -203,  -203,
-     -59,   191,  -203,   -35
+    -206,  -206,  -206,   291,   -19,  -206,  -206,  -206,  -206,   113,
+      32,  -206,  -206,   -18,  -206,  -206,  -206,  -109,  -206,   143,

[... 3142 lines stripped ...]



More information about the asterisk-commits mailing list