diff options
-rw-r--r-- | include/asterisk/ael_structs.h | 3 | ||||
-rw-r--r-- | pbx/ael/ael-test/ref.ael-test16 | 19 | ||||
-rw-r--r-- | pbx/ael/ael-test/ref.ael-test19 | 12 | ||||
-rw-r--r-- | pbx/ael/ael.flex | 1 | ||||
-rw-r--r-- | pbx/ael/ael.tab.c | 1333 | ||||
-rw-r--r-- | pbx/ael/ael.tab.h | 76 | ||||
-rw-r--r-- | pbx/ael/ael.y | 21 | ||||
-rw-r--r-- | pbx/ael/ael_lex.c | 693 | ||||
-rw-r--r-- | pbx/pbx_ael.c | 6 | ||||
-rw-r--r-- | utils/ael_main.c | 16 |
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) |