Mon Sep 20 2010 00:24:05

Asterisk developer's documentation


Data Structures | Defines | Typedefs | Enumerations | Functions | Variables

ael.tab.c File Reference

Bison Grammar description of AEL2. More...

#include "asterisk.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "asterisk/logger.h"
#include "asterisk/lock.h"
#include "asterisk/hashtab.h"
#include "asterisk/ael_structs.h"
#include "asterisk/utils.h"
Include dependency graph for ael.tab.c:

Go to the source code of this file.

Data Structures

union  yyalloc
struct  YYLTYPE
union  YYSTYPE

Defines

#define AMPER   267
#define AT   269
#define BAR   268
#define COLON   266
#define COMMA   265
#define EQ   264
#define EXTENMARK   280
#define KW_ABSTRACT   278
#define KW_BREAK   284
#define KW_CASE   290
#define KW_CATCH   293
#define KW_CONTEXT   258
#define KW_CONTINUE   285
#define KW_DEFAULT   292
#define KW_ELSE   276
#define KW_ESWITCHES   295
#define KW_EXTEND   279
#define KW_FOR   288
#define KW_GLOBALS   271
#define KW_GOTO   281
#define KW_HINT   287
#define KW_IF   274
#define KW_IFTIME   275
#define KW_IGNOREPAT   272
#define KW_INCLUDES   296
#define KW_JUMP   282
#define KW_LOCAL   297
#define KW_MACRO   270
#define KW_PATTERN   291
#define KW_RANDOM   277
#define KW_REGEXTEN   286
#define KW_RETURN   283
#define KW_SWITCH   273
#define KW_SWITCHES   294
#define KW_WHILE   289
#define LC   259
#define LP   261
#define RC   260
#define RP   262
#define SEMI   263
#define word   298
#define YY_(msgid)   msgid
#define YY_LOCATION_PRINT(File, Loc)   ((void) 0)
#define YY_REDUCE_PRINT(Rule)
#define YY_STACK_PRINT(Bottom, Top)
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
#define YYABORT   goto yyabortlab
#define YYACCEPT   goto yyacceptlab
#define YYBACKUP(Token, Value)
#define YYBISON   1
#define YYBISON_VERSION   "2.3"
#define yychar   ael_yychar
#define yyclearin   (yychar = YYEMPTY)
#define YYCOPY(To, From, Count)
#define yydebug   ael_yydebug
#define YYDEBUG   0
#define YYDPRINTF(Args)
#define YYEMPTY   (-2)
#define YYEOF   0
#define YYERRCODE   256
#define yyerrok   (yyerrstatus = 0)
#define yyerror   ael_yyerror
#define YYERROR   goto yyerrorlab
#define YYERROR_VERBOSE   1
#define YYERROR_VERBOSE   1
#define YYFAIL   goto yyerrlab
#define YYFINAL   17
#define YYFREE   free
#define YYID(n)   (n)
#define YYINITDEPTH   200
#define YYLAST   371
#define YYLEX   yylex (&yylval, &yylloc)
#define yylex   ael_yylex
#define YYLEX_PARAM   ((struct parse_io *)parseio)->scanner
#define yylloc   ael_yylloc
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define YYLSP_NEEDED   1
#define yyltype   YYLTYPE
#define YYLTYPE_IS_DECLARED   1
#define YYLTYPE_IS_TRIVIAL   1
#define yylval   ael_yylval
#define YYMALLOC   malloc
#define YYMAXDEPTH   10000
#define YYMAXUTOK   298
#define yynerrs   ael_yynerrs
#define YYNNTS   56
#define YYNRULES   143
#define YYNSTATES   283
#define YYNTOKENS   44
#define YYPACT_NINF   -211
#define yyparse   ael_yyparse
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
#define YYPURE   1
#define YYRECOVERING()   (!!yyerrstatus)
#define YYRHSLOC(Rhs, K)   ((Rhs)[K])
#define YYSIZE_MAXIMUM   ((YYSIZE_T) -1)
#define YYSIZE_T   unsigned int
#define YYSKELETON_NAME   "yacc.c"
#define YYSTACK_ALLOC   YYMALLOC
#define YYSTACK_ALLOC_MAXIMUM   YYSIZE_MAXIMUM
#define YYSTACK_BYTES(N)
#define YYSTACK_FREE   YYFREE
#define YYSTACK_GAP_MAXIMUM   (sizeof (union yyalloc) - 1)
#define YYSTACK_RELOCATE(Stack)
#define yystype   YYSTYPE
#define YYSTYPE_IS_DECLARED   1
#define YYSTYPE_IS_TRIVIAL   1
#define YYTABLE_NINF   -134
#define YYTERROR   1
#define YYTOKEN_TABLE   0
#define YYTRANSLATE(YYX)   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
#define YYUNDEFTOK   2
#define YYUSE(e)   ((void) (e))

Typedefs

typedef struct YYLTYPE YYLTYPE
typedef union YYSTYPE YYSTYPE
typedef short int yytype_int16
typedef short int yytype_int8
typedef unsigned short int yytype_uint16
typedef unsigned char yytype_uint8

Enumerations

enum  yytokentype {
  TOK_COMMA = 258, TOK_COLONCOLON = 259, TOK_COND = 260, TOK_OR = 261,
  TOK_AND = 262, TOK_NE = 263, TOK_LE = 264, TOK_GE = 265,
  TOK_LT = 266, TOK_GT = 267, TOK_EQ = 268, TOK_MINUS = 269,
  TOK_PLUS = 270, TOK_MOD = 271, TOK_DIV = 272, TOK_MULT = 273,
  TOK_COMPL = 274, TOK_TILDETILDE = 275, TOK_EQTILDE = 276, TOK_COLON = 277,
  TOK_LP = 278, TOK_RP = 279, TOKEN = 280, TOK_COMMA = 258,
  TOK_COLONCOLON = 259, TOK_COND = 260, TOK_OR = 261, TOK_AND = 262,
  TOK_NE = 263, TOK_LE = 264, TOK_GE = 265, TOK_LT = 266,
  TOK_GT = 267, TOK_EQ = 268, TOK_MINUS = 269, TOK_PLUS = 270,
  TOK_MOD = 271, TOK_DIV = 272, TOK_MULT = 273, TOK_COMPL = 274,
  TOK_TILDETILDE = 275, TOK_EQTILDE = 276, TOK_COLON = 277, TOK_LP = 278,
  TOK_RP = 279, TOKEN = 280, 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, 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, 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,
  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
}

Functions

static char * ael_token_subst (const char *mess)
int ael_yylex (YYSTYPE *yylval_param, YYLTYPE *yylloc_param, void *yyscanner)
pvallinku1 (pval *head, pval *tail)
pvalnpval (pvaltype type, int first_line, int last_line, int first_column, int last_column)
static pvalnpval2 (pvaltype type, YYLTYPE *first, YYLTYPE *last)
static pvalnword (char *string, YYLTYPE *pos)
void reset_argcount (yyscan_t yyscanner)
void reset_parencount (yyscan_t yyscanner)
void reset_semicount (yyscan_t yyscanner)
static void set_dads (pval *dad, pval *child_list)
static pvalupdate_last (pval *, YYLTYPE *)
static void yydestruct (char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, struct parse_io *parseio) const
void yyerror (YYLTYPE *locp, struct parse_io *parseio, char const *s)
int yyparse (struct parse_io *parseio)
int yyparse ()

Variables

struct ast_flags ast_compat
char * my_file
static char * token_equivs1 []
static char * token_equivs2 []
static const yytype_uint16 yycheck []
static const yytype_uint8 yydefact []
static const yytype_int16 yydefgoto []
static const yytype_int16 yypact []
static const yytype_int16 yypgoto []
static const yytype_uint8 yyr1 []
static const yytype_uint8 yyr2 []
static const yytype_uint8 yystos []
static const yytype_int16 yytable []
static const yytype_uint8 yytranslate []

Detailed Description

Bison Grammar description of AEL2.

Definition in file ael.tab.c.


Define Documentation

#define AMPER   267

Definition at line 130 of file ael.tab.c.

#define AT   269

Definition at line 132 of file ael.tab.c.

#define BAR   268

Definition at line 131 of file ael.tab.c.

#define COLON   266

Definition at line 129 of file ael.tab.c.

#define COMMA   265

Definition at line 128 of file ael.tab.c.

#define EQ   264

Definition at line 127 of file ael.tab.c.

#define EXTENMARK   280

Definition at line 143 of file ael.tab.c.

#define KW_ABSTRACT   278

Definition at line 141 of file ael.tab.c.

#define KW_BREAK   284

Definition at line 147 of file ael.tab.c.

#define KW_CASE   290

Definition at line 153 of file ael.tab.c.

#define KW_CATCH   293

Definition at line 156 of file ael.tab.c.

#define KW_CONTEXT   258

Definition at line 121 of file ael.tab.c.

#define KW_CONTINUE   285

Definition at line 148 of file ael.tab.c.

#define KW_DEFAULT   292

Definition at line 155 of file ael.tab.c.

#define KW_ELSE   276

Definition at line 139 of file ael.tab.c.

#define KW_ESWITCHES   295

Definition at line 158 of file ael.tab.c.

#define KW_EXTEND   279

Definition at line 142 of file ael.tab.c.

#define KW_FOR   288

Definition at line 151 of file ael.tab.c.

#define KW_GLOBALS   271

Definition at line 134 of file ael.tab.c.

#define KW_GOTO   281

Definition at line 144 of file ael.tab.c.

#define KW_HINT   287

Definition at line 150 of file ael.tab.c.

#define KW_IF   274

Definition at line 137 of file ael.tab.c.

#define KW_IFTIME   275

Definition at line 138 of file ael.tab.c.

#define KW_IGNOREPAT   272

Definition at line 135 of file ael.tab.c.

#define KW_INCLUDES   296

Definition at line 159 of file ael.tab.c.

#define KW_JUMP   282

Definition at line 145 of file ael.tab.c.

#define KW_LOCAL   297

Definition at line 160 of file ael.tab.c.

#define KW_MACRO   270

Definition at line 133 of file ael.tab.c.

#define KW_PATTERN   291

Definition at line 154 of file ael.tab.c.

#define KW_RANDOM   277

Definition at line 140 of file ael.tab.c.

#define KW_REGEXTEN   286

Definition at line 149 of file ael.tab.c.

#define KW_RETURN   283

Definition at line 146 of file ael.tab.c.

#define KW_SWITCH   273

Definition at line 136 of file ael.tab.c.

#define KW_SWITCHES   294

Definition at line 157 of file ael.tab.c.

#define KW_WHILE   289

Definition at line 152 of file ael.tab.c.

#define LC   259

Definition at line 122 of file ael.tab.c.

#define LP   261

Definition at line 124 of file ael.tab.c.

#define RC   260

Definition at line 123 of file ael.tab.c.

#define RP   262

Definition at line 125 of file ael.tab.c.

#define SEMI   263

Definition at line 126 of file ael.tab.c.

#define word   298

Definition at line 161 of file ael.tab.c.

Referenced by handle_queue_pause_member().

#define YY_ (   msgid  )     msgid

Definition at line 354 of file ael.tab.c.

Referenced by yyparse().

#define YY_LOCATION_PRINT (   File,
  Loc 
)    ((void) 0)

Definition at line 1037 of file ael.tab.c.

#define YY_REDUCE_PRINT (   Rule  ) 

Definition at line 1217 of file ael.tab.c.

Referenced by yyparse().

#define YY_STACK_PRINT (   Bottom,
  Top 
)

Definition at line 1216 of file ael.tab.c.

Referenced by yyparse().

#define YY_SYMBOL_PRINT (   Title,
  Type,
  Value,
  Location 
)

Definition at line 1215 of file ael.tab.c.

Referenced by yydestruct(), and yyparse().

#define YYABORT   goto yyabortlab

Definition at line 966 of file ael.tab.c.

#define YYACCEPT   goto yyacceptlab

Definition at line 965 of file ael.tab.c.

#define YYBACKUP (   Token,
  Value 
)

Definition at line 978 of file ael.tab.c.

#define YYBISON   1

Definition at line 47 of file ael.tab.c.

#define YYBISON_VERSION   "2.3"

Definition at line 50 of file ael.tab.c.

#define yychar   ael_yychar

Definition at line 66 of file ael.tab.c.

#define yyclearin   (yychar = YYEMPTY)

Definition at line 961 of file ael.tab.c.

#define YYCOPY (   To,
  From,
  Count 
)

Definition at line 482 of file ael.tab.c.

#define yydebug   ael_yydebug

Definition at line 67 of file ael.tab.c.

#define YYDEBUG   0

Definition at line 227 of file ael.tab.c.

#define YYDPRINTF (   Args  ) 

Definition at line 1214 of file ael.tab.c.

Referenced by yyparse().

#define YYEMPTY   (-2)

Definition at line 962 of file ael.tab.c.

Referenced by yyparse().

#define YYEOF   0

Definition at line 963 of file ael.tab.c.

Referenced by yyparse().

#define YYERRCODE   256

Definition at line 997 of file ael.tab.c.

#define yyerrok   (yyerrstatus = 0)

Definition at line 960 of file ael.tab.c.

#define yyerror   ael_yyerror

Definition at line 64 of file ael.tab.c.

#define YYERROR   goto yyerrorlab

Definition at line 967 of file ael.tab.c.

#define YYERROR_VERBOSE   1

Definition at line 235 of file ael.tab.c.

#define YYERROR_VERBOSE   1

Definition at line 235 of file ael.tab.c.

#define YYFAIL   goto yyerrlab

Definition at line 974 of file ael.tab.c.

#define YYFINAL   17

Definition at line 512 of file ael.tab.c.

Referenced by yyparse().

#define YYFREE   free

Definition at line 443 of file ael.tab.c.

#define YYID (   n  )     (n)

Definition at line 367 of file ael.tab.c.

Referenced by yyparse().

#define YYINITDEPTH   200

Definition at line 1223 of file ael.tab.c.

#define YYLAST   371

Definition at line 514 of file ael.tab.c.

Referenced by yyparse().

#define YYLEX   yylex (&yylval, &yylloc)

Definition at line 1047 of file ael.tab.c.

#define yylex   ael_yylex

Definition at line 63 of file ael.tab.c.

#define YYLEX_PARAM   ((struct parse_io *)parseio)->scanner

Definition at line 214 of file ael.tab.c.

#define yylloc   ael_yylloc

Definition at line 69 of file ael.tab.c.

#define YYLLOC_DEFAULT (   Current,
  Rhs,
  N 
)

Definition at line 1006 of file ael.tab.c.

Referenced by yyparse().

#define YYLSP_NEEDED   1

Definition at line 59 of file ael.tab.c.

#define yyltype   YYLTYPE

Definition at line 267 of file ael.tab.c.

#define YYLTYPE_IS_DECLARED   1

Definition at line 268 of file ael.tab.c.

#define YYLTYPE_IS_TRIVIAL   1

Definition at line 269 of file ael.tab.c.

#define yylval   ael_yylval

Definition at line 65 of file ael.tab.c.

#define YYMALLOC   malloc

Definition at line 436 of file ael.tab.c.

#define YYMAXDEPTH   10000

Definition at line 1234 of file ael.tab.c.

Referenced by yyparse().

#define YYMAXUTOK   298

Definition at line 527 of file ael.tab.c.

#define yynerrs   ael_yynerrs

Definition at line 68 of file ael.tab.c.

#define YYNNTS   56

Definition at line 519 of file ael.tab.c.

#define YYNRULES   143

Definition at line 521 of file ael.tab.c.

#define YYNSTATES   283

Definition at line 523 of file ael.tab.c.

#define YYNTOKENS   44

Definition at line 517 of file ael.tab.c.

#define YYPACT_NINF   -211

Definition at line 791 of file ael.tab.c.

Referenced by yyparse().

#define yyparse   ael_yyparse

Definition at line 62 of file ael.tab.c.

#define YYPOPSTACK (   N  )     (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
#define YYPURE   1

Definition at line 56 of file ael.tab.c.

#define YYRECOVERING (  )     (!!yyerrstatus)

Definition at line 976 of file ael.tab.c.

#define YYRHSLOC (   Rhs,
  K 
)    ((Rhs)[K])

Definition at line 1004 of file ael.tab.c.

#define YYSIZE_MAXIMUM   ((YYSIZE_T) -1)

Definition at line 344 of file ael.tab.c.

#define YYSIZE_T   unsigned int

Definition at line 340 of file ael.tab.c.

Referenced by yyparse().

#define YYSKELETON_NAME   "yacc.c"

Definition at line 53 of file ael.tab.c.

#define YYSTACK_ALLOC   YYMALLOC

Definition at line 422 of file ael.tab.c.

Referenced by yyparse().

#define YYSTACK_ALLOC_MAXIMUM   YYSIZE_MAXIMUM

Definition at line 425 of file ael.tab.c.

Referenced by yyparse().

#define YYSTACK_BYTES (   N  ) 
Value:
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
      + 2 * YYSTACK_GAP_MAXIMUM)

Definition at line 471 of file ael.tab.c.

Referenced by yyparse().

#define YYSTACK_FREE   YYFREE

Definition at line 423 of file ael.tab.c.

Referenced by yyparse().

#define YYSTACK_GAP_MAXIMUM   (sizeof (union yyalloc) - 1)

Definition at line 467 of file ael.tab.c.

#define YYSTACK_RELOCATE (   Stack  ) 

Definition at line 498 of file ael.tab.c.

Referenced by yyparse().

#define yystype   YYSTYPE

Definition at line 254 of file ael.tab.c.

#define YYSTYPE_IS_DECLARED   1

Definition at line 255 of file ael.tab.c.

#define YYSTYPE_IS_TRIVIAL   1

Definition at line 256 of file ael.tab.c.

#define YYTABLE_NINF   -134

Definition at line 840 of file ael.tab.c.

Referenced by yyparse().

#define YYTERROR   1

Definition at line 996 of file ael.tab.c.

Referenced by yyparse().

#define YYTOKEN_TABLE   0

Definition at line 240 of file ael.tab.c.

#define YYTRANSLATE (   YYX  )     ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)

Definition at line 529 of file ael.tab.c.

Referenced by yyparse().

#define YYUNDEFTOK   2

Definition at line 526 of file ael.tab.c.

#define YYUSE (   e  )     ((void) (e))

Definition at line 360 of file ael.tab.c.

Referenced by yydestruct().


Typedef Documentation

typedef struct YYLTYPE YYLTYPE
typedef union YYSTYPE YYSTYPE
typedef short int yytype_int16

Definition at line 327 of file ael.tab.c.

typedef short int yytype_int8

Definition at line 315 of file ael.tab.c.

typedef unsigned short int yytype_uint16

Definition at line 321 of file ael.tab.c.

typedef unsigned char yytype_uint8

Definition at line 306 of file ael.tab.c.


Enumeration Type Documentation

Enumerator:
TOK_COMMA 
TOK_COLONCOLON 
TOK_COND 
TOK_OR 
TOK_AND 
TOK_NE 
TOK_LE 
TOK_GE 
TOK_LT 
TOK_GT 
TOK_EQ 
TOK_MINUS 
TOK_PLUS 
TOK_MOD 
TOK_DIV 
TOK_MULT 
TOK_COMPL 
TOK_TILDETILDE 
TOK_EQTILDE 
TOK_COLON 
TOK_LP 
TOK_RP 
TOKEN 
TOK_COMMA 
TOK_COLONCOLON 
TOK_COND 
TOK_OR 
TOK_AND 
TOK_NE 
TOK_LE 
TOK_GE 
TOK_LT 
TOK_GT 
TOK_EQ 
TOK_MINUS 
TOK_PLUS 
TOK_MOD 
TOK_DIV 
TOK_MULT 
TOK_COMPL 
TOK_TILDETILDE 
TOK_EQTILDE 
TOK_COLON 
TOK_LP 
TOK_RP 
TOKEN 
KW_CONTEXT 
LC 
RC 
LP 
RP 
SEMI 
EQ 
COMMA 
COLON 
AMPER 
BAR 
AT 
KW_MACRO 
KW_GLOBALS 
KW_IGNOREPAT 
KW_SWITCH 
KW_IF 
KW_IFTIME 
KW_ELSE 
KW_RANDOM 
KW_ABSTRACT 
KW_EXTEND 
EXTENMARK 
KW_GOTO 
KW_JUMP 
KW_RETURN 
KW_BREAK 
KW_CONTINUE 
KW_REGEXTEN 
KW_HINT 
KW_FOR 
KW_WHILE 
KW_CASE 
KW_PATTERN 
KW_DEFAULT 
KW_CATCH 
KW_SWITCHES 
KW_ESWITCHES 
KW_INCLUDES 
KW_LOCAL 
word 
KW_CONTEXT 
LC 
RC 
LP 
RP 
SEMI 
EQ 
COMMA 
COLON 
AMPER 
BAR 
AT 
KW_MACRO 
KW_GLOBALS 
KW_IGNOREPAT 
KW_SWITCH 
KW_IF 
KW_IFTIME 
KW_ELSE 
KW_RANDOM 
KW_ABSTRACT 
KW_EXTEND 
EXTENMARK 
KW_GOTO 
KW_JUMP 
KW_RETURN 
KW_BREAK 
KW_CONTINUE 
KW_REGEXTEN 
KW_HINT 
KW_FOR 
KW_WHILE 
KW_CASE 
KW_PATTERN 
KW_DEFAULT 
KW_CATCH 
KW_SWITCHES 
KW_ESWITCHES 
KW_INCLUDES 
KW_LOCAL 
word 

Definition at line 76 of file ael.tab.c.

                    {
     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,
     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
   };


Function Documentation

static char * ael_token_subst ( const char *  mess  )  [static]

Definition at line 3409 of file ael.tab.c.

References calloc, and len().

Referenced by yyerror().

{
   /* calc a length, malloc, fill, and return; yyerror had better free it! */
   int len=0,i;
   const char *p;
   char *res, *s,*t;
   int token_equivs_entries = sizeof(token_equivs1)/sizeof(char*);

   for (p=mess; *p; p++) {
      for (i=0; i<token_equivs_entries; i++) {
         if ( strncmp(p,token_equivs1[i],strlen(token_equivs1[i])) == 0 )
         {
            len+=strlen(token_equivs2[i])+2;
            p += strlen(token_equivs1[i])-1;
            break;
         }
      }
      len++;
   }
   res = calloc(1, len+1);
   res[0] = 0;
   s = res;
   for (p=mess; *p;) {
      int found = 0;
      for (i=0; i<token_equivs_entries; i++) {
         if ( strncmp(p,token_equivs1[i],strlen(token_equivs1[i])) == 0 ) {
            *s++ = '\'';
            for (t=token_equivs2[i]; *t;) {
               *s++ = *t++;
            }
            *s++ = '\'';
            p += strlen(token_equivs1[i]);
            found = 1;
            break;
         }
      }
      if( !found )
         *s++ = *p++;
   }
   *s++ = 0;
   return res;
}

int ael_yylex ( YYSTYPE yylval_param,
YYLTYPE yylloc_param,
void *  yyscanner 
)
pval* linku1 ( pval head,
pval tail 
)

Definition at line 5798 of file pval.c.

References pval::next, pval::prev, and pval::u1_last.

{
   if (!head)
      return tail;
   if (tail) {
      if (!head->next) {
         head->next = tail;
      } else {
         head->u1_last->next = tail;
      }
      head->u1_last = tail;
      tail->prev = head; /* the dad link only points to containers */
   }
   return head;
}

pval* npval ( pvaltype  type,
int  first_line,
int  last_line,
int  first_column,
int  last_column 
) [read]

Definition at line 3464 of file ael.tab.c.

References calloc, pval::endcol, pval::endline, pval::filename, pval::startcol, pval::startline, strdup, and pval::type.

Referenced by npval2(), and yyparse().

{
   pval *z = calloc(1, sizeof(struct pval));
   z->type = type;
   z->startline = first_line;
   z->endline = last_line;
   z->startcol = first_column;
   z->endcol = last_column;
   z->filename = strdup(my_file);
   return z;
}

static struct pval * npval2 ( pvaltype  type,
YYLTYPE first,
YYLTYPE last 
) [static, read]

Definition at line 3477 of file ael.tab.c.

References YYLTYPE::first_column, YYLTYPE::first_line, YYLTYPE::last_column, YYLTYPE::last_line, and npval().

Referenced by nword(), and yyparse().

{
   return npval(type, first->first_line, last->last_line,
         first->first_column, last->last_column);
}

static pval * nword ( char *  string,
YYLTYPE pos 
) [static]

Definition at line 3491 of file ael.tab.c.

References npval2(), PV_WORD, pval::str, and pval::u1.

Referenced by yyparse().

{
   pval *p = npval2(PV_WORD, pos, pos);
   if (p)
      p->u1.str = string;
   return p;
}

void reset_argcount ( yyscan_t  yyscanner  ) 

Referenced by yyparse().

void reset_parencount ( yyscan_t  yyscanner  ) 

Referenced by yyparse().

void reset_semicount ( yyscan_t  yyscanner  ) 

Referenced by yyparse().

static void set_dads ( pval dad,
pval child_list 
) [static]

Definition at line 3500 of file ael.tab.c.

References pval::dad, and pval::next.

Referenced by yyparse().

{
   struct pval *t;
   
   for(t=child_list;t;t=t->next)  /* simple stuff */
      t->dad = dad;
}

static struct pval * update_last ( pval obj,
YYLTYPE last 
) [static, read]

Definition at line 3483 of file ael.tab.c.

References pval::endcol, pval::endline, YYLTYPE::last_column, and YYLTYPE::last_line.

Referenced by yyparse().

{
   obj->endline = last->last_line;
   obj->endcol = last->last_column;
   return obj;
}

static void yydestruct ( char *  yymsg,
int  yytype,
YYSTYPE yyvaluep,
YYLTYPE yylocationp,
struct parse_io parseio 
) const [static]

Definition at line 1461 of file ael.tab.c.

References destroy_pval(), free, prev_word, YYSTYPE::pval, YYSTYPE::str, YY_SYMBOL_PRINT, and YYUSE.

Referenced by yyparse().

{
  YYUSE (yyvaluep);
  YYUSE (yylocationp);
  YYUSE (parseio);

  if (!yymsg)
    yymsg = "Deleting";
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);

  switch (yytype)
    {
      case 43: /* "word" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1483 "ael.tab.c"
   break;
      case 46: /* "objects" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1491 "ael.tab.c"
   break;
      case 47: /* "object" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1499 "ael.tab.c"
   break;
      case 48: /* "context_name" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1504 "ael.tab.c"
   break;
      case 49: /* "context" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1512 "ael.tab.c"
   break;
      case 51: /* "macro" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1520 "ael.tab.c"
   break;
      case 52: /* "globals" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1528 "ael.tab.c"
   break;
      case 53: /* "global_statements" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1536 "ael.tab.c"
   break;
      case 54: /* "assignment" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1544 "ael.tab.c"
   break;
      case 56: /* "local_assignment" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1552 "ael.tab.c"
   break;
      case 58: /* "arglist" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1560 "ael.tab.c"
   break;
      case 59: /* "elements" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1568 "ael.tab.c"
   break;
      case 60: /* "element" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1576 "ael.tab.c"
   break;
      case 61: /* "ignorepat" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1584 "ael.tab.c"
   break;
      case 62: /* "extension" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1592 "ael.tab.c"
   break;
      case 63: /* "statements" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1600 "ael.tab.c"
   break;
      case 64: /* "timerange" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1605 "ael.tab.c"
   break;
      case 65: /* "timespec" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1613 "ael.tab.c"
   break;
      case 66: /* "test_expr" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1618 "ael.tab.c"
   break;
      case 68: /* "if_like_head" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1626 "ael.tab.c"
   break;
      case 69: /* "word_list" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1631 "ael.tab.c"
   break;
      case 71: /* "word3_list" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1636 "ael.tab.c"
   break;
      case 72: /* "goto_word" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1641 "ael.tab.c"
   break;
      case 73: /* "switch_statement" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1649 "ael.tab.c"
   break;
      case 74: /* "statement" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1657 "ael.tab.c"
   break;
      case 79: /* "opt_else" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1665 "ael.tab.c"
   break;
      case 80: /* "target" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1673 "ael.tab.c"
   break;
      case 81: /* "opt_pri" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1678 "ael.tab.c"
   break;
      case 82: /* "jumptarget" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1686 "ael.tab.c"
   break;
      case 83: /* "macro_call" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1694 "ael.tab.c"
   break;
      case 85: /* "application_call_head" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1702 "ael.tab.c"
   break;
      case 87: /* "application_call" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1710 "ael.tab.c"
   break;
      case 88: /* "opt_word" */
#line 183 "ael.y"
   { free((yyvaluep->str));};
#line 1715 "ael.tab.c"
   break;
      case 89: /* "eval_arglist" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1723 "ael.tab.c"
   break;
      case 90: /* "case_statements" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1731 "ael.tab.c"
   break;
      case 91: /* "case_statement" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1739 "ael.tab.c"
   break;
      case 92: /* "macro_statements" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1747 "ael.tab.c"
   break;
      case 93: /* "macro_statement" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1755 "ael.tab.c"
   break;
      case 94: /* "switches" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1763 "ael.tab.c"
   break;
      case 95: /* "eswitches" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1771 "ael.tab.c"
   break;
      case 96: /* "switchlist" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1779 "ael.tab.c"
   break;
      case 97: /* "included_entry" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1787 "ael.tab.c"
   break;
      case 98: /* "includeslist" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1795 "ael.tab.c"
   break;
      case 99: /* "includes" */
#line 170 "ael.y"
   {
      destroy_pval((yyvaluep->pval));
      prev_word=0;
   };
#line 1803 "ael.tab.c"
   break;

      default:
   break;
    }
}

void yyerror ( YYLTYPE locp,
struct parse_io parseio,
char const *  s 
)

Definition at line 3452 of file ael.tab.c.

References ael_token_subst(), ast_log(), YYLTYPE::first_column, YYLTYPE::first_line, free, YYLTYPE::last_column, YYLTYPE::last_line, LOG_ERROR, and parse_io::syntax_error_count.

{
   char *s2 = ael_token_subst((char *)s);
   if (locp->first_line == locp->last_line) {
      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);
   } else {
      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);
   }
   free(s2);
   parseio->syntax_error_count++;
}

int yyparse ( struct parse_io parseio  ) 

Definition at line 1853 of file ael.tab.c.

References pval::arglist, asprintf(), ast_log(), calloc, destroy_pval(), YYLTYPE::first_column, YYLTYPE::first_line, pval::for_init, free, YYSTYPE::intval, YYLTYPE::last_column, YYLTYPE::last_line, linku1(), pval::list, LOG_WARNING, malloc, pval::next, npval(), npval2(), nword(), prev_word, PV_APPLICATION_CALL, PV_BREAK, PV_CASE, PV_CATCH, PV_CONTEXT, PV_CONTINUE, PV_DEFAULT, PV_ESWITCHES, PV_EXTENSION, PV_FOR, PV_GLOBALS, PV_GOTO, PV_IF, PV_IFTIME, PV_IGNOREPAT, PV_INCLUDES, PV_LABEL, PV_LOCALVARDEC, PV_MACRO, PV_MACRO_CALL, PV_PATTERN, PV_RANDOM, PV_RETURN, PV_STATEMENTBLOCK, PV_SWITCH, PV_SWITCHES, PV_VARDEC, PV_WHILE, PV_WORD, YYSTYPE::pval, reset_argcount(), reset_parencount(), reset_semicount(), set_dads(), pval::statements, pval::str, str, YYSTYPE::str, strdup, pval::u1, pval::u2, update_last(), pval::val, YY_, YY_REDUCE_PRINT, YY_STACK_PRINT, YY_SYMBOL_PRINT, yydestruct(), YYDPRINTF, YYEMPTY, YYEOF, yyerror, YYFINAL, YYID, YYLAST, YYLLOC_DEFAULT, YYMAXDEPTH, YYPACT_NINF, YYPOPSTACK, YYSIZE_T, YYSTACK_ALLOC, YYSTACK_ALLOC_MAXIMUM, YYSTACK_BYTES, YYSTACK_FREE, YYSTACK_RELOCATE, yysyntax_error(), YYTABLE_NINF, YYTERROR, and YYTRANSLATE.

{
  /* The look-ahead symbol.  */
int yychar;

/* The semantic value of the look-ahead symbol.  */
YYSTYPE yylval;

/* Number of syntax errors so far.  */
int yynerrs;
/* Location data for the look-ahead symbol.  */
YYLTYPE yylloc;

  int yystate;
  int yyn;
  int yyresult;
  /* Number of tokens to shift before error messages enabled.  */
  int yyerrstatus;
  /* Look-ahead token as an internal (translated) token number.  */
  int yytoken = 0;
#if YYERROR_VERBOSE
  /* Buffer for error messages, and its allocated size.  */
  char yymsgbuf[128];
  char *yymsg = yymsgbuf;
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
#endif

  /* Three stacks and their tools:
     `yyss': related to states,
     `yyvs': related to semantic values,
     `yyls': related to locations.

     Refer to the stacks thru separate pointers, to allow yyoverflow
     to reallocate them elsewhere.  */

  /* The state stack.  */
  yytype_int16 yyssa[YYINITDEPTH];
  yytype_int16 *yyss = yyssa;
  yytype_int16 *yyssp;

  /* The semantic value stack.  */
  YYSTYPE yyvsa[YYINITDEPTH];
  YYSTYPE *yyvs = yyvsa;
  YYSTYPE *yyvsp;

  /* The location stack.  */
  YYLTYPE yylsa[YYINITDEPTH];
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;
  /* The locations where the error started and ended.  */
  YYLTYPE yyerror_range[2];

#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))

  YYSIZE_T yystacksize = YYINITDEPTH;

  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;
  YYLTYPE yyloc;

  /* The number of symbols on the RHS of the reduced rule.
     Keep to zero when no symbol should be popped.  */
  int yylen = 0;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;     /* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss;
  yyvsp = yyvs;
  yylsp = yyls;
#if YYLTYPE_IS_TRIVIAL
  /* Initialize the default location before parsing starts.  */
  yylloc.first_line   = yylloc.last_line   = 1;
  yylloc.first_column = yylloc.last_column = 0;
#endif

  goto yysetstate;

/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
 yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed.  So pushing a state here evens the stacks.  */
  yyssp++;

 yysetstate:
  *yyssp = yystate;

  if (yyss + yystacksize - 1 <= yyssp)
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYSIZE_T yysize = yyssp - yyss + 1;

#ifdef yyoverflow
      {
   /* Give user a chance to reallocate the stack.  Use copies of
      these so that the &'s don't force the real ones into
      memory.  */
   YYSTYPE *yyvs1 = yyvs;
   yytype_int16 *yyss1 = yyss;
   YYLTYPE *yyls1 = yyls;

   /* Each stack pointer address is followed by the size of the
      data in use in that stack, in bytes.  This used to be a
      conditional around just the two extra args, but that might
      be undefined if yyoverflow is a macro.  */
   yyoverflow (YY_("memory exhausted"),
          &yyss1, yysize * sizeof (*yyssp),
          &yyvs1, yysize * sizeof (*yyvsp),
          &yyls1, yysize * sizeof (*yylsp),
          &yystacksize);
   yyls = yyls1;
   yyss = yyss1;
   yyvs = yyvs1;
      }
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
      goto yyexhaustedlab;
# else
      /* Extend the stack our own way.  */
      if (YYMAXDEPTH <= yystacksize)
   goto yyexhaustedlab;
      yystacksize *= 2;
      if (YYMAXDEPTH < yystacksize)
   yystacksize = YYMAXDEPTH;

      {
   yytype_int16 *yyss1 = yyss;
   union yyalloc *yyptr =
     (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
   if (! yyptr)
     goto yyexhaustedlab;
   YYSTACK_RELOCATE (yyss);
   YYSTACK_RELOCATE (yyvs);
   YYSTACK_RELOCATE (yyls);
#  undef YYSTACK_RELOCATE
   if (yyss1 != yyssa)
     YYSTACK_FREE (yyss1);
      }
# endif
#endif /* no yyoverflow */

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;
      yylsp = yyls + yysize - 1;

      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
        (unsigned long int) yystacksize));

      if (yyss + yystacksize - 1 <= yyssp)
   YYABORT;
    }

  YYDPRINTF ((stderr, "Entering state %d\n", yystate));

  goto yybackup;

/*-----------.
| yybackup.  |
`-----------*/
yybackup:

  /* Do appropriate processing given the current state.  Read a
     look-ahead token if we need one and don't already have one.  */

  /* First try to decide what to do without reference to look-ahead token.  */
  yyn = yypact[yystate];
  if (yyn == YYPACT_NINF)
    goto yydefault;

  /* Not known => get a look-ahead token if don't already have one.  */

  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token: "));
      yychar = YYLEX;
    }

  if (yychar <= YYEOF)
    {
      yychar = yytoken = YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else
    {
      yytoken = YYTRANSLATE (yychar);
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
    }

  /* If the proper action on seeing token YYTOKEN is to reduce or to
     detect an error, take that action.  */
  yyn += yytoken;
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn <= 0)
    {
      if (yyn == 0 || yyn == YYTABLE_NINF)
   goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  /* Shift the look-ahead token.  */
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);

  /* Discard the shifted token unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  yystate = yyn;
  *++yyvsp = yylval;
  *++yylsp = yylloc;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- Do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     `$$ = $1'.

     Otherwise, the following line sets YYVAL to garbage.
     This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];

  /* Default location.  */
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
  YY_REDUCE_PRINT (yyn);
  switch (yyn)
    {
        case 2:
#line 191 "ael.y"
    { (yyval.pval) = parseio->pval = (yyvsp[(1) - (1)].pval); ;}
    break;

  case 3:
#line 194 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 4:
#line 195 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
    break;

  case 5:
#line 196 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
    break;

  case 6:
#line 199 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 7:
#line 200 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 8:
#line 201 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 9:
#line 202 "ael.y"
    {(yyval.pval)=0;/* allow older docs to be read */;}
    break;

  case 10:
#line 205 "ael.y"
    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
    break;

  case 11:
#line 206 "ael.y"
    { (yyval.str) = strdup("default"); ;}
    break;

  case 12:
#line 209 "ael.y"
    {
      (yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
      (yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
      (yyval.pval)->u2.statements = (yyvsp[(5) - (6)].pval);
      set_dads((yyval.pval),(yyvsp[(5) - (6)].pval));
      (yyval.pval)->u3.abstract = (yyvsp[(1) - (6)].intval);;}
    break;

  case 13:
#line 218 "ael.y"
    { (yyval.intval) = 1; ;}
    break;

  case 14:
#line 219 "ael.y"
    { (yyval.intval) = 0; ;}
    break;

  case 15:
#line 220 "ael.y"
    { (yyval.intval) = 2; ;}
    break;

  case 16:
#line 221 "ael.y"
    { (yyval.intval)=3; ;}
    break;

  case 17:
#line 222 "ael.y"
    { (yyval.intval)=3; ;}
    break;

  case 18:
#line 225 "ael.y"
    {
      (yyval.pval) = npval2(PV_MACRO, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
      (yyval.pval)->u1.str = (yyvsp[(2) - (8)].str); (yyval.pval)->u2.arglist = (yyvsp[(4) - (8)].pval); (yyval.pval)->u3.macro_statements = (yyvsp[(7) - (8)].pval);
        set_dads((yyval.pval),(yyvsp[(7) - (8)].pval));;}
    break;

  case 19:
#line 231 "ael.y"
    {
      (yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
      (yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);
        set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
    break;

  case 20:
#line 237 "ael.y"
    { (yyval.pval) = NULL; ;}
    break;

  case 21:
#line 238 "ael.y"
    {(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
    break;

  case 22:
#line 239 "ael.y"
    {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
    break;

  case 23:
#line 242 "ael.y"
    { reset_semicount(parseio->scanner); ;}
    break;

  case 24:
#line 242 "ael.y"
    {
      (yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
      (yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
      (yyval.pval)->u2.val = (yyvsp[(4) - (5)].str); ;}
    break;

  case 25:
#line 248 "ael.y"
    { reset_semicount(parseio->scanner); ;}
    break;

  case 26:
#line 248 "ael.y"
    {
      (yyval.pval) = npval2(PV_LOCALVARDEC, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
      (yyval.pval)->u1.str = (yyvsp[(2) - (6)].str);
      (yyval.pval)->u2.val = (yyvsp[(5) - (6)].str); ;}
    break;

  case 27:
#line 255 "ael.y"
    { (yyval.pval) = NULL; ;}
    break;

  case 28:
#line 256 "ael.y"
    { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
    break;

  case 29:
#line 257 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
    break;

  case 30:
#line 258 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
    break;

  case 31:
#line 261 "ael.y"
    {(yyval.pval)=0;;}
    break;

  case 32:
#line 262 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
    break;

  case 33:
#line 263 "ael.y"
    { (yyval.pval)=(yyvsp[(2) - (2)].pval);;}
    break;

  case 34:
#line 266 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 35:
#line 267 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 36:
#line 268 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 37:
#line 269 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 38:
#line 270 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 39:
#line 271 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 40:
#line 272 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 41:
#line 273 "ael.y"
    {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;;}
    break;

  case 42:
#line 274 "ael.y"
    {(yyval.pval)=0;/* allow older docs to be read */;}
    break;

  case 43:
#line 277 "ael.y"
    {
      (yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
      (yyval.pval)->u1.str = (yyvsp[(3) - (4)].str);;}
    break;

  case 44:
#line 282 "ael.y"
    {
      (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
      (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
      (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
    break;

  case 45:
#line 286 "ael.y"
    {
      (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (5)]), &(yylsp[(3) - (5)]));
      (yyval.pval)->u1.str = malloc(strlen((yyvsp[(1) - (5)].str))+strlen((yyvsp[(3) - (5)].str))+2);
      strcpy((yyval.pval)->u1.str,(yyvsp[(1) - (5)].str));
      strcat((yyval.pval)->u1.str,"@");
      strcat((yyval.pval)->u1.str,(yyvsp[(3) - (5)].str));
      free((yyvsp[(1) - (5)].str));
      (yyval.pval)->u2.statements = (yyvsp[(5) - (5)].pval); set_dads((yyval.pval),(yyvsp[(5) - (5)].pval));;}
    break;

  case 46:
#line 294 "ael.y"
    {
      (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
      (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
      (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));
      (yyval.pval)->u4.regexten=1;;}
    break;

  case 47:
#line 299 "ael.y"
    {
      (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
      (yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
      (yyval.pval)->u2.statements = (yyvsp[(7) - (7)].pval); set_dads((yyval.pval),(yyvsp[(7) - (7)].pval));
      (yyval.pval)->u3.hints = (yyvsp[(3) - (7)].str);;}
    break;

  case 48:
#line 304 "ael.y"
    {
      (yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
      (yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
      (yyval.pval)->u2.statements = (yyvsp[(8) - (8)].pval); set_dads((yyval.pval),(yyvsp[(8) - (8)].pval));
      (yyval.pval)->u4.regexten=1;
      (yyval.pval)->u3.hints = (yyvsp[(4) - (8)].str);;}
    break;

  case 49:
#line 313 "ael.y"
    { (yyval.pval) = NULL; ;}
    break;

  case 50:
#line 314 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
    break;

  case 51:
#line 315 "ael.y"
    {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
    break;

  case 52:
#line 321 "ael.y"
    {
      if (asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(5) - (5)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (5)].str));
         free((yyvsp[(3) - (5)].str));
         free((yyvsp[(5) - (5)].str));
      }
   ;}
    break;

  case 53:
#line 331 "ael.y"
    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
    break;

  case 54:
#line 335 "ael.y"
    {
      (yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)]));
      (yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)]));
      (yyval.pval)->next->next = nword((yyvsp[(5) - (7)].str), &(yylsp[(5) - (7)]));
      (yyval.pval)->next->next->next = nword((yyvsp[(7) - (7)].str), &(yylsp[(7) - (7)])); ;}
    break;

  case 55:
#line 343 "ael.y"
    { reset_parencount(parseio->scanner); ;}
    break;

  case 56:
#line 343 "ael.y"
    { (yyval.str) = (yyvsp[(3) - (4)].str); ;}
    break;

  case 57:
#line 347 "ael.y"
    {
      (yyval.pval)= npval2(PV_IF, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
      (yyval.pval)->u1.str = (yyvsp[(2) - (2)].str); ;}
    break;

  case 58:
#line 350 "ael.y"
    {
      (yyval.pval) = npval2(PV_RANDOM, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
      (yyval.pval)->u1.str=(yyvsp[(2) - (2)].str);;}
    break;

  case 59:
#line 353 "ael.y"
    {
      (yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
      (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
      prev_word = 0; ;}
    break;

  case 60:
#line 364 "ael.y"
    { (yyval.str) = (yyvsp[(1) - (1)].str);;}
    break;

  case 61:
#line 365 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (2)].str));
         free((yyvsp[(2) - (2)].str));
         prev_word = (yyval.str);
      }
   ;}
    break;

  case 62:
#line 377 "ael.y"
    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
    break;

  case 63:
#line 378 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s %s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (2)].str));
         free((yyvsp[(2) - (2)].str));
      }
   ;}
    break;

  case 64:
#line 387 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (3)].str));
         free((yyvsp[(3) - (3)].str));
      }
   ;}
    break;

  case 65:
#line 396 "ael.y"
    {  /* there are often '&' in hints */
      if (asprintf(&((yyval.str)), "%s&%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (3)].str));
         free((yyvsp[(3) - (3)].str));
      }
   ;}
    break;

  case 66:
#line 405 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s@%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (3)].str));
         free((yyvsp[(3) - (3)].str));
      }
   ;}
    break;

  case 67:
#line 416 "ael.y"
    { (yyval.str) = (yyvsp[(1) - (1)].str);;}
    break;

  case 68:
#line 417 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (2)].str));
         free((yyvsp[(2) - (2)].str));
         prev_word = (yyval.str);
      }        
   ;}
    break;

  case 69:
#line 427 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (3)].str));
         free((yyvsp[(2) - (3)].str));
         free((yyvsp[(3) - (3)].str));
         prev_word=(yyval.str);
      }
   ;}
    break;

  case 70:
#line 440 "ael.y"
    { (yyval.str) = (yyvsp[(1) - (1)].str);;}
    break;

  case 71:
#line 441 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (2)].str));
         free((yyvsp[(2) - (2)].str));
      }
   ;}
    break;

  case 72:
#line 450 "ael.y"
    {
      if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
         ast_log(LOG_WARNING, "asprintf() failed\n");
         (yyval.str) = NULL;
      } else {
         free((yyvsp[(1) - (3)].str));
         free((yyvsp[(3) - (3)].str));
      }
   ;}
    break;

  case 73:
#line 461 "ael.y"
    {
      (yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
      (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
      (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
    break;

  case 74:
#line 470 "ael.y"
    {
      (yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
      (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));;}
    break;

  case 75:
#line 473 "ael.y"
    { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
    break;

  case 76:
#line 474 "ael.y"
    { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
    break;

  case 77:
#line 475 "ael.y"
    {
      (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
      (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
    break;

  case 78:
#line 478 "ael.y"
    {
      (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
      (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);;}
    break;

  case 79:
#line 481 "ael.y"
    {
      (yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
      (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); ;}
    break;

  case 80:
#line 484 "ael.y"
    {reset_semicount(parseio->scanner);;}
    break;

  case 81:
#line 485 "ael.y"
    {reset_semicount(parseio->scanner);;}
    break;

  case 82:
#line 486 "ael.y"
    {reset_parencount(parseio->scanner);;}
    break;

  case 83:
#line 486 "ael.y"
    { /* XXX word_list maybe ? */
      (yyval.pval) = npval2(PV_FOR, &(yylsp[(1) - (12)]), &(yylsp[(12) - (12)]));
      (yyval.pval)->u1.for_init = (yyvsp[(4) - (12)].str);
      (yyval.pval)->u2.for_test=(yyvsp[(7) - (12)].str);
      (yyval.pval)->u3.for_inc = (yyvsp[(10) - (12)].str);
      (yyval.pval)->u4.for_statements = (yyvsp[(12) - (12)].pval); set_dads((yyval.pval),(yyvsp[(12) - (12)].pval));;}
    break;

  case 84:
#line 492 "ael.y"
    {
      (yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
      (yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
      (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval); set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
    break;

  case 85:
#line 496 "ael.y"
    { (yyval.pval) = (yyvsp[(1) - (1)].pval); ;}
    break;

  case 86:
#line 497 "ael.y"
    { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); ;}
    break;

  case 87:
#line 498 "ael.y"
    { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
    break;

  case 88:
#line 499 "ael.y"
    {
      (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
      (yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);;}
    break;

  case 89:
#line 502 "ael.y"
    {reset_semicount(parseio->scanner);;}
    break;

  case 90:
#line 502 "ael.y"
    {
      char *bufx;
      int tot=0;
      pval *pptr;
      (yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
      (yyval.pval)->u2.val=(yyvsp[(4) - (5)].str);
      /* rebuild the original string-- this is not an app call, it's an unwrapped vardec, with a func call on the LHS */
      /* string to big to fit in the buffer? */
      tot+=strlen((yyvsp[(1) - (5)].pval)->u1.str);
      for(pptr=(yyvsp[(1) - (5)].pval)->u2.arglist;pptr;pptr=pptr->next) {
         tot+=strlen(pptr->u1.str);
         tot++; /* for a sep like a comma */
      }
      tot+=4; /* for safety */
      bufx = calloc(1, tot);
      strcpy(bufx,(yyvsp[(1) - (5)].pval)->u1.str);
      strcat(bufx,"(");
      /* XXX need to advance the pointer or the loop is very inefficient */
      for (pptr=(yyvsp[(1) - (5)].pval)->u2.arglist;pptr;pptr=pptr->next) {
         if ( pptr != (yyvsp[(1) - (5)].pval)->u2.arglist )
            strcat(bufx,",");
         strcat(bufx,pptr->u1.str);
      }
      strcat(bufx,")");
#ifdef AAL_ARGCHECK
      if ( !ael_is_funcname((yyvsp[(1) - (5)].pval)->u1.str) )
         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",
            my_file, (yylsp[(1) - (5)]).first_line, (yylsp[(1) - (5)]).first_column, (yylsp[(1) - (5)]).last_column, (yyvsp[(1) - (5)].pval)->u1.str);
#endif
      (yyval.pval)->u1.str = bufx;
      destroy_pval((yyvsp[(1) - (5)].pval)); /* the app call it is not, get rid of that chain */
      prev_word = 0;
   ;}
    break;

  case 91:
#line 535 "ael.y"
    { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
    break;

  case 92:
#line 536 "ael.y"
    { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
    break;

  case 93:
#line 537 "ael.y"
    { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); ;}
    break;

  case 94:
#line 538 "ael.y"
    {
      (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
      (yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));
      (yyval.pval)->u3.else_statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
    break;

  case 95:
#line 542 "ael.y"
    { (yyval.pval)=0; ;}
    break;

  case 96:
#line 545 "ael.y"
    { (yyval.pval) = (yyvsp[(2) - (2)].pval); ;}
    break;

  case 97:
#line 546 "ael.y"
    { (yyval.pval) = NULL ; ;}
    break;

  case 98:
#line 549 "ael.y"
    { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
    break;

  case 99:
#line 550 "ael.y"
    {
      (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
      (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
    break;

  case 100:
#line 553 "ael.y"
    {
      (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
      (yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); ;}
    break;

  case 101:
#line 556 "ael.y"
    {
      (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
      (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
      (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
    break;

  case 102:
#line 560 "ael.y"
    {
      (yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
      (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
      (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
    break;

  case 103:
#line 564 "ael.y"
    {
      (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
      (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
      (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
    break;

  case 104:
#line 568 "ael.y"
    {
      (yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
      (yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
      (yyval.pval)->next->next = nword((yyvsp[(5) - (5)].str), &(yylsp[(5) - (5)])); ;}
    break;

  case 105:
#line 574 "ael.y"
    { (yyval.str) = strdup("1"); ;}
    break;

  case 106:
#line 575 "ael.y"
    { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
    break;

  case 107:
#line 579 "ael.y"
    {       /* ext[, pri] default 1 */
      (yyval.pval) = nword((yyvsp[(1) - (2)].str), &(yylsp[(1) - (2)]));
      (yyval.pval)->next = nword((yyvsp[(2) - (2)].str), &(yylsp[(2) - (2)])); ;}
    break;

  case 108:
#line 582 "ael.y"
    { /* context, ext, pri */
      (yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)]));
      (yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)]));
      (yyval.pval)->next->next = nword((yyvsp[(2) - (4)].str), &(yylsp[(2) - (4)])); ;}
    break;

  case 109:
#line 588 "ael.y"
    {reset_argcount(parseio->scanner);;}
    break;

  case 110:
#line 588 "ael.y"
    {
      /* XXX original code had @2 but i think we need @5 */
      (yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
      (yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
      (yyval.pval)->u2.arglist = (yyvsp[(4) - (5)].pval);;}
    break;

  case 111:
#line 593 "ael.y"
    {
      (yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
      (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); ;}
    break;

  case 112:
#line 601 "ael.y"
    {reset_argcount(parseio->scanner);;}
    break;

  case 113:
#line 601 "ael.y"
    {
      if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
         (yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
         free((yyvsp[(1) - (3)].str)); /* won't be using this */
         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 );
      } else {
         (yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
         (yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
      } ;}
    break;

  case 114:
#line 612 "ael.y"
    {
      (yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
      if( (yyval.pval)->type == PV_GOTO )
         (yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);
      else
         (yyval.pval)->u2.arglist = (yyvsp[(2) - (3)].pval);
   ;}
    break;

  case 115:
#line 619 "ael.y"
    { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); ;}
    break;

  case 116:
#line 622 "ael.y"
    { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
    break;

  case 117:
#line 623 "ael.y"
    { (yyval.str) = strdup(""); ;}
    break;

  case 118:
#line 626 "ael.y"
    { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
    break;

  case 119:
#line 627 "ael.y"
    {
      (yyval.pval)= npval(PV_WORD,0/*@1.first_line*/,0/*@1.last_line*/,0/* @1.first_column*/, 0/*@1.last_column*/);
      (yyval.pval)->u1.str = strdup(""); ;}
    break;

  case 120:
#line 630 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); ;}
    break;

  case 121:
#line 633 "ael.y"
    { (yyval.pval) = NULL; ;}
    break;

  case 122:
#line 634 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
    break;

  case 123:
#line 637 "ael.y"
    {
      (yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)])); /* XXX 3 or 4 ? */
      (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
      (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval); set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
    break;

  case 124:
#line 641 "ael.y"
    {
      (yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
      (yyval.pval)->u1.str = NULL;
      (yyval.pval)->u2.statements = (yyvsp[(3) - (3)].pval);set_dads((yyval.pval),(yyvsp[(3) - (3)].pval));;}
    break;

  case 125:
#line 645 "ael.y"
    {
      (yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX@3 or @4 ? */
      (yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
      (yyval.pval)->u2.statements = (yyvsp[(4) - (4)].pval);set_dads((yyval.pval),(yyvsp[(4) - (4)].pval));;}
    break;

  case 126:
#line 651 "ael.y"
    { (yyval.pval) = NULL; ;}
    break;

  case 127:
#line 652 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); ;}
    break;

  case 128:
#line 655 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 129:
#line 656 "ael.y"
    { (yyval.pval)=(yyvsp[(1) - (1)].pval);;}
    break;

  case 130:
#line 657 "ael.y"
    {
      (yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
      (yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
      (yyval.pval)->u2.statements = (yyvsp[(4) - (5)].pval); set_dads((yyval.pval),(yyvsp[(4) - (5)].pval));;}
    break;

  case 131:
#line 663 "ael.y"
    {
      (yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
      (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
    break;

  case 132:
#line 668 "ael.y"
    {
      (yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
      (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
    break;

  case 133:
#line 673 "ael.y"
    { (yyval.pval) = NULL; ;}
    break;

  case 134:
#line 674 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); ;}
    break;

  case 135:
#line 675 "ael.y"
    {
     char *x;
     if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) {
      ast_log(LOG_WARNING, "asprintf() failed\n");
      (yyval.pval) = NULL;
     } else {
      free((yyvsp[(2) - (5)].str));
      free((yyvsp[(4) - (5)].str));
      (yyval.pval) = linku1((yyvsp[(1) - (5)].pval),nword(x, &(yylsp[(2) - (5)])));
     }
   ;}
    break;

  case 136:
#line 686 "ael.y"
    {(yyval.pval)=(yyvsp[(2) - (2)].pval);;}
    break;

  case 137:
#line 689 "ael.y"
    { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); ;}
    break;

  case 138:
#line 690 "ael.y"
    {
      (yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
      (yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
      prev_word=0; /* XXX sure ? */ ;}
    break;

  case 139:
#line 697 "ael.y"
    { (yyval.pval) = (yyvsp[(1) - (2)].pval); ;}
    break;

  case 140:
#line 698 "ael.y"
    { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); ;}
    break;

  case 141:
#line 699 "ael.y"
    {(yyval.pval)=(yyvsp[(1) - (2)].pval);;}
    break;

  case 142:
#line 702 "ael.y"
    {
      (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
      (yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));;}
    break;

  case 143:
#line 705 "ael.y"
    {
      (yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));;}
    break;


/* Line 1267 of yacc.c.  */
#line 3106 "ael.tab.c"
      default: break;
    }
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);

  *++yyvsp = yyval;
  *++yylsp = yyloc;

  /* Now `shift' the result of the reduction.  Determine what state
     that goes to, based on the state we popped back to and the rule
     number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTOKENS];

  goto yynewstate;


/*------------------------------------.
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;
#if ! YYERROR_VERBOSE
      yyerror (&yylloc, parseio, YY_("syntax error"));
#else
      {
   YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
   if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
     {
       YYSIZE_T yyalloc = 2 * yysize;
       if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
         yyalloc = YYSTACK_ALLOC_MAXIMUM;
       if (yymsg != yymsgbuf)
         YYSTACK_FREE (yymsg);
       yymsg = (char *) YYSTACK_ALLOC (yyalloc);
       if (yymsg)
         yymsg_alloc = yyalloc;
       else
         {
      yymsg = yymsgbuf;
      yymsg_alloc = sizeof yymsgbuf;
         }
     }

   if (0 < yysize && yysize <= yymsg_alloc)
     {
       (void) yysyntax_error (yymsg, yystate, yychar);
       yyerror (&yylloc, parseio, yymsg);
     }
   else
     {
       yyerror (&yylloc, parseio, YY_("syntax error"));
       if (yysize != 0)
         goto yyexhaustedlab;
     }
      }
#endif
    }

  yyerror_range[0] = yylloc;

  if (yyerrstatus == 3)
    {
      /* If just tried and failed to reuse look-ahead token after an
    error, discard it.  */

      if (yychar <= YYEOF)
   {
     /* Return failure if at end of input.  */
     if (yychar == YYEOF)
       YYABORT;
   }
      else
   {
     yydestruct ("Error: discarding",
            yytoken, &yylval, &yylloc, parseio);
     yychar = YYEMPTY;
   }
    }

  /* Else will try to reuse look-ahead token after shifting the error
     token.  */
  goto yyerrlab1;


/*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR.  |
`---------------------------------------------------*/
yyerrorlab:

  /* Pacify compilers like GCC when the user code never invokes
     YYERROR and the label yyerrorlab therefore never appears in user
     code.  */
  if (/*CONSTCOND*/ 0)
     goto yyerrorlab;

  yyerror_range[0] = yylsp[1-yylen];
  /* Do not reclaim the symbols of the rule which action triggered
     this YYERROR.  */
  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);
  yystate = *yyssp;
  goto yyerrlab1;


/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
`-------------------------------------------------------------*/
yyerrlab1:
  yyerrstatus = 3;   /* Each real token shifted decrements this.  */

  for (;;)
    {
      yyn = yypact[yystate];
      if (yyn != YYPACT_NINF)
   {
     yyn += YYTERROR;
     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
       {
         yyn = yytable[yyn];
         if (0 < yyn)
      break;
       }
   }

      /* Pop the current state because it cannot handle the error token.  */
      if (yyssp == yyss)
   YYABORT;

      yyerror_range[0] = *yylsp;
      yydestruct ("Error: popping",
        yystos[yystate], yyvsp, yylsp, parseio);
      YYPOPSTACK (1);
      yystate = *yyssp;
      YY_STACK_PRINT (yyss, yyssp);
    }

  if (yyn == YYFINAL)
    YYACCEPT;

  *++yyvsp = yylval;

  yyerror_range[1] = yylloc;
  /* Using YYLLOC is tempting, but would change the location of
     the look-ahead.  YYLOC is available though.  */
  YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
  *++yylsp = yyloc;

  /* Shift the error token.  */
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturn;

/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturn;

#ifndef yyoverflow
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here.  |
`-------------------------------------------------*/
yyexhaustedlab:
  yyerror (&yylloc, parseio, YY_("memory exhausted"));
  yyresult = 2;
  /* Fall through.  */
#endif

yyreturn:
  if (yychar != YYEOF && yychar != YYEMPTY)
     yydestruct ("Cleanup: discarding lookahead",
       yytoken, &yylval, &yylloc, parseio);
  /* Do not reclaim the symbols of the rule which action triggered
     this YYABORT or YYACCEPT.  */
  YYPOPSTACK (yylen);
  YY_STACK_PRINT (yyss, yyssp);
  while (yyssp != yyss)
    {
      yydestruct ("Cleanup: popping",
        yystos[*yyssp], yyvsp, yylsp, parseio);
      YYPOPSTACK (1);
    }
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif
#if YYERROR_VERBOSE
  if (yymsg != yymsgbuf)
    YYSTACK_FREE (yymsg);
#endif
  /* Make sure YYID is used.  */
  return YYID (yyresult);
}

int yyparse (  ) 

Variable Documentation

char* my_file

Definition at line 873 of file ael_lex.c.

char* token_equivs1[] [static]

Definition at line 3328 of file ael.tab.c.

char* token_equivs2[] [static]

Definition at line 3368 of file ael.tab.c.

const yytype_uint16 yycheck[] [static]

Definition at line 883 of file ael.tab.c.

const yytype_uint8 yydefact[] [static]

Definition at line 745 of file ael.tab.c.

const yytype_int16 yydefgoto[] [static]

Definition at line 779 of file ael.tab.c.

const yytype_int16 yypact[] [static]

Definition at line 792 of file ael.tab.c.

const yytype_int16 yypgoto[] [static]

Definition at line 826 of file ael.tab.c.

const yytype_uint8 yyr1[] [static]

Definition at line 703 of file ael.tab.c.

const yytype_uint8 yyr2[] [static]

Definition at line 723 of file ael.tab.c.

const yytype_uint8 yystos[] [static]

Definition at line 927 of file ael.tab.c.

const yytype_int16 yytable[] [static]

Definition at line 841 of file ael.tab.c.

const yytype_uint8 yytranslate[] [static]

Definition at line 533 of file ael.tab.c.