00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #define YYBISON 1
00048
00049
00050 #define YYBISON_VERSION "2.3"
00051
00052
00053 #define YYSKELETON_NAME "yacc.c"
00054
00055
00056 #define YYPURE 1
00057
00058
00059 #define YYLSP_NEEDED 1
00060
00061
00062 #define yyparse ael_yyparse
00063 #define yylex ael_yylex
00064 #define yyerror ael_yyerror
00065 #define yylval ael_yylval
00066 #define yychar ael_yychar
00067 #define yydebug ael_yydebug
00068 #define yynerrs ael_yynerrs
00069 #define yylloc ael_yylloc
00070
00071
00072 #ifndef YYTOKENTYPE
00073 # define YYTOKENTYPE
00074
00075
00076 enum yytokentype {
00077 KW_CONTEXT = 258,
00078 LC = 259,
00079 RC = 260,
00080 LP = 261,
00081 RP = 262,
00082 SEMI = 263,
00083 EQ = 264,
00084 COMMA = 265,
00085 COLON = 266,
00086 AMPER = 267,
00087 BAR = 268,
00088 AT = 269,
00089 KW_MACRO = 270,
00090 KW_GLOBALS = 271,
00091 KW_IGNOREPAT = 272,
00092 KW_SWITCH = 273,
00093 KW_IF = 274,
00094 KW_IFTIME = 275,
00095 KW_ELSE = 276,
00096 KW_RANDOM = 277,
00097 KW_ABSTRACT = 278,
00098 KW_EXTEND = 279,
00099 EXTENMARK = 280,
00100 KW_GOTO = 281,
00101 KW_JUMP = 282,
00102 KW_RETURN = 283,
00103 KW_BREAK = 284,
00104 KW_CONTINUE = 285,
00105 KW_REGEXTEN = 286,
00106 KW_HINT = 287,
00107 KW_FOR = 288,
00108 KW_WHILE = 289,
00109 KW_CASE = 290,
00110 KW_PATTERN = 291,
00111 KW_DEFAULT = 292,
00112 KW_CATCH = 293,
00113 KW_SWITCHES = 294,
00114 KW_ESWITCHES = 295,
00115 KW_INCLUDES = 296,
00116 KW_LOCAL = 297,
00117 word = 298
00118 };
00119 #endif
00120
00121 #define KW_CONTEXT 258
00122 #define LC 259
00123 #define RC 260
00124 #define LP 261
00125 #define RP 262
00126 #define SEMI 263
00127 #define EQ 264
00128 #define COMMA 265
00129 #define COLON 266
00130 #define AMPER 267
00131 #define BAR 268
00132 #define AT 269
00133 #define KW_MACRO 270
00134 #define KW_GLOBALS 271
00135 #define KW_IGNOREPAT 272
00136 #define KW_SWITCH 273
00137 #define KW_IF 274
00138 #define KW_IFTIME 275
00139 #define KW_ELSE 276
00140 #define KW_RANDOM 277
00141 #define KW_ABSTRACT 278
00142 #define KW_EXTEND 279
00143 #define EXTENMARK 280
00144 #define KW_GOTO 281
00145 #define KW_JUMP 282
00146 #define KW_RETURN 283
00147 #define KW_BREAK 284
00148 #define KW_CONTINUE 285
00149 #define KW_REGEXTEN 286
00150 #define KW_HINT 287
00151 #define KW_FOR 288
00152 #define KW_WHILE 289
00153 #define KW_CASE 290
00154 #define KW_PATTERN 291
00155 #define KW_DEFAULT 292
00156 #define KW_CATCH 293
00157 #define KW_SWITCHES 294
00158 #define KW_ESWITCHES 295
00159 #define KW_INCLUDES 296
00160 #define KW_LOCAL 297
00161 #define word 298
00162
00163
00164
00165
00166
00167 #line 1 "ael.y"
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192 #include "asterisk.h"
00193
00194 ASTERISK_FILE_VERSION(__FILE__, "$Revision: 189533 $")
00195
00196 #include <stdio.h>
00197 #include <stdlib.h>
00198 #include <string.h>
00199
00200 #include "asterisk/logger.h"
00201 #include "asterisk/lock.h"
00202 #include "asterisk/hashtab.h"
00203 #include "asterisk/ael_structs.h"
00204 #include "asterisk/utils.h"
00205
00206 extern struct ast_flags ast_compat;
00207
00208 pval * linku1(pval *head, pval *tail);
00209 static void set_dads(pval *dad, pval *child_list);
00210 void reset_parencount(yyscan_t yyscanner);
00211 void reset_semicount(yyscan_t yyscanner);
00212 void reset_argcount(yyscan_t yyscanner );
00213
00214 #define YYLEX_PARAM ((struct parse_io *)parseio)->scanner
00215 #define YYERROR_VERBOSE 1
00216
00217 extern char *my_file;
00218 #ifdef AAL_ARGCHECK
00219 int ael_is_funcname(char *name);
00220 #endif
00221 static char *ael_token_subst(const char *mess);
00222
00223
00224
00225
00226 #ifndef YYDEBUG
00227 # define YYDEBUG 0
00228 #endif
00229
00230
00231 #ifdef YYERROR_VERBOSE
00232 # undef YYERROR_VERBOSE
00233 # define YYERROR_VERBOSE 1
00234 #else
00235 # define YYERROR_VERBOSE 1
00236 #endif
00237
00238
00239 #ifndef YYTOKEN_TABLE
00240 # define YYTOKEN_TABLE 0
00241 #endif
00242
00243 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00244 typedef union YYSTYPE
00245 #line 59 "ael.y"
00246 {
00247 int intval;
00248 char *str;
00249 struct pval *pval;
00250 }
00251
00252 #line 253 "ael.tab.c"
00253 YYSTYPE;
00254 # define yystype YYSTYPE
00255 # define YYSTYPE_IS_DECLARED 1
00256 # define YYSTYPE_IS_TRIVIAL 1
00257 #endif
00258
00259 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
00260 typedef struct YYLTYPE
00261 {
00262 int first_line;
00263 int first_column;
00264 int last_line;
00265 int last_column;
00266 } YYLTYPE;
00267 # define yyltype YYLTYPE
00268 # define YYLTYPE_IS_DECLARED 1
00269 # define YYLTYPE_IS_TRIVIAL 1
00270 #endif
00271
00272
00273
00274 #line 65 "ael.y"
00275
00276
00277 void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s);
00278 int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , void * yyscanner);
00279
00280
00281 pval *npval(pvaltype type, int first_line, int last_line,
00282 int first_column, int last_column);
00283
00284
00285
00286
00287 static pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last);
00288
00289
00290 static pval *nword(char *string, YYLTYPE *pos);
00291
00292
00293 static pval *update_last(pval *, YYLTYPE *);
00294
00295
00296
00297 #line 298 "ael.tab.c"
00298
00299 #ifdef short
00300 # undef short
00301 #endif
00302
00303 #ifdef YYTYPE_UINT8
00304 typedef YYTYPE_UINT8 yytype_uint8;
00305 #else
00306 typedef unsigned char yytype_uint8;
00307 #endif
00308
00309 #ifdef YYTYPE_INT8
00310 typedef YYTYPE_INT8 yytype_int8;
00311 #elif (defined __STDC__ || defined __C99__FUNC__ \
00312 || defined __cplusplus || defined _MSC_VER)
00313 typedef signed char yytype_int8;
00314 #else
00315 typedef short int yytype_int8;
00316 #endif
00317
00318 #ifdef YYTYPE_UINT16
00319 typedef YYTYPE_UINT16 yytype_uint16;
00320 #else
00321 typedef unsigned short int yytype_uint16;
00322 #endif
00323
00324 #ifdef YYTYPE_INT16
00325 typedef YYTYPE_INT16 yytype_int16;
00326 #else
00327 typedef short int yytype_int16;
00328 #endif
00329
00330 #ifndef YYSIZE_T
00331 # ifdef __SIZE_TYPE__
00332 # define YYSIZE_T __SIZE_TYPE__
00333 # elif defined size_t
00334 # define YYSIZE_T size_t
00335 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00336 || defined __cplusplus || defined _MSC_VER)
00337 # include <stddef.h>
00338 # define YYSIZE_T size_t
00339 # else
00340 # define YYSIZE_T unsigned int
00341 # endif
00342 #endif
00343
00344 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00345
00346 #ifndef YY_
00347 # if YYENABLE_NLS
00348 # if ENABLE_NLS
00349 # include <libintl.h>
00350 # define YY_(msgid) dgettext ("bison-runtime", msgid)
00351 # endif
00352 # endif
00353 # ifndef YY_
00354 # define YY_(msgid) msgid
00355 # endif
00356 #endif
00357
00358
00359 #if ! defined lint || defined __GNUC__
00360 # define YYUSE(e) ((void) (e))
00361 #else
00362 # define YYUSE(e)
00363 #endif
00364
00365
00366 #ifndef lint
00367 # define YYID(n) (n)
00368 #else
00369 #if (defined __STDC__ || defined __C99__FUNC__ \
00370 || defined __cplusplus || defined _MSC_VER)
00371 static int
00372 YYID (int i)
00373 #else
00374 static int
00375 YYID (i)
00376 int i;
00377 #endif
00378 {
00379 return i;
00380 }
00381 #endif
00382
00383 #if ! defined yyoverflow || YYERROR_VERBOSE
00384
00385
00386
00387 # ifdef YYSTACK_USE_ALLOCA
00388 # if YYSTACK_USE_ALLOCA
00389 # ifdef __GNUC__
00390 # define YYSTACK_ALLOC __builtin_alloca
00391 # elif defined __BUILTIN_VA_ARG_INCR
00392 # include <alloca.h>
00393 # elif defined _AIX
00394 # define YYSTACK_ALLOC __alloca
00395 # elif defined _MSC_VER
00396 # include <malloc.h>
00397 # define alloca _alloca
00398 # else
00399 # define YYSTACK_ALLOC alloca
00400 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00401 || defined __cplusplus || defined _MSC_VER)
00402 # include <stdlib.h>
00403 # ifndef _STDLIB_H
00404 # define _STDLIB_H 1
00405 # endif
00406 # endif
00407 # endif
00408 # endif
00409 # endif
00410
00411 # ifdef YYSTACK_ALLOC
00412
00413 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
00414 # ifndef YYSTACK_ALLOC_MAXIMUM
00415
00416
00417
00418
00419 # define YYSTACK_ALLOC_MAXIMUM 4032
00420 # endif
00421 # else
00422 # define YYSTACK_ALLOC YYMALLOC
00423 # define YYSTACK_FREE YYFREE
00424 # ifndef YYSTACK_ALLOC_MAXIMUM
00425 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00426 # endif
00427 # if (defined __cplusplus && ! defined _STDLIB_H \
00428 && ! ((defined YYMALLOC || defined malloc) \
00429 && (defined YYFREE || defined free)))
00430 # include <stdlib.h>
00431 # ifndef _STDLIB_H
00432 # define _STDLIB_H 1
00433 # endif
00434 # endif
00435 # ifndef YYMALLOC
00436 # define YYMALLOC malloc
00437 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00438 || defined __cplusplus || defined _MSC_VER)
00439 void *malloc (YYSIZE_T);
00440 # endif
00441 # endif
00442 # ifndef YYFREE
00443 # define YYFREE free
00444 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00445 || defined __cplusplus || defined _MSC_VER)
00446 void free (void *);
00447 # endif
00448 # endif
00449 # endif
00450 #endif
00451
00452
00453 #if (! defined yyoverflow \
00454 && (! defined __cplusplus \
00455 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
00456 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00457
00458
00459 union yyalloc
00460 {
00461 yytype_int16 yyss;
00462 YYSTYPE yyvs;
00463 YYLTYPE yyls;
00464 };
00465
00466
00467 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00468
00469
00470
00471 # define YYSTACK_BYTES(N) \
00472 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
00473 + 2 * YYSTACK_GAP_MAXIMUM)
00474
00475
00476
00477 # ifndef YYCOPY
00478 # if defined __GNUC__ && 1 < __GNUC__
00479 # define YYCOPY(To, From, Count) \
00480 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00481 # else
00482 # define YYCOPY(To, From, Count) \
00483 do \
00484 { \
00485 YYSIZE_T yyi; \
00486 for (yyi = 0; yyi < (Count); yyi++) \
00487 (To)[yyi] = (From)[yyi]; \
00488 } \
00489 while (YYID (0))
00490 # endif
00491 # endif
00492
00493
00494
00495
00496
00497
00498 # define YYSTACK_RELOCATE(Stack) \
00499 do \
00500 { \
00501 YYSIZE_T yynewbytes; \
00502 YYCOPY (&yyptr->Stack, Stack, yysize); \
00503 Stack = &yyptr->Stack; \
00504 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00505 yyptr += yynewbytes / sizeof (*yyptr); \
00506 } \
00507 while (YYID (0))
00508
00509 #endif
00510
00511
00512 #define YYFINAL 17
00513
00514 #define YYLAST 371
00515
00516
00517 #define YYNTOKENS 44
00518
00519 #define YYNNTS 56
00520
00521 #define YYNRULES 143
00522
00523 #define YYNSTATES 283
00524
00525
00526 #define YYUNDEFTOK 2
00527 #define YYMAXUTOK 298
00528
00529 #define YYTRANSLATE(YYX) \
00530 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00531
00532
00533 static const yytype_uint8 yytranslate[] =
00534 {
00535 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00536 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00537 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00538 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00541 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00542 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00543 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00550 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00560 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
00561 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00562 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
00563 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
00564 35, 36, 37, 38, 39, 40, 41, 42, 43
00565 };
00566
00567 #if YYDEBUG
00568
00569
00570 static const yytype_uint16 yyprhs[] =
00571 {
00572 0, 0, 3, 5, 7, 10, 13, 15, 17, 19,
00573 21, 23, 25, 32, 34, 35, 37, 40, 43, 52,
00574 57, 58, 61, 64, 65, 71, 72, 79, 80, 82,
00575 86, 89, 90, 93, 96, 98, 100, 102, 104, 106,
00576 108, 110, 113, 115, 120, 124, 130, 135, 143, 152,
00577 153, 156, 159, 165, 167, 175, 176, 181, 184, 187,
00578 192, 194, 197, 199, 202, 206, 210, 214, 216, 219,
00579 223, 225, 228, 232, 238, 242, 244, 246, 250, 254,
00580 257, 258, 259, 260, 273, 277, 279, 283, 286, 289,
00581 290, 296, 299, 302, 305, 309, 311, 314, 315, 317,
00582 321, 325, 331, 337, 343, 349, 350, 353, 356, 361,
00583 362, 368, 372, 373, 377, 381, 384, 386, 387, 389,
00584 390, 394, 395, 398, 403, 407, 412, 413, 416, 418,
00585 420, 426, 431, 436, 437, 441, 447, 450, 452, 456,
00586 459, 463, 466, 471
00587 };
00588
00589
00590 static const yytype_int8 yyrhs[] =
00591 {
00592 45, 0, -1, 46, -1, 47, -1, 46, 47, -1,
00593 46, 1, -1, 49, -1, 51, -1, 52, -1, 8,
00594 -1, 43, -1, 37, -1, 50, 3, 48, 4, 59,
00595 5, -1, 23, -1, -1, 24, -1, 24, 23, -1,
00596 23, 24, -1, 15, 43, 6, 58, 7, 4, 92,
00597 5, -1, 16, 4, 53, 5, -1, -1, 53, 54,
00598 -1, 1, 53, -1, -1, 43, 9, 55, 43, 8,
00599 -1, -1, 42, 43, 9, 57, 43, 8, -1, -1,
00600 43, -1, 58, 10, 43, -1, 58, 1, -1, -1,
00601 59, 60, -1, 1, 59, -1, 62, -1, 99, -1,
00602 94, -1, 95, -1, 61, -1, 54, -1, 56, -1,
00603 43, 1, -1, 8, -1, 17, 25, 43, 8, -1,
00604 43, 25, 74, -1, 43, 14, 43, 25, 74, -1,
00605 31, 43, 25, 74, -1, 32, 6, 70, 7, 43,
00606 25, 74, -1, 31, 32, 6, 70, 7, 43, 25,
00607 74, -1, -1, 63, 74, -1, 1, 63, -1, 71,
00608 11, 71, 11, 71, -1, 43, -1, 64, 13, 71,
00609 13, 71, 13, 71, -1, -1, 6, 67, 69, 7,
00610 -1, 19, 66, -1, 22, 66, -1, 20, 6, 65,
00611 7, -1, 43, -1, 43, 43, -1, 43, -1, 70,
00612 43, -1, 70, 11, 43, -1, 70, 12, 43, -1,
00613 70, 14, 43, -1, 43, -1, 43, 43, -1, 43,
00614 43, 43, -1, 43, -1, 43, 43, -1, 72, 11,
00615 43, -1, 18, 66, 4, 90, 5, -1, 4, 63,
00616 5, -1, 54, -1, 56, -1, 26, 80, 8, -1,
00617 27, 82, 8, -1, 43, 11, -1, -1, -1, -1,
00618 33, 6, 75, 43, 8, 76, 43, 8, 77, 43,
00619 7, 74, -1, 34, 66, 74, -1, 73, -1, 12,
00620 83, 8, -1, 87, 8, -1, 43, 8, -1, -1,
00621 87, 9, 78, 43, 8, -1, 29, 8, -1, 28,
00622 8, -1, 30, 8, -1, 68, 74, 79, -1, 8,
00623 -1, 21, 74, -1, -1, 72, -1, 72, 13, 72,
00624 -1, 72, 10, 72, -1, 72, 13, 72, 13, 72,
00625 -1, 72, 10, 72, 10, 72, -1, 37, 13, 72,
00626 13, 72, -1, 37, 10, 72, 10, 72, -1, -1,
00627 10, 43, -1, 72, 81, -1, 72, 81, 14, 48,
00628 -1, -1, 43, 6, 84, 89, 7, -1, 43, 6,
00629 7, -1, -1, 43, 6, 86, -1, 85, 89, 7,
00630 -1, 85, 7, -1, 43, -1, -1, 69, -1, -1,
00631 89, 10, 88, -1, -1, 90, 91, -1, 35, 43,
00632 11, 63, -1, 37, 11, 63, -1, 36, 43, 11,
00633 63, -1, -1, 92, 93, -1, 74, -1, 99, -1,
00634 38, 43, 4, 63, 5, -1, 39, 4, 96, 5,
00635 -1, 40, 4, 96, 5, -1, -1, 96, 43, 8,
00636 -1, 96, 43, 14, 43, 8, -1, 1, 96, -1,
00637 48, -1, 48, 13, 65, -1, 97, 8, -1, 98,
00638 97, 8, -1, 98, 1, -1, 41, 4, 98, 5,
00639 -1, 41, 4, 5, -1
00640 };
00641
00642
00643 static const yytype_uint16 yyrline[] =
00644 {
00645 0, 191, 191, 194, 195, 196, 199, 200, 201, 202,
00646 205, 206, 209, 218, 219, 220, 221, 222, 225, 231,
00647 237, 238, 239, 242, 242, 248, 248, 255, 256, 257,
00648 258, 261, 262, 263, 266, 267, 268, 269, 270, 271,
00649 272, 273, 274, 277, 282, 286, 294, 299, 304, 313,
00650 314, 315, 321, 331, 335, 343, 343, 347, 350, 353,
00651 364, 365, 377, 378, 387, 396, 405, 416, 417, 427,
00652 440, 441, 450, 461, 470, 473, 474, 475, 478, 481,
00653 484, 485, 486, 484, 492, 496, 497, 498, 499, 502,
00654 502, 535, 536, 537, 538, 542, 545, 546, 549, 550,
00655 553, 556, 560, 564, 568, 574, 575, 579, 582, 588,
00656 588, 593, 601, 601, 612, 619, 622, 623, 626, 627,
00657 630, 633, 634, 637, 641, 645, 651, 652, 655, 656,
00658 657, 663, 668, 673, 674, 675, 686, 689, 690, 697,
00659 698, 699, 702, 705
00660 };
00661 #endif
00662
00663 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00664
00665
00666 static const char *const yytname[] =
00667 {
00668 "$end", "error", "$undefined", "KW_CONTEXT", "LC", "RC", "LP", "RP",
00669 "SEMI", "EQ", "COMMA", "COLON", "AMPER", "BAR", "AT", "KW_MACRO",
00670 "KW_GLOBALS", "KW_IGNOREPAT", "KW_SWITCH", "KW_IF", "KW_IFTIME",
00671 "KW_ELSE", "KW_RANDOM", "KW_ABSTRACT", "KW_EXTEND", "EXTENMARK",
00672 "KW_GOTO", "KW_JUMP", "KW_RETURN", "KW_BREAK", "KW_CONTINUE",
00673 "KW_REGEXTEN", "KW_HINT", "KW_FOR", "KW_WHILE", "KW_CASE", "KW_PATTERN",
00674 "KW_DEFAULT", "KW_CATCH", "KW_SWITCHES", "KW_ESWITCHES", "KW_INCLUDES",
00675 "KW_LOCAL", "word", "$accept", "file", "objects", "object",
00676 "context_name", "context", "opt_abstract", "macro", "globals",
00677 "global_statements", "assignment", "@1", "local_assignment", "@2",
00678 "arglist", "elements", "element", "ignorepat", "extension", "statements",
00679 "timerange", "timespec", "test_expr", "@3", "if_like_head", "word_list",
00680 "hint_word", "word3_list", "goto_word", "switch_statement", "statement",
00681 "@4", "@5", "@6", "@7", "opt_else", "target", "opt_pri", "jumptarget",
00682 "macro_call", "@8", "application_call_head", "@9", "application_call",
00683 "opt_word", "eval_arglist", "case_statements", "case_statement",
00684 "macro_statements", "macro_statement", "switches", "eswitches",
00685 "switchlist", "included_entry", "includeslist", "includes", 0
00686 };
00687 #endif
00688
00689 # ifdef YYPRINT
00690
00691
00692 static const yytype_uint16 yytoknum[] =
00693 {
00694 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
00695 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
00696 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
00697 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
00698 295, 296, 297, 298
00699 };
00700 # endif
00701
00702
00703 static const yytype_uint8 yyr1[] =
00704 {
00705 0, 44, 45, 46, 46, 46, 47, 47, 47, 47,
00706 48, 48, 49, 50, 50, 50, 50, 50, 51, 52,
00707 53, 53, 53, 55, 54, 57, 56, 58, 58, 58,
00708 58, 59, 59, 59, 60, 60, 60, 60, 60, 60,
00709 60, 60, 60, 61, 62, 62, 62, 62, 62, 63,
00710 63, 63, 64, 64, 65, 67, 66, 68, 68, 68,
00711 69, 69, 70, 70, 70, 70, 70, 71, 71, 71,
00712 72, 72, 72, 73, 74, 74, 74, 74, 74, 74,
00713 75, 76, 77, 74, 74, 74, 74, 74, 74, 78,
00714 74, 74, 74, 74, 74, 74, 79, 79, 80, 80,
00715 80, 80, 80, 80, 80, 81, 81, 82, 82, 84,
00716 83, 83, 86, 85, 87, 87, 88, 88, 89, 89,
00717 89, 90, 90, 91, 91, 91, 92, 92, 93, 93,
00718 93, 94, 95, 96, 96, 96, 96, 97, 97, 98,
00719 98, 98, 99, 99
00720 };
00721
00722
00723 static const yytype_uint8 yyr2[] =
00724 {
00725 0, 2, 1, 1, 2, 2, 1, 1, 1, 1,
00726 1, 1, 6, 1, 0, 1, 2, 2, 8, 4,
00727 0, 2, 2, 0, 5, 0, 6, 0, 1, 3,
00728 2, 0, 2, 2, 1, 1, 1, 1, 1, 1,
00729 1, 2, 1, 4, 3, 5, 4, 7, 8, 0,
00730 2, 2, 5, 1, 7, 0, 4, 2, 2, 4,
00731 1, 2, 1, 2, 3, 3, 3, 1, 2, 3,
00732 1, 2, 3, 5, 3, 1, 1, 3, 3, 2,
00733 0, 0, 0, 12, 3, 1, 3, 2, 2, 0,
00734 5, 2, 2, 2, 3, 1, 2, 0, 1, 3,
00735 3, 5, 5, 5, 5, 0, 2, 2, 4, 0,
00736 5, 3, 0, 3, 3, 2, 1, 0, 1, 0,
00737 3, 0, 2, 4, 3, 4, 0, 2, 1, 1,
00738 5, 4, 4, 0, 3, 5, 2, 1, 3, 2,
00739 3, 2, 4, 3
00740 };
00741
00742
00743
00744
00745 static const yytype_uint8 yydefact[] =
00746 {
00747 14, 9, 0, 0, 13, 15, 0, 0, 3, 6,
00748 0, 7, 8, 0, 0, 17, 16, 1, 5, 4,
00749 0, 27, 0, 0, 11, 10, 0, 28, 0, 22,
00750 19, 0, 21, 0, 30, 0, 0, 23, 0, 0,
00751 126, 29, 0, 33, 12, 42, 0, 0, 0, 0,
00752 0, 0, 0, 0, 39, 40, 32, 38, 34, 36,
00753 37, 35, 0, 0, 0, 0, 0, 0, 0, 0,
00754 0, 0, 41, 0, 0, 0, 18, 95, 0, 0,
00755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00756 0, 0, 75, 76, 0, 85, 128, 119, 0, 127,
00757 129, 24, 0, 0, 0, 62, 0, 0, 0, 0,
00758 143, 137, 0, 0, 25, 0, 44, 0, 0, 0,
00759 0, 55, 0, 57, 0, 58, 0, 70, 98, 0,
00760 105, 0, 92, 91, 93, 80, 0, 0, 112, 88,
00761 79, 97, 115, 60, 118, 0, 87, 89, 43, 0,
00762 46, 0, 0, 0, 0, 63, 136, 131, 0, 132,
00763 0, 139, 141, 142, 0, 0, 0, 51, 74, 50,
00764 109, 86, 0, 121, 53, 0, 0, 0, 0, 0,
00765 71, 0, 0, 0, 77, 0, 107, 78, 0, 84,
00766 0, 113, 0, 94, 61, 114, 117, 0, 0, 0,
00767 64, 65, 66, 134, 0, 138, 140, 0, 45, 111,
00768 119, 0, 0, 68, 0, 59, 0, 0, 0, 100,
00769 72, 99, 106, 0, 0, 0, 96, 116, 120, 0,
00770 0, 0, 0, 26, 0, 56, 73, 0, 0, 0,
00771 122, 69, 67, 0, 0, 0, 0, 0, 0, 108,
00772 81, 130, 90, 0, 47, 135, 110, 0, 0, 0,
00773 0, 0, 104, 103, 102, 101, 0, 48, 0, 0,
00774 124, 0, 52, 0, 123, 125, 0, 82, 54, 0,
00775 0, 0, 83
00776 };
00777
00778
00779 static const yytype_int16 yydefgoto[] =
00780 {
00781 -1, 6, 7, 8, 111, 9, 10, 11, 12, 23,
00782 92, 42, 93, 165, 28, 39, 56, 57, 58, 118,
00783 175, 176, 122, 172, 94, 144, 106, 177, 128, 95,
00784 169, 188, 266, 279, 197, 193, 129, 186, 131, 120,
00785 210, 97, 191, 98, 228, 145, 212, 240, 62, 99,
00786 59, 60, 108, 112, 113, 61
00787 };
00788
00789
00790
00791 #define YYPACT_NINF -211
00792 static const yytype_int16 yypact[] =
00793 {
00794 166, -211, -32, 15, 12, 36, 40, 316, -211, -211,
00795 75, -211, -211, 82, 17, -211, -211, -211, -211, -211,
00796 -28, 57, 17, 0, -211, -211, 127, -211, 6, 109,
00797 -211, 152, -211, 136, -211, 169, 143, -211, 136, 117,
00798 -211, -211, 144, 272, -211, -211, 170, -15, 191, 197,
00799 199, 201, 168, 137, -211, -211, -211, -211, -211, -211,
00800 -211, -211, 180, 204, 172, 219, 202, 185, 25, 25,
00801 28, 217, -211, 186, 266, 90, -211, -211, 190, 229,
00802 229, 230, 229, 21, 194, 240, 241, 242, 246, 229,
00803 210, 312, -211, -211, 266, -211, -211, 1, 61, -211,
00804 -211, -211, 248, 185, 266, -211, 68, 25, 24, 29,
00805 -211, 247, 254, 20, -211, 238, -211, 19, 212, 258,
00806 263, -211, 271, -211, 233, -211, 126, 234, 183, 275,
00807 95, 279, -211, -211, -211, -211, 266, 286, -211, -211,
00808 -211, 270, -211, 236, -211, 140, -211, -211, -211, 78,
00809 -211, 255, 259, 262, 264, -211, 267, -211, 69, -211,
00810 233, -211, -211, -211, 289, 282, 266, 266, -211, -211,
00811 294, -211, 283, -211, 70, 293, 315, 317, 194, 194,
00812 -211, 194, 284, 194, -211, 287, 319, -211, 291, -211,
00813 90, -211, 266, -211, -211, -211, 292, 295, 298, 304,
00814 -211, -211, -211, -211, 299, -211, -211, 328, -211, -211,
00815 283, 330, 135, 300, 301, -211, 301, 104, 73, 132,
00816 -211, 116, -211, -28, 337, 239, -211, -211, -211, 338,
00817 322, 266, 340, -211, 173, -211, -211, 306, 307, 341,
00818 -211, -211, 308, 342, 343, 194, 194, 194, 194, -211,
00819 -211, -211, -211, 266, -211, -211, -211, 345, 346, 19,
00820 301, 301, 347, 347, 347, 347, 310, -211, 19, 19,
00821 266, 348, -211, 351, 266, 266, 301, -211, -211, 320,
00822 353, 266, -211
00823 };
00824
00825
00826 static const yytype_int16 yypgoto[] =
00827 {
00828 -211, -211, -211, 355, -19, -211, -211, -211, -211, 344,
00829 64, -211, -29, -211, -211, 326, -211, -211, -211, -114,
00830 -211, 205, 46, -211, -211, 195, 265, -210, -82, -211,
00831 -62, -211, -211, -211, -211, -211, -211, -211, -211, -211,
00832 -211, -211, -211, -211, -211, 159, -211, -211, -211, -211,
00833 -211, -211, -34, 257, -211, 309
00834 };
00835
00836
00837
00838
00839
00840 #define YYTABLE_NINF -134
00841 static const yytype_int16 yytable[] =
00842 {
00843 96, 26, 130, 167, 243, 30, 244, 34, 142, 24,
00844 55, 13, 116, 35, 55, 25, 36, 65, 22, 14,
00845 117, 162, -20, -49, -49, 163, 107, -49, 66, 157,
00846 -133, -49, 141, 110, 159, 109, 15, -49, -49, -49,
00847 17, -49, 150, 31, 143, -49, -49, -49, -49, -49,
00848 271, 272, -49, -49, -49, -49, -49, 24, 126, 16,
00849 -20, -49, -49, 25, 127, 24, 278, 158, -133, 146,
00850 147, 25, 158, 156, 189, 151, 225, 203, 20, 152,
00851 153, -67, 154, 204, 182, 198, 246, 32, 21, 152,
00852 153, 117, 154, 32, -49, -49, 217, 218, -49, 219,
00853 27, 221, -49, 54, 208, 185, 182, 54, -49, -49,
00854 -49, 155, -49, 213, 245, 182, -49, -49, -49, -49,
00855 -49, 155, 44, -49, -49, 45, 123, 182, 125, 248,
00856 226, 33, -49, -49, 46, 136, 178, 38, 72, 179,
00857 236, -31, 247, 182, -31, 270, 37, 195, 47, 48,
00858 196, 73, 31, -31, 274, 275, 49, 50, 51, 52,
00859 53, 37, 74, 262, 263, 264, 265, -31, -31, 254,
00860 237, 238, 239, 40, 1, -31, -31, -31, -31, -31,
00861 256, 2, 3, 196, 75, 76, 41, 63, 77, 4,
00862 5, 267, 78, 181, 182, 64, 183, 67, 79, 80,
00863 81, 68, 82, 69, 249, 70, 83, 84, 85, 86,
00864 87, 71, 101, 88, 89, 102, 75, 168, 90, 282,
00865 77, 51, 52, 91, 78, 103, 114, 104, 105, 115,
00866 79, 80, 81, 119, 82, 121, 124, 127, 83, 84,
00867 85, 86, 87, 75, 251, 88, 89, 77, 132, 133,
00868 134, 78, 135, 137, 52, 91, 148, 79, 80, 81,
00869 160, 82, 161, 166, 170, 83, 84, 85, 86, 87,
00870 75, 171, 88, 89, 77, 173, 174, 180, 78, 194,
00871 45, 52, 91, 184, 79, 80, 81, 187, 82, 46,
00872 190, 192, 83, 84, 85, 86, 87, 206, 199, 88,
00873 89, 209, 200, 47, 48, 201, 214, 202, 52, 91,
00874 158, 49, 50, 51, 52, 53, -2, 18, 138, -14,
00875 139, 37, 215, 140, 1, 207, 143, 220, 216, 231,
00876 222, 2, 3, 223, 224, 227, 233, 235, 229, 4,
00877 5, 230, 232, 241, 242, 250, 252, 253, 255, 257,
00878 258, 213, 259, 273, 261, 260, 268, 269, 182, 277,
00879 281, 276, 19, 280, 43, 205, 29, 211, 149, 234,
00880 164, 100
00881 };
00882
00883 static const yytype_uint16 yycheck[] =
00884 {
00885 62, 20, 84, 117, 214, 5, 216, 1, 7, 37,
00886 39, 43, 74, 7, 43, 43, 10, 32, 1, 4,
00887 1, 1, 5, 4, 5, 5, 1, 8, 43, 5,
00888 5, 12, 94, 5, 5, 69, 24, 18, 19, 20,
00889 0, 22, 104, 43, 43, 26, 27, 28, 29, 30,
00890 260, 261, 33, 34, 35, 36, 37, 37, 37, 23,
00891 43, 42, 43, 43, 43, 37, 276, 43, 43, 8,
00892 9, 43, 43, 107, 136, 7, 190, 8, 3, 11,
00893 12, 11, 14, 14, 11, 7, 13, 23, 6, 11,
00894 12, 1, 14, 29, 4, 5, 178, 179, 8, 181,
00895 43, 183, 12, 39, 166, 10, 11, 43, 18, 19,
00896 20, 43, 22, 43, 10, 11, 26, 27, 28, 29,
00897 30, 43, 5, 33, 34, 8, 80, 11, 82, 13,
00898 192, 4, 42, 43, 17, 89, 10, 1, 1, 13,
00899 5, 5, 10, 11, 8, 259, 9, 7, 31, 32,
00900 10, 14, 43, 17, 268, 269, 39, 40, 41, 42,
00901 43, 9, 25, 245, 246, 247, 248, 31, 32, 231,
00902 35, 36, 37, 4, 8, 39, 40, 41, 42, 43,
00903 7, 15, 16, 10, 4, 5, 43, 43, 8, 23,
00904 24, 253, 12, 10, 11, 25, 13, 6, 18, 19,
00905 20, 4, 22, 4, 223, 4, 26, 27, 28, 29,
00906 30, 43, 8, 33, 34, 43, 4, 5, 38, 281,
00907 8, 41, 42, 43, 12, 6, 9, 25, 43, 43,
00908 18, 19, 20, 43, 22, 6, 6, 43, 26, 27,
00909 28, 29, 30, 4, 5, 33, 34, 8, 8, 8,
00910 8, 12, 6, 43, 42, 43, 8, 18, 19, 20,
00911 13, 22, 8, 25, 6, 26, 27, 28, 29, 30,
00912 4, 8, 33, 34, 8, 4, 43, 43, 12, 43,
00913 8, 42, 43, 8, 18, 19, 20, 8, 22, 17,
00914 4, 21, 26, 27, 28, 29, 30, 8, 43, 33,
00915 34, 7, 43, 31, 32, 43, 13, 43, 42, 43,
00916 43, 39, 40, 41, 42, 43, 0, 1, 6, 3,
00917 8, 9, 7, 11, 8, 43, 43, 43, 11, 25,
00918 43, 15, 16, 14, 43, 43, 8, 7, 43, 23,
00919 24, 43, 43, 43, 43, 8, 8, 25, 8, 43,
00920 43, 43, 11, 43, 11, 13, 11, 11, 11, 8,
00921 7, 13, 7, 43, 38, 160, 22, 172, 103, 210,
00922 113, 62
00923 };
00924
00925
00926
00927 static const yytype_uint8 yystos[] =
00928 {
00929 0, 8, 15, 16, 23, 24, 45, 46, 47, 49,
00930 50, 51, 52, 43, 4, 24, 23, 0, 1, 47,
00931 3, 6, 1, 53, 37, 43, 48, 43, 58, 53,
00932 5, 43, 54, 4, 1, 7, 10, 9, 1, 59,
00933 4, 43, 55, 59, 5, 8, 17, 31, 32, 39,
00934 40, 41, 42, 43, 54, 56, 60, 61, 62, 94,
00935 95, 99, 92, 43, 25, 32, 43, 6, 4, 4,
00936 4, 43, 1, 14, 25, 4, 5, 8, 12, 18,
00937 19, 20, 22, 26, 27, 28, 29, 30, 33, 34,
00938 38, 43, 54, 56, 68, 73, 74, 85, 87, 93,
00939 99, 8, 43, 6, 25, 43, 70, 1, 96, 96,
00940 5, 48, 97, 98, 9, 43, 74, 1, 63, 43,
00941 83, 6, 66, 66, 6, 66, 37, 43, 72, 80,
00942 72, 82, 8, 8, 8, 6, 66, 43, 6, 8,
00943 11, 74, 7, 43, 69, 89, 8, 9, 8, 70,
00944 74, 7, 11, 12, 14, 43, 96, 5, 43, 5,
00945 13, 8, 1, 5, 97, 57, 25, 63, 5, 74,
00946 6, 8, 67, 4, 43, 64, 65, 71, 10, 13,
00947 43, 10, 11, 13, 8, 10, 81, 8, 75, 74,
00948 4, 86, 21, 79, 43, 7, 10, 78, 7, 43,
00949 43, 43, 43, 8, 14, 65, 8, 43, 74, 7,
00950 84, 69, 90, 43, 13, 7, 11, 72, 72, 72,
00951 43, 72, 43, 14, 43, 63, 74, 43, 88, 43,
00952 43, 25, 43, 8, 89, 7, 5, 35, 36, 37,
00953 91, 43, 43, 71, 71, 10, 13, 10, 13, 48,
00954 8, 5, 8, 25, 74, 8, 7, 43, 43, 11,
00955 13, 11, 72, 72, 72, 72, 76, 74, 11, 11,
00956 63, 71, 71, 43, 63, 63, 13, 8, 71, 77,
00957 43, 7, 74
00958 };
00959
00960 #define yyerrok (yyerrstatus = 0)
00961 #define yyclearin (yychar = YYEMPTY)
00962 #define YYEMPTY (-2)
00963 #define YYEOF 0
00964
00965 #define YYACCEPT goto yyacceptlab
00966 #define YYABORT goto yyabortlab
00967 #define YYERROR goto yyerrorlab
00968
00969
00970
00971
00972
00973
00974 #define YYFAIL goto yyerrlab
00975
00976 #define YYRECOVERING() (!!yyerrstatus)
00977
00978 #define YYBACKUP(Token, Value) \
00979 do \
00980 if (yychar == YYEMPTY && yylen == 1) \
00981 { \
00982 yychar = (Token); \
00983 yylval = (Value); \
00984 yytoken = YYTRANSLATE (yychar); \
00985 YYPOPSTACK (1); \
00986 goto yybackup; \
00987 } \
00988 else \
00989 { \
00990 yyerror (&yylloc, parseio, YY_("syntax error: cannot back up")); \
00991 YYERROR; \
00992 } \
00993 while (YYID (0))
00994
00995
00996 #define YYTERROR 1
00997 #define YYERRCODE 256
00998
00999
01000
01001
01002
01003
01004 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
01005 #ifndef YYLLOC_DEFAULT
01006 # define YYLLOC_DEFAULT(Current, Rhs, N) \
01007 do \
01008 if (YYID (N)) \
01009 { \
01010 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
01011 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
01012 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
01013 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
01014 } \
01015 else \
01016 { \
01017 (Current).first_line = (Current).last_line = \
01018 YYRHSLOC (Rhs, 0).last_line; \
01019 (Current).first_column = (Current).last_column = \
01020 YYRHSLOC (Rhs, 0).last_column; \
01021 } \
01022 while (YYID (0))
01023 #endif
01024
01025
01026
01027
01028
01029
01030 #ifndef YY_LOCATION_PRINT
01031 # if YYLTYPE_IS_TRIVIAL
01032 # define YY_LOCATION_PRINT(File, Loc) \
01033 fprintf (File, "%d.%d-%d.%d", \
01034 (Loc).first_line, (Loc).first_column, \
01035 (Loc).last_line, (Loc).last_column)
01036 # else
01037 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
01038 # endif
01039 #endif
01040
01041
01042
01043
01044 #ifdef YYLEX_PARAM
01045 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
01046 #else
01047 # define YYLEX yylex (&yylval, &yylloc)
01048 #endif
01049
01050
01051 #if YYDEBUG
01052
01053 # ifndef YYFPRINTF
01054 # include <stdio.h>
01055 # define YYFPRINTF fprintf
01056 # endif
01057
01058 # define YYDPRINTF(Args) \
01059 do { \
01060 if (yydebug) \
01061 YYFPRINTF Args; \
01062 } while (YYID (0))
01063
01064 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
01065 do { \
01066 if (yydebug) \
01067 { \
01068 YYFPRINTF (stderr, "%s ", Title); \
01069 yy_symbol_print (stderr, \
01070 Type, Value, Location, parseio); \
01071 YYFPRINTF (stderr, "\n"); \
01072 } \
01073 } while (YYID (0))
01074
01075
01076
01077
01078
01079
01080
01081 #if (defined __STDC__ || defined __C99__FUNC__ \
01082 || defined __cplusplus || defined _MSC_VER)
01083 static void
01084 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio)
01085 #else
01086 static void
01087 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
01088 FILE *yyoutput;
01089 int yytype;
01090 YYSTYPE const * const yyvaluep;
01091 YYLTYPE const * const yylocationp;
01092 struct parse_io *parseio;
01093 #endif
01094 {
01095 if (!yyvaluep)
01096 return;
01097 YYUSE (yylocationp);
01098 YYUSE (parseio);
01099 # ifdef YYPRINT
01100 if (yytype < YYNTOKENS)
01101 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
01102 # else
01103 YYUSE (yyoutput);
01104 # endif
01105 switch (yytype)
01106 {
01107 default:
01108 break;
01109 }
01110 }
01111
01112
01113
01114
01115
01116
01117 #if (defined __STDC__ || defined __C99__FUNC__ \
01118 || defined __cplusplus || defined _MSC_VER)
01119 static void
01120 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio)
01121 #else
01122 static void
01123 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
01124 FILE *yyoutput;
01125 int yytype;
01126 YYSTYPE const * const yyvaluep;
01127 YYLTYPE const * const yylocationp;
01128 struct parse_io *parseio;
01129 #endif
01130 {
01131 if (yytype < YYNTOKENS)
01132 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
01133 else
01134 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
01135
01136 YY_LOCATION_PRINT (yyoutput, *yylocationp);
01137 YYFPRINTF (yyoutput, ": ");
01138 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio);
01139 YYFPRINTF (yyoutput, ")");
01140 }
01141
01142
01143
01144
01145
01146
01147 #if (defined __STDC__ || defined __C99__FUNC__ \
01148 || defined __cplusplus || defined _MSC_VER)
01149 static void
01150 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
01151 #else
01152 static void
01153 yy_stack_print (bottom, top)
01154 yytype_int16 *bottom;
01155 yytype_int16 *top;
01156 #endif
01157 {
01158 YYFPRINTF (stderr, "Stack now");
01159 for (; bottom <= top; ++bottom)
01160 YYFPRINTF (stderr, " %d", *bottom);
01161 YYFPRINTF (stderr, "\n");
01162 }
01163
01164 # define YY_STACK_PRINT(Bottom, Top) \
01165 do { \
01166 if (yydebug) \
01167 yy_stack_print ((Bottom), (Top)); \
01168 } while (YYID (0))
01169
01170
01171
01172
01173
01174
01175 #if (defined __STDC__ || defined __C99__FUNC__ \
01176 || defined __cplusplus || defined _MSC_VER)
01177 static void
01178 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, struct parse_io *parseio)
01179 #else
01180 static void
01181 yy_reduce_print (yyvsp, yylsp, yyrule, parseio)
01182 YYSTYPE *yyvsp;
01183 YYLTYPE *yylsp;
01184 int yyrule;
01185 struct parse_io *parseio;
01186 #endif
01187 {
01188 int yynrhs = yyr2[yyrule];
01189 int yyi;
01190 unsigned long int yylno = yyrline[yyrule];
01191 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
01192 yyrule - 1, yylno);
01193
01194 for (yyi = 0; yyi < yynrhs; yyi++)
01195 {
01196 fprintf (stderr, " $%d = ", yyi + 1);
01197 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
01198 &(yyvsp[(yyi + 1) - (yynrhs)])
01199 , &(yylsp[(yyi + 1) - (yynrhs)]) , parseio);
01200 fprintf (stderr, "\n");
01201 }
01202 }
01203
01204 # define YY_REDUCE_PRINT(Rule) \
01205 do { \
01206 if (yydebug) \
01207 yy_reduce_print (yyvsp, yylsp, Rule, parseio); \
01208 } while (YYID (0))
01209
01210
01211
01212 int yydebug;
01213 #else
01214 # define YYDPRINTF(Args)
01215 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
01216 # define YY_STACK_PRINT(Bottom, Top)
01217 # define YY_REDUCE_PRINT(Rule)
01218 #endif
01219
01220
01221
01222 #ifndef YYINITDEPTH
01223 # define YYINITDEPTH 200
01224 #endif
01225
01226
01227
01228
01229
01230
01231
01232
01233 #ifndef YYMAXDEPTH
01234 # define YYMAXDEPTH 10000
01235 #endif
01236
01237
01238
01239 #if YYERROR_VERBOSE
01240
01241 # ifndef yystrlen
01242 # if defined __GLIBC__ && defined _STRING_H
01243 # define yystrlen strlen
01244 # else
01245
01246 #if (defined __STDC__ || defined __C99__FUNC__ \
01247 || defined __cplusplus || defined _MSC_VER)
01248 static YYSIZE_T
01249 yystrlen (const char *yystr)
01250 #else
01251 static YYSIZE_T
01252 yystrlen (yystr)
01253 const char *yystr;
01254 #endif
01255 {
01256 YYSIZE_T yylen;
01257 for (yylen = 0; yystr[yylen]; yylen++)
01258 continue;
01259 return yylen;
01260 }
01261 # endif
01262 # endif
01263
01264 # ifndef yystpcpy
01265 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
01266 # define yystpcpy stpcpy
01267 # else
01268
01269
01270 #if (defined __STDC__ || defined __C99__FUNC__ \
01271 || defined __cplusplus || defined _MSC_VER)
01272 static char *
01273 yystpcpy (char *yydest, const char *yysrc)
01274 #else
01275 static char *
01276 yystpcpy (yydest, yysrc)
01277 char *yydest;
01278 const char *yysrc;
01279 #endif
01280 {
01281 char *yyd = yydest;
01282 const char *yys = yysrc;
01283
01284 while ((*yyd++ = *yys++) != '\0')
01285 continue;
01286
01287 return yyd - 1;
01288 }
01289 # endif
01290 # endif
01291
01292 # ifndef yytnamerr
01293
01294
01295
01296
01297
01298
01299
01300 static YYSIZE_T
01301 yytnamerr (char *yyres, const char *yystr)
01302 {
01303 if (*yystr == '"')
01304 {
01305 YYSIZE_T yyn = 0;
01306 char const *yyp = yystr;
01307
01308 for (;;)
01309 switch (*++yyp)
01310 {
01311 case '\'':
01312 case ',':
01313 goto do_not_strip_quotes;
01314
01315 case '\\':
01316 if (*++yyp != '\\')
01317 goto do_not_strip_quotes;
01318
01319 default:
01320 if (yyres)
01321 yyres[yyn] = *yyp;
01322 yyn++;
01323 break;
01324
01325 case '"':
01326 if (yyres)
01327 yyres[yyn] = '\0';
01328 return yyn;
01329 }
01330 do_not_strip_quotes: ;
01331 }
01332
01333 if (! yyres)
01334 return yystrlen (yystr);
01335
01336 return yystpcpy (yyres, yystr) - yyres;
01337 }
01338 # endif
01339
01340
01341
01342
01343
01344
01345
01346
01347 static YYSIZE_T
01348 yysyntax_error (char *yyresult, int yystate, int yychar)
01349 {
01350 int yyn = yypact[yystate];
01351
01352 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
01353 return 0;
01354 else
01355 {
01356 int yytype = YYTRANSLATE (yychar);
01357 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
01358 YYSIZE_T yysize = yysize0;
01359 YYSIZE_T yysize1;
01360 int yysize_overflow = 0;
01361 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
01362 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
01363 int yyx;
01364
01365 # if 0
01366
01367
01368 YY_("syntax error, unexpected %s");
01369 YY_("syntax error, unexpected %s, expecting %s");
01370 YY_("syntax error, unexpected %s, expecting %s or %s");
01371 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
01372 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
01373 # endif
01374 char *yyfmt;
01375 char const *yyf;
01376 static char const yyunexpected[] = "syntax error, unexpected %s";
01377 static char const yyexpecting[] = ", expecting %s";
01378 static char const yyor[] = " or %s";
01379 char yyformat[sizeof yyunexpected
01380 + sizeof yyexpecting - 1
01381 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
01382 * (sizeof yyor - 1))];
01383 char const *yyprefix = yyexpecting;
01384
01385
01386
01387 int yyxbegin = yyn < 0 ? -yyn : 0;
01388
01389
01390 int yychecklim = YYLAST - yyn + 1;
01391 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
01392 int yycount = 1;
01393
01394 yyarg[0] = yytname[yytype];
01395 yyfmt = yystpcpy (yyformat, yyunexpected);
01396
01397 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
01398 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
01399 {
01400 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
01401 {
01402 yycount = 1;
01403 yysize = yysize0;
01404 yyformat[sizeof yyunexpected - 1] = '\0';
01405 break;
01406 }
01407 yyarg[yycount++] = yytname[yyx];
01408 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
01409 yysize_overflow |= (yysize1 < yysize);
01410 yysize = yysize1;
01411 yyfmt = yystpcpy (yyfmt, yyprefix);
01412 yyprefix = yyor;
01413 }
01414
01415 yyf = YY_(yyformat);
01416 yysize1 = yysize + yystrlen (yyf);
01417 yysize_overflow |= (yysize1 < yysize);
01418 yysize = yysize1;
01419
01420 if (yysize_overflow)
01421 return YYSIZE_MAXIMUM;
01422
01423 if (yyresult)
01424 {
01425
01426
01427
01428 char *yyp = yyresult;
01429 int yyi = 0;
01430 while ((*yyp = *yyf) != '\0')
01431 {
01432 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
01433 {
01434 yyp += yytnamerr (yyp, yyarg[yyi++]);
01435 yyf += 2;
01436 }
01437 else
01438 {
01439 yyp++;
01440 yyf++;
01441 }
01442 }
01443 }
01444 return yysize;
01445 }
01446 }
01447 #endif
01448
01449
01450
01451
01452
01453
01454
01455 #if (defined __STDC__ || defined __C99__FUNC__ \
01456 || defined __cplusplus || defined _MSC_VER)
01457 static void
01458 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, struct parse_io *parseio)
01459 #else
01460 static void
01461 yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
01462 const char *yymsg;
01463 int yytype;
01464 YYSTYPE *yyvaluep;
01465 YYLTYPE *yylocationp;
01466 struct parse_io *parseio;
01467 #endif
01468 {
01469 YYUSE (yyvaluep);
01470 YYUSE (yylocationp);
01471 YYUSE (parseio);
01472
01473 if (!yymsg)
01474 yymsg = "Deleting";
01475 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01476
01477 switch (yytype)
01478 {
01479 case 43:
01480 #line 183 "ael.y"
01481 { free((yyvaluep->str));};
01482 #line 1483 "ael.tab.c"
01483 break;
01484 case 46:
01485 #line 170 "ael.y"
01486 {
01487 destroy_pval((yyvaluep->pval));
01488 prev_word=0;
01489 };
01490 #line 1491 "ael.tab.c"
01491 break;
01492 case 47:
01493 #line 170 "ael.y"
01494 {
01495 destroy_pval((yyvaluep->pval));
01496 prev_word=0;
01497 };
01498 #line 1499 "ael.tab.c"
01499 break;
01500 case 48:
01501 #line 183 "ael.y"
01502 { free((yyvaluep->str));};
01503 #line 1504 "ael.tab.c"
01504 break;
01505 case 49:
01506 #line 170 "ael.y"
01507 {
01508 destroy_pval((yyvaluep->pval));
01509 prev_word=0;
01510 };
01511 #line 1512 "ael.tab.c"
01512 break;
01513 case 51:
01514 #line 170 "ael.y"
01515 {
01516 destroy_pval((yyvaluep->pval));
01517 prev_word=0;
01518 };
01519 #line 1520 "ael.tab.c"
01520 break;
01521 case 52:
01522 #line 170 "ael.y"
01523 {
01524 destroy_pval((yyvaluep->pval));
01525 prev_word=0;
01526 };
01527 #line 1528 "ael.tab.c"
01528 break;
01529 case 53:
01530 #line 170 "ael.y"
01531 {
01532 destroy_pval((yyvaluep->pval));
01533 prev_word=0;
01534 };
01535 #line 1536 "ael.tab.c"
01536 break;
01537 case 54:
01538 #line 170 "ael.y"
01539 {
01540 destroy_pval((yyvaluep->pval));
01541 prev_word=0;
01542 };
01543 #line 1544 "ael.tab.c"
01544 break;
01545 case 56:
01546 #line 170 "ael.y"
01547 {
01548 destroy_pval((yyvaluep->pval));
01549 prev_word=0;
01550 };
01551 #line 1552 "ael.tab.c"
01552 break;
01553 case 58:
01554 #line 170 "ael.y"
01555 {
01556 destroy_pval((yyvaluep->pval));
01557 prev_word=0;
01558 };
01559 #line 1560 "ael.tab.c"
01560 break;
01561 case 59:
01562 #line 170 "ael.y"
01563 {
01564 destroy_pval((yyvaluep->pval));
01565 prev_word=0;
01566 };
01567 #line 1568 "ael.tab.c"
01568 break;
01569 case 60:
01570 #line 170 "ael.y"
01571 {
01572 destroy_pval((yyvaluep->pval));
01573 prev_word=0;
01574 };
01575 #line 1576 "ael.tab.c"
01576 break;
01577 case 61:
01578 #line 170 "ael.y"
01579 {
01580 destroy_pval((yyvaluep->pval));
01581 prev_word=0;
01582 };
01583 #line 1584 "ael.tab.c"
01584 break;
01585 case 62:
01586 #line 170 "ael.y"
01587 {
01588 destroy_pval((yyvaluep->pval));
01589 prev_word=0;
01590 };
01591 #line 1592 "ael.tab.c"
01592 break;
01593 case 63:
01594 #line 170 "ael.y"
01595 {
01596 destroy_pval((yyvaluep->pval));
01597 prev_word=0;
01598 };
01599 #line 1600 "ael.tab.c"
01600 break;
01601 case 64:
01602 #line 183 "ael.y"
01603 { free((yyvaluep->str));};
01604 #line 1605 "ael.tab.c"
01605 break;
01606 case 65:
01607 #line 170 "ael.y"
01608 {
01609 destroy_pval((yyvaluep->pval));
01610 prev_word=0;
01611 };
01612 #line 1613 "ael.tab.c"
01613 break;
01614 case 66:
01615 #line 183 "ael.y"
01616 { free((yyvaluep->str));};
01617 #line 1618 "ael.tab.c"
01618 break;
01619 case 68:
01620 #line 170 "ael.y"
01621 {
01622 destroy_pval((yyvaluep->pval));
01623 prev_word=0;
01624 };
01625 #line 1626 "ael.tab.c"
01626 break;
01627 case 69:
01628 #line 183 "ael.y"
01629 { free((yyvaluep->str));};
01630 #line 1631 "ael.tab.c"
01631 break;
01632 case 71:
01633 #line 183 "ael.y"
01634 { free((yyvaluep->str));};
01635 #line 1636 "ael.tab.c"
01636 break;
01637 case 72:
01638 #line 183 "ael.y"
01639 { free((yyvaluep->str));};
01640 #line 1641 "ael.tab.c"
01641 break;
01642 case 73:
01643 #line 170 "ael.y"
01644 {
01645 destroy_pval((yyvaluep->pval));
01646 prev_word=0;
01647 };
01648 #line 1649 "ael.tab.c"
01649 break;
01650 case 74:
01651 #line 170 "ael.y"
01652 {
01653 destroy_pval((yyvaluep->pval));
01654 prev_word=0;
01655 };
01656 #line 1657 "ael.tab.c"
01657 break;
01658 case 79:
01659 #line 170 "ael.y"
01660 {
01661 destroy_pval((yyvaluep->pval));
01662 prev_word=0;
01663 };
01664 #line 1665 "ael.tab.c"
01665 break;
01666 case 80:
01667 #line 170 "ael.y"
01668 {
01669 destroy_pval((yyvaluep->pval));
01670 prev_word=0;
01671 };
01672 #line 1673 "ael.tab.c"
01673 break;
01674 case 81:
01675 #line 183 "ael.y"
01676 { free((yyvaluep->str));};
01677 #line 1678 "ael.tab.c"
01678 break;
01679 case 82:
01680 #line 170 "ael.y"
01681 {
01682 destroy_pval((yyvaluep->pval));
01683 prev_word=0;
01684 };
01685 #line 1686 "ael.tab.c"
01686 break;
01687 case 83:
01688 #line 170 "ael.y"
01689 {
01690 destroy_pval((yyvaluep->pval));
01691 prev_word=0;
01692 };
01693 #line 1694 "ael.tab.c"
01694 break;
01695 case 85:
01696 #line 170 "ael.y"
01697 {
01698 destroy_pval((yyvaluep->pval));
01699 prev_word=0;
01700 };
01701 #line 1702 "ael.tab.c"
01702 break;
01703 case 87:
01704 #line 170 "ael.y"
01705 {
01706 destroy_pval((yyvaluep->pval));
01707 prev_word=0;
01708 };
01709 #line 1710 "ael.tab.c"
01710 break;
01711 case 88:
01712 #line 183 "ael.y"
01713 { free((yyvaluep->str));};
01714 #line 1715 "ael.tab.c"
01715 break;
01716 case 89:
01717 #line 170 "ael.y"
01718 {
01719 destroy_pval((yyvaluep->pval));
01720 prev_word=0;
01721 };
01722 #line 1723 "ael.tab.c"
01723 break;
01724 case 90:
01725 #line 170 "ael.y"
01726 {
01727 destroy_pval((yyvaluep->pval));
01728 prev_word=0;
01729 };
01730 #line 1731 "ael.tab.c"
01731 break;
01732 case 91:
01733 #line 170 "ael.y"
01734 {
01735 destroy_pval((yyvaluep->pval));
01736 prev_word=0;
01737 };
01738 #line 1739 "ael.tab.c"
01739 break;
01740 case 92:
01741 #line 170 "ael.y"
01742 {
01743 destroy_pval((yyvaluep->pval));
01744 prev_word=0;
01745 };
01746 #line 1747 "ael.tab.c"
01747 break;
01748 case 93:
01749 #line 170 "ael.y"
01750 {
01751 destroy_pval((yyvaluep->pval));
01752 prev_word=0;
01753 };
01754 #line 1755 "ael.tab.c"
01755 break;
01756 case 94:
01757 #line 170 "ael.y"
01758 {
01759 destroy_pval((yyvaluep->pval));
01760 prev_word=0;
01761 };
01762 #line 1763 "ael.tab.c"
01763 break;
01764 case 95:
01765 #line 170 "ael.y"
01766 {
01767 destroy_pval((yyvaluep->pval));
01768 prev_word=0;
01769 };
01770 #line 1771 "ael.tab.c"
01771 break;
01772 case 96:
01773 #line 170 "ael.y"
01774 {
01775 destroy_pval((yyvaluep->pval));
01776 prev_word=0;
01777 };
01778 #line 1779 "ael.tab.c"
01779 break;
01780 case 97:
01781 #line 170 "ael.y"
01782 {
01783 destroy_pval((yyvaluep->pval));
01784 prev_word=0;
01785 };
01786 #line 1787 "ael.tab.c"
01787 break;
01788 case 98:
01789 #line 170 "ael.y"
01790 {
01791 destroy_pval((yyvaluep->pval));
01792 prev_word=0;
01793 };
01794 #line 1795 "ael.tab.c"
01795 break;
01796 case 99:
01797 #line 170 "ael.y"
01798 {
01799 destroy_pval((yyvaluep->pval));
01800 prev_word=0;
01801 };
01802 #line 1803 "ael.tab.c"
01803 break;
01804
01805 default:
01806 break;
01807 }
01808 }
01809
01810
01811
01812
01813 #ifdef YYPARSE_PARAM
01814 #if defined __STDC__ || defined __cplusplus
01815 int yyparse (void *YYPARSE_PARAM);
01816 #else
01817 int yyparse ();
01818 #endif
01819 #else
01820 #if defined __STDC__ || defined __cplusplus
01821 int yyparse (struct parse_io *parseio);
01822 #else
01823 int yyparse ();
01824 #endif
01825 #endif
01826
01827
01828
01829
01830
01831
01832
01833
01834
01835
01836 #ifdef YYPARSE_PARAM
01837 #if (defined __STDC__ || defined __C99__FUNC__ \
01838 || defined __cplusplus || defined _MSC_VER)
01839 int
01840 yyparse (void *YYPARSE_PARAM)
01841 #else
01842 int
01843 yyparse (YYPARSE_PARAM)
01844 void *YYPARSE_PARAM;
01845 #endif
01846 #else
01847 #if (defined __STDC__ || defined __C99__FUNC__ \
01848 || defined __cplusplus || defined _MSC_VER)
01849 int
01850 yyparse (struct parse_io *parseio)
01851 #else
01852 int
01853 yyparse (parseio)
01854 struct parse_io *parseio;
01855 #endif
01856 #endif
01857 {
01858
01859 int yychar;
01860
01861
01862 YYSTYPE yylval;
01863
01864
01865 int yynerrs;
01866
01867 YYLTYPE yylloc;
01868
01869 int yystate;
01870 int yyn;
01871 int yyresult;
01872
01873 int yyerrstatus;
01874
01875 int yytoken = 0;
01876 #if YYERROR_VERBOSE
01877
01878 char yymsgbuf[128];
01879 char *yymsg = yymsgbuf;
01880 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01881 #endif
01882
01883
01884
01885
01886
01887
01888
01889
01890
01891
01892 yytype_int16 yyssa[YYINITDEPTH];
01893 yytype_int16 *yyss = yyssa;
01894 yytype_int16 *yyssp;
01895
01896
01897 YYSTYPE yyvsa[YYINITDEPTH];
01898 YYSTYPE *yyvs = yyvsa;
01899 YYSTYPE *yyvsp;
01900
01901
01902 YYLTYPE yylsa[YYINITDEPTH];
01903 YYLTYPE *yyls = yylsa;
01904 YYLTYPE *yylsp;
01905
01906 YYLTYPE yyerror_range[2];
01907
01908 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
01909
01910 YYSIZE_T yystacksize = YYINITDEPTH;
01911
01912
01913
01914 YYSTYPE yyval;
01915 YYLTYPE yyloc;
01916
01917
01918
01919 int yylen = 0;
01920
01921 YYDPRINTF ((stderr, "Starting parse\n"));
01922
01923 yystate = 0;
01924 yyerrstatus = 0;
01925 yynerrs = 0;
01926 yychar = YYEMPTY;
01927
01928
01929
01930
01931
01932
01933 yyssp = yyss;
01934 yyvsp = yyvs;
01935 yylsp = yyls;
01936 #if YYLTYPE_IS_TRIVIAL
01937
01938 yylloc.first_line = yylloc.last_line = 1;
01939 yylloc.first_column = yylloc.last_column = 0;
01940 #endif
01941
01942 goto yysetstate;
01943
01944
01945
01946
01947 yynewstate:
01948
01949
01950 yyssp++;
01951
01952 yysetstate:
01953 *yyssp = yystate;
01954
01955 if (yyss + yystacksize - 1 <= yyssp)
01956 {
01957
01958 YYSIZE_T yysize = yyssp - yyss + 1;
01959
01960 #ifdef yyoverflow
01961 {
01962
01963
01964
01965 YYSTYPE *yyvs1 = yyvs;
01966 yytype_int16 *yyss1 = yyss;
01967 YYLTYPE *yyls1 = yyls;
01968
01969
01970
01971
01972
01973 yyoverflow (YY_("memory exhausted"),
01974 &yyss1, yysize * sizeof (*yyssp),
01975 &yyvs1, yysize * sizeof (*yyvsp),
01976 &yyls1, yysize * sizeof (*yylsp),
01977 &yystacksize);
01978 yyls = yyls1;
01979 yyss = yyss1;
01980 yyvs = yyvs1;
01981 }
01982 #else
01983 # ifndef YYSTACK_RELOCATE
01984 goto yyexhaustedlab;
01985 # else
01986
01987 if (YYMAXDEPTH <= yystacksize)
01988 goto yyexhaustedlab;
01989 yystacksize *= 2;
01990 if (YYMAXDEPTH < yystacksize)
01991 yystacksize = YYMAXDEPTH;
01992
01993 {
01994 yytype_int16 *yyss1 = yyss;
01995 union yyalloc *yyptr =
01996 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01997 if (! yyptr)
01998 goto yyexhaustedlab;
01999 YYSTACK_RELOCATE (yyss);
02000 YYSTACK_RELOCATE (yyvs);
02001 YYSTACK_RELOCATE (yyls);
02002 # undef YYSTACK_RELOCATE
02003 if (yyss1 != yyssa)
02004 YYSTACK_FREE (yyss1);
02005 }
02006 # endif
02007 #endif
02008
02009 yyssp = yyss + yysize - 1;
02010 yyvsp = yyvs + yysize - 1;
02011 yylsp = yyls + yysize - 1;
02012
02013 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
02014 (unsigned long int) yystacksize));
02015
02016 if (yyss + yystacksize - 1 <= yyssp)
02017 YYABORT;
02018 }
02019
02020 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
02021
02022 goto yybackup;
02023
02024
02025
02026
02027 yybackup:
02028
02029
02030
02031
02032
02033 yyn = yypact[yystate];
02034 if (yyn == YYPACT_NINF)
02035 goto yydefault;
02036
02037
02038
02039
02040 if (yychar == YYEMPTY)
02041 {
02042 YYDPRINTF ((stderr, "Reading a token: "));
02043 yychar = YYLEX;
02044 }
02045
02046 if (yychar <= YYEOF)
02047 {
02048 yychar = yytoken = YYEOF;
02049 YYDPRINTF ((stderr, "Now at end of input.\n"));
02050 }
02051 else
02052 {
02053 yytoken = YYTRANSLATE (yychar);
02054 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
02055 }
02056
02057
02058
02059 yyn += yytoken;
02060 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
02061 goto yydefault;
02062 yyn = yytable[yyn];
02063 if (yyn <= 0)
02064 {
02065 if (yyn == 0 || yyn == YYTABLE_NINF)
02066 goto yyerrlab;
02067 yyn = -yyn;
02068 goto yyreduce;
02069 }
02070
02071 if (yyn == YYFINAL)
02072 YYACCEPT;
02073
02074
02075
02076 if (yyerrstatus)
02077 yyerrstatus--;
02078
02079
02080 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
02081
02082
02083 if (yychar != YYEOF)
02084 yychar = YYEMPTY;
02085
02086 yystate = yyn;
02087 *++yyvsp = yylval;
02088 *++yylsp = yylloc;
02089 goto yynewstate;
02090
02091
02092
02093
02094
02095 yydefault:
02096 yyn = yydefact[yystate];
02097 if (yyn == 0)
02098 goto yyerrlab;
02099 goto yyreduce;
02100
02101
02102
02103
02104
02105 yyreduce:
02106
02107 yylen = yyr2[yyn];
02108
02109
02110
02111
02112
02113
02114
02115
02116
02117 yyval = yyvsp[1-yylen];
02118
02119
02120 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
02121 YY_REDUCE_PRINT (yyn);
02122 switch (yyn)
02123 {
02124 case 2:
02125 #line 191 "ael.y"
02126 { (yyval.pval) = parseio->pval = (yyvsp[(1) - (1)].pval); ;}
02127 break;
02128
02129 case 3:
02130 #line 194 "ael.y"
02131 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02132 break;
02133
02134 case 4:
02135 #line 195 "ael.y"
02136 { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
02137 break;
02138
02139 case 5:
02140 #line 196 "ael.y"
02141 {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
02142 break;
02143
02144 case 6:
02145 #line 199 "ael.y"
02146 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02147 break;
02148
02149 case 7:
02150 #line 200 "ael.y"
02151 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02152 break;
02153
02154 case 8:
02155 #line 201 "ael.y"
02156 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02157 break;
02158
02159 case 9:
02160 #line 202 "ael.y"
02161 {(yyval.pval)=0;;}
02162 break;
02163
02164 case 10:
02165 #line 205 "ael.y"
02166 { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
02167 break;
02168
02169 case 11:
02170 #line 206 "ael.y"
02171 { (yyval.str) = strdup("default"); ;}
02172 break;
02173
02174 case 12:
02175 #line 209 "ael.y"
02176 {
02177 (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
02178 (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
02179 (yyval.pval)->u2.statements = (yyvsp[(5) - (6)].pval);
02180 set_dads((yyval.pval),(yyvsp[(5) - (6)].pval));
02181 (yyval.pval)->u3.abstract = (yyvsp[(1) - (6)].intval);;}
02182 break;
02183
02184 case 13:
02185 #line 218 "ael.y"
02186 { (yyval.intval) = 1; ;}
02187 break;
02188
02189 case 14:
02190 #line 219 "ael.y"
02191 { (yyval.intval) = 0; ;}
02192 break;
02193
02194 case 15:
02195 #line 220 "ael.y"
02196 { (yyval.intval) = 2; ;}
02197 break;
02198
02199 case 16:
02200 #line 221 "ael.y"
02201 { (yyval.intval)=3; ;}
02202 break;
02203
02204 case 17:
02205 #line 222 "ael.y"
02206 { (yyval.intval)=3; ;}
02207 break;
02208
02209 case 18:
02210 #line 225 "ael.y"
02211 {
02212 (yyval.pval) = npval2(PV_MACRO, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
02213 (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);
02214 set_dads((yyval.pval),(yyvsp[(7) - (8)].pval));;}
02215 break;
02216
02217 case 19:
02218 #line 231 "ael.y"
02219 {
02220 (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
02221 (yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);
02222 set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
02223 break;
02224
02225 case 20:
02226 #line 237 "ael.y"
02227 { (yyval.pval) = NULL; ;}
02228 break;
02229
02230 case 21:
02231 #line 238 "ael.y"
02232 {(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
02233 break;
02234
02235 case 22:
02236 #line 239 "ael.y"
02237 {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
02238 break;
02239
02240 case 23:
02241 #line 242 "ael.y"
02242 { reset_semicount(parseio->scanner); ;}
02243 break;
02244
02245 case 24:
02246 #line 242 "ael.y"
02247 {
02248 (yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
02249 (yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
02250 (yyval.pval)->u2.val = (yyvsp[(4) - (5)].str); ;}
02251 break;
02252
02253 case 25:
02254 #line 248 "ael.y"
02255 { reset_semicount(parseio->scanner); ;}
02256 break;
02257
02258 case 26:
02259 #line 248 "ael.y"
02260 {
02261 (yyval.pval) = npval2(PV_LOCALVARDEC, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
02262 (yyval.pval)->u1.str = (yyvsp[(2) - (6)].str);
02263 (yyval.pval)->u2.val = (yyvsp[(5) - (6)].str); ;}
02264 break;
02265
02266 case 27:
02267 #line 255 "ael.y"
02268 { (yyval.pval) = NULL; ;}
02269 break;
02270
02271 case 28:
02272 #line 256 "ael.y"
02273 { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
02274 break;
02275
02276 case 29:
02277 #line 257 "ael.y"
02278 { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
02279 break;
02280
02281 case 30:
02282 #line 258 "ael.y"
02283 {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
02284 break;
02285
02286 case 31:
02287 #line 261 "ael.y"
02288 {(yyval.pval)=0;;}
02289 break;
02290
02291 case 32:
02292 #line 262 "ael.y"
02293 { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
02294 break;
02295
02296 case 33:
02297 #line 263 "ael.y"
02298 { (yyval.pval)=(yyvsp[(2) - (2)].pval);;}
02299 break;
02300
02301 case 34:
02302 #line 266 "ael.y"
02303 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02304 break;
02305
02306 case 35:
02307 #line 267 "ael.y"
02308 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02309 break;
02310
02311 case 36:
02312 #line 268 "ael.y"
02313 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02314 break;
02315
02316 case 37:
02317 #line 269 "ael.y"
02318 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02319 break;
02320
02321 case 38:
02322 #line 270 "ael.y"
02323 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02324 break;
02325
02326 case 39:
02327 #line 271 "ael.y"
02328 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02329 break;
02330
02331 case 40:
02332 #line 272 "ael.y"
02333 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
02334 break;
02335
02336 case 41:
02337 #line 273 "ael.y"
02338 {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;}
02339 break;
02340
02341 case 42:
02342 #line 274 "ael.y"
02343 {(yyval.pval)=0;;}
02344 break;
02345
02346 case 43:
02347 #line 277 "ael.y"
02348 {
02349 (yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
02350 (yyval.pval)->u1.str = (yyvsp[(3) - (4)].str);;}
02351 break;
02352
02353 case 44:
02354 #line 282 "ael.y"
02355 {
02356 (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
02357 (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
02358 (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
02359 break;
02360
02361 case 45:
02362 #line 286 "ael.y"
02363 {
02364 (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (5)]), &(yylsp[(3) - (5)]));
02365 (yyval.pval)->u1.str = malloc(strlen((yyvsp[(1) - (5)].str))+strlen((yyvsp[(3) - (5)].str))+2);
02366 strcpy((yyval.pval)->u1.str,(yyvsp[(1) - (5)].str));
02367 strcat((yyval.pval)->u1.str,"@");
02368 strcat((yyval.pval)->u1.str,(yyvsp[(3) - (5)].str));
02369 free((yyvsp[(1) - (5)].str));
02370 (yyval.pval)->u2.statements = (yyvsp[(5) - (5)].pval); set_dads((yyval.pval),(yyvsp[(5) - (5)].pval));;}
02371 break;
02372
02373 case 46:
02374 #line 294 "ael.y"
02375 {
02376 (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
02377 (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
02378 (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));
02379 (yyval.pval)->u4.regexten=1;;}
02380 break;
02381
02382 case 47:
02383 #line 299 "ael.y"
02384 {
02385 (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
02386 (yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
02387 (yyval.pval)->u2.statements = (yyvsp[(7) - (7)].pval); set_dads((yyval.pval),(yyvsp[(7) - (7)].pval));
02388 (yyval.pval)->u3.hints = (yyvsp[(3) - (7)].str);;}
02389 break;
02390
02391 case 48:
02392 #line 304 "ael.y"
02393 {
02394 (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
02395 (yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
02396 (yyval.pval)->u2.statements = (yyvsp[(8) - (8)].pval); set_dads((yyval.pval),(yyvsp[(8) - (8)].pval));
02397 (yyval.pval)->u4.regexten=1;
02398 (yyval.pval)->u3.hints = (yyvsp[(4) - (8)].str);;}
02399 break;
02400
02401 case 49:
02402 #line 313 "ael.y"
02403 { (yyval.pval) = NULL; ;}
02404 break;
02405
02406 case 50:
02407 #line 314 "ael.y"
02408 { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
02409 break;
02410
02411 case 51:
02412 #line 315 "ael.y"
02413 {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
02414 break;
02415
02416 case 52:
02417 #line 321 "ael.y"
02418 {
02419 if (asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(5) - (5)].str)) < 0) {
02420 ast_log(LOG_WARNING, "asprintf() failed\n");
02421 (yyval.str) = NULL;
02422 } else {
02423 free((yyvsp[(1) - (5)].str));
02424 free((yyvsp[(3) - (5)].str));
02425 free((yyvsp[(5) - (5)].str));
02426 }
02427 ;}
02428 break;
02429
02430 case 53:
02431 #line 331 "ael.y"
02432 { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
02433 break;
02434
02435 case 54:
02436 #line 335 "ael.y"
02437 {
02438 (yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)]));
02439 (yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)]));
02440 (yyval.pval)->next->next = nword((yyvsp[(5) - (7)].str), &(yylsp[(5) - (7)]));
02441 (yyval.pval)->next->next->next = nword((yyvsp[(7) - (7)].str), &(yylsp[(7) - (7)])); ;}
02442 break;
02443
02444 case 55:
02445 #line 343 "ael.y"
02446 { reset_parencount(parseio->scanner); ;}
02447 break;
02448
02449 case 56:
02450 #line 343 "ael.y"
02451 { (yyval.str) = (yyvsp[(3) - (4)].str); ;}
02452 break;
02453
02454 case 57:
02455 #line 347 "ael.y"
02456 {
02457 (yyval.pval)= npval2(PV_IF, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
02458 (yyval.pval)->u1.str = (yyvsp[(2) - (2)].str); ;}
02459 break;
02460
02461 case 58:
02462 #line 350 "ael.y"
02463 {
02464 (yyval.pval) = npval2(PV_RANDOM, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
02465 (yyval.pval)->u1.str=(yyvsp[(2) - (2)].str);;}
02466 break;
02467
02468 case 59:
02469 #line 353 "ael.y"
02470 {
02471 (yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
02472 (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
02473 prev_word = 0; ;}
02474 break;
02475
02476 case 60:
02477 #line 364 "ael.y"
02478 { (yyval.str) = (yyvsp[(1) - (1)].str);;}
02479 break;
02480
02481 case 61:
02482 #line 365 "ael.y"
02483 {
02484 if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
02485 ast_log(LOG_WARNING, "asprintf() failed\n");
02486 (yyval.str) = NULL;
02487 } else {
02488 free((yyvsp[(1) - (2)].str));
02489 free((yyvsp[(2) - (2)].str));
02490 prev_word = (yyval.str);
02491 }
02492 ;}
02493 break;
02494
02495 case 62:
02496 #line 377 "ael.y"
02497 { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
02498 break;
02499
02500 case 63:
02501 #line 378 "ael.y"
02502 {
02503 if (asprintf(&((yyval.str)), "%s %s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
02504 ast_log(LOG_WARNING, "asprintf() failed\n");
02505 (yyval.str) = NULL;
02506 } else {
02507 free((yyvsp[(1) - (2)].str));
02508 free((yyvsp[(2) - (2)].str));
02509 }
02510 ;}
02511 break;
02512
02513 case 64:
02514 #line 387 "ael.y"
02515 {
02516 if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
02517 ast_log(LOG_WARNING, "asprintf() failed\n");
02518 (yyval.str) = NULL;
02519 } else {
02520 free((yyvsp[(1) - (3)].str));
02521 free((yyvsp[(3) - (3)].str));
02522 }
02523 ;}
02524 break;
02525
02526 case 65:
02527 #line 396 "ael.y"
02528 {
02529 if (asprintf(&((yyval.str)), "%s&%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
02530 ast_log(LOG_WARNING, "asprintf() failed\n");
02531 (yyval.str) = NULL;
02532 } else {
02533 free((yyvsp[(1) - (3)].str));
02534 free((yyvsp[(3) - (3)].str));
02535 }
02536 ;}
02537 break;
02538
02539 case 66:
02540 #line 405 "ael.y"
02541 {
02542 if (asprintf(&((yyval.str)), "%s@%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
02543 ast_log(LOG_WARNING, "asprintf() failed\n");
02544 (yyval.str) = NULL;
02545 } else {
02546 free((yyvsp[(1) - (3)].str));
02547 free((yyvsp[(3) - (3)].str));
02548 }
02549 ;}
02550 break;
02551
02552 case 67:
02553 #line 416 "ael.y"
02554 { (yyval.str) = (yyvsp[(1) - (1)].str);;}
02555 break;
02556
02557 case 68:
02558 #line 417 "ael.y"
02559 {
02560 if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
02561 ast_log(LOG_WARNING, "asprintf() failed\n");
02562 (yyval.str) = NULL;
02563 } else {
02564 free((yyvsp[(1) - (2)].str));
02565 free((yyvsp[(2) - (2)].str));
02566 prev_word = (yyval.str);
02567 }
02568 ;}
02569 break;
02570
02571 case 69:
02572 #line 427 "ael.y"
02573 {
02574 if (asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
02575 ast_log(LOG_WARNING, "asprintf() failed\n");
02576 (yyval.str) = NULL;
02577 } else {
02578 free((yyvsp[(1) - (3)].str));
02579 free((yyvsp[(2) - (3)].str));
02580 free((yyvsp[(3) - (3)].str));
02581 prev_word=(yyval.str);
02582 }
02583 ;}
02584 break;
02585
02586 case 70:
02587 #line 440 "ael.y"
02588 { (yyval.str) = (yyvsp[(1) - (1)].str);;}
02589 break;
02590
02591 case 71:
02592 #line 441 "ael.y"
02593 {
02594 if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
02595 ast_log(LOG_WARNING, "asprintf() failed\n");
02596 (yyval.str) = NULL;
02597 } else {
02598 free((yyvsp[(1) - (2)].str));
02599 free((yyvsp[(2) - (2)].str));
02600 }
02601 ;}
02602 break;
02603
02604 case 72:
02605 #line 450 "ael.y"
02606 {
02607 if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
02608 ast_log(LOG_WARNING, "asprintf() failed\n");
02609 (yyval.str) = NULL;
02610 } else {
02611 free((yyvsp[(1) - (3)].str));
02612 free((yyvsp[(3) - (3)].str));
02613 }
02614 ;}
02615 break;
02616
02617 case 73:
02618 #line 461 "ael.y"
02619 {
02620 (yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
02621 (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
02622 (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
02623 break;
02624
02625 case 74:
02626 #line 470 "ael.y"
02627 {
02628 (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
02629 (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));;}
02630 break;
02631
02632 case 75:
02633 #line 473 "ael.y"
02634 { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
02635 break;
02636
02637 case 76:
02638 #line 474 "ael.y"
02639 { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
02640 break;
02641
02642 case 77:
02643 #line 475 "ael.y"
02644 {
02645 (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
02646 (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
02647 break;
02648
02649 case 78:
02650 #line 478 "ael.y"
02651 {
02652 (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
02653 (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
02654 break;
02655
02656 case 79:
02657 #line 481 "ael.y"
02658 {
02659 (yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
02660 (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;}
02661 break;
02662
02663 case 80:
02664 #line 484 "ael.y"
02665 {reset_semicount(parseio->scanner);;}
02666 break;
02667
02668 case 81:
02669 #line 485 "ael.y"
02670 {reset_semicount(parseio->scanner);;}
02671 break;
02672
02673 case 82:
02674 #line 486 "ael.y"
02675 {reset_parencount(parseio->scanner);;}
02676 break;
02677
02678 case 83:
02679 #line 486 "ael.y"
02680 {
02681 (yyval.pval) = npval2(PV_FOR, &(yylsp[(1) - (12)]), &(yylsp[(12) - (12)]));
02682 (yyval.pval)->u1.for_init = (yyvsp[(4) - (12)].str);
02683 (yyval.pval)->u2.for_test=(yyvsp[(7) - (12)].str);
02684 (yyval.pval)->u3.for_inc = (yyvsp[(10) - (12)].str);
02685 (yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;}
02686 break;
02687
02688 case 84:
02689 #line 492 "ael.y"
02690 {
02691 (yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
02692 (yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
02693 (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
02694 break;
02695
02696 case 85:
02697 #line 496 "ael.y"
02698 { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
02699 break;
02700
02701 case 86:
02702 #line 497 "ael.y"
02703 { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
02704 break;
02705
02706 case 87:
02707 #line 498 "ael.y"
02708 { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
02709 break;
02710
02711 case 88:
02712 #line 499 "ael.y"
02713 {
02714 (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
02715 (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;}
02716 break;
02717
02718 case 89:
02719 #line 502 "ael.y"
02720 {reset_semicount(parseio->scanner);;}
02721 break;
02722
02723 case 90:
02724 #line 502 "ael.y"
02725 {
02726 char *bufx;
02727 int tot=0;
02728 pval *pptr;
02729 (yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
02730 (yyval.pval)->u2.val=(yyvsp[(4) - (5)].str);
02731
02732
02733 tot+=strlen((yyvsp[(1) - (5)].pval)->u1.str);
02734 for(pptr=(yyvsp[(1) - (5)].pval)->u2.arglist;pptr;pptr=pptr->next) {
02735 tot+=strlen(pptr->u1.str);
02736 tot++;
02737 }
02738 tot+=4;
02739 bufx = calloc(1, tot);
02740 strcpy(bufx,(yyvsp[(1) - (5)].pval)->u1.str);
02741 strcat(bufx,"(");
02742
02743 for (pptr=(yyvsp[(1) - (5)].pval)->u2.arglist;pptr;pptr=pptr->next) {
02744 if ( pptr != (yyvsp[(1) - (5)].pval)->u2.arglist )
02745 strcat(bufx,",");
02746 strcat(bufx,pptr->u1.str);
02747 }
02748 strcat(bufx,")");
02749 #ifdef AAL_ARGCHECK
02750 if ( !ael_is_funcname((yyvsp[(1) - (5)].pval)->u1.str) )
02751 ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Function call? The name %s is not in my internal list of function names\n",
02752 my_file, (yylsp[(1) - (5)]).first_line, (yylsp[(1) - (5)]).first_column, (yylsp[(1) - (5)]).last_column, (yyvsp[(1) - (5)].pval)->u1.str);
02753 #endif
02754 (yyval.pval)->u1.str = bufx;
02755 destroy_pval((yyvsp[(1) - (5)].pval));
02756 prev_word = 0;
02757 ;}
02758 break;
02759
02760 case 91:
02761 #line 535 "ael.y"
02762 { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
02763 break;
02764
02765 case 92:
02766 #line 536 "ael.y"
02767 { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
02768 break;
02769
02770 case 93:
02771 #line 537 "ael.y"
02772 { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
02773 break;
02774
02775 case 94:
02776 #line 538 "ael.y"
02777 {
02778 (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
02779 (yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));
02780 (yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
02781 break;
02782
02783 case 95:
02784 #line 542 "ael.y"
02785 { (yyval.pval)=0; ;}
02786 break;
02787
02788 case 96:
02789 #line 545 "ael.y"
02790 { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
02791 break;
02792
02793 case 97:
02794 #line 546 "ael.y"
02795 { (yyval.pval) = NULL ; ;}
02796 break;
02797
02798 case 98:
02799 #line 549 "ael.y"
02800 { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
02801 break;
02802
02803 case 99:
02804 #line 550 "ael.y"
02805 {
02806 (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
02807 (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
02808 break;
02809
02810 case 100:
02811 #line 553 "ael.y"
02812 {
02813 (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
02814 (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
02815 break;
02816
02817 case 101:
02818 #line 556 "ael.y"
02819 {
02820 (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
02821 (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
02822 (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
02823 break;
02824
02825 case 102:
02826 #line 560 "ael.y"
02827 {
02828 (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
02829 (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
02830 (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
02831 break;
02832
02833 case 103:
02834 #line 564 "ael.y"
02835 {
02836 (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
02837 (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
02838 (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
02839 break;
02840
02841 case 104:
02842 #line 568 "ael.y"
02843 {
02844 (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
02845 (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
02846 (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
02847 break;
02848
02849 case 105:
02850 #line 574 "ael.y"
02851 { (yyval.str) = strdup("1"); ;}
02852 break;
02853
02854 case 106:
02855 #line 575 "ael.y"
02856 { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
02857 break;
02858
02859 case 107:
02860 #line 579 "ael.y"
02861 {
02862 (yyval.pval) = nword((yyvsp[(1) - (2)].str), &(yylsp[(1) - (2)]));
02863 (yyval.pval)->next = nword((yyvsp[(2) - (2)].str), &(yylsp[(2) - (2)])); ;}
02864 break;
02865
02866 case 108:
02867 #line 582 "ael.y"
02868 {
02869 (yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)]));
02870 (yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)]));
02871 (yyval.pval)->next->next = nword((yyvsp[(2) - (4)].str), &(yylsp[(2) - (4)])); ;}
02872 break;
02873
02874 case 109:
02875 #line 588 "ael.y"
02876 {reset_argcount(parseio->scanner);;}
02877 break;
02878
02879 case 110:
02880 #line 588 "ael.y"
02881 {
02882
02883 (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
02884 (yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
02885 (yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;}
02886 break;
02887
02888 case 111:
02889 #line 593 "ael.y"
02890 {
02891 (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
02892 (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;}
02893 break;
02894
02895 case 112:
02896 #line 601 "ael.y"
02897 {reset_argcount(parseio->scanner);;}
02898 break;
02899
02900 case 113:
02901 #line 601 "ael.y"
02902 {
02903 if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
02904 (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
02905 free((yyvsp[(1) - (3)].str));
02906 ast_log(LOG_WARNING, "==== File: %s, Line %d, Cols: %d-%d: Suggestion: Use the goto statement instead of the Goto() application call in AEL.\n", my_file, (yylsp[(1) - (3)]).first_line, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column );
02907 } else {
02908 (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
02909 (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
02910 } ;}
02911 break;
02912
02913 case 114:
02914 #line 612 "ael.y"
02915 {
02916 (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
02917 if( (yyval.pval)->type == PV_GOTO )
02918 (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);
02919 else
02920 (yyval.pval)->u2.arglist = (yyvsp[(2) - (3)].pval);
02921 ;}
02922 break;
02923
02924 case 115:
02925 #line 619 "ael.y"
02926 { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
02927 break;
02928
02929 case 116:
02930 #line 622 "ael.y"
02931 { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
02932 break;
02933
02934 case 117:
02935 #line 623 "ael.y"
02936 { (yyval.str) = strdup(""); ;}
02937 break;
02938
02939 case 118:
02940 #line 626 "ael.y"
02941 { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
02942 break;
02943
02944 case 119:
02945 #line 627 "ael.y"
02946 {
02947 (yyval.pval)= npval(PV_WORD,0,0,0, 0);
02948 (yyval.pval)->u1.str = strdup(""); ;}
02949 break;
02950
02951 case 120:
02952 #line 630 "ael.y"
02953 { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
02954 break;
02955
02956 case 121:
02957 #line 633 "ael.y"
02958 { (yyval.pval) = NULL; ;}
02959 break;
02960
02961 case 122:
02962 #line 634 "ael.y"
02963 { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
02964 break;
02965
02966 case 123:
02967 #line 637 "ael.y"
02968 {
02969 (yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)]));
02970 (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
02971 (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
02972 break;
02973
02974 case 124:
02975 #line 641 "ael.y"
02976 {
02977 (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
02978 (yyval.pval)->u1.str = NULL;
02979 (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
02980 break;
02981
02982 case 125:
02983 #line 645 "ael.y"
02984 {
02985 (yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
02986 (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
02987 (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
02988 break;
02989
02990 case 126:
02991 #line 651 "ael.y"
02992 { (yyval.pval) = NULL; ;}
02993 break;
02994
02995 case 127:
02996 #line 652 "ael.y"
02997 { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
02998 break;
02999
03000 case 128:
03001 #line 655 "ael.y"
03002 {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
03003 break;
03004
03005 case 129:
03006 #line 656 "ael.y"
03007 { (yyval.pval)=(yyvsp[(1) - (1)].pval);;}
03008 break;
03009
03010 case 130:
03011 #line 657 "ael.y"
03012 {
03013 (yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
03014 (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
03015 (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
03016 break;
03017
03018 case 131:
03019 #line 663 "ael.y"
03020 {
03021 (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
03022 (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
03023 break;
03024
03025 case 132:
03026 #line 668 "ael.y"
03027 {
03028 (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
03029 (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
03030 break;
03031
03032 case 133:
03033 #line 673 "ael.y"
03034 { (yyval.pval) = NULL; ;}
03035 break;
03036
03037 case 134:
03038 #line 674 "ael.y"
03039 { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;}
03040 break;
03041
03042 case 135:
03043 #line 675 "ael.y"
03044 {
03045 char *x;
03046 if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) {
03047 ast_log(LOG_WARNING, "asprintf() failed\n");
03048 (yyval.pval) = NULL;
03049 } else {
03050 free((yyvsp[(2) - (5)].str));
03051 free((yyvsp[(4) - (5)].str));
03052 (yyval.pval) = linku1((yyvsp[(1) - (5)].pval),nword(x, &(yylsp[(2) - (5)])));
03053 }
03054 ;}
03055 break;
03056
03057 case 136:
03058 #line 686 "ael.y"
03059 {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
03060 break;
03061
03062 case 137:
03063 #line 689 "ael.y"
03064 { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
03065 break;
03066
03067 case 138:
03068 #line 690 "ael.y"
03069 {
03070 (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
03071 (yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
03072 prev_word=0; ;}
03073 break;
03074
03075 case 139:
03076 #line 697 "ael.y"
03077 { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
03078 break;
03079
03080 case 140:
03081 #line 698 "ael.y"
03082 { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
03083 break;
03084
03085 case 141:
03086 #line 699 "ael.y"
03087 {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
03088 break;
03089
03090 case 142:
03091 #line 702 "ael.y"
03092 {
03093 (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
03094 (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
03095 break;
03096
03097 case 143:
03098 #line 705 "ael.y"
03099 {
03100 (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
03101 break;
03102
03103
03104
03105 #line 3106 "ael.tab.c"
03106 default: break;
03107 }
03108 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
03109
03110 YYPOPSTACK (yylen);
03111 yylen = 0;
03112 YY_STACK_PRINT (yyss, yyssp);
03113
03114 *++yyvsp = yyval;
03115 *++yylsp = yyloc;
03116
03117
03118
03119
03120
03121 yyn = yyr1[yyn];
03122
03123 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
03124 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
03125 yystate = yytable[yystate];
03126 else
03127 yystate = yydefgoto[yyn - YYNTOKENS];
03128
03129 goto yynewstate;
03130
03131
03132
03133
03134
03135 yyerrlab:
03136
03137 if (!yyerrstatus)
03138 {
03139 ++yynerrs;
03140 #if ! YYERROR_VERBOSE
03141 yyerror (&yylloc, parseio, YY_("syntax error"));
03142 #else
03143 {
03144 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
03145 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
03146 {
03147 YYSIZE_T yyalloc = 2 * yysize;
03148 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
03149 yyalloc = YYSTACK_ALLOC_MAXIMUM;
03150 if (yymsg != yymsgbuf)
03151 YYSTACK_FREE (yymsg);
03152 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
03153 if (yymsg)
03154 yymsg_alloc = yyalloc;
03155 else
03156 {
03157 yymsg = yymsgbuf;
03158 yymsg_alloc = sizeof yymsgbuf;
03159 }
03160 }
03161
03162 if (0 < yysize && yysize <= yymsg_alloc)
03163 {
03164 (void) yysyntax_error (yymsg, yystate, yychar);
03165 yyerror (&yylloc, parseio, yymsg);
03166 }
03167 else
03168 {
03169 yyerror (&yylloc, parseio, YY_("syntax error"));
03170 if (yysize != 0)
03171 goto yyexhaustedlab;
03172 }
03173 }
03174 #endif
03175 }
03176
03177 yyerror_range[0] = yylloc;
03178
03179 if (yyerrstatus == 3)
03180 {
03181
03182
03183
03184 if (yychar <= YYEOF)
03185 {
03186
03187 if (yychar == YYEOF)
03188 YYABORT;
03189 }
03190 else
03191 {
03192 yydestruct ("Error: discarding",
03193 yytoken, &yylval, &yylloc, parseio);
03194 yychar = YYEMPTY;
03195 }
03196 }
03197
03198
03199
03200 goto yyerrlab1;
03201
03202
03203
03204
03205
03206 yyerrorlab:
03207
03208
03209
03210
03211 if ( 0)
03212 goto yyerrorlab;
03213
03214 yyerror_range[0] = yylsp[1-yylen];
03215
03216
03217 YYPOPSTACK (yylen);
03218 yylen = 0;
03219 YY_STACK_PRINT (yyss, yyssp);
03220 yystate = *yyssp;
03221 goto yyerrlab1;
03222
03223
03224
03225
03226
03227 yyerrlab1:
03228 yyerrstatus = 3;
03229
03230 for (;;)
03231 {
03232 yyn = yypact[yystate];
03233 if (yyn != YYPACT_NINF)
03234 {
03235 yyn += YYTERROR;
03236 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
03237 {
03238 yyn = yytable[yyn];
03239 if (0 < yyn)
03240 break;
03241 }
03242 }
03243
03244
03245 if (yyssp == yyss)
03246 YYABORT;
03247
03248 yyerror_range[0] = *yylsp;
03249 yydestruct ("Error: popping",
03250 yystos[yystate], yyvsp, yylsp, parseio);
03251 YYPOPSTACK (1);
03252 yystate = *yyssp;
03253 YY_STACK_PRINT (yyss, yyssp);
03254 }
03255
03256 if (yyn == YYFINAL)
03257 YYACCEPT;
03258
03259 *++yyvsp = yylval;
03260
03261 yyerror_range[1] = yylloc;
03262
03263
03264 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
03265 *++yylsp = yyloc;
03266
03267
03268 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
03269
03270 yystate = yyn;
03271 goto yynewstate;
03272
03273
03274
03275
03276
03277 yyacceptlab:
03278 yyresult = 0;
03279 goto yyreturn;
03280
03281
03282
03283
03284 yyabortlab:
03285 yyresult = 1;
03286 goto yyreturn;
03287
03288 #ifndef yyoverflow
03289
03290
03291
03292 yyexhaustedlab:
03293 yyerror (&yylloc, parseio, YY_("memory exhausted"));
03294 yyresult = 2;
03295
03296 #endif
03297
03298 yyreturn:
03299 if (yychar != YYEOF && yychar != YYEMPTY)
03300 yydestruct ("Cleanup: discarding lookahead",
03301 yytoken, &yylval, &yylloc, parseio);
03302
03303
03304 YYPOPSTACK (yylen);
03305 YY_STACK_PRINT (yyss, yyssp);
03306 while (yyssp != yyss)
03307 {
03308 yydestruct ("Cleanup: popping",
03309 yystos[*yyssp], yyvsp, yylsp, parseio);
03310 YYPOPSTACK (1);
03311 }
03312 #ifndef yyoverflow
03313 if (yyss != yyssa)
03314 YYSTACK_FREE (yyss);
03315 #endif
03316 #if YYERROR_VERBOSE
03317 if (yymsg != yymsgbuf)
03318 YYSTACK_FREE (yymsg);
03319 #endif
03320
03321 return YYID (yyresult);
03322 }
03323
03324
03325 #line 710 "ael.y"
03326
03327
03328 static char *token_equivs1[] =
03329 {
03330 "AMPER",
03331 "AT",
03332 "BAR",
03333 "COLON",
03334 "COMMA",
03335 "EQ",
03336 "EXTENMARK",
03337 "KW_BREAK",
03338 "KW_CASE",
03339 "KW_CATCH",
03340 "KW_CONTEXT",
03341 "KW_CONTINUE",
03342 "KW_DEFAULT",
03343 "KW_ELSE",
03344 "KW_ESWITCHES",
03345 "KW_FOR",
03346 "KW_GLOBALS",
03347 "KW_GOTO",
03348 "KW_HINT",
03349 "KW_IFTIME",
03350 "KW_IF",
03351 "KW_IGNOREPAT",
03352 "KW_INCLUDES"
03353 "KW_JUMP",
03354 "KW_MACRO",
03355 "KW_PATTERN",
03356 "KW_REGEXTEN",
03357 "KW_RETURN",
03358 "KW_SWITCHES",
03359 "KW_SWITCH",
03360 "KW_WHILE",
03361 "LC",
03362 "LP",
03363 "RC",
03364 "RP",
03365 "SEMI",
03366 };
03367
03368 static char *token_equivs2[] =
03369 {
03370 "&",
03371 "@",
03372 "|",
03373 ":",
03374 ",",
03375 "=",
03376 "=>",
03377 "break",
03378 "case",
03379 "catch",
03380 "context",
03381 "continue",
03382 "default",
03383 "else",
03384 "eswitches",
03385 "for",
03386 "globals",
03387 "goto",
03388 "hint",
03389 "ifTime",
03390 "if",
03391 "ignorepat",
03392 "includes"
03393 "jump",
03394 "macro",
03395 "pattern",
03396 "regexten",
03397 "return",
03398 "switches",
03399 "switch",
03400 "while",
03401 "{",
03402 "(",
03403 "}",
03404 ")",
03405 ";",
03406 };
03407
03408
03409 static char *ael_token_subst(const char *mess)
03410 {
03411
03412 int len=0,i;
03413 const char *p;
03414 char *res, *s,*t;
03415 int token_equivs_entries = sizeof(token_equivs1)/sizeof(char*);
03416
03417 for (p=mess; *p; p++) {
03418 for (i=0; i<token_equivs_entries; i++) {
03419 if ( strncmp(p,token_equivs1[i],strlen(token_equivs1[i])) == 0 )
03420 {
03421 len+=strlen(token_equivs2[i])+2;
03422 p += strlen(token_equivs1[i])-1;
03423 break;
03424 }
03425 }
03426 len++;
03427 }
03428 res = calloc(1, len+1);
03429 res[0] = 0;
03430 s = res;
03431 for (p=mess; *p;) {
03432 int found = 0;
03433 for (i=0; i<token_equivs_entries; i++) {
03434 if ( strncmp(p,token_equivs1[i],strlen(token_equivs1[i])) == 0 ) {
03435 *s++ = '\'';
03436 for (t=token_equivs2[i]; *t;) {
03437 *s++ = *t++;
03438 }
03439 *s++ = '\'';
03440 p += strlen(token_equivs1[i]);
03441 found = 1;
03442 break;
03443 }
03444 }
03445 if( !found )
03446 *s++ = *p++;
03447 }
03448 *s++ = 0;
03449 return res;
03450 }
03451
03452 void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s)
03453 {
03454 char *s2 = ael_token_subst((char *)s);
03455 if (locp->first_line == locp->last_line) {
03456 ast_log(LOG_ERROR, "==== File: %s, Line %d, Cols: %d-%d: Error: %s\n", my_file, locp->first_line, locp->first_column, locp->last_column, s2);
03457 } else {
03458 ast_log(LOG_ERROR, "==== File: %s, Line %d Col %d to Line %d Col %d: Error: %s\n", my_file, locp->first_line, locp->first_column, locp->last_line, locp->last_column, s2);
03459 }
03460 free(s2);
03461 parseio->syntax_error_count++;
03462 }
03463
03464 struct pval *npval(pvaltype type, int first_line, int last_line,
03465 int first_column, int last_column)
03466 {
03467 pval *z = calloc(1, sizeof(struct pval));
03468 z->type = type;
03469 z->startline = first_line;
03470 z->endline = last_line;
03471 z->startcol = first_column;
03472 z->endcol = last_column;
03473 z->filename = strdup(my_file);
03474 return z;
03475 }
03476
03477 static struct pval *npval2(pvaltype type, YYLTYPE *first, YYLTYPE *last)
03478 {
03479 return npval(type, first->first_line, last->last_line,
03480 first->first_column, last->last_column);
03481 }
03482
03483 static struct pval *update_last(pval *obj, YYLTYPE *last)
03484 {
03485 obj->endline = last->last_line;
03486 obj->endcol = last->last_column;
03487 return obj;
03488 }
03489
03490
03491 static pval *nword(char *string, YYLTYPE *pos)
03492 {
03493 pval *p = npval2(PV_WORD, pos, pos);
03494 if (p)
03495 p->u1.str = string;
03496 return p;
03497 }
03498
03499
03500 static void set_dads(struct pval *dad, struct pval *child_list)
03501 {
03502 struct pval *t;
03503
03504 for(t=child_list;t;t=t->next)
03505 t->dad = dad;
03506 }
03507
03508