From c1bb0fc34bf52b6736a37a556a35f66e28db3f91 Mon Sep 17 00:00:00 2001 From: Steve Murphy Date: Wed, 20 Jun 2007 20:10:19 +0000 Subject: This finishes the changes for making Macro args LOCAL to the call, and allowing users to declare local variables. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@70461 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- CHANGES | 9 +- doc/ael.tex | 46 ++ include/asterisk/ael_structs.h | 1 + pbx/ael/ael.flex | 1 + pbx/ael/ael.tab.c | 1336 ++++++++++++++++++++-------------------- pbx/ael/ael.tab.h | 8 +- pbx/ael/ael.y | 13 +- pbx/ael/ael_lex.c | 997 +++++++++++++++--------------- pbx/pbx_ael.c | 18 + 9 files changed, 1263 insertions(+), 1166 deletions(-) diff --git a/CHANGES b/CHANGES index e3a5d5521..7e85eb56e 100644 --- a/CHANGES +++ b/CHANGES @@ -162,7 +162,14 @@ Miscellaneous recursive call depths of 100,000 without problems. -- in addition to this, all apps that allowed a macro to be called, as in Dial, queues, etc, are now allowing - a gosub call in similar fashion also. + a gosub call in similar fashion. + * AEL now generates LOCAL(argname) declarations when it + Set()'s the each arg name to the value of ${ARG1}, ${ARG2), + etc. That makes the arguments local in scope. The user + can define their own local variables in macros, now, + by saying "local myvar=someval;" or using Set() in this + fashion: Set(LOCAL(myvar)=someval); ("local" is now + an AEL keyword). * Ability to use libcap to set high ToS bits when non-root on Linux. If configure is unable to find libcap then you can use --with-cap to specify the path. diff --git a/doc/ael.tex b/doc/ael.tex index d675190cc..416b67e34 100644 --- a/doc/ael.tex +++ b/doc/ael.tex @@ -264,6 +264,7 @@ The following are keywords in the AEL language: \item random \item goto \item jump + \item local \item return \item break \item continue @@ -368,6 +369,7 @@ First, some basic objects | | | '=' ';' + | 'local' '=' ';' | ';' @@ -400,6 +402,7 @@ First, some basic objects :== '{' '}' | '=' ';' + | 'local' '=' ';' | 'goto' ';' | 'jump' ';' | ':' @@ -719,6 +722,49 @@ context blah { } \end{verbatim} +You can declare variables in Macros, as so: + +\begin{verbatim} +Macro myroutine(firstarg, secondarg) +{ + Myvar=1; + NoOp(Myvar is set to ${myvar}); +} +\end{verbatim} + +\subsection{Local Variables} + +In 1.2, and 1.4, ALL VARIABLES are CHANNEL variables, including the function +arguments and associated ARG1, ARG2, etc variables. Sorry. + +In trunk (1.6 and higher), we have made all arguments local variables to +a macro call. They will not affect channel variables of the same name. +This includes the ARG1, ARG2, etc variables. + +Users can declare their own local variables by using the keyword 'local' +before setting them to a value; + +\begin{verbatim} +Macro myroutine(firstarg, secondarg) +{ + local Myvar=1; + NoOp(Myvar is set to ${Myvar}, and firstarg is ${firstarg}, and secondarg is ${secondarg}); +} +\end{verbatim} + +In the above example, Myvar, firstarg, and secondarg are all local variables, +and will not be visible to the calling code, be it an extension, or another Macro. + +If you need to make a local variable within the Set() application, you can do it this way: + +\begin{verbatim} +Macro myroutine(firstarg, secondarg) +{ + Set(LOCAL(Myvar)=1); + NoOp(Myvar is set to ${Myvar}, and firstarg is ${firstarg}, and secondarg is ${secondarg}); +} +\end{verbatim} + \subsection{Loops} diff --git a/include/asterisk/ael_structs.h b/include/asterisk/ael_structs.h index 74b2c760a..e220dd24f 100644 --- a/include/asterisk/ael_structs.h +++ b/include/asterisk/ael_structs.h @@ -75,6 +75,7 @@ typedef enum { PV_EXTENSION, /* 25 */ PV_IGNOREPAT, /* 26 */ PV_GLOBALS, /* 27 */ + PV_LOCALVARDEC, /* you know, local var=val; */ /* 28 */ } pvaltype; diff --git a/pbx/ael/ael.flex b/pbx/ael/ael.flex index cfdd5eb94..00fb2db33 100644 --- a/pbx/ael/ael.flex +++ b/pbx/ael/ael.flex @@ -189,6 +189,7 @@ context { STORE_POS; return KW_CONTEXT;} abstract { STORE_POS; return KW_ABSTRACT;} macro { STORE_POS; return KW_MACRO;}; globals { STORE_POS; return KW_GLOBALS;} +local { STORE_POS; return KW_LOCAL;} ignorepat { STORE_POS; return KW_IGNOREPAT;} switch { STORE_POS; return KW_SWITCH;} if { STORE_POS; return KW_IF;} diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c index c5beb7b2f..145c1c402 100644 --- a/pbx/ael/ael.tab.c +++ b/pbx/ael/ael.tab.c @@ -102,7 +102,8 @@ KW_SWITCHES = 293, KW_ESWITCHES = 294, KW_INCLUDES = 295, - word = 296 + KW_LOCAL = 296, + word = 297 }; #endif /* Tokens. */ @@ -144,7 +145,8 @@ #define KW_SWITCHES 293 #define KW_ESWITCHES 294 #define KW_INCLUDES 295 -#define word 296 +#define KW_LOCAL 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 @@ -490,20 +492,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 14 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 350 +#define YYLAST 300 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 42 +#define YYNTOKENS 43 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 54 +#define YYNNTS 56 /* YYNRULES -- Number of rules. */ -#define YYNRULES 133 +#define YYNRULES 137 /* YYNRULES -- Number of states. */ -#define YYNSTATES 267 +#define YYNSTATES 275 /* 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 @@ -550,87 +552,88 @@ 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, 184, - 187, 191, 193, 196, 200, 206, 210, 212, 216, 220, - 223, 224, 225, 226, 239, 243, 245, 249, 252, 255, - 256, 262, 265, 268, 271, 275, 277, 280, 281, 283, - 287, 291, 297, 303, 309, 315, 316, 319, 322, 327, - 328, 334, 338, 339, 343, 347, 350, 352, 353, 355, - 356, 360, 361, 364, 369, 373, 378, 379, 382, 384, - 386, 392, 397, 402, 403, 407, 413, 416, 418, 422, - 425, 429, 432, 437 + 56, 57, 63, 64, 71, 72, 74, 78, 81, 82, + 85, 88, 90, 92, 94, 96, 98, 100, 102, 105, + 107, 112, 116, 121, 129, 138, 139, 142, 145, 151, + 153, 161, 162, 167, 170, 173, 178, 180, 183, 185, + 188, 192, 194, 197, 201, 203, 206, 210, 216, 220, + 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, 51, 1, -1, -1, 41, 9, 53, - 41, 8, -1, -1, 41, -1, 54, 10, 41, -1, - 54, 1, -1, -1, 56, 55, -1, 55, 1, -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, 59, 1, -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, 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, 92, 1, -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, 36, -1, 49, 3, 47, 4, 58, + 5, -1, 23, -1, -1, 15, 42, 6, 57, 7, + 4, 91, 5, -1, 16, 4, 52, 5, -1, -1, + 53, 52, -1, 52, 1, -1, -1, 42, 9, 54, + 42, 8, -1, -1, 41, 42, 9, 56, 42, 8, + -1, -1, 42, -1, 57, 10, 42, -1, 57, 1, + -1, -1, 59, 58, -1, 58, 1, -1, 61, -1, + 98, -1, 93, -1, 94, -1, 60, -1, 53, -1, + 55, -1, 42, 1, -1, 8, -1, 17, 24, 42, + 8, -1, 42, 24, 73, -1, 30, 42, 24, 73, + -1, 31, 6, 69, 7, 42, 24, 73, -1, 30, + 31, 6, 69, 7, 42, 24, 73, -1, -1, 73, + 62, -1, 62, 1, -1, 70, 11, 70, 11, 70, + -1, 42, -1, 63, 13, 70, 13, 70, 13, 70, + -1, -1, 6, 66, 68, 7, -1, 19, 65, -1, + 22, 65, -1, 20, 6, 64, 7, -1, 42, -1, + 42, 42, -1, 42, -1, 69, 42, -1, 69, 12, + 42, -1, 42, -1, 42, 42, -1, 42, 42, 42, + -1, 42, -1, 42, 42, -1, 71, 11, 42, -1, + 18, 65, 4, 89, 5, -1, 4, 62, 5, -1, + 53, -1, 55, -1, 25, 79, 8, -1, 26, 81, + 8, -1, 42, 11, -1, -1, -1, -1, 32, 6, + 74, 42, 8, 75, 42, 8, 76, 42, 7, 73, + -1, 33, 65, 73, -1, 72, -1, 12, 82, 8, + -1, 86, 8, -1, 42, 8, -1, -1, 86, 9, + 77, 42, 8, -1, 28, 8, -1, 27, 8, -1, + 29, 8, -1, 67, 73, 78, -1, 8, -1, 21, + 73, -1, -1, 71, -1, 71, 13, 71, -1, 71, + 10, 71, -1, 71, 13, 71, 13, 71, -1, 71, + 10, 71, 10, 71, -1, 36, 13, 71, 13, 71, + -1, 36, 10, 71, 10, 71, -1, -1, 10, 42, + -1, 71, 80, -1, 71, 80, 14, 47, -1, -1, + 42, 6, 83, 88, 7, -1, 42, 6, 7, -1, + -1, 42, 6, 85, -1, 84, 88, 7, -1, 84, + 7, -1, 42, -1, -1, 68, -1, -1, 88, 10, + 87, -1, -1, 90, 89, -1, 34, 42, 11, 62, + -1, 36, 11, 62, -1, 35, 42, 11, 62, -1, + -1, 92, 91, -1, 73, -1, 98, -1, 37, 42, + 4, 62, 5, -1, 38, 4, 95, 5, -1, 39, + 4, 95, 5, -1, -1, 42, 8, 95, -1, 42, + 14, 42, 8, 95, -1, 95, 1, -1, 47, -1, + 47, 13, 64, -1, 96, 8, -1, 97, 96, 8, + -1, 97, 1, -1, 40, 4, 97, 5, -1, 40, + 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, 361, 362, - 367, 375, 376, 380, 386, 395, 398, 399, 402, 405, - 408, 409, 410, 408, 416, 420, 421, 422, 423, 426, - 426, 459, 460, 461, 462, 466, 469, 470, 473, 474, - 477, 480, 484, 488, 492, 498, 499, 503, 506, 512, - 512, 517, 525, 525, 536, 543, 546, 547, 550, 551, - 554, 557, 558, 561, 565, 569, 575, 576, 579, 580, - 581, 587, 592, 597, 598, 599, 601, 604, 605, 612, - 613, 614, 617, 620 + 0, 186, 186, 189, 190, 191, 194, 195, 196, 197, + 200, 201, 204, 219, 220, 223, 229, 235, 236, 237, + 240, 240, 246, 246, 253, 254, 255, 256, 259, 260, + 261, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 275, 280, 284, 289, 294, 304, 305, 306, 312, 317, + 321, 329, 329, 333, 336, 339, 350, 351, 358, 359, + 363, 369, 370, 375, 383, 384, 388, 394, 403, 406, + 407, 408, 411, 414, 417, 418, 419, 417, 425, 429, + 430, 431, 432, 435, 435, 468, 469, 470, 471, 475, + 478, 479, 482, 483, 486, 489, 493, 497, 501, 507, + 508, 512, 515, 521, 521, 526, 534, 534, 545, 552, + 555, 556, 559, 560, 563, 566, 567, 570, 574, 578, + 584, 585, 588, 589, 590, 596, 601, 606, 607, 608, + 610, 613, 614, 621, 622, 623, 626, 629 }; #endif @@ -645,17 +648,18 @@ static const char *const yytname[] = "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_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES", "KW_LOCAL", "word", + "$accept", "file", "objects", "object", "context_name", "context", + "opt_abstract", "macro", "globals", "global_statements", "assignment", + "@1", "local_assignment", "@2", "arglist", "elements", "element", + "ignorepat", "extension", "statements", "timerange", "timespec", + "test_expr", "@3", "if_like_head", "word_list", "hint_word", + "word3_list", "goto_word", "switch_statement", "statement", "@4", "@5", + "@6", "@7", "opt_else", "target", "opt_pri", "jumptarget", "macro_call", + "@8", "application_call_head", "@9", "application_call", "opt_word", + "eval_arglist", "case_statements", "case_statement", "macro_statements", + "macro_statement", "switches", "eswitches", "switchlist", + "included_entry", "includeslist", "includes", 0 }; #endif @@ -668,27 +672,27 @@ 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, 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, 50, 51, 52, 52, 52, + 54, 53, 56, 55, 57, 57, 57, 57, 58, 58, + 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 60, 61, 61, 61, 61, 62, 62, 62, 63, 63, + 64, 66, 65, 67, 67, 67, 68, 68, 69, 69, + 69, 70, 70, 70, 71, 71, 71, 72, 73, 73, + 73, 73, 73, 73, 74, 75, 76, 73, 73, 73, + 73, 73, 73, 77, 73, 73, 73, 73, 73, 73, + 78, 78, 79, 79, 79, 79, 79, 79, 79, 80, + 80, 81, 81, 83, 82, 82, 85, 84, 86, 86, + 87, 87, 88, 88, 88, 89, 89, 90, 90, 90, + 91, 91, 92, 92, 92, 93, 94, 95, 95, 95, + 95, 96, 96, 97, 97, 97, 98, 98 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -696,18 +700,18 @@ 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, 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 + 0, 5, 0, 6, 0, 1, 3, 2, 0, 2, + 2, 1, 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, 1, 2, 3, 1, 2, 3, 5, 3, 1, + 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 @@ -716,206 +720,199 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 14, 9, 0, 0, 13, 0, 0, 3, 6, 0, - 7, 8, 0, 17, 1, 5, 4, 0, 22, 0, - 0, 17, 11, 10, 0, 23, 0, 20, 19, 16, - 0, 26, 25, 0, 0, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 34, 0, 26, 33, 29, 31, - 32, 30, 116, 24, 0, 0, 0, 0, 0, 123, - 123, 0, 35, 0, 28, 12, 0, 42, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 0, 75, 118, 109, 0, 0, - 116, 119, 21, 0, 0, 0, 55, 0, 0, 0, - 0, 133, 127, 0, 0, 38, 0, 42, 0, 0, - 48, 0, 50, 0, 51, 0, 61, 88, 0, 95, - 0, 82, 81, 83, 70, 0, 0, 102, 78, 69, - 87, 105, 53, 108, 0, 77, 79, 15, 117, 37, - 0, 39, 0, 0, 56, 123, 0, 126, 121, 122, - 0, 129, 131, 132, 0, 44, 65, 0, 99, 76, - 0, 111, 46, 0, 0, 0, 0, 0, 62, 0, - 0, 0, 67, 0, 97, 68, 0, 74, 42, 103, - 0, 84, 54, 104, 107, 0, 0, 0, 57, 0, - 0, 128, 130, 101, 109, 0, 0, 0, 0, 0, - 111, 59, 0, 52, 0, 0, 0, 90, 63, 89, - 96, 0, 0, 0, 86, 106, 110, 0, 0, 0, - 123, 0, 49, 0, 0, 42, 64, 112, 60, 58, - 0, 0, 0, 0, 0, 0, 98, 71, 120, 80, - 0, 40, 0, 100, 42, 42, 0, 0, 0, 94, - 93, 92, 91, 0, 41, 0, 0, 0, 45, 0, - 0, 72, 47, 0, 0, 0, 73 + 7, 8, 0, 17, 1, 5, 4, 0, 24, 0, + 0, 17, 11, 10, 0, 25, 0, 20, 19, 16, + 0, 28, 27, 0, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 0, 0, 36, 37, 0, 28, 35, + 31, 33, 34, 32, 120, 26, 0, 0, 0, 0, + 0, 127, 127, 0, 0, 38, 0, 30, 12, 0, + 45, 89, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 70, 0, 79, + 122, 113, 0, 0, 120, 123, 21, 0, 0, 0, + 58, 0, 0, 0, 0, 137, 131, 0, 0, 22, + 41, 0, 45, 0, 0, 51, 0, 53, 0, 54, + 0, 64, 92, 0, 99, 0, 86, 85, 87, 74, + 0, 0, 106, 82, 73, 91, 109, 56, 112, 0, + 81, 83, 15, 121, 40, 0, 42, 0, 0, 59, + 127, 0, 130, 125, 126, 0, 133, 135, 136, 0, + 0, 47, 68, 0, 103, 80, 0, 115, 49, 0, + 0, 0, 0, 0, 65, 0, 0, 0, 71, 0, + 101, 72, 0, 78, 45, 107, 0, 88, 57, 108, + 111, 0, 0, 0, 60, 0, 0, 132, 134, 0, + 105, 113, 0, 0, 0, 0, 0, 115, 62, 0, + 55, 0, 0, 0, 94, 66, 93, 100, 0, 0, + 0, 90, 110, 114, 0, 0, 0, 127, 23, 0, + 52, 0, 0, 45, 67, 116, 63, 61, 0, 0, + 0, 0, 0, 0, 102, 75, 124, 84, 0, 43, + 0, 104, 45, 45, 0, 0, 0, 98, 97, 96, + 95, 0, 44, 0, 0, 0, 48, 0, 0, 76, + 50, 0, 0, 0, 77 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 5, 6, 7, 102, 8, 9, 10, 11, 20, - 83, 35, 26, 45, 46, 47, 48, 106, 163, 164, - 111, 160, 84, 133, 97, 165, 117, 85, 107, 176, - 253, 263, 185, 181, 118, 174, 120, 109, 194, 87, - 179, 88, 216, 134, 199, 200, 89, 90, 49, 50, - 99, 103, 104, 51 + -1, 5, 6, 7, 106, 8, 9, 10, 11, 20, + 86, 35, 87, 160, 26, 47, 48, 49, 50, 111, + 169, 170, 116, 166, 88, 138, 101, 171, 122, 89, + 112, 182, 261, 271, 191, 187, 123, 180, 125, 114, + 201, 91, 185, 92, 223, 139, 206, 207, 93, 94, + 51, 52, 103, 107, 108, 53 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -198 +#define YYPACT_NINF -206 static const yytype_int16 yypact[] = { - 91, -198, -25, 14, -198, 37, 69, -198, -198, 65, - -198, -198, 55, 78, -198, -198, -198, 26, 107, 140, - 75, 78, -198, -198, 74, -198, 23, -198, -198, -198, - 81, 138, -198, 152, 130, 133, -198, 159, -14, 184, - 187, 201, 205, 12, -198, 116, 138, -198, -198, -198, - -198, -198, 83, -198, 202, 146, 206, 191, 170, 173, - 173, 3, -198, 125, -198, -198, 126, 125, -198, 175, - 211, 211, 212, 211, 77, 178, 213, 214, 215, 218, - 211, 185, 164, -198, 125, -198, -198, 7, 117, 220, - 83, -198, -198, 219, 170, 125, -198, 8, 20, 129, - 131, -198, 207, 221, 5, -198, 134, 125, 222, 223, - -198, 226, -198, 192, -198, 87, 194, 183, 224, 154, - 228, -198, -198, -198, -198, 125, 230, -198, -198, -198, - 216, -198, 198, -198, 182, -198, -198, -198, -198, -198, - 33, -198, 199, 200, -198, 173, 203, -198, -198, -198, - 192, -198, -198, -198, 234, -198, -198, 18, 231, -198, - 204, 167, 1, 233, 236, 237, 178, 178, -198, 178, - 208, 178, -198, 209, 238, -198, 210, -198, 125, -198, - 125, -198, -198, -198, 217, 225, 227, 229, -198, 179, - 239, -198, -198, -198, 204, 247, 232, 235, 244, 251, - 167, 240, 241, -198, 241, 188, 127, 197, -198, 193, - -198, 26, 249, 180, -198, -198, -198, 252, 243, 125, - 173, 190, -198, 248, 250, 125, -198, -198, -198, 242, - 256, 253, 178, 178, 178, 178, -198, -198, -198, -198, - 125, -198, 181, -198, 125, 125, 21, 241, 241, 254, - 254, 254, 254, 245, -198, 24, 30, 257, -198, 255, - 241, -198, -198, 246, 264, 125, -198 + 139, -206, -4, 42, -206, 56, 170, -206, -206, 66, + -206, -206, 137, 46, -206, -206, -206, -6, 60, 65, + 17, 46, -206, -206, 107, -206, 14, -206, -206, -206, + 34, 119, -206, 159, 127, 133, -206, 166, -14, 191, + 197, 208, 209, 172, 111, -206, -206, 82, 119, -206, + -206, -206, -206, -206, 53, -206, 207, 174, 211, 194, + 180, 181, 181, 5, 212, -206, 96, -206, -206, 102, + 96, -206, 183, 214, 214, 218, 214, 28, 184, 219, + 220, 221, 224, 214, 190, 168, -206, -206, 96, -206, + -206, 13, 173, 226, 53, -206, -206, 225, 180, 96, + -206, 20, 84, 104, 112, -206, 222, 228, 6, -206, + -206, 129, 96, 231, 230, -206, 235, -206, 192, -206, + 143, 199, 178, 232, 196, 234, -206, -206, -206, -206, + 96, 239, -206, -206, -206, 223, -206, 203, -206, 185, + -206, -206, -206, -206, -206, 77, -206, 204, 205, -206, + 181, 206, -206, -206, -206, 192, -206, -206, -206, 241, + 210, -206, -206, 18, 243, -206, 213, 169, 2, 238, + 246, 245, 184, 184, -206, 184, 215, 184, -206, 216, + 240, -206, 217, -206, 96, -206, 96, -206, -206, -206, + 227, 229, 233, 236, -206, 147, 253, -206, -206, 254, + -206, 213, 256, 237, 242, 255, 259, 169, 244, 247, + -206, 247, 198, 120, 200, -206, 187, -206, -6, 257, + 179, -206, -206, -206, 260, 248, 96, 181, -206, 189, + -206, 262, 263, 96, -206, -206, -206, 249, 264, 265, + 184, 184, 184, 184, -206, -206, -206, -206, 96, -206, + 182, -206, 96, 96, 24, 247, 247, 267, 267, 267, + 267, 250, -206, 32, 105, 268, -206, 272, 247, -206, + -206, 251, 275, 96, -206 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -198, -198, -198, 266, -16, -198, -198, -198, -198, 258, - 58, -198, -198, 259, -198, -198, -198, -103, -198, 112, - 10, -198, -198, 114, 186, -197, -73, -198, -52, -198, - -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, - -198, -198, -198, 84, 85, -198, 260, -198, -198, -198, - -57, 171, -198, -43 + -206, -206, -206, 261, -16, -206, -206, -206, -206, 266, + -5, -206, -17, -206, -206, 252, -206, -206, -206, -107, + -206, 115, 68, -206, -206, 117, 201, -205, -76, -206, + -54, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -206, 87, 78, -206, 202, -206, + -206, -206, -59, 186, -206, -45 }; /* 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 -126 +#define YYTABLE_NINF -130 static const yytype_int16 yytable[] = { - 86, 24, 119, 100, 157, 230, 152, 231, 101, 91, - 153, 105, -58, 62, 131, 142, 12, 56, 13, 155, - 143, 27, 155, -43, 32, 155, -114, 57, 145, -113, - 33, 155, 130, 34, 146, -115, 63, 14, 86, 22, - 186, 22, 201, 141, 23, 143, 23, 91, 132, 144, - 257, 258, -43, -43, -43, -114, -114, -114, -113, -113, - -113, 18, 22, 262, -115, -115, -115, 23, 17, -2, - 15, 21, -14, 177, 144, 213, 28, 1, 31, 21, - 29, 112, 28, 114, 2, 3, -18, 67, 189, 44, - 125, 68, 4, 205, 206, 69, 207, 166, 209, 1, - 167, 70, 71, 72, 44, 73, 2, 3, 74, 75, - 76, 77, 78, 115, 4, 79, 80, 64, 116, 19, - 81, 65, 246, 42, 82, 135, 136, 64, 214, 67, - 147, -27, 147, 68, 148, 155, 149, 69, 170, 156, - 233, 255, 256, 70, 71, 72, 36, 73, 25, 27, - 74, 75, 76, 77, 78, 37, 52, 79, 80, 249, - 250, 251, 252, 242, 173, 170, 82, 241, 38, 39, - 127, 53, 128, 27, 54, 129, 40, 41, 42, 43, - 147, 155, 147, 55, -124, 238, -125, 93, 254, 183, - 58, 59, 184, 169, 170, 236, 171, 243, 232, 170, - 184, 196, 197, 198, 170, 60, 235, 234, 170, 61, - 92, 96, 94, 266, 98, 95, 108, 110, 113, 116, - 150, 121, 122, 123, 124, 137, 126, 139, 158, 151, - 161, 159, 172, 162, 178, 168, 175, 180, 193, 182, - 187, 188, 192, 203, 190, 132, 202, 220, 204, 208, - 210, 212, 211, 219, 222, 225, 226, 237, 215, 244, - 239, 245, 191, 261, 248, 170, 217, 240, 218, 247, - 260, 265, 16, 223, 195, 154, 224, 0, 221, 30, - 140, 228, 229, 201, 0, 227, 259, 264, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138 + 90, 24, 124, 104, 238, 163, 239, 157, 21, 95, + 105, 158, 110, -61, 46, 32, 21, 58, 28, 161, + 136, 33, 29, -46, 34, 161, 45, 147, 59, -118, + 22, 46, 148, 161, 135, 28, 23, -117, 12, -18, + 90, 22, 22, 45, 208, 146, 13, 23, 23, 95, + 265, 266, -46, -46, -46, 137, 14, 70, -118, -118, + -118, 71, 149, 270, 120, 72, -117, -117, -117, 17, + 121, 73, 74, 75, 27, 76, 183, 220, 77, 78, + 79, 80, 81, 67, 192, 82, 83, 68, 19, 148, + 84, 195, 150, 42, 43, 85, 212, 213, 151, 214, + 70, 216, 25, 67, 71, 152, 161, -29, 72, 153, + -119, 31, 65, 152, 73, 74, 75, 154, 76, 149, + 27, 77, 78, 79, 80, 81, 254, 36, 82, 83, + 161, 176, 221, 241, 162, 66, 37, 43, 85, -119, + -119, -119, 117, 18, 119, 263, 264, 1, 152, 38, + 39, 130, -128, 172, 2, 3, 173, 40, 41, 42, + 43, 44, 4, 54, 257, 258, 259, 260, 250, 55, + -2, 15, 249, -14, 132, 56, 133, 27, 1, 134, + 161, 140, 141, 152, 246, 2, 3, -129, 175, 176, + 57, 177, 189, 4, 262, 190, 251, 60, 176, 190, + 243, 61, 244, 203, 204, 205, 179, 176, 240, 176, + 242, 176, 62, 63, 64, 96, 97, 98, 99, 274, + 115, 109, 100, 102, 118, 113, 121, 126, 127, 128, + 129, 142, 131, 144, 168, 155, 156, 164, 165, 167, + 178, 174, 181, 184, 186, 188, 193, 194, 196, 198, + 200, 209, 199, 210, 218, 137, 211, 215, 217, 219, + 226, 227, 228, 230, 234, 245, 233, 16, 247, 222, + 197, 224, 248, 252, 253, 225, 256, 255, 176, 231, + 269, 268, 273, 202, 232, 235, 236, 30, 229, 237, + 0, 208, 267, 272, 159, 0, 143, 0, 0, 145, + 69 }; static const yytype_int16 yycheck[] = { - 52, 17, 75, 60, 107, 202, 1, 204, 5, 52, - 5, 63, 11, 1, 7, 7, 41, 31, 4, 1, - 12, 9, 1, 5, 1, 1, 5, 41, 8, 5, - 7, 1, 84, 10, 14, 5, 24, 0, 90, 36, - 7, 36, 41, 95, 41, 12, 41, 90, 41, 41, - 247, 248, 34, 35, 36, 34, 35, 36, 34, 35, - 36, 6, 36, 260, 34, 35, 36, 41, 3, 0, - 1, 13, 3, 125, 41, 178, 1, 8, 4, 21, - 5, 71, 1, 73, 15, 16, 5, 4, 145, 31, - 80, 8, 23, 166, 167, 12, 169, 10, 171, 8, - 13, 18, 19, 20, 46, 22, 15, 16, 25, 26, - 27, 28, 29, 36, 23, 32, 33, 1, 41, 41, - 37, 5, 225, 40, 41, 8, 9, 1, 180, 4, - 1, 5, 1, 8, 5, 1, 5, 12, 11, 5, - 13, 244, 245, 18, 19, 20, 8, 22, 41, 9, - 25, 26, 27, 28, 29, 17, 4, 32, 33, 232, - 233, 234, 235, 220, 10, 11, 41, 219, 30, 31, - 6, 41, 8, 9, 41, 11, 38, 39, 40, 41, - 1, 1, 1, 24, 5, 5, 5, 41, 240, 7, - 6, 4, 10, 10, 11, 211, 13, 7, 10, 11, - 10, 34, 35, 36, 11, 4, 13, 10, 11, 4, - 8, 41, 6, 265, 41, 24, 41, 6, 6, 41, - 13, 8, 8, 8, 6, 5, 41, 8, 6, 8, - 4, 8, 8, 41, 4, 41, 8, 21, 7, 41, - 41, 41, 8, 7, 41, 41, 13, 8, 11, 41, - 41, 41, 14, 24, 7, 11, 5, 8, 41, 11, - 8, 11, 150, 8, 11, 11, 41, 24, 41, 13, - 13, 7, 6, 41, 160, 104, 41, -1, 194, 21, - 94, 41, 41, 41, -1, 200, 41, 41, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 46, -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, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90 + 54, 17, 78, 62, 209, 112, 211, 1, 13, 54, + 5, 5, 66, 11, 31, 1, 21, 31, 1, 1, + 7, 7, 5, 5, 10, 1, 31, 7, 42, 5, + 36, 48, 12, 1, 88, 1, 42, 5, 42, 5, + 94, 36, 36, 48, 42, 99, 4, 42, 42, 94, + 255, 256, 34, 35, 36, 42, 0, 4, 34, 35, + 36, 8, 42, 268, 36, 12, 34, 35, 36, 3, + 42, 18, 19, 20, 9, 22, 130, 184, 25, 26, + 27, 28, 29, 1, 7, 32, 33, 5, 42, 12, + 37, 150, 8, 40, 41, 42, 172, 173, 14, 175, + 4, 177, 42, 1, 8, 1, 1, 5, 12, 5, + 5, 4, 1, 1, 18, 19, 20, 5, 22, 42, + 9, 25, 26, 27, 28, 29, 233, 8, 32, 33, + 1, 11, 186, 13, 5, 24, 17, 41, 42, 34, + 35, 36, 74, 6, 76, 252, 253, 8, 1, 30, + 31, 83, 5, 10, 15, 16, 13, 38, 39, 40, + 41, 42, 23, 4, 240, 241, 242, 243, 227, 42, + 0, 1, 226, 3, 6, 42, 8, 9, 8, 11, + 1, 8, 9, 1, 5, 15, 16, 5, 10, 11, + 24, 13, 7, 23, 248, 10, 7, 6, 11, 10, + 13, 4, 218, 34, 35, 36, 10, 11, 10, 11, + 10, 11, 4, 4, 42, 8, 42, 6, 24, 273, + 6, 9, 42, 42, 6, 42, 42, 8, 8, 8, + 6, 5, 42, 8, 42, 13, 8, 6, 8, 4, + 8, 42, 8, 4, 21, 42, 42, 42, 42, 8, + 7, 13, 42, 7, 14, 42, 11, 42, 42, 42, + 24, 8, 8, 7, 5, 8, 11, 6, 8, 42, + 155, 42, 24, 11, 11, 42, 11, 13, 11, 42, + 8, 13, 7, 166, 42, 207, 42, 21, 201, 42, + -1, 42, 42, 42, 108, -1, 94, -1, -1, 98, + 48 }; /* 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, 41, - 51, 52, 36, 41, 46, 41, 54, 9, 1, 5, - 51, 4, 1, 7, 10, 53, 8, 17, 30, 31, - 38, 39, 40, 41, 52, 55, 56, 57, 58, 90, - 91, 95, 4, 41, 41, 24, 31, 41, 6, 4, - 4, 4, 1, 24, 1, 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, 41, 92, - 92, 5, 46, 93, 94, 70, 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, 12, 41, 8, 14, 1, 5, 5, - 13, 8, 1, 5, 93, 1, 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, 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, 44, 45, 46, 48, 49, + 50, 51, 42, 4, 0, 1, 46, 3, 6, 42, + 52, 53, 36, 42, 47, 42, 57, 9, 1, 5, + 52, 4, 1, 7, 10, 54, 8, 17, 30, 31, + 38, 39, 40, 41, 42, 53, 55, 58, 59, 60, + 61, 93, 94, 98, 4, 42, 42, 24, 31, 42, + 6, 4, 4, 4, 42, 1, 24, 1, 5, 58, + 4, 8, 12, 18, 19, 20, 22, 25, 26, 27, + 28, 29, 32, 33, 37, 42, 53, 55, 67, 72, + 73, 84, 86, 91, 92, 98, 8, 42, 6, 24, + 42, 69, 42, 95, 95, 5, 47, 96, 97, 9, + 73, 62, 73, 42, 82, 6, 65, 65, 6, 65, + 36, 42, 71, 79, 71, 81, 8, 8, 8, 6, + 65, 42, 6, 8, 11, 73, 7, 42, 68, 88, + 8, 9, 5, 91, 8, 69, 73, 7, 12, 42, + 8, 14, 1, 5, 5, 13, 8, 1, 5, 96, + 56, 1, 5, 62, 6, 8, 66, 4, 42, 63, + 64, 70, 10, 13, 42, 10, 11, 13, 8, 10, + 80, 8, 74, 73, 4, 85, 21, 78, 42, 7, + 10, 77, 7, 42, 42, 95, 42, 64, 8, 42, + 7, 83, 68, 34, 35, 36, 89, 90, 42, 13, + 7, 11, 71, 71, 71, 42, 71, 42, 14, 42, + 62, 73, 42, 87, 42, 42, 24, 8, 8, 88, + 7, 42, 42, 11, 5, 89, 42, 42, 70, 70, + 10, 13, 10, 13, 47, 8, 5, 8, 24, 73, + 95, 7, 11, 11, 62, 13, 11, 71, 71, 71, + 71, 75, 73, 62, 62, 70, 70, 42, 13, 8, + 70, 76, 42, 7, 73 }; #define yyerrok (yyerrstatus = 0) @@ -1437,322 +1434,330 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) switch (yytype) { - case 41: /* "word" */ -#line 177 "ael.y" + case 42: /* "word" */ +#line 178 "ael.y" { free((yyvaluep->str));}; -#line 1444 "ael.tab.c" +#line 1441 "ael.tab.c" break; - case 44: /* "objects" */ -#line 164 "ael.y" + case 45: /* "objects" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1452 "ael.tab.c" +#line 1449 "ael.tab.c" break; - case 45: /* "object" */ -#line 164 "ael.y" + case 46: /* "object" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1460 "ael.tab.c" +#line 1457 "ael.tab.c" break; - case 46: /* "context_name" */ -#line 177 "ael.y" + case 47: /* "context_name" */ +#line 178 "ael.y" { free((yyvaluep->str));}; -#line 1465 "ael.tab.c" +#line 1462 "ael.tab.c" break; - case 47: /* "context" */ -#line 164 "ael.y" + case 48: /* "context" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1473 "ael.tab.c" +#line 1470 "ael.tab.c" break; - case 49: /* "macro" */ -#line 164 "ael.y" + case 50: /* "macro" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1481 "ael.tab.c" +#line 1478 "ael.tab.c" break; - case 50: /* "globals" */ -#line 164 "ael.y" + case 51: /* "globals" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1489 "ael.tab.c" +#line 1486 "ael.tab.c" break; - case 51: /* "global_statements" */ -#line 164 "ael.y" + case 52: /* "global_statements" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1497 "ael.tab.c" +#line 1494 "ael.tab.c" break; - case 52: /* "assignment" */ -#line 164 "ael.y" + case 53: /* "assignment" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1505 "ael.tab.c" +#line 1502 "ael.tab.c" break; - case 54: /* "arglist" */ -#line 164 "ael.y" + case 55: /* "local_assignment" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1513 "ael.tab.c" +#line 1510 "ael.tab.c" break; - case 55: /* "elements" */ -#line 164 "ael.y" + case 57: /* "arglist" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1521 "ael.tab.c" +#line 1518 "ael.tab.c" break; - case 56: /* "element" */ -#line 164 "ael.y" + case 58: /* "elements" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1529 "ael.tab.c" +#line 1526 "ael.tab.c" break; - case 57: /* "ignorepat" */ -#line 164 "ael.y" + case 59: /* "element" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1537 "ael.tab.c" +#line 1534 "ael.tab.c" break; - case 58: /* "extension" */ -#line 164 "ael.y" + case 60: /* "ignorepat" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1545 "ael.tab.c" +#line 1542 "ael.tab.c" break; - case 59: /* "statements" */ -#line 164 "ael.y" + case 61: /* "extension" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1553 "ael.tab.c" +#line 1550 "ael.tab.c" break; - case 60: /* "timerange" */ -#line 177 "ael.y" - { free((yyvaluep->str));}; -#line 1558 "ael.tab.c" - break; - case 61: /* "timespec" */ -#line 164 "ael.y" + case 62: /* "statements" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1566 "ael.tab.c" +#line 1558 "ael.tab.c" break; - case 62: /* "test_expr" */ -#line 177 "ael.y" + case 63: /* "timerange" */ +#line 178 "ael.y" { free((yyvaluep->str));}; -#line 1571 "ael.tab.c" +#line 1563 "ael.tab.c" break; - case 64: /* "if_like_head" */ -#line 164 "ael.y" + case 64: /* "timespec" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1579 "ael.tab.c" +#line 1571 "ael.tab.c" break; - case 65: /* "word_list" */ -#line 177 "ael.y" + case 65: /* "test_expr" */ +#line 178 "ael.y" { free((yyvaluep->str));}; +#line 1576 "ael.tab.c" + break; + case 67: /* "if_like_head" */ +#line 165 "ael.y" + { + destroy_pval((yyvaluep->pval)); + prev_word=0; + }; #line 1584 "ael.tab.c" break; - case 67: /* "word3_list" */ -#line 177 "ael.y" + case 68: /* "word_list" */ +#line 178 "ael.y" { free((yyvaluep->str));}; #line 1589 "ael.tab.c" break; - case 68: /* "goto_word" */ -#line 177 "ael.y" + case 70: /* "word3_list" */ +#line 178 "ael.y" { free((yyvaluep->str));}; #line 1594 "ael.tab.c" break; - case 69: /* "switch_statement" */ -#line 164 "ael.y" + case 71: /* "goto_word" */ +#line 178 "ael.y" + { free((yyvaluep->str));}; +#line 1599 "ael.tab.c" + break; + case 72: /* "switch_statement" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1602 "ael.tab.c" +#line 1607 "ael.tab.c" break; - case 70: /* "statement" */ -#line 164 "ael.y" + case 73: /* "statement" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1610 "ael.tab.c" +#line 1615 "ael.tab.c" break; - case 75: /* "opt_else" */ -#line 164 "ael.y" + case 78: /* "opt_else" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1618 "ael.tab.c" +#line 1623 "ael.tab.c" break; - case 76: /* "target" */ -#line 164 "ael.y" + case 79: /* "target" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1626 "ael.tab.c" +#line 1631 "ael.tab.c" break; - case 77: /* "opt_pri" */ -#line 177 "ael.y" + case 80: /* "opt_pri" */ +#line 178 "ael.y" { free((yyvaluep->str));}; -#line 1631 "ael.tab.c" +#line 1636 "ael.tab.c" break; - case 78: /* "jumptarget" */ -#line 164 "ael.y" + case 81: /* "jumptarget" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1639 "ael.tab.c" +#line 1644 "ael.tab.c" break; - case 79: /* "macro_call" */ -#line 164 "ael.y" + case 82: /* "macro_call" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1647 "ael.tab.c" +#line 1652 "ael.tab.c" break; - case 81: /* "application_call_head" */ -#line 164 "ael.y" + case 84: /* "application_call_head" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1655 "ael.tab.c" +#line 1660 "ael.tab.c" break; - case 83: /* "application_call" */ -#line 164 "ael.y" + case 86: /* "application_call" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1663 "ael.tab.c" +#line 1668 "ael.tab.c" break; - case 84: /* "opt_word" */ -#line 177 "ael.y" + case 87: /* "opt_word" */ +#line 178 "ael.y" { free((yyvaluep->str));}; -#line 1668 "ael.tab.c" +#line 1673 "ael.tab.c" break; - case 85: /* "eval_arglist" */ -#line 164 "ael.y" + case 88: /* "eval_arglist" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1676 "ael.tab.c" +#line 1681 "ael.tab.c" break; - case 86: /* "case_statements" */ -#line 164 "ael.y" + case 89: /* "case_statements" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1684 "ael.tab.c" +#line 1689 "ael.tab.c" break; - case 87: /* "case_statement" */ -#line 164 "ael.y" + case 90: /* "case_statement" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1692 "ael.tab.c" +#line 1697 "ael.tab.c" break; - case 88: /* "macro_statements" */ -#line 164 "ael.y" + case 91: /* "macro_statements" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1700 "ael.tab.c" +#line 1705 "ael.tab.c" break; - case 89: /* "macro_statement" */ -#line 164 "ael.y" + case 92: /* "macro_statement" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1708 "ael.tab.c" +#line 1713 "ael.tab.c" break; - case 90: /* "switches" */ -#line 164 "ael.y" + case 93: /* "switches" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1716 "ael.tab.c" +#line 1721 "ael.tab.c" break; - case 91: /* "eswitches" */ -#line 164 "ael.y" + case 94: /* "eswitches" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1724 "ael.tab.c" +#line 1729 "ael.tab.c" break; - case 92: /* "switchlist" */ -#line 164 "ael.y" + case 95: /* "switchlist" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1732 "ael.tab.c" +#line 1737 "ael.tab.c" break; - case 93: /* "included_entry" */ -#line 164 "ael.y" + case 96: /* "included_entry" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1740 "ael.tab.c" +#line 1745 "ael.tab.c" break; - case 94: /* "includeslist" */ -#line 164 "ael.y" + case 97: /* "includeslist" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1748 "ael.tab.c" +#line 1753 "ael.tab.c" break; - case 95: /* "includes" */ -#line 164 "ael.y" + case 98: /* "includes" */ +#line 165 "ael.y" { destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1756 "ael.tab.c" +#line 1761 "ael.tab.c" break; default: @@ -2075,57 +2080,57 @@ yyreduce: switch (yyn) { case 2: -#line 185 "ael.y" +#line 186 "ael.y" { (yyval.pval) = parseio->pval = (yyvsp[(1) - (1)].pval); ;} break; case 3: -#line 188 "ael.y" +#line 189 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 4: -#line 189 "ael.y" +#line 190 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; case 5: -#line 190 "ael.y" +#line 191 "ael.y" {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; case 6: -#line 193 "ael.y" +#line 194 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 7: -#line 194 "ael.y" +#line 195 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 8: -#line 195 "ael.y" +#line 196 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 9: -#line 196 "ael.y" +#line 197 "ael.y" {(yyval.pval)=0;/* allow older docs to be read */;} break; case 10: -#line 199 "ael.y" +#line 200 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 11: -#line 200 "ael.y" +#line 201 "ael.y" { (yyval.str) = strdup("default"); ;} break; case 12: -#line 203 "ael.y" +#line 204 "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", @@ -2141,17 +2146,17 @@ yyreduce: break; case 13: -#line 218 "ael.y" +#line 219 "ael.y" { (yyval.intval) = 1; ;} break; case 14: -#line 219 "ael.y" +#line 220 "ael.y" { (yyval.intval) = 0; ;} break; case 15: -#line 222 "ael.y" +#line 223 "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); @@ -2159,7 +2164,7 @@ yyreduce: break; case 16: -#line 228 "ael.y" +#line 229 "ael.y" { (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); (yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval); @@ -2167,27 +2172,27 @@ yyreduce: break; case 17: -#line 234 "ael.y" +#line 235 "ael.y" { (yyval.pval) = NULL; ;} break; case 18: -#line 235 "ael.y" +#line 236 "ael.y" {(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; case 19: -#line 236 "ael.y" +#line 237 "ael.y" {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; case 20: -#line 239 "ael.y" +#line 240 "ael.y" { reset_semicount(parseio->scanner); ;} break; case 21: -#line 239 "ael.y" +#line 240 "ael.y" { (yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)])); (yyval.pval)->u1.str = (yyvsp[(1) - (5)].str); @@ -2196,96 +2201,114 @@ yyreduce: case 22: #line 246 "ael.y" - { (yyval.pval) = NULL; ;} + { reset_semicount(parseio->scanner); ;} break; case 23: -#line 247 "ael.y" - { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} +#line 246 "ael.y" + { + (yyval.pval) = npval2(PV_LOCALVARDEC, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)])); + (yyval.pval)->u1.str = (yyvsp[(2) - (6)].str); + (yyval.pval)->u2.val = (yyvsp[(5) - (6)].str); ;} break; case 24: -#line 248 "ael.y" - { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;} +#line 253 "ael.y" + { (yyval.pval) = NULL; ;} break; case 25: -#line 249 "ael.y" - {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} +#line 254 "ael.y" + { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} break; case 26: -#line 252 "ael.y" - {(yyval.pval)=0;;} +#line 255 "ael.y" + { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;} break; case 27: -#line 253 "ael.y" - { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} +#line 256 "ael.y" + {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; case 28: -#line 254 "ael.y" - { (yyval.pval)=(yyvsp[(1) - (2)].pval);;} +#line 259 "ael.y" + {(yyval.pval)=0;;} break; case 29: -#line 257 "ael.y" - {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} +#line 260 "ael.y" + { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; case 30: -#line 258 "ael.y" - {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} +#line 261 "ael.y" + { (yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; case 31: -#line 259 "ael.y" +#line 264 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 32: -#line 260 "ael.y" +#line 265 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 33: -#line 261 "ael.y" +#line 266 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 34: -#line 262 "ael.y" +#line 267 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 35: -#line 263 "ael.y" - {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;} +#line 268 "ael.y" + {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 36: -#line 264 "ael.y" - {(yyval.pval)=0;/* allow older docs to be read */;} +#line 269 "ael.y" + {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; case 37: -#line 267 "ael.y" +#line 270 "ael.y" + {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} + break; + + case 38: +#line 271 "ael.y" + {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;} + break; + + case 39: +#line 272 "ael.y" + {(yyval.pval)=0;/* allow older docs to be read */;} + break; + + case 40: +#line 275 "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 280 "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 284 "ael.y" { (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str); @@ -2293,8 +2316,8 @@ yyreduce: (yyval.pval)->u4.regexten=1;;} break; - case 40: -#line 281 "ael.y" + case 43: +#line 289 "ael.y" { (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)])); (yyval.pval)->u1.str = (yyvsp[(5) - (7)].str); @@ -2302,8 +2325,8 @@ yyreduce: (yyval.pval)->u3.hints = (yyvsp[(3) - (7)].str);;} break; - case 41: -#line 286 "ael.y" + case 44: +#line 294 "ael.y" { (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)])); (yyval.pval)->u1.str = (yyvsp[(6) - (8)].str); @@ -2312,23 +2335,23 @@ yyreduce: (yyval.pval)->u3.hints = (yyvsp[(4) - (8)].str);;} break; - case 42: -#line 296 "ael.y" + case 45: +#line 304 "ael.y" { (yyval.pval) = NULL; ;} break; - case 43: -#line 297 "ael.y" + case 46: +#line 305 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; - case 44: -#line 298 "ael.y" + case 47: +#line 306 "ael.y" {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; - case 45: -#line 304 "ael.y" + case 48: +#line 312 "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)); @@ -2336,13 +2359,13 @@ yyreduce: free((yyvsp[(5) - (5)].str)); ;} break; - case 46: -#line 309 "ael.y" + case 49: +#line 317 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 47: -#line 313 "ael.y" + case 50: +#line 321 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)])); (yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)])); @@ -2350,45 +2373,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 329 "ael.y" { reset_parencount(parseio->scanner); ;} break; - case 49: -#line 321 "ael.y" + case 52: +#line 329 "ael.y" { (yyval.str) = (yyvsp[(3) - (4)].str); ;} break; - case 50: -#line 325 "ael.y" + case 53: +#line 333 "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 336 "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 339 "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 350 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str);;} break; - case 54: -#line 343 "ael.y" + case 57: +#line 351 "ael.y" { asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); free((yyvsp[(1) - (2)].str)); @@ -2396,34 +2419,34 @@ yyreduce: prev_word = (yyval.str);;} break; - case 55: -#line 350 "ael.y" + case 58: +#line 358 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; - case 56: -#line 351 "ael.y" + case 59: +#line 359 "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 363 "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 58: -#line 361 "ael.y" + case 61: +#line 369 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str);;} break; - case 59: -#line 362 "ael.y" + case 62: +#line 370 "ael.y" { asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); free((yyvsp[(1) - (2)].str)); @@ -2431,8 +2454,8 @@ yyreduce: prev_word = (yyval.str);;} break; - case 60: -#line 367 "ael.y" + case 63: +#line 375 "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)); @@ -2441,85 +2464,90 @@ yyreduce: prev_word=(yyval.str);;} break; - case 61: -#line 375 "ael.y" + case 64: +#line 383 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str);;} break; - case 62: -#line 376 "ael.y" + case 65: +#line 384 "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 63: -#line 380 "ael.y" + case 66: +#line 388 "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 64: -#line 386 "ael.y" + case 67: +#line 394 "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 65: -#line 395 "ael.y" + case 68: +#line 403 "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 66: -#line 398 "ael.y" + case 69: +#line 406 "ael.y" { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;} break; - case 67: -#line 399 "ael.y" + case 70: +#line 407 "ael.y" + { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;} + break; + + case 71: +#line 408 "ael.y" { (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;} break; - case 68: -#line 402 "ael.y" + case 72: +#line 411 "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 405 "ael.y" + case 73: +#line 414 "ael.y" { (yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;} break; - case 70: -#line 408 "ael.y" + case 74: +#line 417 "ael.y" {reset_semicount(parseio->scanner);;} break; - case 71: -#line 409 "ael.y" + case 75: +#line 418 "ael.y" {reset_semicount(parseio->scanner);;} break; - case 72: -#line 410 "ael.y" + case 76: +#line 419 "ael.y" {reset_parencount(parseio->scanner);;} break; - case 73: -#line 410 "ael.y" + case 77: +#line 419 "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); @@ -2528,43 +2556,43 @@ yyreduce: (yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;} break; - case 74: -#line 416 "ael.y" + case 78: +#line 425 "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 75: -#line 420 "ael.y" + case 79: +#line 429 "ael.y" { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;} break; - case 76: -#line 421 "ael.y" + case 80: +#line 430 "ael.y" { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;} break; - case 77: -#line 422 "ael.y" + case 81: +#line 431 "ael.y" { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;} break; - case 78: -#line 423 "ael.y" + case 82: +#line 432 "ael.y" { (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;} break; - case 79: -#line 426 "ael.y" + case 83: +#line 435 "ael.y" {reset_semicount(parseio->scanner);;} break; - case 80: -#line 426 "ael.y" + case 84: +#line 435 "ael.y" { char *bufx; int tot=0; @@ -2600,127 +2628,127 @@ yyreduce: ;} break; - case 81: -#line 459 "ael.y" + case 85: +#line 468 "ael.y" { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;} break; - case 82: -#line 460 "ael.y" + case 86: +#line 469 "ael.y" { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;} break; - case 83: -#line 461 "ael.y" + case 87: +#line 470 "ael.y" { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;} break; - case 84: -#line 462 "ael.y" + case 88: +#line 471 "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 85: -#line 466 "ael.y" + case 89: +#line 475 "ael.y" { (yyval.pval)=0; ;} break; - case 86: -#line 469 "ael.y" + case 90: +#line 478 "ael.y" { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;} break; - case 87: -#line 470 "ael.y" + case 91: +#line 479 "ael.y" { (yyval.pval) = NULL ; ;} break; - case 88: -#line 473 "ael.y" + case 92: +#line 482 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} break; - case 89: -#line 474 "ael.y" + case 93: +#line 483 "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 90: -#line 477 "ael.y" + case 94: +#line 486 "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 480 "ael.y" + case 95: +#line 489 "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 92: -#line 484 "ael.y" + case 96: +#line 493 "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 97: +#line 497 "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 94: -#line 492 "ael.y" + case 98: +#line 501 "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 498 "ael.y" + case 99: +#line 507 "ael.y" { (yyval.str) = strdup("1"); ;} break; - case 96: -#line 499 "ael.y" + case 100: +#line 508 "ael.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; - case 97: -#line 503 "ael.y" + case 101: +#line 512 "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 98: -#line 506 "ael.y" + case 102: +#line 515 "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 99: -#line 512 "ael.y" + case 103: +#line 521 "ael.y" {reset_argcount(parseio->scanner);;} break; - case 100: -#line 512 "ael.y" + case 104: +#line 521 "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)])); @@ -2728,20 +2756,20 @@ yyreduce: (yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;} break; - case 101: -#line 517 "ael.y" + case 105: +#line 526 "ael.y" { (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)])); (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;} break; - case 102: -#line 525 "ael.y" + case 106: +#line 534 "ael.y" {reset_argcount(parseio->scanner);;} break; - case 103: -#line 525 "ael.y" + case 107: +#line 534 "ael.y" { if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) { (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)])); @@ -2753,8 +2781,8 @@ yyreduce: } ;} break; - case 104: -#line 536 "ael.y" + case 108: +#line 545 "ael.y" { (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)])); if( (yyval.pval)->type == PV_GOTO ) @@ -2764,179 +2792,179 @@ yyreduce: ;} break; - case 105: -#line 543 "ael.y" + case 109: +#line 552 "ael.y" { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;} break; - case 106: -#line 546 "ael.y" + case 110: +#line 555 "ael.y" { (yyval.str) = (yyvsp[(1) - (1)].str) ;} break; - case 107: -#line 547 "ael.y" + case 111: +#line 556 "ael.y" { (yyval.str) = strdup(""); ;} break; - case 108: -#line 550 "ael.y" + case 112: +#line 559 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} break; - case 109: -#line 551 "ael.y" + case 113: +#line 560 "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 110: -#line 554 "ael.y" + case 114: +#line 563 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;} break; - case 111: -#line 557 "ael.y" + case 115: +#line 566 "ael.y" { (yyval.pval) = NULL; ;} break; - case 112: -#line 558 "ael.y" + case 116: +#line 567 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; - case 113: -#line 561 "ael.y" + case 117: +#line 570 "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 114: -#line 565 "ael.y" + case 118: +#line 574 "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 115: -#line 569 "ael.y" + case 119: +#line 578 "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 116: -#line 575 "ael.y" + case 120: +#line 584 "ael.y" { (yyval.pval) = NULL; ;} break; - case 117: -#line 576 "ael.y" + case 121: +#line 585 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;} break; - case 118: -#line 579 "ael.y" + case 122: +#line 588 "ael.y" {(yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; - case 119: -#line 580 "ael.y" + case 123: +#line 589 "ael.y" { (yyval.pval)=(yyvsp[(1) - (1)].pval);;} break; - case 120: -#line 581 "ael.y" + case 124: +#line 590 "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 121: -#line 587 "ael.y" + case 125: +#line 596 "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 122: -#line 592 "ael.y" + case 126: +#line 601 "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 123: -#line 597 "ael.y" + case 127: +#line 606 "ael.y" { (yyval.pval) = NULL; ;} break; - case 124: -#line 598 "ael.y" + case 128: +#line 607 "ael.y" { (yyval.pval) = linku1(nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)])), (yyvsp[(3) - (3)].pval)); ;} break; - case 125: -#line 599 "ael.y" + case 129: +#line 608 "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 126: -#line 601 "ael.y" + case 130: +#line 610 "ael.y" {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; - case 127: -#line 604 "ael.y" + case 131: +#line 613 "ael.y" { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;} break; - case 128: -#line 605 "ael.y" + case 132: +#line 614 "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 129: -#line 612 "ael.y" + case 133: +#line 621 "ael.y" { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;} break; - case 130: -#line 613 "ael.y" + case 134: +#line 622 "ael.y" { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;} break; - case 131: -#line 614 "ael.y" + case 135: +#line 623 "ael.y" {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} break; - case 132: -#line 617 "ael.y" + case 136: +#line 626 "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 133: -#line 620 "ael.y" + case 137: +#line 629 "ael.y" { (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;} break; /* Line 1270 of yacc.c. */ -#line 2940 "ael.tab.c" +#line 2968 "ael.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3155,7 +3183,7 @@ yyreturn: } -#line 625 "ael.y" +#line 634 "ael.y" static char *token_equivs1[] = diff --git a/pbx/ael/ael.tab.h b/pbx/ael/ael.tab.h index c908e0279..4036c07f7 100644 --- a/pbx/ael/ael.tab.h +++ b/pbx/ael/ael.tab.h @@ -67,7 +67,8 @@ KW_SWITCHES = 293, KW_ESWITCHES = 294, KW_INCLUDES = 295, - word = 296 + KW_LOCAL = 296, + word = 297 }; #endif /* Tokens. */ @@ -109,7 +110,8 @@ #define KW_SWITCHES 293 #define KW_ESWITCHES 294 #define KW_INCLUDES 295 -#define word 296 +#define KW_LOCAL 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 9c332dc03..9aee66687 100644 --- a/pbx/ael/ael.y +++ b/pbx/ael/ael.y @@ -83,7 +83,7 @@ static pval *update_last(pval *, YYLTYPE *); %token KW_MACRO KW_GLOBALS KW_IGNOREPAT KW_SWITCH KW_IF KW_IFTIME KW_ELSE KW_RANDOM KW_ABSTRACT %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 +%token KW_INCLUDES KW_LOCAL %right BAR COMMA @@ -114,6 +114,7 @@ static pval *update_last(pval *, YYLTYPE *); %type elements %type arglist %type assignment +%type local_assignment %type global_statements %type globals %type macro @@ -169,7 +170,7 @@ static pval *update_last(pval *, YYLTYPE *); eval_arglist application_call application_call_head macro_call target jumptarget statement switch_statement if_like_head statements extension - ignorepat element elements arglist assignment + ignorepat element elements arglist assignment local_assignment global_statements globals macro context object objects opt_else timespec included_entry @@ -242,6 +243,12 @@ assignment : word EQ { reset_semicount(parseio->scanner); } word SEMI { $$->u2.val = $4; } ; +local_assignment : KW_LOCAL word EQ { reset_semicount(parseio->scanner); } word SEMI { + $$ = npval2(PV_LOCALVARDEC, &@1, &@6); + $$->u1.str = $2; + $$->u2.val = $5; } + ; + /* XXX this matches missing arguments, is this desired ? */ arglist : /* empty */ { $$ = NULL; } | word { $$ = nword($1, &@1); } @@ -260,6 +267,7 @@ element : extension {$$=$1;} | eswitches {$$=$1;} | ignorepat {$$=$1;} | assignment {$$=$1;} + | local_assignment {$$=$1;} | word error {free($1); $$=0;} | SEMI {$$=0;/* allow older docs to be read */} ; @@ -396,6 +404,7 @@ statement : LC statements RC { $$ = npval2(PV_STATEMENTBLOCK, &@1, &@3); $$->u1.list = $2; set_dads($$,$2);} | assignment { $$ = $1; } + | local_assignment { $$ = $1; } | KW_GOTO target SEMI { $$ = npval2(PV_GOTO, &@1, &@3); $$->u1.list = $2;} diff --git a/pbx/ael/ael_lex.c b/pbx/ael/ael_lex.c index 80adc6f8d..d277fbc42 100644 --- a/pbx/ael/ael_lex.c +++ b/pbx/ael/ael_lex.c @@ -230,8 +230,8 @@ struct yy_buffer_state */ int yy_at_bol; - int yy_bs_lineno; /*!< The line count. */ - int yy_bs_column; /*!< The column count. */ + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. @@ -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, 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, 21, 50, 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, 32, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 34, 50, 50, 50, 26, + 50, 50, 27, 25, 50, 50, 50, 28, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 30, 37, + 50, 50, 50, 50, 50, 50, 50, 50, 18, 16, + 50, 50, 50, 50, 50, 33, 50, 50, 50, 50, + + 50, 50, 50, 22, 50, 50, 50, 23, 50, 29, + 20, 50, 50, 14, 50, 35, 50, 17, 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, - 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 + 314, 985, 311, 985, 308, 0, 280, 985, 985, 985, + 985, 42, 985, 985, 293, 985, 285, 269, 31, 280, + 32, 269, 33, 274, 45, 262, 266, 279, 278, 48, + 257, 269, 985, 985, 985, 73, 985, 985, 89, 985, + 237, 985, 985, 985, 276, 315, 985, 985, 985, 354, + 985, 292, 985, 66, 292, 289, 0, 256, 0, 401, + 985, 250, 262, 64, 252, 259, 243, 238, 241, 242, + 237, 241, 257, 239, 249, 238, 247, 246, 229, 233, + 47, 237, 236, 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, 263, + 985, 103, 985, 104, 985, 240, 0, 876, 223, 240, + 235, 236, 219, 233, 228, 223, 0, 229, 214, 209, + 218, 211, 210, 204, 218, 201, 198, 212, 210, 194, + 194, 200, 199, 193, 198, 0, 200, 100, 187, 0, + 186, 202, 0, 0, 189, 183, 175, 0, 182, 178, + 187, 176, 168, 172, 184, 178, 158, 176, 0, 0, + 151, 158, 159, 167, 154, 156, 151, 151, 0, 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 } ; -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, 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, 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, 37, 38, 16, 16, 39, 40, 41, + 16, 16, 42, 16, 43, 44, 45, 47, 48, 63, + 47, 48, 69, 74, 70, 237, 63, 64, 47, 49, + 50, 47, 49, 50, 64, 77, 80, 75, 123, 81, + 90, 78, 83, 84, 91, 149, 124, 232, 125, 232, + 85, 95, 96, 47, 234, 50, 47, 150, 50, 52, + 53, 233, 95, 97, 98, 54, 231, 99, 100, 230, + + 52, 55, 53, 131, 132, 123, 123, 229, 99, 97, + 101, 95, 96, 238, 124, 238, 238, 95, 228, 98, + 227, 226, 95, 97, 98, 52, 181, 53, 52, 53, + 182, 225, 224, 99, 54, 101, 223, 222, 221, 52, + 55, 53, 220, 219, 218, 99, 100, 95, 217, 98, + 95, 96, 216, 215, 214, 213, 99, 97, 101, 212, + 211, 95, 97, 98, 52, 210, 53, 57, 58, 232, + 59, 232, 209, 235, 208, 207, 206, 205, 57, 60, + 61, 99, 204, 101, 95, 96, 95, 203, 98, 95, + 96, 202, 201, 200, 199, 95, 97, 98, 198, 197, + + 95, 97, 98, 57, 196, 61, 57, 58, 195, 59, + 194, 193, 192, 191, 190, 189, 188, 57, 60, 61, + 95, 187, 98, 186, 185, 95, 184, 98, 183, 180, + 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, + 169, 168, 57, 167, 61, 103, 104, 166, 165, 164, + 163, 105, 162, 161, 160, 159, 103, 106, 104, 158, + 157, 156, 155, 154, 153, 121, 152, 151, 148, 147, + 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, + 136, 103, 135, 104, 107, 108, 134, 133, 130, 129, + 109, 126, 66, 65, 121, 107, 106, 108, 93, 92, + + 89, 88, 87, 86, 82, 79, 76, 73, 72, 71, + 68, 66, 65, 238, 238, 238, 238, 238, 238, 238, + 107, 238, 108, 111, 112, 238, 113, 238, 238, 238, + 238, 238, 238, 238, 111, 114, 115, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 111, + 238, 115, 116, 117, 238, 118, 238, 238, 238, 238, + 238, 238, 238, 116, 114, 119, 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, 116, 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, + 119, 127, 127, 238, 127, 238, 238, 238, 127, 127, + 127, 238, 127, 238, 127, 127, 127, 238, 127, 238, + 238, 127, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 127, 103, 104, 238, + 238, 238, 238, 105, 238, 238, 238, 238, 103, 106, + 104, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 103, 238, 104, 107, 108, 238, 238, + 238, 238, 109, 238, 238, 238, 238, 107, 106, 108, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 107, 238, 108, 103, 104, 238, 238, 238, + 238, 105, 238, 238, 238, 238, 103, 106, 104, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 103, 238, 104, 103, 104, 238, 238, 238, 238, + 105, 238, 238, 238, 238, 103, 106, 104, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 103, 238, 104, 103, 104, 238, 238, 238, 238, 105, + 238, 238, 238, 238, 103, 106, 104, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 103, + 238, 104, 111, 112, 238, 113, 238, 238, 238, 238, + 238, 238, 238, 111, 114, 115, 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, 111, 238, + 115, 116, 117, 238, 118, 238, 238, 238, 238, 238, + 238, 238, 116, 114, 119, 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, - 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 + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 116, 238, 119, + 111, 112, 238, 113, 238, 238, 238, 238, 238, 238, + 238, 111, 114, 115, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 111, 238, 115, 111, + 112, 238, 113, 238, 238, 238, 238, 238, 238, 238, + 111, 114, 115, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 111, 238, 115, 111, 112, + + 238, 113, 238, 238, 238, 238, 238, 238, 238, 111, + 114, 115, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 111, 238, 115, 111, 112, 238, + 113, 238, 238, 238, 238, 238, 238, 238, 111, 114, + 115, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 111, 238, 115, 127, 127, 238, 127, + 238, 238, 238, 127, 127, 127, 238, 127, 238, 127, + 127, 127, 238, 127, 238, 238, 127, 238, 238, 238, + + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 127, 46, 46, 46, 46, 46, 51, 51, 51, + 51, 51, 56, 56, 56, 56, 56, 62, 62, 62, + 62, 62, 67, 67, 67, 94, 94, 94, 94, 94, + 102, 102, 102, 102, 102, 110, 110, 110, 110, 110, + 120, 120, 120, 120, 122, 122, 122, 122, 122, 128, + 238, 128, 128, 128, 127, 238, 127, 127, 127, 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,115 +614,115 @@ 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, - 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, + 4, 4, 22, 29, 22, 236, 10, 9, 3, 3, + 3, 4, 4, 4, 10, 31, 33, 29, 64, 33, + 40, 31, 35, 35, 40, 91, 64, 224, 64, 224, + 35, 46, 46, 3, 228, 3, 4, 91, 4, 5, + 5, 227, 46, 46, 46, 5, 223, 49, 49, 222, + + 5, 5, 5, 74, 74, 122, 124, 220, 49, 49, + 49, 94, 94, 122, 124, 122, 124, 46, 219, 46, + 217, 215, 94, 94, 94, 5, 158, 5, 6, 6, + 158, 213, 212, 49, 6, 49, 211, 209, 207, 6, + 6, 6, 206, 205, 203, 97, 97, 94, 202, 94, + 99, 99, 201, 200, 199, 198, 97, 97, 97, 197, + 195, 99, 99, 99, 6, 194, 6, 7, 7, 232, + 7, 232, 193, 232, 192, 191, 188, 187, 7, 7, + 7, 97, 186, 97, 100, 100, 99, 185, 99, 101, + 101, 184, 183, 182, 181, 100, 100, 100, 178, 177, + + 101, 101, 101, 7, 176, 7, 8, 8, 175, 8, + 174, 173, 172, 171, 170, 169, 167, 8, 8, 8, + 100, 166, 100, 165, 162, 101, 161, 101, 159, 157, + 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, + 145, 144, 8, 143, 8, 51, 51, 142, 141, 140, + 139, 51, 138, 136, 135, 134, 51, 51, 51, 133, + 132, 131, 130, 129, 126, 120, 93, 92, 90, 89, + 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, + 78, 51, 77, 51, 55, 55, 76, 75, 73, 72, + 55, 68, 66, 65, 62, 55, 55, 55, 42, 41, + + 39, 38, 37, 36, 34, 32, 30, 28, 27, 25, + 17, 15, 13, 11, 0, 0, 0, 0, 0, 0, + 55, 0, 55, 56, 56, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 56, 56, 56, 0, 0, 0, 0, 0, 0, 0, 0, 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, 56, + 0, 56, 60, 60, 0, 60, 0, 0, 0, 0, + 0, 0, 0, 60, 60, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 0, 55, 59, 59, 0, 59, 0, 0, 0, 0, - 0, 0, 0, 59, 59, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, - 59, 69, 69, 0, 69, 0, 0, 0, 69, 69, - 69, 0, 69, 0, 69, 69, 69, 0, 69, 0, - 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 70, 70, 0, 70, 0, 0, 0, 70, 70, + 70, 0, 70, 0, 70, 70, 70, 0, 70, 0, + 0, 70, 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, 70, 102, 102, 0, + 0, 0, 0, 102, 0, 0, 0, 0, 102, 102, + 102, 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, 102, 0, 102, 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, 104, 0, 104, 105, 105, 0, 0, 0, - 0, 105, 0, 0, 0, 0, 105, 105, 105, 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, 105, 0, 105, 106, 106, 0, 0, 0, 0, - 106, 0, 0, 0, 0, 106, 106, 106, 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, - 106, 0, 106, 107, 107, 0, 0, 0, 0, 107, - 0, 0, 0, 0, 107, 107, 107, 0, 0, 0, + 108, 0, 108, 109, 109, 0, 0, 0, 0, 109, + 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, 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, 109, + 0, 109, 110, 110, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 110, 110, 110, 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, 110, 0, + 110, 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, 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, 114, 0, 114, + 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, 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, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 115, 0, 115, 116, 116, + 0, 0, 0, 0, 0, 117, 0, 117, 118, 118, - 0, 116, 0, 0, 0, 0, 0, 0, 0, 116, - 116, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 118, 0, 118, 119, 119, 0, + 119, 0, 0, 0, 0, 0, 0, 0, 119, 119, + 119, 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, 119, 0, 119, 128, 128, 0, 128, + 0, 0, 0, 128, 128, 128, 0, 128, 0, 128, + 128, 128, 0, 128, 0, 0, 128, 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, 128, 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 @@ -730,7 +732,7 @@ static yyconst flex_int16_t yy_chk[1033] = #define yymore() (yyg->yy_more_flag = 1) #define YY_MORE_ADJ yyg->yy_more_len #define YY_RESTORE_YY_MORE_OFFSET -#line 1 "ael/ael.flex" +#line 1 "ael.flex" /* * Asterisk -- An open source telephony toolkit. * @@ -775,7 +777,7 @@ static yyconst flex_int16_t yy_chk[1033] = * bison-bridge passes an additional yylval argument to ael_yylex(). * bison-locations is probably not needed. */ -#line 59 "ael/ael.flex" +#line 59 "ael.flex" ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include @@ -881,7 +883,7 @@ static void pbcwhere(const char *text, int *line, int *col ) #define STORE_POS #define STORE_LOC #endif -#line 884 "ael_lex.c" +#line 886 "ael_lex.c" #define INITIAL 0 #define paren 1 @@ -889,17 +891,19 @@ static void pbcwhere(const char *text, int *line, int *col ) #define argg 3 #define comment 4 +#ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include +#endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif -/*! \brief Holds the entire state of the reentrant scanner. */ +/* Holds the entire state of the reentrant scanner. */ struct yyguts_t { @@ -908,9 +912,9 @@ struct yyguts_t /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /*!< index of top of stack. */ - size_t yy_buffer_stack_max; /*!< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /*!< Stack as an array. */ + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; int yy_n_chars; int yyleng_r; @@ -937,6 +941,8 @@ struct yyguts_t }; /* end struct yyguts_t */ +static int yy_init_globals (yyscan_t yyscanner ); + /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ # define yylval yyg->yylval_r @@ -1087,9 +1093,11 @@ static int input (yyscan_t yyscanner ); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int ael_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner); +extern int ael_yylex \ + (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner); -#define YY_DECL int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) +#define YY_DECL int ael_yylex \ + (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng @@ -1116,10 +1124,10 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 173 "ael/ael.flex" +#line 173 "ael.flex" -#line 1122 "ael_lex.c" +#line 1130 "ael_lex.c" yylval = yylval_param; @@ -1182,13 +1190,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; @@ -1210,250 +1218,255 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 175 "ael/ael.flex" +#line 175 "ael.flex" { STORE_POS; return LC;} YY_BREAK case 2: YY_RULE_SETUP -#line 176 "ael/ael.flex" +#line 176 "ael.flex" { STORE_POS; return RC;} YY_BREAK case 3: YY_RULE_SETUP -#line 177 "ael/ael.flex" +#line 177 "ael.flex" { STORE_POS; return LP;} YY_BREAK case 4: YY_RULE_SETUP -#line 178 "ael/ael.flex" +#line 178 "ael.flex" { STORE_POS; return RP;} YY_BREAK case 5: YY_RULE_SETUP -#line 179 "ael/ael.flex" +#line 179 "ael.flex" { STORE_POS; return SEMI;} YY_BREAK case 6: YY_RULE_SETUP -#line 180 "ael/ael.flex" +#line 180 "ael.flex" { STORE_POS; return EQ;} YY_BREAK case 7: YY_RULE_SETUP -#line 181 "ael/ael.flex" +#line 181 "ael.flex" { STORE_POS; return COMMA;} YY_BREAK case 8: YY_RULE_SETUP -#line 182 "ael/ael.flex" +#line 182 "ael.flex" { STORE_POS; return COLON;} YY_BREAK case 9: YY_RULE_SETUP -#line 183 "ael/ael.flex" +#line 183 "ael.flex" { STORE_POS; return AMPER;} YY_BREAK case 10: YY_RULE_SETUP -#line 184 "ael/ael.flex" +#line 184 "ael.flex" { STORE_POS; return BAR;} YY_BREAK case 11: YY_RULE_SETUP -#line 185 "ael/ael.flex" +#line 185 "ael.flex" { STORE_POS; return EXTENMARK;} YY_BREAK case 12: YY_RULE_SETUP -#line 186 "ael/ael.flex" +#line 186 "ael.flex" { STORE_POS; return AT;} YY_BREAK case 13: YY_RULE_SETUP -#line 187 "ael/ael.flex" +#line 187 "ael.flex" {/*comment*/} YY_BREAK case 14: YY_RULE_SETUP -#line 188 "ael/ael.flex" +#line 188 "ael.flex" { STORE_POS; return KW_CONTEXT;} YY_BREAK case 15: YY_RULE_SETUP -#line 189 "ael/ael.flex" +#line 189 "ael.flex" { STORE_POS; return KW_ABSTRACT;} YY_BREAK case 16: YY_RULE_SETUP -#line 190 "ael/ael.flex" +#line 190 "ael.flex" { STORE_POS; return KW_MACRO;}; YY_BREAK case 17: YY_RULE_SETUP -#line 191 "ael/ael.flex" +#line 191 "ael.flex" { STORE_POS; return KW_GLOBALS;} YY_BREAK case 18: YY_RULE_SETUP -#line 192 "ael/ael.flex" -{ STORE_POS; return KW_IGNOREPAT;} +#line 192 "ael.flex" +{ STORE_POS; return KW_LOCAL;} YY_BREAK case 19: YY_RULE_SETUP -#line 193 "ael/ael.flex" -{ STORE_POS; return KW_SWITCH;} +#line 193 "ael.flex" +{ STORE_POS; return KW_IGNOREPAT;} YY_BREAK case 20: YY_RULE_SETUP -#line 194 "ael/ael.flex" -{ STORE_POS; return KW_IF;} +#line 194 "ael.flex" +{ STORE_POS; return KW_SWITCH;} YY_BREAK case 21: YY_RULE_SETUP -#line 195 "ael/ael.flex" -{ STORE_POS; return KW_IFTIME;} +#line 195 "ael.flex" +{ STORE_POS; return KW_IF;} YY_BREAK case 22: YY_RULE_SETUP -#line 196 "ael/ael.flex" -{ STORE_POS; return KW_RANDOM;} +#line 196 "ael.flex" +{ STORE_POS; return KW_IFTIME;} YY_BREAK case 23: YY_RULE_SETUP -#line 197 "ael/ael.flex" -{ STORE_POS; return KW_REGEXTEN;} +#line 197 "ael.flex" +{ STORE_POS; return KW_RANDOM;} YY_BREAK case 24: YY_RULE_SETUP -#line 198 "ael/ael.flex" -{ STORE_POS; return KW_HINT;} +#line 198 "ael.flex" +{ STORE_POS; return KW_REGEXTEN;} YY_BREAK case 25: YY_RULE_SETUP -#line 199 "ael/ael.flex" -{ STORE_POS; return KW_ELSE;} +#line 199 "ael.flex" +{ STORE_POS; return KW_HINT;} YY_BREAK case 26: YY_RULE_SETUP -#line 200 "ael/ael.flex" -{ STORE_POS; return KW_GOTO;} +#line 200 "ael.flex" +{ STORE_POS; return KW_ELSE;} YY_BREAK case 27: YY_RULE_SETUP -#line 201 "ael/ael.flex" -{ STORE_POS; return KW_JUMP;} +#line 201 "ael.flex" +{ STORE_POS; return KW_GOTO;} YY_BREAK case 28: YY_RULE_SETUP -#line 202 "ael/ael.flex" -{ STORE_POS; return KW_RETURN;} +#line 202 "ael.flex" +{ STORE_POS; return KW_JUMP;} YY_BREAK case 29: YY_RULE_SETUP -#line 203 "ael/ael.flex" -{ STORE_POS; return KW_BREAK;} +#line 203 "ael.flex" +{ STORE_POS; return KW_RETURN;} YY_BREAK case 30: YY_RULE_SETUP -#line 204 "ael/ael.flex" -{ STORE_POS; return KW_CONTINUE;} +#line 204 "ael.flex" +{ STORE_POS; return KW_BREAK;} YY_BREAK case 31: YY_RULE_SETUP -#line 205 "ael/ael.flex" -{ STORE_POS; return KW_FOR;} +#line 205 "ael.flex" +{ STORE_POS; return KW_CONTINUE;} YY_BREAK case 32: YY_RULE_SETUP -#line 206 "ael/ael.flex" -{ STORE_POS; return KW_WHILE;} +#line 206 "ael.flex" +{ STORE_POS; return KW_FOR;} YY_BREAK case 33: YY_RULE_SETUP -#line 207 "ael/ael.flex" -{ STORE_POS; return KW_CASE;} +#line 207 "ael.flex" +{ STORE_POS; return KW_WHILE;} YY_BREAK case 34: YY_RULE_SETUP -#line 208 "ael/ael.flex" -{ STORE_POS; return KW_DEFAULT;} +#line 208 "ael.flex" +{ STORE_POS; return KW_CASE;} YY_BREAK case 35: YY_RULE_SETUP -#line 209 "ael/ael.flex" -{ STORE_POS; return KW_PATTERN;} +#line 209 "ael.flex" +{ STORE_POS; return KW_DEFAULT;} YY_BREAK case 36: YY_RULE_SETUP -#line 210 "ael/ael.flex" -{ STORE_POS; return KW_CATCH;} +#line 210 "ael.flex" +{ STORE_POS; return KW_PATTERN;} YY_BREAK case 37: YY_RULE_SETUP -#line 211 "ael/ael.flex" -{ STORE_POS; return KW_SWITCHES;} +#line 211 "ael.flex" +{ STORE_POS; return KW_CATCH;} YY_BREAK case 38: YY_RULE_SETUP -#line 212 "ael/ael.flex" -{ STORE_POS; return KW_ESWITCHES;} +#line 212 "ael.flex" +{ STORE_POS; return KW_SWITCHES;} YY_BREAK case 39: YY_RULE_SETUP -#line 213 "ael/ael.flex" -{ STORE_POS; return KW_INCLUDES;} +#line 213 "ael.flex" +{ STORE_POS; return KW_ESWITCHES;} YY_BREAK case 40: YY_RULE_SETUP -#line 214 "ael/ael.flex" -{ BEGIN(comment); my_col += 2; } +#line 214 "ael.flex" +{ STORE_POS; return KW_INCLUDES;} YY_BREAK case 41: YY_RULE_SETUP -#line 216 "ael/ael.flex" -{ my_col += yyleng; } +#line 215 "ael.flex" +{ BEGIN(comment); my_col += 2; } YY_BREAK case 42: -/* rule 42 can match eol */ YY_RULE_SETUP -#line 217 "ael/ael.flex" -{ ++my_lineno; my_col=1;} +#line 217 "ael.flex" +{ my_col += yyleng; } YY_BREAK case 43: +/* rule 43 can match eol */ YY_RULE_SETUP -#line 218 "ael/ael.flex" -{ my_col += yyleng; } +#line 218 "ael.flex" +{ ++my_lineno; my_col=1;} YY_BREAK case 44: -/* rule 44 can match eol */ YY_RULE_SETUP -#line 219 "ael/ael.flex" -{ ++my_lineno; my_col=1;} +#line 219 "ael.flex" +{ my_col += yyleng; } YY_BREAK case 45: +/* rule 45 can match eol */ YY_RULE_SETUP -#line 220 "ael/ael.flex" -{ my_col += 2; BEGIN(INITIAL); } +#line 220 "ael.flex" +{ ++my_lineno; my_col=1;} YY_BREAK case 46: -/* rule 46 can match eol */ YY_RULE_SETUP -#line 222 "ael/ael.flex" -{ my_lineno++; my_col = 1; } +#line 221 "ael.flex" +{ my_col += 2; BEGIN(INITIAL); } YY_BREAK case 47: +/* rule 47 can match eol */ YY_RULE_SETUP -#line 223 "ael/ael.flex" -{ my_col += yyleng; } +#line 223 "ael.flex" +{ my_lineno++; my_col = 1; } YY_BREAK case 48: YY_RULE_SETUP -#line 224 "ael/ael.flex" -{ my_col += (yyleng*8)-(my_col%8); } +#line 224 "ael.flex" +{ my_col += yyleng; } YY_BREAK case 49: YY_RULE_SETUP -#line 226 "ael/ael.flex" +#line 225 "ael.flex" +{ my_col += (yyleng*8)-(my_col%8); } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 227 "ael.flex" { STORE_POS; yylval->str = strdup(yytext); @@ -1468,10 +1481,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 242 "ael/ael.flex" +#line 243 "ael.flex" { if ( pbcpop(')') ) { /* error */ STORE_LOC; @@ -1494,10 +1507,10 @@ YY_RULE_SETUP } } YY_BREAK -case 51: -/* rule 51 can match eol */ +case 52: +/* rule 52 can match eol */ YY_RULE_SETUP -#line 264 "ael/ael.flex" +#line 265 "ael.flex" { char c = yytext[yyleng-1]; if (c == '(') @@ -1506,10 +1519,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 272 "ael/ael.flex" +#line 273 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop(c)) { /* error */ @@ -1531,10 +1544,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 294 "ael/ael.flex" +#line 295 "ael.flex" { char c = yytext[yyleng-1]; if (c == '(') @@ -1543,10 +1556,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 302 "ael/ael.flex" +#line 303 "ael.flex" { if ( pbcpop(')') ) { /* error */ STORE_LOC; @@ -1571,10 +1584,10 @@ YY_RULE_SETUP } } YY_BREAK -case 55: -/* rule 55 can match eol */ +case 56: +/* rule 56 can match eol */ YY_RULE_SETUP -#line 326 "ael/ael.flex" +#line 327 "ael.flex" { if( parencount != 0) { /* printf("Folding in a comma!\n"); */ yymore(); @@ -1589,10 +1602,10 @@ YY_RULE_SETUP } } YY_BREAK -case 56: -/* rule 56 can match eol */ +case 57: +/* rule 57 can match eol */ YY_RULE_SETUP -#line 340 "ael/ael.flex" +#line 341 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop(c) ) { /* error */ @@ -1610,20 +1623,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 357 "ael/ael.flex" +#line 358 "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 363 "ael/ael.flex" +#line 364 "ael.flex" { char c = yytext[yyleng-1]; if ( pbcpop(c) ) { /* error */ @@ -1636,10 +1649,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 375 "ael/ael.flex" +#line 376 "ael.flex" { STORE_LOC; yylval->str = strdup(yytext); @@ -1649,10 +1662,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 384 "ael/ael.flex" +#line 385 "ael.flex" { FILE *in1; char fnamebuf[1024],*p1,*p2; @@ -1721,7 +1734,7 @@ case YY_STATE_EOF(paren): case YY_STATE_EOF(semic): case YY_STATE_EOF(argg): case YY_STATE_EOF(comment): -#line 447 "ael/ael.flex" +#line 448 "ael.flex" { if ( --include_stack_index < 0 ) { yyterminate(); @@ -1735,12 +1748,12 @@ case YY_STATE_EOF(comment): } } YY_BREAK -case 61: +case 62: YY_RULE_SETUP -#line 460 "ael/ael.flex" +#line 461 "ael.flex" ECHO; YY_BREAK -#line 1743 "ael_lex.c" +#line 1756 "ael_lex.c" case YY_END_OF_BUFFER: { @@ -1926,7 +1939,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { - size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -2025,7 +2038,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]; @@ -2054,11 +2067,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; } @@ -2176,12 +2189,10 @@ static int yy_get_next_buffer (yyscan_t yyscanner) } #endif /* ifndef YY_NO_INPUT */ -/*! - * \brief Immediately switch to a different input stream. - * \param input_file A readable stream. - * \param yyscanner The scanner object. - * - * \note This function does not reset the start condition to @c INITIAL . +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . */ void ael_yyrestart (FILE * input_file , yyscan_t yyscanner) { @@ -2197,10 +2208,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner) ael_yy_load_buffer_state(yyscanner ); } -/*! - * \brief Switch to a different input buffer. - * \param new_buffer The new input buffer. - * \param yyscanner The scanner object. +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. */ void ael_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { @@ -2243,13 +2253,11 @@ static void ael_yy_load_buffer_state (yyscan_t yyscanner) yyg->yy_hold_char = *yyg->yy_c_buf_p; } -/*! - * \brief Allocate and initialize an input buffer state. - * \param file A readable stream. - * \param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * \param yyscanner The scanner object. - * - * \return the allocated buffer state. +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. */ YY_BUFFER_STATE ael_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { @@ -2275,10 +2283,9 @@ static void ael_yy_load_buffer_state (yyscan_t yyscanner) return b; } -/*! - * \brief Destroy the buffer. - * \param b a buffer created with ael_yy_create_buffer() - * \param yyscanner The scanner object. +/** Destroy the buffer. + * @param b a buffer created with ael_yy_create_buffer() + * @param yyscanner The scanner object. */ void ael_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { @@ -2329,10 +2336,9 @@ extern int isatty (int ); errno = oerrno; } -/*! - * \brief Discard all buffered characters. On the next scan, YY_INPUT will be called. - * \param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * \param yyscanner The scanner object. +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. */ void ael_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { @@ -2358,12 +2364,11 @@ extern int isatty (int ); ael_yy_load_buffer_state(yyscanner ); } -/*! - * \brief Pushes the new state onto the stack. The new state becomes +/** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. - * \param new_buffer The new state. - * \param yyscanner The scanner object. + * @param new_buffer The new state. + * @param yyscanner The scanner object. */ void ael_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { @@ -2392,10 +2397,9 @@ void ael_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) yyg->yy_did_buffer_switch_on_eof = 1; } -/*! - * \brief Removes and deletes the top of the stack, if present. +/** Removes and deletes the top of the stack, if present. * The next element becomes the new top. - * \param yyscanner The scanner object. + * @param yyscanner The scanner object. */ void ael_yypop_buffer_state (yyscan_t yyscanner) { @@ -2457,13 +2461,11 @@ static void ael_yyensure_buffer_stack (yyscan_t yyscanner) } } -/*! - * \brief Setup the input buffer state to scan directly from a user-specified character buffer. - * \param base the character buffer - * \param size the size in bytes of the character buffer - * \param yyscanner The scanner object. - * - * \return the newly allocated buffer state object. +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE ael_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { @@ -2494,31 +2496,26 @@ YY_BUFFER_STATE ael_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yys return b; } -/*! - * \brief Setup the input buffer state to scan a string. The next call to ael_yylex() will +/** Setup the input buffer state to scan a string. The next call to ael_yylex() will * scan from a @e copy of @a str. - * \param str a NUL-terminated string to scan - * \param yyscanner The scanner object. - * - * \return the newly allocated buffer state object. - * - * \note If you want to scan bytes that may contain NUL values, then use + * @param str a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use * ael_yy_scan_bytes() instead. */ -YY_BUFFER_STATE ael_yy_scan_string (yyconst char * str , yyscan_t yyscanner) +YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner) { - return ael_yy_scan_bytes(str,strlen(str) ,yyscanner); + return ael_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner); } -/*! - * \brief Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will +/** Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will * scan from a @e copy of @a bytes. - * \param bytes the byte buffer to scan - * \param len the number of bytes in the buffer pointed to by @a bytes. - * \param yyscanner The scanner object. - * - * \return the newly allocated buffer state object. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE ael_yy_scan_bytes (yyconst char * bytes, int len , yyscan_t yyscanner) { @@ -2579,9 +2576,8 @@ static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) /* Accessor methods (get/set functions) to struct members. */ -/*! - * \brief Get the user-defined data for this scanner. - * \param yyscanner The scanner object. +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. */ YY_EXTRA_TYPE ael_yyget_extra (yyscan_t yyscanner) { @@ -2589,9 +2585,8 @@ YY_EXTRA_TYPE ael_yyget_extra (yyscan_t yyscanner) return yyextra; } -/*! - * \brief Get the current line number. - * \param yyscanner The scanner object. +/** Get the current line number. + * @param yyscanner The scanner object. */ int ael_yyget_lineno (yyscan_t yyscanner) { @@ -2603,9 +2598,8 @@ int ael_yyget_lineno (yyscan_t yyscanner) return yylineno; } -/*! - * \brief Get the current column number. - * \param yyscanner The scanner object. +/** Get the current column number. + * @param yyscanner The scanner object. */ int ael_yyget_column (yyscan_t yyscanner) { @@ -2617,9 +2611,8 @@ int ael_yyget_column (yyscan_t yyscanner) return yycolumn; } -/*! - * \brief Get the input stream. - * \param yyscanner The scanner object. +/** Get the input stream. + * @param yyscanner The scanner object. */ FILE *ael_yyget_in (yyscan_t yyscanner) { @@ -2627,9 +2620,8 @@ FILE *ael_yyget_in (yyscan_t yyscanner) return yyin; } -/*! - * \brief Get the output stream. - * \param yyscanner The scanner object. +/** Get the output stream. + * @param yyscanner The scanner object. */ FILE *ael_yyget_out (yyscan_t yyscanner) { @@ -2637,9 +2629,8 @@ FILE *ael_yyget_out (yyscan_t yyscanner) return yyout; } -/*! - * \brief Get the length of the current token. - * \param yyscanner The scanner object. +/** Get the length of the current token. + * @param yyscanner The scanner object. */ int ael_yyget_leng (yyscan_t yyscanner) { @@ -2647,9 +2638,8 @@ int ael_yyget_leng (yyscan_t yyscanner) return yyleng; } -/*! - * \brief Get the current token. - * \param yyscanner The scanner object. +/** Get the current token. + * @param yyscanner The scanner object. */ char *ael_yyget_text (yyscan_t yyscanner) @@ -2658,10 +2648,9 @@ char *ael_yyget_text (yyscan_t yyscanner) return yytext; } -/*! - * \brief Set the user-defined data. This data is never touched by the scanner. - * \param user_defined The data to be associated with this scanner. - * \param yyscanner The scanner object. +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. */ void ael_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { @@ -2669,10 +2658,9 @@ void ael_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) yyextra = user_defined ; } -/*! - * \brief Set the current line number. - * \param line_number - * \param yyscanner The scanner object. +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. */ void ael_yyset_lineno (int line_number , yyscan_t yyscanner) { @@ -2685,10 +2673,9 @@ void ael_yyset_lineno (int line_number , yyscan_t yyscanner) yylineno = line_number; } -/*! - * \brief Set the current column. - * \param line_number - * \param yyscanner The scanner object. +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. */ void ael_yyset_column (int column_no , yyscan_t yyscanner) { @@ -2701,13 +2688,11 @@ void ael_yyset_column (int column_no , yyscan_t yyscanner) yycolumn = column_no; } -/*! - * \brief Set the input stream. This does not discard the current +/** Set the input stream. This does not discard the current * input buffer. - * \param in_str A readable stream. - * \param yyscanner The scanner object. - * - * \see ael_yy_switch_to_buffer + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see ael_yy_switch_to_buffer */ void ael_yyset_in (FILE * in_str , yyscan_t yyscanner) { @@ -2904,7 +2889,7 @@ void ael_yyfree (void * ptr , yyscan_t yyscanner) #undef YY_DECL_IS_OURS #undef YY_DECL #endif -#line 460 "ael/ael.flex" +#line 461 "ael.flex" diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c index 66ea629a4..d5d58b316 100644 --- a/pbx/pbx_ael.c +++ b/pbx/pbx_ael.c @@ -315,6 +315,10 @@ static void print_pval(FILE *fin, pval *item, int depth) fprintf(fin,"%s=%s;\n", item->u1.str, item->u2.val); break; + case PV_LOCALVARDEC: + fprintf(fin,"local %s=%s;\n", item->u1.str, item->u2.val); + break; + case PV_GOTO: fprintf(fin,"goto %s", item->u1.list->u1.str); if ( item->u1.list->next ) @@ -565,6 +569,7 @@ void traverse_pval_item_template(pval *item, int depth)/* depth comes in handy f break; case PV_VARDEC: + case PV_LOCALVARDEC: /* fields: item->u1.str == variable name item->u2.val == variable value to assign */ @@ -2627,6 +2632,7 @@ void check_pval_item(pval *item, struct argapp *apps, int in_globals) break; case PV_VARDEC: + case PV_LOCALVARDEC: /* fields: item->u1.str == variable name item->u2.val == variable value to assign */ @@ -3064,6 +3070,17 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement, linkprio(exten, pr); break; + case PV_LOCALVARDEC: + pr = new_prio(); + pr->type = AEL_APPCALL; + snprintf(buf1,sizeof(buf1),"LOCAL(%s)=$[%s]", p->u1.str, p->u2.val); + pr->app = strdup("Set"); + remove_spaces_before_equals(buf1); + pr->appargs = strdup(buf1); + pr->origin = p; + linkprio(exten, pr); + break; + case PV_GOTO: pr = new_prio(); pr->type = AEL_APPCALL; @@ -4335,6 +4352,7 @@ void destroy_pval_item(pval *item) break; case PV_VARDEC: + case PV_LOCALVARDEC: /* fields: item->u1.str == variable name item->u2.val == variable value to assign */ -- cgit v1.2.3