aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/ael_structs.h3
-rw-r--r--pbx/ael/ael-test/ref.ael-test1619
-rw-r--r--pbx/ael/ael-test/ref.ael-test1912
-rw-r--r--pbx/ael/ael.flex1
-rw-r--r--pbx/ael/ael.tab.c1333
-rw-r--r--pbx/ael/ael.tab.h76
-rw-r--r--pbx/ael/ael.y21
-rw-r--r--pbx/ael/ael_lex.c693
-rw-r--r--pbx/pbx_ael.c6
-rw-r--r--utils/ael_main.c16
10 files changed, 1108 insertions, 1072 deletions
diff --git a/include/asterisk/ael_structs.h b/include/asterisk/ael_structs.h
index 9b5581d6c..8b428d33f 100644
--- a/include/asterisk/ael_structs.h
+++ b/include/asterisk/ael_structs.h
@@ -97,10 +97,11 @@ struct pval
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
diff --git a/pbx/ael/ael-test/ref.ael-test16 b/pbx/ael/ael-test/ref.ael-test16
index 323a726c4..3113b0d6c 100644
--- a/pbx/ael/ael-test/ref.ael-test16
+++ b/pbx/ael/ael-test/ref.ael-test16
@@ -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
diff --git a/pbx/ael/ael-test/ref.ael-test19 b/pbx/ael/ael-test/ref.ael-test19
index f193751aa..c67dbe7c1 100644
--- a/pbx/ael/ael-test/ref.ael-test19
+++ b/pbx/ael/ael-test/ref.ael-test19
@@ -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
diff --git a/pbx/ael/ael.flex b/pbx/ael/ael.flex
index 80dbb53a2..5d2649689 100644
--- a/pbx/ael/ael.flex
+++ b/pbx/ael/ael.flex
@@ -195,6 +195,7 @@ NOSEMIC ([^;()\{\}\[\]]|\\[;()\[\]\{\}])*
\/\/[^\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;}
diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c
index 6b94b6ec1..78986ec09 100644
--- a/pbx/ael/ael.tab.c
+++ b/pbx/ael/ael.tab.c
@@ -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 @@ typedef union YYSTYPE
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 @@ static pval *update_last(pval *, YYLTYPE *);
/* Line 221 of yacc.c. */
-#line 279 "ael.tab.c"
+#line 281 "ael.tab.c"
#ifdef short
# undef short
@@ -488,22 +490,22 @@ union yyalloc
#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 @@ static const yytype_uint8 yytranslate[] =
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_uint8 yytranslate[] =
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 @@ static const char *const yytname[] =
"$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 @@ static const yytype_uint16 yytoknum[] =
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 @@ static const yytype_uint8 yyr2[] =
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,
+ -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
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -125
+#define YYTABLE_NINF -128
static const yytype_int16 yytable[] =
{
- 88, 25, 123, 160, 103, 162, 236, 37, 237, -59,
- 23, -26, 108, 157, 38, 24, 19, 158, 104, 93,
- -17, 100, 151, 39, 188, -124, 146, 189, 152, 191,
- 147, 148, 134, 147, 148, 135, 40, 41, 88, 207,
- 12, 150, 65, 145, 42, 43, 44, 45, 23, 23,
- 29, 263, 264, 24, 24, 109, 20, 93, 69, -42,
- 149, 101, 70, 149, 268, 66, 71, 57, 171, 136,
- 13, 172, 72, 73, 74, 182, 75, 219, 68, 76,
- 77, 78, 79, 80, 59, 14, 81, 82, -42, -42,
- -42, 17, 195, 119, 60, 84, 211, 212, 120, 213,
- 1, 215, 109, 139, 140, 69, -42, 2, 3, 70,
- 175, 249, 239, 71, 189, 4, 202, 203, 204, 72,
- 73, 74, 175, 75, 241, 252, 76, 77, 78, 79,
- 80, 220, 33, 81, 82, 178, 175, 116, 34, 118,
- 28, 35, 84, 31, 261, 262, 129, 131, 18, 132,
- 29, 26, 133, 29, 69, 32, 174, 175, 70, 176,
- 30, 54, 71, 255, 256, 257, 258, 248, 72, 73,
- 74, 247, 75, 238, 175, 76, 77, 78, 79, 80,
- 55, 69, 81, 82, 56, 70, 58, 83, 61, 71,
- 44, 84, 260, 240, 175, 72, 73, 74, 67, 75,
- 62, 242, 76, 77, 78, 79, 80, 22, 63, 81,
- 82, 64, 95, 22, 94, 96, 22, 272, 84, 97,
- -2, 15, 98, -14, 114, 112, 46, 117, 1, 120,
- 125, 46, 126, 127, 128, 2, 3, 141, 130, 143,
- 153, 154, 46, 4, 161, 156, 155, 163, 164, 166,
- 177, 167, 173, 183, 180, 185, 187, 192, 193, 198,
- 194, 199, 209, 208, 196, 228, 217, 136, 210, 226,
- 214, 216, 225, 231, 232, 243, 244, 250, 245, 218,
- 201, 253, 267, 251, 221, 223, 254, 246, 224, 175,
- 266, 271, 16, 197, 229, 144, 227, 230, 159, 233,
- 234, 235, 0, 0, 142, 207, 265, 0, 0, 0,
- 0, 0, 0, 0, 270
+ 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
};
static const yytype_int16 yycheck[] =
{
- 54, 17, 77, 109, 63, 111, 208, 1, 210, 11,
- 36, 5, 66, 1, 8, 41, 1, 5, 5, 54,
- 5, 1, 8, 17, 7, 5, 7, 10, 14, 7,
- 11, 12, 86, 11, 12, 7, 30, 31, 92, 41,
- 41, 100, 1, 97, 38, 39, 40, 41, 36, 36,
- 9, 253, 254, 41, 41, 1, 41, 92, 4, 5,
- 41, 41, 8, 41, 266, 24, 12, 37, 10, 41,
- 4, 13, 18, 19, 20, 129, 22, 183, 48, 25,
- 26, 27, 28, 29, 31, 0, 32, 33, 34, 35,
- 36, 3, 151, 36, 41, 41, 171, 172, 41, 174,
- 8, 176, 1, 8, 9, 4, 5, 15, 16, 8,
- 11, 7, 13, 12, 10, 23, 34, 35, 36, 18,
- 19, 20, 11, 22, 13, 231, 25, 26, 27, 28,
- 29, 185, 1, 32, 33, 10, 11, 73, 7, 75,
- 19, 10, 41, 22, 250, 251, 82, 6, 6, 8,
- 9, 41, 11, 9, 4, 4, 10, 11, 8, 13,
- 5, 4, 12, 238, 239, 240, 241, 226, 18, 19,
- 20, 225, 22, 10, 11, 25, 26, 27, 28, 29,
- 41, 4, 32, 33, 41, 8, 24, 37, 6, 12,
- 40, 41, 246, 10, 11, 18, 19, 20, 5, 22,
- 4, 217, 25, 26, 27, 28, 29, 13, 4, 32,
- 33, 4, 41, 19, 8, 6, 22, 271, 41, 24,
- 0, 1, 41, 3, 6, 41, 32, 6, 8, 41,
- 8, 37, 8, 8, 6, 15, 16, 5, 41, 8,
- 5, 5, 48, 23, 5, 8, 13, 6, 8, 4,
- 8, 41, 41, 4, 8, 21, 41, 41, 41, 8,
- 41, 7, 7, 13, 41, 7, 14, 41, 11, 8,
- 41, 41, 24, 11, 5, 8, 5, 11, 8, 41,
- 165, 13, 8, 11, 41, 41, 11, 24, 41, 11,
- 13, 7, 6, 155, 41, 96, 200, 41, 107, 206,
- 41, 41, -1, -1, 92, 41, 41, -1, -1, -1,
- -1, -1, -1, -1, 41
+ 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
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 8, 15, 16, 23, 43, 44, 45, 47, 48,
- 49, 50, 41, 4, 0, 1, 45, 3, 6, 1,
- 41, 51, 52, 36, 41, 46, 41, 54, 51, 9,
- 5, 51, 4, 1, 7, 10, 53, 1, 8, 17,
- 30, 31, 38, 39, 40, 41, 52, 55, 56, 57,
- 58, 90, 91, 95, 4, 41, 41, 55, 24, 31,
- 41, 6, 4, 4, 4, 1, 24, 5, 55, 4,
- 8, 12, 18, 19, 20, 22, 25, 26, 27, 28,
- 29, 32, 33, 37, 41, 52, 64, 69, 70, 81,
- 83, 88, 89, 95, 8, 41, 6, 24, 41, 66,
- 1, 41, 92, 92, 5, 46, 93, 94, 70, 1,
- 59, 70, 41, 79, 6, 62, 62, 6, 62, 36,
- 41, 68, 76, 68, 78, 8, 8, 8, 6, 62,
- 41, 6, 8, 11, 70, 7, 41, 65, 85, 8,
- 9, 5, 88, 8, 66, 70, 7, 11, 12, 41,
- 92, 8, 14, 5, 5, 13, 8, 1, 5, 93,
- 59, 5, 59, 6, 8, 63, 4, 41, 60, 61,
- 67, 10, 13, 41, 10, 11, 13, 8, 10, 77,
- 8, 71, 70, 4, 82, 21, 75, 41, 7, 10,
- 74, 7, 41, 41, 41, 92, 41, 61, 8, 7,
- 80, 65, 34, 35, 36, 86, 87, 41, 13, 7,
- 11, 68, 68, 68, 41, 68, 41, 14, 41, 59,
- 70, 41, 84, 41, 41, 24, 8, 85, 7, 41,
- 41, 11, 5, 86, 41, 41, 67, 67, 10, 13,
- 10, 13, 46, 8, 5, 8, 24, 70, 92, 7,
- 11, 11, 59, 13, 11, 68, 68, 68, 68, 72,
- 70, 59, 59, 67, 67, 41, 13, 8, 67, 73,
- 41, 7, 70
+ 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,
+ 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,
+ 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,
+ 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
};
#define yyerrok (yyerrstatus = 0)
@@ -1432,322 +1436,322 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
switch (yytype)
{
- case 41: /* "word" */
+ case 42: /* "word" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1439 "ael.tab.c"
+#line 1443 "ael.tab.c"
break;
- case 44: /* "objects" */
+ case 45: /* "objects" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1447 "ael.tab.c"
+#line 1451 "ael.tab.c"
break;
- case 45: /* "object" */
+ case 46: /* "object" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1455 "ael.tab.c"
+#line 1459 "ael.tab.c"
break;
- case 46: /* "context_name" */
+ case 47: /* "context_name" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1460 "ael.tab.c"
+#line 1464 "ael.tab.c"
break;
- case 47: /* "context" */
+ case 48: /* "context" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1468 "ael.tab.c"
+#line 1472 "ael.tab.c"
break;
- case 49: /* "macro" */
+ case 50: /* "macro" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1476 "ael.tab.c"
+#line 1480 "ael.tab.c"
break;
- case 50: /* "globals" */
+ case 51: /* "globals" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1484 "ael.tab.c"
+#line 1488 "ael.tab.c"
break;
- case 51: /* "global_statements" */
+ case 52: /* "global_statements" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1492 "ael.tab.c"
+#line 1496 "ael.tab.c"
break;
- case 52: /* "assignment" */
+ case 53: /* "assignment" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1500 "ael.tab.c"
+#line 1504 "ael.tab.c"
break;
- case 54: /* "arglist" */
+ case 55: /* "arglist" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1508 "ael.tab.c"
+#line 1512 "ael.tab.c"
break;
- case 55: /* "elements" */
+ case 56: /* "elements" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1516 "ael.tab.c"
+#line 1520 "ael.tab.c"
break;
- case 56: /* "element" */
+ case 57: /* "element" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1524 "ael.tab.c"
+#line 1528 "ael.tab.c"
break;
- case 57: /* "ignorepat" */
+ case 58: /* "ignorepat" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1532 "ael.tab.c"
+#line 1536 "ael.tab.c"
break;
- case 58: /* "extension" */
+ case 59: /* "extension" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1540 "ael.tab.c"
+#line 1544 "ael.tab.c"
break;
- case 59: /* "statements" */
+ case 60: /* "statements" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1548 "ael.tab.c"
+#line 1552 "ael.tab.c"
break;
- case 60: /* "timerange" */
+ case 61: /* "timerange" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1553 "ael.tab.c"
+#line 1557 "ael.tab.c"
break;
- case 61: /* "timespec" */
+ case 62: /* "timespec" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1561 "ael.tab.c"
+#line 1565 "ael.tab.c"
break;
- case 62: /* "test_expr" */
+ case 63: /* "test_expr" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1566 "ael.tab.c"
+#line 1570 "ael.tab.c"
break;
- case 64: /* "if_like_head" */
+ case 65: /* "if_like_head" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1574 "ael.tab.c"
+#line 1578 "ael.tab.c"
break;
- case 65: /* "word_list" */
+ case 66: /* "word_list" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1579 "ael.tab.c"
+#line 1583 "ael.tab.c"
break;
- case 67: /* "word3_list" */
+ case 68: /* "word3_list" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1584 "ael.tab.c"
+#line 1588 "ael.tab.c"
break;
- case 68: /* "goto_word" */
+ case 69: /* "goto_word" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1589 "ael.tab.c"
+#line 1593 "ael.tab.c"
break;
- case 69: /* "switch_statement" */
+ case 70: /* "switch_statement" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1597 "ael.tab.c"
+#line 1601 "ael.tab.c"
break;
- case 70: /* "statement" */
+ case 71: /* "statement" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1605 "ael.tab.c"
+#line 1609 "ael.tab.c"
break;
- case 75: /* "opt_else" */
+ case 76: /* "opt_else" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1613 "ael.tab.c"
+#line 1617 "ael.tab.c"
break;
- case 76: /* "target" */
+ case 77: /* "target" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1621 "ael.tab.c"
+#line 1625 "ael.tab.c"
break;
- case 77: /* "opt_pri" */
+ case 78: /* "opt_pri" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1626 "ael.tab.c"
+#line 1630 "ael.tab.c"
break;
- case 78: /* "jumptarget" */
+ case 79: /* "jumptarget" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1634 "ael.tab.c"
+#line 1638 "ael.tab.c"
break;
- case 79: /* "macro_call" */
+ case 80: /* "macro_call" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1642 "ael.tab.c"
+#line 1646 "ael.tab.c"
break;
- case 81: /* "application_call_head" */
+ case 82: /* "application_call_head" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1650 "ael.tab.c"
+#line 1654 "ael.tab.c"
break;
- case 83: /* "application_call" */
+ case 84: /* "application_call" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1658 "ael.tab.c"
+#line 1662 "ael.tab.c"
break;
- case 84: /* "opt_word" */
+ case 85: /* "opt_word" */
#line 177 "ael.y"
{ free((yyvaluep->str));};
-#line 1663 "ael.tab.c"
+#line 1667 "ael.tab.c"
break;
- case 85: /* "eval_arglist" */
+ case 86: /* "eval_arglist" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1671 "ael.tab.c"
+#line 1675 "ael.tab.c"
break;
- case 86: /* "case_statements" */
+ case 87: /* "case_statements" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1679 "ael.tab.c"
+#line 1683 "ael.tab.c"
break;
- case 87: /* "case_statement" */
+ case 88: /* "case_statement" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1687 "ael.tab.c"
+#line 1691 "ael.tab.c"
break;
- case 88: /* "macro_statements" */
+ case 89: /* "macro_statements" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1695 "ael.tab.c"
+#line 1699 "ael.tab.c"
break;
- case 89: /* "macro_statement" */
+ case 90: /* "macro_statement" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1703 "ael.tab.c"
+#line 1707 "ael.tab.c"
break;
- case 90: /* "switches" */
+ case 91: /* "switches" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1711 "ael.tab.c"
+#line 1715 "ael.tab.c"
break;
- case 91: /* "eswitches" */
+ case 92: /* "eswitches" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1719 "ael.tab.c"
+#line 1723 "ael.tab.c"
break;
- case 92: /* "switchlist" */
+ case 93: /* "switchlist" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1727 "ael.tab.c"
+#line 1731 "ael.tab.c"
break;
- case 93: /* "included_entry" */
+ case 94: /* "included_entry" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1735 "ael.tab.c"
+#line 1739 "ael.tab.c"
break;
- case 94: /* "includeslist" */
+ case 95: /* "includeslist" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1743 "ael.tab.c"
+#line 1747 "ael.tab.c"
break;
- case 95: /* "includes" */
+ case 96: /* "includes" */
#line 164 "ael.y"
{
destroy_pval((yyvaluep->pval));
prev_word=0;
};
-#line 1751 "ael.tab.c"
+#line 1755 "ael.tab.c"
break;
default:
@@ -2122,165 +2126,174 @@ yyreduce:
case 12:
#line 203 "ael.y"
{
- if (!(yyvsp[(5) - (6)].pval)) {
- ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Warning! The empty context %s will be IGNORED!\n",
- my_file, (yylsp[(4) - (6)]).first_line, (yylsp[(4) - (6)]).first_column, (yylsp[(4) - (6)]).last_column, (yyvsp[(3) - (6)].str) );
- (yyval.pval) = 0;
- free((yyvsp[(3) - (6)].str));
- } else {
- (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
- (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
- (yyval.pval)->u2.statements = (yyvsp[(5) - (6)].pval);
- set_dads((yyval.pval),(yyvsp[(5) - (6)].pval));
- (yyval.pval)->u3.abstract = (yyvsp[(1) - (6)].intval);} ;}
+ (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
+ (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
+ (yyval.pval)->u2.statements = (yyvsp[(5) - (6)].pval);
+ set_dads((yyval.pval),(yyvsp[(5) - (6)].pval));
+ (yyval.pval)->u3.abstract = (yyvsp[(1) - (6)].intval);;}
break;
case 13:
-#line 218 "ael.y"
+#line 212 "ael.y"
{ (yyval.intval) = 1; ;}
break;
case 14:
-#line 219 "ael.y"
+#line 213 "ael.y"
{ (yyval.intval) = 0; ;}
break;
case 15:
-#line 222 "ael.y"
+#line 214 "ael.y"
+ { (yyval.intval) = 2; ;}
+ break;
+
+ case 16:
+#line 215 "ael.y"
+ { (yyval.intval)=3; ;}
+ break;
+
+ case 17:
+#line 216 "ael.y"
+ { (yyval.intval)=3; ;}
+ break;
+
+ case 18:
+#line 219 "ael.y"
{
(yyval.pval) = npval2(PV_MACRO, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
(yyval.pval)->u1.str = (yyvsp[(2) - (8)].str); (yyval.pval)->u2.arglist = (yyvsp[(4) - (8)].pval); (yyval.pval)->u3.macro_statements = (yyvsp[(7) - (8)].pval);
set_dads((yyval.pval),(yyvsp[(7) - (8)].pval));;}
break;
- case 16:
-#line 228 "ael.y"
+ case 19:
+#line 225 "ael.y"
{
(yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
(yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);
set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
break;
- case 17:
-#line 234 "ael.y"
+ case 20:
+#line 231 "ael.y"
{ (yyval.pval) = NULL; ;}
break;
- case 18:
-#line 235 "ael.y"
+ case 21:
+#line 232 "ael.y"
{(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
break;
- case 19:
-#line 236 "ael.y"
+ case 22:
+#line 233 "ael.y"
{(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
- case 20:
-#line 239 "ael.y"
+ case 23:
+#line 236 "ael.y"
{ reset_semicount(parseio->scanner); ;}
break;
- case 21:
-#line 239 "ael.y"
+ case 24:
+#line 236 "ael.y"
{
(yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
(yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
(yyval.pval)->u2.val = (yyvsp[(4) - (5)].str); ;}
break;
- case 22:
-#line 246 "ael.y"
+ case 25:
+#line 243 "ael.y"
{ (yyval.pval) = NULL; ;}
break;
- case 23:
-#line 247 "ael.y"
+ case 26:
+#line 244 "ael.y"
{ (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
break;
- case 24:
-#line 248 "ael.y"
+ case 27:
+#line 245 "ael.y"
{ (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
break;
- case 25:
-#line 249 "ael.y"
+ case 28:
+#line 246 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
break;
- case 26:
-#line 252 "ael.y"
+ case 29:
+#line 249 "ael.y"
{(yyval.pval)=0;;}
break;
- case 27:
-#line 253 "ael.y"
+ case 30:
+#line 250 "ael.y"
{ (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
break;
- case 28:
-#line 254 "ael.y"
+ case 31:
+#line 251 "ael.y"
{ (yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
- case 29:
-#line 257 "ael.y"
+ case 32:
+#line 254 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 30:
-#line 258 "ael.y"
+ case 33:
+#line 255 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 31:
-#line 259 "ael.y"
+ case 34:
+#line 256 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 32:
-#line 260 "ael.y"
+ case 35:
+#line 257 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 33:
-#line 261 "ael.y"
+ case 36:
+#line 258 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 34:
-#line 262 "ael.y"
+ case 37:
+#line 259 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 35:
-#line 263 "ael.y"
+ case 38:
+#line 260 "ael.y"
{free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;}
break;
- case 36:
-#line 264 "ael.y"
+ case 39:
+#line 261 "ael.y"
{(yyval.pval)=0;/* allow older docs to be read */;}
break;
- case 37:
-#line 267 "ael.y"
+ case 40:
+#line 264 "ael.y"
{
(yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
(yyval.pval)->u1.str = (yyvsp[(3) - (4)].str);;}
break;
- case 38:
-#line 272 "ael.y"
+ case 41:
+#line 269 "ael.y"
{
(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
(yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
break;
- case 39:
-#line 276 "ael.y"
+ case 42:
+#line 273 "ael.y"
{
(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
@@ -2288,8 +2301,8 @@ yyreduce:
(yyval.pval)->u4.regexten=1;;}
break;
- case 40:
-#line 281 "ael.y"
+ case 43:
+#line 278 "ael.y"
{
(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
(yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
@@ -2297,8 +2310,8 @@ yyreduce:
(yyval.pval)->u3.hints = (yyvsp[(3) - (7)].str);;}
break;
- case 41:
-#line 286 "ael.y"
+ case 44:
+#line 283 "ael.y"
{
(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
(yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
@@ -2307,23 +2320,23 @@ yyreduce:
(yyval.pval)->u3.hints = (yyvsp[(4) - (8)].str);;}
break;
- case 42:
-#line 296 "ael.y"
+ case 45:
+#line 293 "ael.y"
{ (yyval.pval) = NULL; ;}
break;
- case 43:
-#line 297 "ael.y"
+ case 46:
+#line 294 "ael.y"
{ (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
break;
- case 44:
-#line 298 "ael.y"
+ case 47:
+#line 295 "ael.y"
{(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
- case 45:
-#line 304 "ael.y"
+ case 48:
+#line 301 "ael.y"
{
asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(5) - (5)].str));
free((yyvsp[(1) - (5)].str));
@@ -2331,13 +2344,13 @@ yyreduce:
free((yyvsp[(5) - (5)].str)); ;}
break;
- case 46:
-#line 309 "ael.y"
+ case 49:
+#line 306 "ael.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); ;}
break;
- case 47:
-#line 313 "ael.y"
+ case 50:
+#line 310 "ael.y"
{
(yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)]));
(yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)]));
@@ -2345,45 +2358,45 @@ yyreduce:
(yyval.pval)->next->next->next = nword((yyvsp[(7) - (7)].str), &(yylsp[(7) - (7)])); ;}
break;
- case 48:
-#line 321 "ael.y"
+ case 51:
+#line 318 "ael.y"
{ reset_parencount(parseio->scanner); ;}
break;
- case 49:
-#line 321 "ael.y"
+ case 52:
+#line 318 "ael.y"
{ (yyval.str) = (yyvsp[(3) - (4)].str); ;}
break;
- case 50:
-#line 325 "ael.y"
+ case 53:
+#line 322 "ael.y"
{
(yyval.pval)= npval2(PV_IF, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
(yyval.pval)->u1.str = (yyvsp[(2) - (2)].str); ;}
break;
- case 51:
-#line 328 "ael.y"
+ case 54:
+#line 325 "ael.y"
{
(yyval.pval) = npval2(PV_RANDOM, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
(yyval.pval)->u1.str=(yyvsp[(2) - (2)].str);;}
break;
- case 52:
-#line 331 "ael.y"
+ case 55:
+#line 328 "ael.y"
{
(yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
prev_word = 0; ;}
break;
- case 53:
-#line 342 "ael.y"
+ case 56:
+#line 339 "ael.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str);;}
break;
- case 54:
-#line 343 "ael.y"
+ case 57:
+#line 340 "ael.y"
{
asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
free((yyvsp[(1) - (2)].str));
@@ -2391,42 +2404,42 @@ yyreduce:
prev_word = (yyval.str);;}
break;
- case 55:
-#line 350 "ael.y"
+ case 58:
+#line 347 "ael.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); ;}
break;
- case 56:
-#line 351 "ael.y"
+ case 59:
+#line 348 "ael.y"
{
asprintf(&((yyval.str)), "%s %s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
free((yyvsp[(1) - (2)].str));
free((yyvsp[(2) - (2)].str)); ;}
break;
- case 57:
-#line 355 "ael.y"
+ case 60:
+#line 352 "ael.y"
{
asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
free((yyvsp[(1) - (3)].str));
free((yyvsp[(3) - (3)].str)); ;}
break;
- case 58:
-#line 359 "ael.y"
+ case 61:
+#line 356 "ael.y"
{ /* there are often '&' in hints */
asprintf(&((yyval.str)), "%s&%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
free((yyvsp[(1) - (3)].str));
free((yyvsp[(3) - (3)].str));;}
break;
- case 59:
-#line 365 "ael.y"
+ case 62:
+#line 362 "ael.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str);;}
break;
- case 60:
-#line 366 "ael.y"
+ case 63:
+#line 363 "ael.y"
{
asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
free((yyvsp[(1) - (2)].str));
@@ -2434,8 +2447,8 @@ yyreduce:
prev_word = (yyval.str);;}
break;
- case 61:
-#line 371 "ael.y"
+ case 64:
+#line 368 "ael.y"
{
asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str));
free((yyvsp[(1) - (3)].str));
@@ -2444,85 +2457,85 @@ yyreduce:
prev_word=(yyval.str);;}
break;
- case 62:
-#line 379 "ael.y"
+ case 65:
+#line 376 "ael.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str);;}
break;
- case 63:
-#line 380 "ael.y"
+ case 66:
+#line 377 "ael.y"
{
asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str));
free((yyvsp[(1) - (2)].str));
free((yyvsp[(2) - (2)].str));;}
break;
- case 64:
-#line 384 "ael.y"
+ case 67:
+#line 381 "ael.y"
{
asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
free((yyvsp[(1) - (3)].str));
free((yyvsp[(3) - (3)].str));;}
break;
- case 65:
-#line 390 "ael.y"
+ case 68:
+#line 387 "ael.y"
{
(yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
(yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
(yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
break;
- case 66:
-#line 399 "ael.y"
+ case 69:
+#line 396 "ael.y"
{
(yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));;}
break;
- case 67:
-#line 402 "ael.y"
+ case 70:
+#line 399 "ael.y"
{ (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
break;
- case 68:
-#line 403 "ael.y"
+ case 71:
+#line 400 "ael.y"
{
(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
break;
- case 69:
-#line 406 "ael.y"
+ case 72:
+#line 403 "ael.y"
{
(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
break;
- case 70:
-#line 409 "ael.y"
+ case 73:
+#line 406 "ael.y"
{
(yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;}
break;
- case 71:
-#line 412 "ael.y"
+ case 74:
+#line 409 "ael.y"
{reset_semicount(parseio->scanner);;}
break;
- case 72:
-#line 413 "ael.y"
+ case 75:
+#line 410 "ael.y"
{reset_semicount(parseio->scanner);;}
break;
- case 73:
-#line 414 "ael.y"
+ case 76:
+#line 411 "ael.y"
{reset_parencount(parseio->scanner);;}
break;
- case 74:
-#line 414 "ael.y"
+ case 77:
+#line 411 "ael.y"
{ /* XXX word_list maybe ? */
(yyval.pval) = npval2(PV_FOR, &(yylsp[(1) - (12)]), &(yylsp[(12) - (12)]));
(yyval.pval)->u1.for_init = (yyvsp[(4) - (12)].str);
@@ -2531,43 +2544,43 @@ yyreduce:
(yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;}
break;
- case 75:
-#line 420 "ael.y"
+ case 78:
+#line 417 "ael.y"
{
(yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
(yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
break;
- case 76:
-#line 424 "ael.y"
+ case 79:
+#line 421 "ael.y"
{ (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
break;
- case 77:
-#line 425 "ael.y"
+ case 80:
+#line 422 "ael.y"
{ (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
break;
- case 78:
-#line 426 "ael.y"
+ case 81:
+#line 423 "ael.y"
{ (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
break;
- case 79:
-#line 427 "ael.y"
+ case 82:
+#line 424 "ael.y"
{
(yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;}
break;
- case 80:
-#line 430 "ael.y"
+ case 83:
+#line 427 "ael.y"
{reset_semicount(parseio->scanner);;}
break;
- case 81:
-#line 430 "ael.y"
+ case 84:
+#line 427 "ael.y"
{
char *bufx;
int tot=0;
@@ -2603,127 +2616,127 @@ yyreduce:
;}
break;
- case 82:
-#line 463 "ael.y"
+ case 85:
+#line 460 "ael.y"
{ (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
break;
- case 83:
-#line 464 "ael.y"
+ case 86:
+#line 461 "ael.y"
{ (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
break;
- case 84:
-#line 465 "ael.y"
+ case 87:
+#line 462 "ael.y"
{ (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
break;
- case 85:
-#line 466 "ael.y"
+ case 88:
+#line 463 "ael.y"
{
(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
(yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));
(yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
break;
- case 86:
-#line 470 "ael.y"
+ case 89:
+#line 467 "ael.y"
{ (yyval.pval)=0; ;}
break;
- case 87:
-#line 473 "ael.y"
+ case 90:
+#line 470 "ael.y"
{ (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
break;
- case 88:
-#line 474 "ael.y"
+ case 91:
+#line 471 "ael.y"
{ (yyval.pval) = NULL ; ;}
break;
- case 89:
-#line 477 "ael.y"
+ case 92:
+#line 474 "ael.y"
{ (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
break;
- case 90:
-#line 478 "ael.y"
+ case 93:
+#line 475 "ael.y"
{
(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
(yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
break;
- case 91:
-#line 481 "ael.y"
+ case 94:
+#line 478 "ael.y"
{
(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
(yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
break;
- case 92:
-#line 484 "ael.y"
+ case 95:
+#line 481 "ael.y"
{
(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
break;
- case 93:
-#line 488 "ael.y"
+ case 96:
+#line 485 "ael.y"
{
(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
break;
- case 94:
-#line 492 "ael.y"
+ case 97:
+#line 489 "ael.y"
{
(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
break;
- case 95:
-#line 496 "ael.y"
+ case 98:
+#line 493 "ael.y"
{
(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
(yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
break;
- case 96:
-#line 502 "ael.y"
+ case 99:
+#line 499 "ael.y"
{ (yyval.str) = strdup("1"); ;}
break;
- case 97:
-#line 503 "ael.y"
+ case 100:
+#line 500 "ael.y"
{ (yyval.str) = (yyvsp[(2) - (2)].str); ;}
break;
- case 98:
-#line 507 "ael.y"
+ case 101:
+#line 504 "ael.y"
{ /* ext[, pri] default 1 */
(yyval.pval) = nword((yyvsp[(1) - (2)].str), &(yylsp[(1) - (2)]));
(yyval.pval)->next = nword((yyvsp[(2) - (2)].str), &(yylsp[(2) - (2)])); ;}
break;
- case 99:
-#line 510 "ael.y"
+ case 102:
+#line 507 "ael.y"
{ /* context, ext, pri */
(yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)]));
(yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)]));
(yyval.pval)->next->next = nword((yyvsp[(2) - (4)].str), &(yylsp[(2) - (4)])); ;}
break;
- case 100:
-#line 516 "ael.y"
+ case 103:
+#line 513 "ael.y"
{reset_argcount(parseio->scanner);;}
break;
- case 101:
-#line 516 "ael.y"
+ case 104:
+#line 513 "ael.y"
{
/* XXX original code had @2 but i think we need @5 */
(yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
@@ -2731,20 +2744,20 @@ yyreduce:
(yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;}
break;
- case 102:
-#line 521 "ael.y"
+ case 105:
+#line 518 "ael.y"
{
(yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
(yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;}
break;
- case 103:
-#line 529 "ael.y"
+ case 106:
+#line 526 "ael.y"
{reset_argcount(parseio->scanner);;}
break;
- case 104:
-#line 529 "ael.y"
+ case 107:
+#line 526 "ael.y"
{
if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
@@ -2756,8 +2769,8 @@ yyreduce:
} ;}
break;
- case 105:
-#line 540 "ael.y"
+ case 108:
+#line 537 "ael.y"
{
(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
if( (yyval.pval)->type == PV_GOTO )
@@ -2767,179 +2780,179 @@ yyreduce:
;}
break;
- case 106:
-#line 547 "ael.y"
+ case 109:
+#line 544 "ael.y"
{ (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
break;
- case 107:
-#line 550 "ael.y"
+ case 110:
+#line 547 "ael.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str) ;}
break;
- case 108:
-#line 551 "ael.y"
+ case 111:
+#line 548 "ael.y"
{ (yyval.str) = strdup(""); ;}
break;
- case 109:
-#line 554 "ael.y"
+ case 112:
+#line 551 "ael.y"
{ (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
break;
- case 110:
-#line 555 "ael.y"
+ case 113:
+#line 552 "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 558 "ael.y"
+ case 114:
+#line 555 "ael.y"
{ (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
break;
- case 112:
-#line 561 "ael.y"
+ case 115:
+#line 558 "ael.y"
{ (yyval.pval) = NULL; ;}
break;
- case 113:
-#line 562 "ael.y"
+ case 116:
+#line 559 "ael.y"
{ (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
break;
- case 114:
-#line 565 "ael.y"
+ case 117:
+#line 562 "ael.y"
{
(yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)])); /* XXX 3 or 4 ? */
(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
break;
- case 115:
-#line 569 "ael.y"
+ case 118:
+#line 566 "ael.y"
{
(yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
(yyval.pval)->u1.str = NULL;
(yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
break;
- case 116:
-#line 573 "ael.y"
+ case 119:
+#line 570 "ael.y"
{
(yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX@3 or @4 ? */
(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
(yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
break;
- case 117:
-#line 579 "ael.y"
+ case 120:
+#line 576 "ael.y"
{ (yyval.pval) = NULL; ;}
break;
- case 118:
-#line 580 "ael.y"
+ case 121:
+#line 577 "ael.y"
{ (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
break;
- case 119:
-#line 583 "ael.y"
+ case 122:
+#line 580 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 120:
-#line 584 "ael.y"
+ case 123:
+#line 581 "ael.y"
{ (yyval.pval)=(yyvsp[(1) - (1)].pval);;}
break;
- case 121:
-#line 585 "ael.y"
+ case 124:
+#line 582 "ael.y"
{
(yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
(yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
(yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
break;
- case 122:
-#line 591 "ael.y"
+ case 125:
+#line 588 "ael.y"
{
(yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
break;
- case 123:
-#line 596 "ael.y"
+ case 126:
+#line 593 "ael.y"
{
(yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
break;
- case 124:
-#line 601 "ael.y"
+ case 127:
+#line 598 "ael.y"
{ (yyval.pval) = NULL; ;}
break;
- case 125:
-#line 602 "ael.y"
+ case 128:
+#line 599 "ael.y"
{ (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;}
break;
- case 126:
-#line 603 "ael.y"
+ case 129:
+#line 600 "ael.y"
{ char *x; asprintf(&x,"%s@%s", (yyvsp[(1) - (5)].str),(yyvsp[(3) - (5)].str)); free((yyvsp[(1) - (5)].str)); free((yyvsp[(3) - (5)].str));
(yyval.pval) = linku1(nword(x, &(yylsp[(1) - (5)])), (yyvsp[(5) - (5)].pval));;}
break;
- case 127:
-#line 605 "ael.y"
+ case 130:
+#line 602 "ael.y"
{(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
break;
- case 128:
-#line 608 "ael.y"
+ case 131:
+#line 605 "ael.y"
{ (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
break;
- case 129:
-#line 609 "ael.y"
+ case 132:
+#line 606 "ael.y"
{
(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
(yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
prev_word=0; /* XXX sure ? */ ;}
break;
- case 130:
-#line 616 "ael.y"
+ case 133:
+#line 613 "ael.y"
{ (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
break;
- case 131:
-#line 617 "ael.y"
+ case 134:
+#line 614 "ael.y"
{ (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
break;
- case 132:
-#line 618 "ael.y"
+ case 135:
+#line 615 "ael.y"
{(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
break;
- case 133:
-#line 621 "ael.y"
+ case 136:
+#line 618 "ael.y"
{
(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
break;
- case 134:
-#line 624 "ael.y"
+ case 137:
+#line 621 "ael.y"
{
(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
break;
/* Line 1270 of yacc.c. */
-#line 2943 "ael.tab.c"
+#line 2956 "ael.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3158,7 +3171,7 @@ yyreturn:
}
-#line 629 "ael.y"
+#line 626 "ael.y"
static char *token_equivs1[] =
diff --git a/pbx/ael/ael.tab.h b/pbx/ael/ael.tab.h
index c908e0279..92a201a70 100644
--- a/pbx/ael/ael.tab.h
+++ b/pbx/ael/ael.tab.h
@@ -50,24 +50,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. */
@@ -92,24 +93,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
@@ -123,7 +125,7 @@ typedef union YYSTYPE
struct pval *pval; /* full objects */
}
/* Line 1536 of yacc.c. */
-#line 127 "ael.tab.h"
+#line 129 "ael.tab.h"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y
index d54dc01ab..3ddcee8f0 100644
--- a/pbx/ael/ael.y
+++ b/pbx/ael/ael.y
@@ -80,7 +80,7 @@ static pval *update_last(pval *, YYLTYPE *);
%token KW_CONTEXT LC RC LP RP SEMI EQ COMMA COLON AMPER BAR AT
-%token KW_MACRO KW_GLOBALS KW_IGNOREPAT KW_SWITCH KW_IF KW_IFTIME KW_ELSE KW_RANDOM KW_ABSTRACT
+%token KW_MACRO KW_GLOBALS KW_IGNOREPAT KW_SWITCH KW_IF KW_IFTIME KW_ELSE KW_RANDOM KW_ABSTRACT KW_EXTEND
%token EXTENMARK KW_GOTO KW_JUMP KW_RETURN KW_BREAK KW_CONTINUE KW_REGEXTEN KW_HINT
%token KW_FOR KW_WHILE KW_CASE KW_PATTERN KW_DEFAULT KW_CATCH KW_SWITCHES KW_ESWITCHES
%token KW_INCLUDES
@@ -201,22 +201,19 @@ context_name : word { $$ = $1; }
;
context : opt_abstract KW_CONTEXT context_name LC elements RC {
- if (!$5) {
- ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Warning! The empty context %s will be IGNORED!\n",
- my_file, @4.first_line, @4.first_column, @4.last_column, $3 );
- $$ = 0;
- free($3);
- } else {
- $$ = npval2(PV_CONTEXT, &@1, &@6);
- $$->u1.str = $3;
- $$->u2.statements = $5;
- set_dads($$,$5);
- $$->u3.abstract = $1;} }
+ $$ = npval2(PV_CONTEXT, &@1, &@6);
+ $$->u1.str = $3;
+ $$->u2.statements = $5;
+ set_dads($$,$5);
+ $$->u3.abstract = $1;}
;
/* optional "abstract" keyword XXX there is no regression test for this */
opt_abstract: KW_ABSTRACT { $$ = 1; }
| /* nothing */ { $$ = 0; }
+ | KW_EXTEND { $$ = 2; }
+ | KW_EXTEND KW_ABSTRACT { $$=3; }
+ | KW_ABSTRACT KW_EXTEND { $$=3; }
;
macro : KW_MACRO word LP arglist RP LC macro_statements RC {
diff --git a/pbx/ael/ael_lex.c b/pbx/ael/ael_lex.c
index 6adf8ba9b..9a1a7bc6c 100644
--- a/pbx/ael/ael_lex.c
+++ b/pbx/ael/ael_lex.c
@@ -345,8 +345,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 61
-#define YY_END_OF_BUFFER 62
+#define YY_NUM_RULES 62
+#define YY_END_OF_BUFFER 63
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -354,34 +354,34 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[234] =
+static yyconst flex_int16_t yy_accept[239] =
{ 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 41, 41,
- 62, 61, 48, 46, 47, 49, 49, 9, 3, 4,
- 7, 49, 8, 5, 6, 12, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 1, 10, 2, 61, 51, 50, 61, 52, 61,
- 57, 58, 59, 61, 61, 53, 54, 55, 61, 56,
- 41, 42, 43, 48, 47, 49, 49, 40, 13, 11,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 20, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 0, 51, 50, 0, 52, 51, 50, 52, 0,
-
- 57, 58, 59, 0, 57, 58, 59, 0, 53, 54,
- 55, 0, 56, 53, 54, 55, 56, 41, 42, 43,
- 44, 43, 45, 49, 13, 13, 49, 49, 49, 49,
- 49, 49, 49, 49, 31, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 33, 49, 49, 49, 25, 49, 49, 26,
- 24, 49, 49, 49, 27, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 29, 36, 49, 49, 49, 49,
- 49, 49, 49, 49, 16, 49, 49, 49, 49, 49,
- 32, 49, 49, 49, 49, 49, 49, 49, 21, 49,
-
- 49, 49, 22, 49, 28, 19, 49, 49, 14, 49,
- 34, 49, 17, 49, 49, 35, 49, 49, 49, 15,
- 30, 49, 49, 39, 23, 37, 0, 38, 18, 0,
- 0, 60, 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 42, 42,
+ 63, 62, 49, 47, 48, 50, 50, 9, 3, 4,
+ 7, 50, 8, 5, 6, 12, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 1, 10, 2, 62, 52, 51, 62, 53, 62,
+ 58, 59, 60, 62, 62, 54, 55, 56, 62, 57,
+ 42, 43, 44, 49, 48, 50, 50, 41, 13, 11,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 21, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 0, 52, 51, 0, 53, 52, 51, 53,
+
+ 0, 58, 59, 60, 0, 58, 59, 60, 0, 54,
+ 55, 56, 0, 57, 54, 55, 56, 57, 42, 43,
+ 44, 45, 44, 46, 50, 13, 13, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 32, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 34, 50, 50, 50, 26, 50,
+ 50, 50, 27, 25, 50, 50, 50, 28, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 30, 37, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 17, 50,
+ 50, 50, 50, 50, 33, 50, 50, 50, 50, 50,
+
+ 50, 16, 50, 22, 50, 50, 50, 23, 50, 29,
+ 20, 50, 50, 14, 50, 35, 50, 18, 50, 50,
+ 36, 50, 50, 50, 15, 31, 50, 50, 40, 24,
+ 38, 0, 39, 19, 0, 0, 61, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -425,184 +425,186 @@ static yyconst flex_int32_t yy_meta[48] =
3, 3, 3, 3, 3, 1, 3
} ;
-static yyconst flex_int16_t yy_base[247] =
+static yyconst flex_int16_t yy_base[252] =
{ 0,
0, 0, 39, 42, 81, 120, 159, 198, 47, 54,
- 310, 985, 307, 985, 304, 0, 276, 985, 985, 985,
- 985, 42, 985, 985, 289, 985, 281, 265, 31, 276,
- 32, 265, 33, 270, 45, 258, 276, 272, 48, 251,
- 263, 985, 985, 985, 73, 985, 985, 89, 985, 237,
+ 315, 985, 312, 985, 309, 0, 281, 985, 985, 985,
+ 985, 42, 985, 985, 294, 985, 286, 270, 31, 281,
+ 32, 270, 33, 275, 45, 263, 281, 280, 48, 259,
+ 271, 985, 985, 985, 73, 985, 985, 89, 985, 237,
985, 985, 985, 276, 315, 985, 985, 985, 354, 985,
- 289, 985, 66, 288, 285, 0, 252, 0, 401, 985,
- 247, 256, 64, 245, 252, 239, 235, 238, 239, 234,
- 238, 254, 236, 246, 235, 244, 227, 231, 47, 235,
- 234, 103, 985, 985, 137, 985, 142, 176, 181, 439,
-
- 985, 985, 985, 478, 517, 556, 595, 634, 985, 985,
- 985, 673, 985, 712, 751, 790, 829, 261, 985, 103,
- 985, 104, 985, 238, 0, 876, 221, 238, 233, 231,
- 214, 231, 226, 220, 0, 226, 212, 207, 213, 205,
- 207, 202, 200, 197, 211, 209, 193, 193, 199, 198,
- 192, 197, 0, 199, 100, 185, 0, 184, 201, 0,
- 0, 187, 178, 174, 0, 178, 187, 176, 168, 172,
- 184, 178, 158, 176, 0, 0, 151, 158, 159, 167,
- 154, 156, 151, 151, 0, 137, 140, 132, 130, 131,
- 0, 134, 131, 114, 112, 112, 119, 105, 0, 106,
-
- 116, 103, 0, 111, 0, 110, 106, 91, 0, 95,
- 0, 94, 0, 96, 68, 0, 64, 57, 76, 0,
- 0, 52, 44, 0, 0, 0, 168, 0, 0, 0,
- 50, 985, 985, 922, 927, 932, 937, 940, 945, 950,
- 955, 960, 964, 969, 974, 979
+ 297, 985, 66, 297, 291, 0, 258, 0, 401, 985,
+ 253, 265, 64, 254, 261, 248, 244, 242, 242, 243,
+ 238, 242, 258, 240, 250, 239, 248, 231, 235, 51,
+ 239, 238, 103, 985, 985, 137, 985, 142, 176, 181,
+
+ 439, 985, 985, 985, 478, 517, 556, 595, 634, 985,
+ 985, 985, 673, 985, 712, 751, 790, 829, 265, 985,
+ 103, 985, 104, 985, 242, 0, 876, 225, 242, 237,
+ 238, 221, 238, 233, 225, 228, 0, 230, 216, 210,
+ 219, 212, 214, 206, 203, 200, 214, 212, 196, 196,
+ 202, 201, 195, 200, 0, 202, 100, 189, 0, 189,
+ 193, 204, 0, 0, 190, 185, 180, 0, 180, 189,
+ 178, 170, 174, 187, 184, 167, 182, 0, 0, 156,
+ 163, 161, 169, 167, 158, 161, 156, 152, 0, 138,
+ 141, 134, 137, 136, 0, 135, 135, 115, 113, 113,
+
+ 123, 0, 109, 0, 107, 117, 107, 0, 112, 0,
+ 111, 110, 92, 0, 105, 0, 95, 0, 85, 60,
+ 0, 61, 48, 117, 0, 0, 45, 37, 0, 0,
+ 0, 168, 0, 0, 0, 50, 985, 985, 922, 927,
+ 932, 937, 940, 945, 950, 955, 960, 964, 969, 974,
+ 979
} ;
-static yyconst flex_int16_t yy_def[247] =
+static yyconst flex_int16_t yy_def[252] =
{ 0,
- 233, 1, 234, 234, 235, 235, 236, 236, 237, 237,
- 233, 233, 233, 233, 233, 238, 238, 233, 233, 233,
- 233, 238, 233, 233, 233, 233, 238, 238, 238, 238,
+ 238, 1, 239, 239, 240, 240, 241, 241, 242, 242,
+ 238, 238, 238, 238, 238, 243, 243, 238, 238, 238,
+ 238, 243, 238, 238, 238, 238, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 238, 238, 238, 244, 238, 238, 244, 238, 245,
+ 238, 238, 238, 245, 246, 238, 238, 238, 246, 238,
+ 247, 238, 248, 238, 238, 243, 243, 243, 249, 238,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 244, 238, 238, 244, 238, 244, 244, 244,
+
+ 245, 238, 238, 238, 245, 245, 245, 245, 246, 238,
+ 238, 238, 246, 238, 246, 246, 246, 246, 247, 238,
+ 248, 238, 248, 238, 243, 250, 249, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 238, 243, 243, 251, 251, 238, 0, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
- 238, 233, 233, 233, 239, 233, 233, 239, 233, 240,
- 233, 233, 233, 240, 241, 233, 233, 233, 241, 233,
- 242, 233, 243, 233, 233, 238, 238, 238, 244, 233,
+ 238
+ } ;
+
+static yyconst flex_int16_t yy_nxt[1033] =
+ { 0,
+ 12, 13, 14, 15, 16, 16, 17, 18, 19, 20,
+ 16, 21, 22, 23, 24, 25, 16, 26, 16, 16,
+ 12, 16, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 16, 16, 37, 16, 16, 38, 39, 40,
+ 16, 16, 41, 16, 42, 43, 44, 46, 47, 62,
+ 46, 47, 68, 73, 69, 237, 62, 63, 46, 48,
+ 49, 46, 48, 49, 63, 76, 80, 74, 122, 81,
+ 89, 77, 83, 84, 90, 78, 123, 234, 124, 148,
+ 85, 94, 95, 46, 233, 49, 46, 231, 49, 51,
+ 52, 149, 94, 96, 97, 53, 230, 98, 99, 229,
+
+ 51, 54, 52, 130, 131, 122, 122, 228, 98, 96,
+ 100, 94, 95, 238, 123, 238, 238, 94, 232, 97,
+ 232, 227, 94, 96, 97, 51, 180, 52, 51, 52,
+ 181, 226, 225, 98, 53, 100, 224, 223, 222, 51,
+ 54, 52, 221, 220, 219, 98, 99, 94, 218, 97,
+ 94, 95, 217, 216, 215, 214, 98, 96, 100, 213,
+ 212, 94, 96, 97, 51, 211, 52, 56, 57, 232,
+ 58, 232, 210, 235, 209, 208, 207, 206, 56, 59,
+ 60, 98, 205, 100, 94, 95, 94, 204, 97, 94,
+ 95, 203, 202, 201, 200, 94, 96, 97, 199, 198,
+
+ 94, 96, 97, 56, 197, 60, 56, 57, 196, 58,
+ 195, 194, 193, 192, 191, 190, 189, 56, 59, 60,
+ 94, 188, 97, 187, 186, 94, 185, 97, 184, 183,
+ 182, 179, 178, 177, 176, 175, 174, 173, 172, 171,
+ 170, 169, 56, 168, 60, 102, 103, 167, 166, 165,
+ 164, 104, 163, 162, 161, 160, 102, 105, 103, 159,
+ 158, 157, 156, 155, 154, 153, 152, 120, 151, 150,
+ 147, 146, 145, 144, 143, 142, 141, 140, 139, 138,
+ 137, 102, 136, 103, 106, 107, 135, 134, 133, 132,
+ 108, 129, 128, 125, 65, 106, 105, 107, 64, 120,
+
+ 92, 91, 88, 87, 86, 82, 79, 75, 72, 71,
+ 70, 67, 65, 64, 238, 238, 238, 238, 238, 238,
+ 106, 238, 107, 110, 111, 238, 112, 238, 238, 238,
+ 238, 238, 238, 238, 110, 113, 114, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 110,
+ 238, 114, 115, 116, 238, 117, 238, 238, 238, 238,
+ 238, 238, 238, 115, 113, 118, 238, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
- 238, 239, 233, 233, 239, 233, 239, 239, 239, 240,
+ 238, 238, 238, 238, 238, 238, 238, 238, 115, 238,
- 233, 233, 233, 240, 240, 240, 240, 241, 233, 233,
- 233, 241, 233, 241, 241, 241, 241, 242, 233, 243,
- 233, 243, 233, 238, 245, 244, 238, 238, 238, 238,
+ 118, 126, 126, 238, 126, 238, 238, 238, 126, 126,
+ 126, 238, 126, 238, 126, 126, 126, 238, 126, 238,
+ 238, 126, 238, 238, 238, 238, 238, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 126, 102, 103, 238,
+ 238, 238, 238, 104, 238, 238, 238, 238, 102, 105,
+ 103, 238, 238, 238, 238, 238, 238, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 102, 238, 103, 106, 107, 238, 238,
+ 238, 238, 108, 238, 238, 238, 238, 106, 105, 107,
+
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 106, 238, 107, 102, 103, 238, 238, 238,
+ 238, 104, 238, 238, 238, 238, 102, 105, 103, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 102, 238, 103, 102, 103, 238, 238, 238, 238,
+ 104, 238, 238, 238, 238, 102, 105, 103, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 102, 238, 103, 102, 103, 238, 238, 238, 238, 104,
+ 238, 238, 238, 238, 102, 105, 103, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 102,
+ 238, 103, 110, 111, 238, 112, 238, 238, 238, 238,
+ 238, 238, 238, 110, 113, 114, 238, 238, 238, 238,
238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
- 238, 238, 238, 238, 238, 238, 233, 238, 238, 246,
- 246, 233, 0, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233
- } ;
+ 238, 238, 238, 238, 238, 238, 238, 238, 110, 238,
+ 114, 115, 116, 238, 117, 238, 238, 238, 238, 238,
+ 238, 238, 115, 113, 118, 238, 238, 238, 238, 238,
-static yyconst flex_int16_t yy_nxt[1033] =
- { 0,
- 12, 13, 14, 15, 16, 16, 17, 18, 19, 20,
- 16, 21, 22, 23, 24, 25, 16, 26, 16, 16,
- 12, 16, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 16, 16, 37, 16, 16, 38, 39, 40,
- 16, 16, 41, 16, 42, 43, 44, 46, 47, 62,
- 46, 47, 68, 73, 69, 232, 62, 63, 46, 48,
- 49, 46, 48, 49, 63, 76, 79, 74, 121, 80,
- 88, 77, 82, 83, 89, 146, 122, 227, 123, 227,
- 84, 93, 94, 46, 229, 49, 46, 147, 49, 51,
- 52, 228, 93, 95, 96, 53, 226, 97, 98, 225,
-
- 51, 54, 52, 129, 130, 121, 121, 224, 97, 95,
- 99, 93, 94, 233, 122, 233, 233, 93, 223, 96,
- 222, 221, 93, 95, 96, 51, 177, 52, 51, 52,
- 178, 220, 219, 97, 53, 99, 218, 217, 216, 51,
- 54, 52, 215, 214, 213, 97, 98, 93, 212, 96,
- 93, 94, 211, 210, 209, 208, 97, 95, 99, 207,
- 206, 93, 95, 96, 51, 205, 52, 56, 57, 227,
- 58, 227, 204, 230, 203, 202, 201, 200, 56, 59,
- 60, 97, 199, 99, 93, 94, 93, 198, 96, 93,
- 94, 197, 196, 195, 194, 93, 95, 96, 193, 192,
-
- 93, 95, 96, 56, 191, 60, 56, 57, 190, 58,
- 189, 188, 187, 186, 185, 184, 183, 56, 59, 60,
- 93, 182, 96, 181, 180, 93, 179, 96, 176, 175,
- 174, 173, 172, 171, 170, 169, 168, 167, 166, 165,
- 164, 163, 56, 162, 60, 101, 102, 161, 160, 159,
- 158, 103, 157, 156, 155, 154, 101, 104, 102, 153,
- 152, 151, 150, 119, 149, 148, 145, 144, 143, 142,
- 141, 140, 139, 138, 137, 136, 135, 134, 133, 132,
- 131, 101, 128, 102, 105, 106, 127, 124, 65, 64,
- 107, 119, 91, 90, 87, 105, 104, 106, 86, 85,
-
- 81, 78, 75, 72, 71, 70, 67, 65, 64, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 105, 233, 106, 109, 110, 233, 111, 233, 233, 233,
- 233, 233, 233, 233, 109, 112, 113, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 109,
- 233, 113, 114, 115, 233, 116, 233, 233, 233, 233,
- 233, 233, 233, 114, 112, 117, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 114, 233,
-
- 117, 125, 125, 233, 125, 233, 233, 233, 125, 125,
- 125, 233, 125, 233, 125, 125, 125, 233, 125, 233,
- 233, 125, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 125, 101, 102, 233,
- 233, 233, 233, 103, 233, 233, 233, 233, 101, 104,
- 102, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 101, 233, 102, 105, 106, 233, 233,
- 233, 233, 107, 233, 233, 233, 233, 105, 104, 106,
-
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 105, 233, 106, 101, 102, 233, 233, 233,
- 233, 103, 233, 233, 233, 233, 101, 104, 102, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 101, 233, 102, 101, 102, 233, 233, 233, 233,
- 103, 233, 233, 233, 233, 101, 104, 102, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
-
- 101, 233, 102, 101, 102, 233, 233, 233, 233, 103,
- 233, 233, 233, 233, 101, 104, 102, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 101,
- 233, 102, 109, 110, 233, 111, 233, 233, 233, 233,
- 233, 233, 233, 109, 112, 113, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 109, 233,
- 113, 114, 115, 233, 116, 233, 233, 233, 233, 233,
- 233, 233, 114, 112, 117, 233, 233, 233, 233, 233,
-
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 114, 233, 117,
- 109, 110, 233, 111, 233, 233, 233, 233, 233, 233,
- 233, 109, 112, 113, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 109, 233, 113, 109,
- 110, 233, 111, 233, 233, 233, 233, 233, 233, 233,
- 109, 112, 113, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 109, 233, 113, 109, 110,
-
- 233, 111, 233, 233, 233, 233, 233, 233, 233, 109,
- 112, 113, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 109, 233, 113, 109, 110, 233,
- 111, 233, 233, 233, 233, 233, 233, 233, 109, 112,
- 113, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 109, 233, 113, 125, 125, 233, 125,
- 233, 233, 233, 125, 125, 125, 233, 125, 233, 125,
- 125, 125, 233, 125, 233, 233, 125, 233, 233, 233,
-
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 125, 45, 45, 45, 45, 45, 50, 50, 50,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 115, 238, 118,
+ 110, 111, 238, 112, 238, 238, 238, 238, 238, 238,
+ 238, 110, 113, 114, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 110, 238, 114, 110,
+ 111, 238, 112, 238, 238, 238, 238, 238, 238, 238,
+ 110, 113, 114, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 110, 238, 114, 110, 111,
+
+ 238, 112, 238, 238, 238, 238, 238, 238, 238, 110,
+ 113, 114, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 110, 238, 114, 110, 111, 238,
+ 112, 238, 238, 238, 238, 238, 238, 238, 110, 113,
+ 114, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 110, 238, 114, 126, 126, 238, 126,
+ 238, 238, 238, 126, 126, 126, 238, 126, 238, 126,
+ 126, 126, 238, 126, 238, 238, 126, 238, 238, 238,
+
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 126, 45, 45, 45, 45, 45, 50, 50, 50,
50, 50, 55, 55, 55, 55, 55, 61, 61, 61,
- 61, 61, 66, 66, 66, 92, 92, 92, 92, 92,
- 100, 100, 100, 100, 100, 108, 108, 108, 108, 108,
- 118, 118, 118, 118, 120, 120, 120, 120, 120, 126,
- 233, 126, 126, 126, 125, 233, 125, 125, 125, 231,
- 231, 231, 233, 231, 11, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
-
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233
+ 61, 61, 66, 66, 66, 93, 93, 93, 93, 93,
+ 101, 101, 101, 101, 101, 109, 109, 109, 109, 109,
+ 119, 119, 119, 119, 121, 121, 121, 121, 121, 127,
+ 238, 127, 127, 127, 126, 238, 126, 126, 126, 236,
+ 236, 236, 238, 236, 11, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238
} ;
static yyconst flex_int16_t yy_chk[1033] =
@@ -612,36 +614,36 @@ static yyconst flex_int16_t yy_chk[1033] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 3, 3, 9,
- 4, 4, 22, 29, 22, 231, 10, 9, 3, 3,
+ 4, 4, 22, 29, 22, 236, 10, 9, 3, 3,
3, 4, 4, 4, 10, 31, 33, 29, 63, 33,
- 39, 31, 35, 35, 39, 89, 63, 219, 63, 219,
- 35, 45, 45, 3, 223, 3, 4, 89, 4, 5,
- 5, 222, 45, 45, 45, 5, 218, 48, 48, 217,
-
- 5, 5, 5, 73, 73, 120, 122, 215, 48, 48,
- 48, 92, 92, 120, 122, 120, 122, 45, 214, 45,
- 212, 210, 92, 92, 92, 5, 155, 5, 6, 6,
- 155, 208, 207, 48, 6, 48, 206, 204, 202, 6,
- 6, 6, 201, 200, 198, 95, 95, 92, 197, 92,
- 97, 97, 196, 195, 194, 193, 95, 95, 95, 192,
- 190, 97, 97, 97, 6, 189, 6, 7, 7, 227,
- 7, 227, 188, 227, 187, 186, 184, 183, 7, 7,
- 7, 95, 182, 95, 98, 98, 97, 181, 97, 99,
- 99, 180, 179, 178, 177, 98, 98, 98, 174, 173,
-
- 99, 99, 99, 7, 172, 7, 8, 8, 171, 8,
- 170, 169, 168, 167, 166, 164, 163, 8, 8, 8,
- 98, 162, 98, 159, 158, 99, 156, 99, 154, 152,
- 151, 150, 149, 148, 147, 146, 145, 144, 143, 142,
- 141, 140, 8, 139, 8, 50, 50, 138, 137, 136,
- 134, 50, 133, 132, 131, 130, 50, 50, 50, 129,
- 128, 127, 124, 118, 91, 90, 88, 87, 86, 85,
- 84, 83, 82, 81, 80, 79, 78, 77, 76, 75,
- 74, 50, 72, 50, 54, 54, 71, 67, 65, 64,
- 54, 61, 41, 40, 38, 54, 54, 54, 37, 36,
-
- 34, 32, 30, 28, 27, 25, 17, 15, 13, 11,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 39, 31, 35, 35, 39, 31, 63, 228, 63, 90,
+ 35, 45, 45, 3, 227, 3, 4, 223, 4, 5,
+ 5, 90, 45, 45, 45, 5, 222, 48, 48, 220,
+
+ 5, 5, 5, 73, 73, 121, 123, 219, 48, 48,
+ 48, 93, 93, 121, 123, 121, 123, 45, 224, 45,
+ 224, 217, 93, 93, 93, 5, 157, 5, 6, 6,
+ 157, 215, 213, 48, 6, 48, 212, 211, 209, 6,
+ 6, 6, 207, 206, 205, 96, 96, 93, 203, 93,
+ 98, 98, 201, 200, 199, 198, 96, 96, 96, 197,
+ 196, 98, 98, 98, 6, 194, 6, 7, 7, 232,
+ 7, 232, 193, 232, 192, 191, 190, 188, 7, 7,
+ 7, 96, 187, 96, 99, 99, 98, 186, 98, 100,
+ 100, 185, 184, 183, 182, 99, 99, 99, 181, 180,
+
+ 100, 100, 100, 7, 177, 7, 8, 8, 176, 8,
+ 175, 174, 173, 172, 171, 170, 169, 8, 8, 8,
+ 99, 167, 99, 166, 165, 100, 162, 100, 161, 160,
+ 158, 156, 154, 153, 152, 151, 150, 149, 148, 147,
+ 146, 145, 8, 144, 8, 50, 50, 143, 142, 141,
+ 140, 50, 139, 138, 136, 135, 50, 50, 50, 134,
+ 133, 132, 131, 130, 129, 128, 125, 119, 92, 91,
+ 89, 88, 87, 86, 85, 84, 83, 82, 81, 80,
+ 79, 50, 78, 50, 54, 54, 77, 76, 75, 74,
+ 54, 72, 71, 67, 65, 54, 54, 54, 64, 61,
+
+ 41, 40, 38, 37, 36, 34, 32, 30, 28, 27,
+ 25, 17, 15, 13, 11, 0, 0, 0, 0, 0,
54, 0, 54, 55, 55, 0, 55, 0, 0, 0,
0, 0, 0, 0, 55, 55, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -655,72 +657,72 @@ static yyconst flex_int16_t yy_chk[1033] =
69, 0, 69, 0, 69, 69, 69, 0, 69, 0,
0, 69, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 69, 100, 100, 0,
- 0, 0, 0, 100, 0, 0, 0, 0, 100, 100,
- 100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 69, 101, 101, 0,
+ 0, 0, 0, 101, 0, 0, 0, 0, 101, 101,
+ 101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 100, 0, 100, 104, 104, 0, 0,
- 0, 0, 104, 0, 0, 0, 0, 104, 104, 104,
+ 0, 0, 0, 101, 0, 101, 105, 105, 0, 0,
+ 0, 0, 105, 0, 0, 0, 0, 105, 105, 105,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 104, 0, 104, 105, 105, 0, 0, 0,
- 0, 105, 0, 0, 0, 0, 105, 105, 105, 0,
+ 0, 0, 105, 0, 105, 106, 106, 0, 0, 0,
+ 0, 106, 0, 0, 0, 0, 106, 106, 106, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 105, 0, 105, 106, 106, 0, 0, 0, 0,
- 106, 0, 0, 0, 0, 106, 106, 106, 0, 0,
+ 0, 106, 0, 106, 107, 107, 0, 0, 0, 0,
+ 107, 0, 0, 0, 0, 107, 107, 107, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 106, 0, 106, 107, 107, 0, 0, 0, 0, 107,
- 0, 0, 0, 0, 107, 107, 107, 0, 0, 0,
+ 107, 0, 107, 108, 108, 0, 0, 0, 0, 108,
+ 0, 0, 0, 0, 108, 108, 108, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 107,
- 0, 107, 108, 108, 0, 108, 0, 0, 0, 0,
- 0, 0, 0, 108, 108, 108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
+ 0, 108, 109, 109, 0, 109, 0, 0, 0, 0,
+ 0, 0, 0, 109, 109, 109, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 108, 0,
- 108, 112, 112, 0, 112, 0, 0, 0, 0, 0,
- 0, 0, 112, 112, 112, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 109, 0,
+ 109, 113, 113, 0, 113, 0, 0, 0, 0, 0,
+ 0, 0, 113, 113, 113, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 112, 0, 112,
- 114, 114, 0, 114, 0, 0, 0, 0, 0, 0,
- 0, 114, 114, 114, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 113, 0, 113,
+ 115, 115, 0, 115, 0, 0, 0, 0, 0, 0,
+ 0, 115, 115, 115, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 114, 0, 114, 115,
- 115, 0, 115, 0, 0, 0, 0, 0, 0, 0,
- 115, 115, 115, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 115, 0, 115, 116,
+ 116, 0, 116, 0, 0, 0, 0, 0, 0, 0,
+ 116, 116, 116, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 115, 0, 115, 116, 116,
+ 0, 0, 0, 0, 0, 116, 0, 116, 117, 117,
- 0, 116, 0, 0, 0, 0, 0, 0, 0, 116,
- 116, 116, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 117, 0, 0, 0, 0, 0, 0, 0, 117,
+ 117, 117, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 116, 0, 116, 117, 117, 0,
- 117, 0, 0, 0, 0, 0, 0, 0, 117, 117,
- 117, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 117, 0, 117, 118, 118, 0,
+ 118, 0, 0, 0, 0, 0, 0, 0, 118, 118,
+ 118, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 117, 0, 117, 126, 126, 0, 126,
- 0, 0, 0, 126, 126, 126, 0, 126, 0, 126,
- 126, 126, 0, 126, 0, 0, 126, 0, 0, 0,
+ 0, 0, 0, 118, 0, 118, 127, 127, 0, 127,
+ 0, 0, 0, 127, 127, 127, 0, 127, 0, 127,
+ 127, 127, 0, 127, 0, 0, 127, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 126, 234, 234, 234, 234, 234, 235, 235, 235,
- 235, 235, 236, 236, 236, 236, 236, 237, 237, 237,
- 237, 237, 238, 238, 238, 239, 239, 239, 239, 239,
- 240, 240, 240, 240, 240, 241, 241, 241, 241, 241,
- 242, 242, 242, 242, 243, 243, 243, 243, 243, 244,
- 0, 244, 244, 244, 245, 0, 245, 245, 245, 246,
- 246, 246, 0, 246, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
-
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 233
+ 0, 127, 239, 239, 239, 239, 239, 240, 240, 240,
+ 240, 240, 241, 241, 241, 241, 241, 242, 242, 242,
+ 242, 242, 243, 243, 243, 244, 244, 244, 244, 244,
+ 245, 245, 245, 245, 245, 246, 246, 246, 246, 246,
+ 247, 247, 247, 247, 248, 248, 248, 248, 248, 249,
+ 0, 249, 249, 249, 250, 0, 250, 250, 250, 251,
+ 251, 251, 0, 251, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+ 238, 238
} ;
/* The intent behind this definition is that it'll catch
@@ -889,7 +891,7 @@ static void pbcwhere(const char *text, int *line, int *col )
#define STORE_POS
#define STORE_LOC
#endif
-#line 892 "ael_lex.c"
+#line 894 "ael_lex.c"
#define INITIAL 0
#define paren 1
@@ -1133,7 +1135,7 @@ YY_DECL
#line 181 "ael.flex"
-#line 1136 "ael_lex.c"
+#line 1138 "ael_lex.c"
yylval = yylval_param;
@@ -1196,13 +1198,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 234 )
+ if ( yy_current_state >= 239 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_current_state != 233 );
+ while ( yy_current_state != 238 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -1300,174 +1302,179 @@ YY_RULE_SETUP
case 16:
YY_RULE_SETUP
#line 198 "ael.flex"
-{ STORE_POS; return KW_MACRO;};
+{ STORE_POS; return KW_EXTEND;}
YY_BREAK
case 17:
YY_RULE_SETUP
#line 199 "ael.flex"
-{ STORE_POS; return KW_GLOBALS;}
+{ STORE_POS; return KW_MACRO;};
YY_BREAK
case 18:
YY_RULE_SETUP
#line 200 "ael.flex"
-{ STORE_POS; return KW_IGNOREPAT;}
+{ STORE_POS; return KW_GLOBALS;}
YY_BREAK
case 19:
YY_RULE_SETUP
#line 201 "ael.flex"
-{ STORE_POS; return KW_SWITCH;}
+{ STORE_POS; return KW_IGNOREPAT;}
YY_BREAK
case 20:
YY_RULE_SETUP
#line 202 "ael.flex"
-{ STORE_POS; return KW_IF;}
+{ STORE_POS; return KW_SWITCH;}
YY_BREAK
case 21:
YY_RULE_SETUP
#line 203 "ael.flex"
-{ STORE_POS; return KW_IFTIME;}
+{ STORE_POS; return KW_IF;}
YY_BREAK
case 22:
YY_RULE_SETUP
#line 204 "ael.flex"
-{ STORE_POS; return KW_RANDOM;}
+{ STORE_POS; return KW_IFTIME;}
YY_BREAK
case 23:
YY_RULE_SETUP
#line 205 "ael.flex"
-{ STORE_POS; return KW_REGEXTEN;}
+{ STORE_POS; return KW_RANDOM;}
YY_BREAK
case 24:
YY_RULE_SETUP
#line 206 "ael.flex"
-{ STORE_POS; return KW_HINT;}
+{ STORE_POS; return KW_REGEXTEN;}
YY_BREAK
case 25:
YY_RULE_SETUP
#line 207 "ael.flex"
-{ STORE_POS; return KW_ELSE;}
+{ STORE_POS; return KW_HINT;}
YY_BREAK
case 26:
YY_RULE_SETUP
#line 208 "ael.flex"
-{ STORE_POS; return KW_GOTO;}
+{ STORE_POS; return KW_ELSE;}
YY_BREAK
case 27:
YY_RULE_SETUP
#line 209 "ael.flex"
-{ STORE_POS; return KW_JUMP;}
+{ STORE_POS; return KW_GOTO;}
YY_BREAK
case 28:
YY_RULE_SETUP
#line 210 "ael.flex"
-{ STORE_POS; return KW_RETURN;}
+{ STORE_POS; return KW_JUMP;}
YY_BREAK
case 29:
YY_RULE_SETUP
#line 211 "ael.flex"
-{ STORE_POS; return KW_BREAK;}
+{ STORE_POS; return KW_RETURN;}
YY_BREAK
case 30:
YY_RULE_SETUP
#line 212 "ael.flex"
-{ STORE_POS; return KW_CONTINUE;}
+{ STORE_POS; return KW_BREAK;}
YY_BREAK
case 31:
YY_RULE_SETUP
#line 213 "ael.flex"
-{ STORE_POS; return KW_FOR;}
+{ STORE_POS; return KW_CONTINUE;}
YY_BREAK
case 32:
YY_RULE_SETUP
#line 214 "ael.flex"
-{ STORE_POS; return KW_WHILE;}
+{ STORE_POS; return KW_FOR;}
YY_BREAK
case 33:
YY_RULE_SETUP
#line 215 "ael.flex"
-{ STORE_POS; return KW_CASE;}
+{ STORE_POS; return KW_WHILE;}
YY_BREAK
case 34:
YY_RULE_SETUP
#line 216 "ael.flex"
-{ STORE_POS; return KW_DEFAULT;}
+{ STORE_POS; return KW_CASE;}
YY_BREAK
case 35:
YY_RULE_SETUP
#line 217 "ael.flex"
-{ STORE_POS; return KW_PATTERN;}
+{ STORE_POS; return KW_DEFAULT;}
YY_BREAK
case 36:
YY_RULE_SETUP
#line 218 "ael.flex"
-{ STORE_POS; return KW_CATCH;}
+{ STORE_POS; return KW_PATTERN;}
YY_BREAK
case 37:
YY_RULE_SETUP
#line 219 "ael.flex"
-{ STORE_POS; return KW_SWITCHES;}
+{ STORE_POS; return KW_CATCH;}
YY_BREAK
case 38:
YY_RULE_SETUP
#line 220 "ael.flex"
-{ STORE_POS; return KW_ESWITCHES;}
+{ STORE_POS; return KW_SWITCHES;}
YY_BREAK
case 39:
YY_RULE_SETUP
#line 221 "ael.flex"
-{ STORE_POS; return KW_INCLUDES;}
+{ STORE_POS; return KW_ESWITCHES;}
YY_BREAK
case 40:
YY_RULE_SETUP
#line 222 "ael.flex"
-{ BEGIN(comment); my_col += 2; }
+{ STORE_POS; return KW_INCLUDES;}
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 224 "ael.flex"
-{ my_col += yyleng; }
+#line 223 "ael.flex"
+{ BEGIN(comment); my_col += 2; }
YY_BREAK
case 42:
-/* rule 42 can match eol */
YY_RULE_SETUP
#line 225 "ael.flex"
-{ ++my_lineno; my_col=1;}
+{ my_col += yyleng; }
YY_BREAK
case 43:
+/* rule 43 can match eol */
YY_RULE_SETUP
#line 226 "ael.flex"
-{ my_col += yyleng; }
+{ ++my_lineno; my_col=1;}
YY_BREAK
case 44:
-/* rule 44 can match eol */
YY_RULE_SETUP
#line 227 "ael.flex"
-{ ++my_lineno; my_col=1;}
+{ my_col += yyleng; }
YY_BREAK
case 45:
+/* rule 45 can match eol */
YY_RULE_SETUP
#line 228 "ael.flex"
-{ my_col += 2; BEGIN(INITIAL); }
+{ ++my_lineno; my_col=1;}
YY_BREAK
case 46:
-/* rule 46 can match eol */
YY_RULE_SETUP
-#line 230 "ael.flex"
-{ my_lineno++; my_col = 1; }
+#line 229 "ael.flex"
+{ my_col += 2; BEGIN(INITIAL); }
YY_BREAK
case 47:
+/* rule 47 can match eol */
YY_RULE_SETUP
#line 231 "ael.flex"
-{ my_col += yyleng; }
+{ my_lineno++; my_col = 1; }
YY_BREAK
case 48:
YY_RULE_SETUP
#line 232 "ael.flex"
-{ my_col += (yyleng*8)-(my_col%8); }
+{ my_col += yyleng; }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 234 "ael.flex"
+#line 233 "ael.flex"
+{ my_col += (yyleng*8)-(my_col%8); }
+ YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 235 "ael.flex"
{
STORE_POS;
yylval->str = strdup(yytext);
@@ -1482,10 +1489,10 @@ YY_RULE_SETUP
* A comma at the top level is valid here, unlike in argg where it
* is an argument separator so it must be returned as a token.
*/
-case 50:
-/* rule 50 can match eol */
+case 51:
+/* rule 51 can match eol */
YY_RULE_SETUP
-#line 250 "ael.flex"
+#line 251 "ael.flex"
{
if ( pbcpop(')') ) { /* error */
STORE_LOC;
@@ -1508,10 +1515,10 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 51:
-/* rule 51 can match eol */
+case 52:
+/* rule 52 can match eol */
YY_RULE_SETUP
-#line 272 "ael.flex"
+#line 273 "ael.flex"
{
char c = yytext[yyleng-1];
if (c == '(')
@@ -1520,10 +1527,10 @@ YY_RULE_SETUP
yymore();
}
YY_BREAK
-case 52:
-/* rule 52 can match eol */
+case 53:
+/* rule 53 can match eol */
YY_RULE_SETUP
-#line 280 "ael.flex"
+#line 281 "ael.flex"
{
char c = yytext[yyleng-1];
if ( pbcpop(c)) { /* error */
@@ -1545,10 +1552,10 @@ YY_RULE_SETUP
* of the (external) call, which happens when parencount == 0
* before the decrement.
*/
-case 53:
-/* rule 53 can match eol */
+case 54:
+/* rule 54 can match eol */
YY_RULE_SETUP
-#line 302 "ael.flex"
+#line 303 "ael.flex"
{
char c = yytext[yyleng-1];
if (c == '(')
@@ -1557,10 +1564,10 @@ YY_RULE_SETUP
yymore();
}
YY_BREAK
-case 54:
-/* rule 54 can match eol */
+case 55:
+/* rule 55 can match eol */
YY_RULE_SETUP
-#line 310 "ael.flex"
+#line 311 "ael.flex"
{
if ( pbcpop(')') ) { /* error */
STORE_LOC;
@@ -1585,10 +1592,10 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 55:
-/* rule 55 can match eol */
+case 56:
+/* rule 56 can match eol */
YY_RULE_SETUP
-#line 334 "ael.flex"
+#line 335 "ael.flex"
{
if( parencount != 0) { /* printf("Folding in a comma!\n"); */
yymore();
@@ -1603,10 +1610,10 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 56:
-/* rule 56 can match eol */
+case 57:
+/* rule 57 can match eol */
YY_RULE_SETUP
-#line 348 "ael.flex"
+#line 349 "ael.flex"
{
char c = yytext[yyleng-1];
if ( pbcpop(c) ) { /* error */
@@ -1624,20 +1631,20 @@ YY_RULE_SETUP
* or in the first and second operand of a 'for'. As above, match
* commas and use ';' as a separator (hence return it as a separate token).
*/
-case 57:
-/* rule 57 can match eol */
+case 58:
+/* rule 58 can match eol */
YY_RULE_SETUP
-#line 365 "ael.flex"
+#line 366 "ael.flex"
{
char c = yytext[yyleng-1];
yymore();
pbcpush(c);
}
YY_BREAK
-case 58:
-/* rule 58 can match eol */
+case 59:
+/* rule 59 can match eol */
YY_RULE_SETUP
-#line 371 "ael.flex"
+#line 372 "ael.flex"
{
char c = yytext[yyleng-1];
if ( pbcpop(c) ) { /* error */
@@ -1650,10 +1657,10 @@ YY_RULE_SETUP
yymore();
}
YY_BREAK
-case 59:
-/* rule 59 can match eol */
+case 60:
+/* rule 60 can match eol */
YY_RULE_SETUP
-#line 383 "ael.flex"
+#line 384 "ael.flex"
{
STORE_LOC;
yylval->str = strdup(yytext);
@@ -1663,10 +1670,10 @@ YY_RULE_SETUP
return word;
}
YY_BREAK
-case 60:
-/* rule 60 can match eol */
+case 61:
+/* rule 61 can match eol */
YY_RULE_SETUP
-#line 392 "ael.flex"
+#line 393 "ael.flex"
{
char fnamebuf[1024],*p1,*p2;
int glob_ret;
@@ -1712,7 +1719,7 @@ case YY_STATE_EOF(paren):
case YY_STATE_EOF(semic):
case YY_STATE_EOF(argg):
case YY_STATE_EOF(comment):
-#line 433 "ael.flex"
+#line 434 "ael.flex"
{
char fnamebuf[2048];
if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) {
@@ -1747,12 +1754,12 @@ case YY_STATE_EOF(comment):
}
}
YY_BREAK
-case 61:
+case 62:
YY_RULE_SETUP
-#line 467 "ael.flex"
+#line 468 "ael.flex"
ECHO;
YY_BREAK
-#line 1755 "ael_lex.c"
+#line 1762 "ael_lex.c"
case YY_END_OF_BUFFER:
{
@@ -2037,7 +2044,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 234 )
+ if ( yy_current_state >= 239 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2066,11 +2073,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 234 )
+ if ( yy_current_state >= 239 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 233);
+ yy_is_jam = (yy_current_state == 238);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2888,7 +2895,7 @@ void ael_yyfree (void * ptr , yyscan_t yyscanner)
#undef YY_DECL_IS_OURS
#undef YY_DECL
#endif
-#line 467 "ael.flex"
+#line 468 "ael.flex"
diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c
index f4f85eca8..96719fe54 100644
--- a/pbx/pbx_ael.c
+++ b/pbx/pbx_ael.c
@@ -2245,9 +2245,9 @@ static void check_context_names(void)
if (i->type == PV_CONTEXT || i->type == PV_MACRO) {
for (j=i->next; j; j=j->next) {
if ( j->type == PV_CONTEXT || j->type == PV_MACRO ) {
- if ( !strcmp(i->u1.str, j->u1.str) )
+ if ( !strcmp(i->u1.str, j->u1.str) && !(i->u3.abstract&2) && !(j->u3.abstract&2) )
{
- ast_log(LOG_ERROR,"Error: file %s, line %d-%d: The context name (%s) is also declared in file %s, line %d-%d!\n",
+ ast_log(LOG_ERROR,"Error: file %s, line %d-%d: The context name (%s) is also declared in file %s, line %d-%d! (and neither is marked 'extend')\n",
i->filename, i->startline, i->endline, i->u1.str, j->filename, j->startline, j->endline);
errs++;
}
@@ -3955,7 +3955,7 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root)
break;
case PV_CONTEXT:
- context = ast_context_create(local_contexts, p->u1.str, registrar);
+ context = ast_context_find_or_create(local_contexts, p->u1.str, registrar);
/* contexts contain: ignorepat, includes, switches, eswitches, extensions, */
for (p2=p->u2.statements; p2; p2=p2->next) {
diff --git a/utils/ael_main.c b/utils/ael_main.c
index 80d17af8d..6c8f3d390 100644
--- a/utils/ael_main.c
+++ b/utils/ael_main.c
@@ -88,6 +88,7 @@ int ast_add_extension2(struct ast_context *con,
const char *registrar);
void pbx_builtin_setvar(void *chan, void *data);
struct ast_context * ast_context_create(void **extcontexts, const char *name, const char *registrar);
+struct ast_context * ast_context_find_or_create(void **extcontexts, const char *name, const char *registrar);
void ast_context_add_ignorepat2(struct ast_context *con, const char *value, const char *registrar);
void ast_context_add_include2(struct ast_context *con, const char *value, const char *registrar);
void ast_context_add_switch2(struct ast_context *con, const char *value, const char *data, int eval, const char *registrar);
@@ -312,6 +313,21 @@ struct ast_context * ast_context_create(void **extcontexts, const char *name, co
return x;
}
+struct ast_context * ast_context_find_or_create(void **extcontexts, const char *name, const char *registrar)
+{
+ struct ast_context *x = calloc(1, sizeof(*x));
+ if (!x)
+ return NULL;
+ x->next = context_list;
+ context_list = x;
+ if (!no_comp)
+ printf("Executed ast_context_find_or_create(conts, name=%s, registrar=%s);\n", name, registrar);
+ conts++;
+ strncpy(x->name, name, sizeof(x->name) - 1);
+ strncpy(x->registrar, registrar, sizeof(x->registrar) - 1);
+ return x;
+}
+
void ast_context_add_ignorepat2(struct ast_context *con, const char *value, const char *registrar)
{
if(!no_comp)