2007-08-23 23:37:33 +00:00
|
|
|
/* A Bison parser, made by GNU Bison 2.1a. */
|
2006-04-24 17:41:27 +00:00
|
|
|
|
2007-08-23 23:37:33 +00:00
|
|
|
/* Skeleton parser for Yacc-like parsing with Bison,
|
|
|
|
|
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
2006-04-24 17:41:27 +00:00
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
|
|
|
any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
|
Boston, MA 02110-1301, USA. */
|
|
|
|
|
|
2007-08-23 23:37:33 +00:00
|
|
|
/* As a special exception, when this file is copied by Bison into a
|
|
|
|
|
Bison output file, you may use that output file without restriction.
|
|
|
|
|
This special exception was added by the Free Software Foundation
|
|
|
|
|
in version 1.24 of Bison. */
|
2006-04-24 17:41:27 +00:00
|
|
|
|
|
|
|
|
/* Tokens. */
|
|
|
|
|
#ifndef YYTOKENTYPE
|
|
|
|
|
# define YYTOKENTYPE
|
|
|
|
|
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
|
|
|
|
know about them. */
|
|
|
|
|
enum yytokentype {
|
|
|
|
|
KW_CONTEXT = 258,
|
|
|
|
|
LC = 259,
|
|
|
|
|
RC = 260,
|
|
|
|
|
LP = 261,
|
|
|
|
|
RP = 262,
|
|
|
|
|
SEMI = 263,
|
|
|
|
|
EQ = 264,
|
|
|
|
|
COMMA = 265,
|
|
|
|
|
COLON = 266,
|
|
|
|
|
AMPER = 267,
|
|
|
|
|
BAR = 268,
|
|
|
|
|
AT = 269,
|
|
|
|
|
KW_MACRO = 270,
|
|
|
|
|
KW_GLOBALS = 271,
|
|
|
|
|
KW_IGNOREPAT = 272,
|
|
|
|
|
KW_SWITCH = 273,
|
|
|
|
|
KW_IF = 274,
|
|
|
|
|
KW_IFTIME = 275,
|
|
|
|
|
KW_ELSE = 276,
|
|
|
|
|
KW_RANDOM = 277,
|
|
|
|
|
KW_ABSTRACT = 278,
|
Merged revisions 87168 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r87168 | murf | 2007-10-26 10:34:02 -0600 (Fri, 26 Oct 2007) | 1 line
closes issue #11086 where a user complains that references to following contexts report a problem; The problem was REALLy that he was referring to empty contexts, which were being ignored. Reporter stated that empty contexts should be OK. I checked it out against extensions.conf, and sure enough, empty contexts ARE ok. So, I removed the restriction from AEL. This, though, highlighted a problem with multiple contexts of the same name. This should be OK, also. So, I added the extend keyword to AEL, and it can preceed the 'context' keyword (mixed with 'abstract', if nec.). This will turn off the warnings in AEL if the same context name is used 2 or more times. Also, I now call ast_context_find_or_create for contexts now, instead of just ast_context_create; I did this because pbx_config does this. The 'extend' keyword thus becomes a statement of intent. AEL can now duplicate the behavior of pbx_config,
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87187 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-26 17:39:39 +00:00
|
|
|
KW_EXTEND = 279,
|
|
|
|
|
EXTENMARK = 280,
|
|
|
|
|
KW_GOTO = 281,
|
|
|
|
|
KW_JUMP = 282,
|
|
|
|
|
KW_RETURN = 283,
|
|
|
|
|
KW_BREAK = 284,
|
|
|
|
|
KW_CONTINUE = 285,
|
|
|
|
|
KW_REGEXTEN = 286,
|
|
|
|
|
KW_HINT = 287,
|
|
|
|
|
KW_FOR = 288,
|
|
|
|
|
KW_WHILE = 289,
|
|
|
|
|
KW_CASE = 290,
|
|
|
|
|
KW_PATTERN = 291,
|
|
|
|
|
KW_DEFAULT = 292,
|
|
|
|
|
KW_CATCH = 293,
|
|
|
|
|
KW_SWITCHES = 294,
|
|
|
|
|
KW_ESWITCHES = 295,
|
|
|
|
|
KW_INCLUDES = 296,
|
|
|
|
|
KW_LOCAL = 297,
|
|
|
|
|
word = 298
|
2006-04-24 17:41:27 +00:00
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
/* Tokens. */
|
|
|
|
|
#define KW_CONTEXT 258
|
|
|
|
|
#define LC 259
|
|
|
|
|
#define RC 260
|
|
|
|
|
#define LP 261
|
|
|
|
|
#define RP 262
|
|
|
|
|
#define SEMI 263
|
|
|
|
|
#define EQ 264
|
|
|
|
|
#define COMMA 265
|
|
|
|
|
#define COLON 266
|
|
|
|
|
#define AMPER 267
|
|
|
|
|
#define BAR 268
|
|
|
|
|
#define AT 269
|
|
|
|
|
#define KW_MACRO 270
|
|
|
|
|
#define KW_GLOBALS 271
|
|
|
|
|
#define KW_IGNOREPAT 272
|
|
|
|
|
#define KW_SWITCH 273
|
|
|
|
|
#define KW_IF 274
|
|
|
|
|
#define KW_IFTIME 275
|
|
|
|
|
#define KW_ELSE 276
|
|
|
|
|
#define KW_RANDOM 277
|
|
|
|
|
#define KW_ABSTRACT 278
|
Merged revisions 87168 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r87168 | murf | 2007-10-26 10:34:02 -0600 (Fri, 26 Oct 2007) | 1 line
closes issue #11086 where a user complains that references to following contexts report a problem; The problem was REALLy that he was referring to empty contexts, which were being ignored. Reporter stated that empty contexts should be OK. I checked it out against extensions.conf, and sure enough, empty contexts ARE ok. So, I removed the restriction from AEL. This, though, highlighted a problem with multiple contexts of the same name. This should be OK, also. So, I added the extend keyword to AEL, and it can preceed the 'context' keyword (mixed with 'abstract', if nec.). This will turn off the warnings in AEL if the same context name is used 2 or more times. Also, I now call ast_context_find_or_create for contexts now, instead of just ast_context_create; I did this because pbx_config does this. The 'extend' keyword thus becomes a statement of intent. AEL can now duplicate the behavior of pbx_config,
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87187 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-26 17:39:39 +00:00
|
|
|
#define KW_EXTEND 279
|
|
|
|
|
#define EXTENMARK 280
|
|
|
|
|
#define KW_GOTO 281
|
|
|
|
|
#define KW_JUMP 282
|
|
|
|
|
#define KW_RETURN 283
|
|
|
|
|
#define KW_BREAK 284
|
|
|
|
|
#define KW_CONTINUE 285
|
|
|
|
|
#define KW_REGEXTEN 286
|
|
|
|
|
#define KW_HINT 287
|
|
|
|
|
#define KW_FOR 288
|
|
|
|
|
#define KW_WHILE 289
|
|
|
|
|
#define KW_CASE 290
|
|
|
|
|
#define KW_PATTERN 291
|
|
|
|
|
#define KW_DEFAULT 292
|
|
|
|
|
#define KW_CATCH 293
|
|
|
|
|
#define KW_SWITCHES 294
|
|
|
|
|
#define KW_ESWITCHES 295
|
|
|
|
|
#define KW_INCLUDES 296
|
|
|
|
|
#define KW_LOCAL 297
|
|
|
|
|
#define word 298
|
2006-04-24 17:41:27 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-18 21:36:24 +00:00
|
|
|
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
|
|
|
|
typedef union YYSTYPE
|
Merged revisions 130145 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
Merging this rev from trunk to 1.6.0 was not
simple. Why? Because we've enhanced trunk to
do a [fast] merge-and-delete operation which
also solved problems with contexts having
entries from different registrars.
Fast as in the amount of time the contexts
are locked down. That *is* fast, but traversing
the entire dialplan looking for priorities to
delete takes more time overall.
This particular fix involved pulling in those
enhancements from trunk, along with all the
various fixes and refinements made along the
way.
Merging all this from trunk into 1.6 involved:
a. mergetrunk6 in the stuff from 130145;
b. revert all but the prop changes
c. catalog all revisions to pbx.c since 1.6.0 was forked
(at rev 105596).
d. catalog all revisions to pbx.c in trunk since 1.6.0
was forked, making special note of all revs that
were not merged into 1.6.0.
e. study each rev in trunk not applied to 1.6.0, and
determine if it was involved in the merge_and_delete
enhancements in trunk. 25 commits were done in 1.6.0,
all but one (106306) was a merge from trunk.
Trunk had 22 additional changes, of which 7 were
involved in the merge_and_delete enhancements:
106757
108894
109169
116461
123358
130145
130297
f. Go to trunk and collect patches, one by one,
of the changes made by each rev across the
entire source tree, using svn diff -c <num> > pfile
g. Apply each patch in order to 1.6.0, and
resolve all failures and compilation problems
before proceding to the next patch.
h. test the stuff.
i. profit!
........
r130145 | murf | 2008-07-11 12:24:31 -0600 (Fri, 11 Jul 2008) | 40 lines
(closes issue #13041)
Reported by: eliel
Tested by: murf
(closes issue #12960)
Reported by: mnicholson
In this 'omnibus' fix, I **think** I solved both
the problem in 13041, where unloading pbx_ael.so
caused crashes, or incomplete removal of previous
registrar'ed entries. And I added code to completely
remove all includes, switches, and ignorepats that
had a matching registrar entry, which should
appease 12960.
I also added a lot of seemingly useless brackets
around single statement if's, which helped debug
so much that I'm leaving them there.
I added a routine to check the correlation between
the extension tree lists and the hashtab
tables. It can be amazingly helpful when you have
lots of dialplan stuff, and need to narrow
down where a problem is occurring. It's ifdef'd
out by default.
I cleaned up the code around the new CIDmatch code.
It was leaving hanging extens with bad ptrs, getting confused
over which objects to remove, etc. I tightened
up the code and changed the call to remove_exten
in the merge_and_delete code.
I added more conditions to check for empty context
worthy of deletion. It's not empty if there are
any includes, switches, or ignorepats present.
If I've missed anything, please re-open this bug,
and be prepared to supply example dialplan code.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@130946 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-15 13:14:07 +00:00
|
|
|
#line 56 "ael.y"
|
2006-06-18 21:36:24 +00:00
|
|
|
{
|
2006-04-30 12:44:54 +00:00
|
|
|
int intval; /* integer value, typically flags */
|
|
|
|
|
char *str; /* strings */
|
|
|
|
|
struct pval *pval; /* full objects */
|
2006-06-18 21:36:24 +00:00
|
|
|
}
|
2007-08-23 23:37:33 +00:00
|
|
|
/* Line 1536 of yacc.c. */
|
Merged revisions 87168 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r87168 | murf | 2007-10-26 10:34:02 -0600 (Fri, 26 Oct 2007) | 1 line
closes issue #11086 where a user complains that references to following contexts report a problem; The problem was REALLy that he was referring to empty contexts, which were being ignored. Reporter stated that empty contexts should be OK. I checked it out against extensions.conf, and sure enough, empty contexts ARE ok. So, I removed the restriction from AEL. This, though, highlighted a problem with multiple contexts of the same name. This should be OK, also. So, I added the extend keyword to AEL, and it can preceed the 'context' keyword (mixed with 'abstract', if nec.). This will turn off the warnings in AEL if the same context name is used 2 or more times. Also, I now call ast_context_find_or_create for contexts now, instead of just ast_context_create; I did this because pbx_config does this. The 'extend' keyword thus becomes a statement of intent. AEL can now duplicate the behavior of pbx_config,
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87187 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-26 17:39:39 +00:00
|
|
|
#line 131 "ael.tab.h"
|
2006-06-18 21:36:24 +00:00
|
|
|
YYSTYPE;
|
2006-04-24 17:41:27 +00:00
|
|
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
|
|
|
|
# define YYSTYPE_IS_DECLARED 1
|
|
|
|
|
# define YYSTYPE_IS_TRIVIAL 1
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-06-18 21:36:24 +00:00
|
|
|
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
|
2006-04-24 17:41:27 +00:00
|
|
|
typedef struct YYLTYPE
|
|
|
|
|
{
|
|
|
|
|
int first_line;
|
|
|
|
|
int first_column;
|
|
|
|
|
int last_line;
|
|
|
|
|
int last_column;
|
|
|
|
|
} YYLTYPE;
|
|
|
|
|
# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
|
|
|
|
|
# define YYLTYPE_IS_DECLARED 1
|
|
|
|
|
# define YYLTYPE_IS_TRIVIAL 1
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
2007-08-23 23:37:33 +00:00
|
|
|
|
|
|
|
|
|