inherit0.tab.c revision 272955
140711Swollman/* original parser id follows */
240711Swollman/* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
340711Swollman/* (use YYMAJOR/YYMINOR for ifdefs dependent of parser version) */
440711Swollman
540711Swollman#define YYBYACC 1
640711Swollman#define YYMAJOR 1
740711Swollman#define YYMINOR 9
840711Swollman#define YYCHECK "yyyymmdd"
940711Swollman
1040711Swollman#define YYEMPTY        (-1)
1140711Swollman#define yyclearin      (yychar = YYEMPTY)
1240711Swollman#define yyerrok        (yyerrflag = 0)
1340711Swollman#define YYRECOVERING() (yyerrflag != 0)
1440711Swollman#define YYENOMEM       (-2)
1540711Swollman#define YYEOF          0
1640711Swollman#undef YYBTYACC
1740711Swollman#define YYBTYACC 0
1840711Swollman#define YYDEBUGSTR YYPREFIX "debug"
1940711Swollman
2040711Swollman#ifndef yyparse
2140711Swollman#define yyparse    inherit0_parse
2240711Swollman#endif /* yyparse */
2340711Swollman
2440711Swollman#ifndef yylex
2540711Swollman#define yylex      inherit0_lex
2640711Swollman#endif /* yylex */
2740711Swollman
2840711Swollman#ifndef yyerror
2950477Speter#define yyerror    inherit0_error
3040711Swollman#endif /* yyerror */
3140711Swollman
3240711Swollman#ifndef yychar
3340711Swollman#define yychar     inherit0_char
3440711Swollman#endif /* yychar */
3540711Swollman
3640711Swollman#ifndef yyval
3740711Swollman#define yyval      inherit0_val
3840711Swollman#endif /* yyval */
3940711Swollman
4040711Swollman#ifndef yylval
4140711Swollman#define yylval     inherit0_lval
4240711Swollman#endif /* yylval */
4340711Swollman
4440711Swollman#ifndef yydebug
4540711Swollman#define yydebug    inherit0_debug
4640711Swollman#endif /* yydebug */
4740711Swollman
4840711Swollman#ifndef yynerrs
4940711Swollman#define yynerrs    inherit0_nerrs
5040711Swollman#endif /* yynerrs */
5140711Swollman
5240711Swollman#ifndef yyerrflag
5340711Swollman#define yyerrflag  inherit0_errflag
5440711Swollman#endif /* yyerrflag */
5540711Swollman
5640711Swollman#ifndef yylhs
5740711Swollman#define yylhs      inherit0_lhs
5840711Swollman#endif /* yylhs */
5940711Swollman
6040711Swollman#ifndef yylen
6140711Swollman#define yylen      inherit0_len
6241304Sbde#endif /* yylen */
6340711Swollman
6440711Swollman#ifndef yydefred
6571576Sjasone#define yydefred   inherit0_defred
6645720Speter#endif /* yydefred */
6745720Speter
6840711Swollman#ifndef yystos
6940711Swollman#define yystos     inherit0_stos
7059910Spaul#endif /* yystos */
7159910Spaul
7259910Spaul#ifndef yydgoto
7359910Spaul#define yydgoto    inherit0_dgoto
7459910Spaul#endif /* yydgoto */
7559910Spaul
7645569Seivind#ifndef yysindex
7740711Swollman#define yysindex   inherit0_sindex
7840711Swollman#endif /* yysindex */
7971576Sjasone
8040711Swollman#ifndef yyrindex
8140711Swollman#define yyrindex   inherit0_rindex
8245720Speter#endif /* yyrindex */
8340711Swollman
8440711Swollman#ifndef yygindex
8540711Swollman#define yygindex   inherit0_gindex
8640711Swollman#endif /* yygindex */
8740711Swollman
8840711Swollman#ifndef yytable
8940711Swollman#define yytable    inherit0_table
9040711Swollman#endif /* yytable */
9140711Swollman
9240711Swollman#ifndef yycheck
9371576Sjasone#define yycheck    inherit0_check
9440711Swollman#endif /* yycheck */
9540711Swollman
9640711Swollman#ifndef yyname
9740711Swollman#define yyname     inherit0_name
9840711Swollman#endif /* yyname */
9940711Swollman
10040711Swollman#ifndef yyrule
10168727Smckusick#define yyrule     inherit0_rule
10271576Sjasone#endif /* yyrule */
10371576Sjasone
10440711Swollman#if YYBTYACC
10571576Sjasone
10640711Swollman#ifndef yycindex
10771576Sjasone#define yycindex   inherit0_cindex
10840711Swollman#endif /* yycindex */
10971576Sjasone
11040711Swollman#ifndef yyctable
11140711Swollman#define yyctable   inherit0_ctable
11240711Swollman#endif /* yyctable */
11340711Swollman
11440711Swollman#endif /* YYBTYACC */
11540711Swollman
11640711Swollman#define YYPREFIX "inherit0_"
11740711Swollman
11840711Swollman#define YYPURE 0
11940711Swollman
12040711Swollman#line 2 "inherit0.y"
12140711Swollmanextern void mksymbol(int t, int c, int id);
12269781Sdwmalone
12340711Swollman#ifdef YYBISON
12440711Swollman#define YYLEX_DECL() yylex(void)
12540711Swollman#define YYERROR_DECL() yyerror(const char *s)
12640711Swollmanextern int YYLEX_DECL();
12740711Swollmanextern void YYERROR_DECL();
12840711Swollman#endif
12940711Swollman#line 130 "inherit0.tab.c"
13040711Swollman
13140711Swollman#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)
13271576Sjasone/* Default: YYSTYPE is the semantic value type. */
13368727Smckusicktypedef int YYSTYPE;
13468727Smckusick# define YYSTYPE_IS_DECLARED 1
13568727Smckusick#endif
13640711Swollman
13740711Swollman/* compatibility with bison */
13868727Smckusick#ifdef YYPARSE_PARAM
13968727Smckusick/* compatibility with FreeBSD */
14040711Swollman# ifdef YYPARSE_PARAM_TYPE
14168727Smckusick#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
14240711Swollman# else
14340711Swollman#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
14471576Sjasone# endif
14540711Swollman#else
14640711Swollman# define YYPARSE_DECL() yyparse(void)
14740711Swollman#endif
14840711Swollman
14940711Swollman/* Parameters sent to lex. */
15040711Swollman#ifdef YYLEX_PARAM
15140711Swollman# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
15240711Swollman# define YYLEX yylex(YYLEX_PARAM)
15371576Sjasone#else
15468727Smckusick# define YYLEX_DECL() yylex(void)
15545720Speter# define YYLEX yylex()
15671576Sjasone#endif
15740711Swollman
15845720Speter/* Parameters sent to yyerror. */
15940711Swollman#ifndef YYERROR_DECL
16040711Swollman#define YYERROR_DECL() yyerror(const char *s)
16140711Swollman#endif
16240711Swollman#ifndef YYERROR_CALL
16340711Swollman#define YYERROR_CALL(msg) yyerror(msg)
16440711Swollman#endif
16568727Smckusick
16668727Smckusickextern int YYPARSE_DECL();
16768727Smckusick
16840711Swollman#define GLOBAL 257
16940711Swollman#define LOCAL 258
17071576Sjasone#define REAL 259
17171576Sjasone#define INTEGER 260
17240711Swollman#define NAME 261
17371576Sjasone#define YYERRCODE 256
17471576Sjasonetypedef short YYINT;
17571576Sjasonestatic const YYINT inherit0_lhs[] = {                    -1,
17640711Swollman    0,    0,    1,    1,    2,    2,    3,    3,    5,    6,
17740711Swollman    4,
17840711Swollman};
17940711Swollmanstatic const YYINT inherit0_len[] = {                     2,
18040711Swollman    3,    2,    1,    1,    1,    1,    2,    1,    0,    0,
18140711Swollman    3,
18240711Swollman};
18340711Swollmanstatic const YYINT inherit0_defred[] = {                  0,
18440711Swollman    3,    4,    5,    6,    0,    0,    9,    0,    2,   10,
18540711Swollman    8,    0,    0,    7,    0,
18640711Swollman};
18740711Swollmanstatic const YYINT inherit0_stos[] = {                    0,
18840711Swollman  257,  258,  259,  260,  263,  264,  265,  265,  267,  268,
18940711Swollman  261,  266,  269,  261,  266,
19059910Spaul};
19140711Swollmanstatic const YYINT inherit0_dgoto[] = {                   5,
19259910Spaul    6,    7,   12,    9,   10,   13,
19340711Swollman};
19440711Swollmanstatic const YYINT inherit0_sindex[] = {               -257,
19540711Swollman    0,    0,    0,    0,    0, -255,    0, -254,    0,    0,
19671576Sjasone    0, -253, -254,    0, -253,
19740711Swollman};
19868727Smckusickstatic const YYINT inherit0_rindex[] = {                  0,
19968727Smckusick    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
20068727Smckusick    0,    6,    0,    0,    9,
20140711Swollman};
20240711Swollman#if YYBTYACC
20368727Smckusickstatic const YYINT inherit0_cindex[] = {                  0,
20459910Spaul    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
20540711Swollman    0,    0,    0,    0,    0,
20640711Swollman};
20740711Swollman#endif
20840711Swollmanstatic const YYINT inherit0_gindex[] = {                  0,
20940711Swollman    0,    4,   -2,    0,    0,    0,
21040711Swollman};
21168727Smckusick#define YYTABLESIZE 11
21259910Spaulstatic const YYINT inherit0_table[] = {                   1,
21340711Swollman    2,    3,    4,    3,    4,    1,   11,   14,   11,    8,
21459910Spaul   15,
21540711Swollman};
21640711Swollmanstatic const YYINT inherit0_check[] = {                 257,
21740711Swollman  258,  259,  260,  259,  260,    0,  261,  261,    0,    6,
21859910Spaul   13,
21940711Swollman};
22040711Swollman#if YYBTYACC
22140711Swollmanstatic const YYINT inherit0_ctable[] = {                 -1,
22267261Simp   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22367261Simp};
22467261Simp#endif
22559910Spaul#define YYFINAL 5
22659910Spaul#ifndef YYDEBUG
22740711Swollman#define YYDEBUG 0
22840711Swollman#endif
22959910Spaul#define YYMAXTOKEN 261
23059910Spaul#define YYUNDFTOKEN 270
23140711Swollman#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
23259910Spaul#if YYDEBUG
23340711Swollmanstatic const char *const inherit0_name[] = {
23448235Sdfr
23540711Swollman"$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
23640711Swollman0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
23740711Swollman0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
23840711Swollman0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
23940711Swollman0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
24040711Swollman0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
24140711Swollman0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error","GLOBAL","LOCAL","REAL","INTEGER",
24240711Swollman"NAME","$accept","declaration","class","type","namelist","locnamelist","$$1",
24340711Swollman"$$2","illegal-symbol",
24440711Swollman};
24540711Swollmanstatic const char *const inherit0_rule[] = {
24640711Swollman"$accept : declaration",
24740711Swollman"declaration : class type namelist",
24840711Swollman"declaration : type locnamelist",
24969781Sdwmalone"class : GLOBAL",
25040711Swollman"class : LOCAL",
25140711Swollman"type : REAL",
25240711Swollman"type : INTEGER",
25340711Swollman"namelist : namelist NAME",
25440711Swollman"namelist : NAME",
25540711Swollman"$$1 :",
25640711Swollman"$$2 :",
25745720Speter"locnamelist : $$1 $$2 namelist",
25840711Swollman
25940711Swollman};
26059910Spaul#endif
26140711Swollman
26240711Swollmanint      yydebug;
26340711Swollmanint      yynerrs;
26459910Spaul
26540711Swollmanint      yyerrflag;
26640711Swollmanint      yychar;
26740711SwollmanYYSTYPE  yyval;
26869781SdwmaloneYYSTYPE  yylval;
26940711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
27040711SwollmanYYLTYPE  yyloc; /* position returned by actions */
27140711SwollmanYYLTYPE  yylloc; /* position from the lexer */
27240711Swollman#endif
27340711Swollman
27440711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
27540711Swollman#ifndef YYLLOC_DEFAULT
27640711Swollman#define YYLLOC_DEFAULT(loc, rhs, n) \
27740711Swollmando \
27840711Swollman{ \
27945720Speter    if (n == 0) \
28040711Swollman    { \
28168727Smckusick        (loc).first_line   = ((rhs)[-1]).last_line; \
28240711Swollman        (loc).first_column = ((rhs)[-1]).last_column; \
28368727Smckusick        (loc).last_line    = ((rhs)[-1]).last_line; \
28440711Swollman        (loc).last_column  = ((rhs)[-1]).last_column; \
28540711Swollman    } \
28659910Spaul    else \
28740711Swollman    { \
28840711Swollman        (loc).first_line   = ((rhs)[ 0 ]).first_line; \
28940711Swollman        (loc).first_column = ((rhs)[ 0 ]).first_column; \
29040711Swollman        (loc).last_line    = ((rhs)[n-1]).last_line; \
29168727Smckusick        (loc).last_column  = ((rhs)[n-1]).last_column; \
29240711Swollman    } \
29359910Spaul} while (0)
29440711Swollman#endif /* YYLLOC_DEFAULT */
29540711Swollman#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
29640711Swollman#if YYBTYACC
29740711Swollman
29868727Smckusick#ifndef YYLVQUEUEGROWTH
29940711Swollman#define YYLVQUEUEGROWTH 32
30040711Swollman#endif
30140711Swollman#endif /* YYBTYACC */
30240711Swollman
30340711Swollman/* define the initial stack-sizes */
30440711Swollman#ifdef YYSTACKSIZE
30540711Swollman#undef YYMAXDEPTH
30640711Swollman#define YYMAXDEPTH  YYSTACKSIZE
30740711Swollman#else
30840711Swollman#ifdef YYMAXDEPTH
30940711Swollman#define YYSTACKSIZE YYMAXDEPTH
31040711Swollman#else
31140711Swollman#define YYSTACKSIZE 10000
31240711Swollman#define YYMAXDEPTH  10000
31359910Spaul#endif
31440711Swollman#endif
31540711Swollman
31640711Swollman#ifndef YYINITSTACKSIZE
31768727Smckusick#define YYINITSTACKSIZE 200
31840711Swollman#endif
31940711Swollman
32040711Swollmantypedef struct {
32140711Swollman    unsigned stacksize;
32240711Swollman    short    *s_base;
32340711Swollman    short    *s_mark;
32440711Swollman    short    *s_last;
32540711Swollman    YYSTYPE  *l_base;
32669781Sdwmalone    YYSTYPE  *l_mark;
32740711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
32840711Swollman    YYLTYPE  *p_base;
32940711Swollman    YYLTYPE  *p_mark;
33040711Swollman#endif
33140711Swollman} YYSTACKDATA;
33240711Swollman#if YYBTYACC
33340711Swollman
33440711Swollmanstruct YYParseState_s
33540711Swollman{
33640711Swollman    struct YYParseState_s *save;    /* Previously saved parser state */
33769781Sdwmalone    YYSTACKDATA            yystack; /* saved parser stack */
33840711Swollman    int                    state;   /* saved parser state */
33940711Swollman    int                    errflag; /* saved error recovery status */
34040711Swollman    int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
34140711Swollman    YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
34240711Swollman};
34340711Swollmantypedef struct YYParseState_s YYParseState;
34440711Swollman#endif /* YYBTYACC */
34540711Swollman/* variables for the parser stack */
34645106Sdfrstatic YYSTACKDATA yystack;
34740711Swollman#if YYBTYACC
34840711Swollman
34940711Swollman/* Current parser state */
35040711Swollmanstatic YYParseState *yyps = 0;
35140711Swollman
35240711Swollman/* yypath != NULL: do the full parse, starting at *yypath parser state. */
35340711Swollmanstatic YYParseState *yypath = 0;
35440711Swollman
35540711Swollman/* Base of the lexical value queue */
35640711Swollmanstatic YYSTYPE *yylvals = 0;
35740711Swollman
35840711Swollman/* Current position at lexical value queue */
35940711Swollmanstatic YYSTYPE *yylvp = 0;
36040711Swollman
36140711Swollman/* End position of lexical value queue */
36240711Swollmanstatic YYSTYPE *yylve = 0;
36340711Swollman
36440711Swollman/* The last allocated position at the lexical value queue */
36540711Swollmanstatic YYSTYPE *yylvlim = 0;
36640711Swollman
36740711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
36840711Swollman/* Base of the lexical position queue */
36940711Swollmanstatic YYLTYPE *yylpsns = 0;
37040711Swollman
37140711Swollman/* Current position at lexical position queue */
37240711Swollmanstatic YYLTYPE *yylpp = 0;
37371576Sjasone
37440711Swollman/* End position of lexical position queue */
37540711Swollmanstatic YYLTYPE *yylpe = 0;
37640711Swollman
37740711Swollman/* The last allocated position at the lexical position queue */
37840711Swollmanstatic YYLTYPE *yylplim = 0;
37940711Swollman#endif
38040711Swollman
38140711Swollman/* Current position at lexical token queue */
38240711Swollmanstatic short  *yylexp = 0;
38340711Swollman
38440711Swollmanstatic short  *yylexemes = 0;
38540711Swollman#endif /* YYBTYACC */
38640711Swollman#line 46 "inherit0.y"
38740711Swollman
38840711Swollmanextern int YYLEX_DECL();
38940711Swollmanextern void YYERROR_DECL();
39040711Swollman#line 391 "inherit0.tab.c"
39140711Swollman
39240711Swollman/* For use in generated program */
39340711Swollman#define yydepth (int)(yystack.s_mark - yystack.s_base)
39440711Swollman#if YYBTYACC
39540711Swollman#define yytrial (yyps->save)
39640711Swollman#endif /* YYBTYACC */
39740711Swollman
39853225Sphk#if YYDEBUG
39953225Sphk#include <stdio.h>         /* needed for printf */
40040711Swollman#endif
40140711Swollman
40240711Swollman#include <stdlib.h>        /* needed for malloc, etc */
40340711Swollman#include <string.h>        /* needed for memset */
40440711Swollman
40540711Swollman/* allocate initial stack or double stack size, up to YYMAXDEPTH */
40640711Swollmanstatic int yygrowstack(YYSTACKDATA *data)
40740711Swollman{
40840711Swollman    int i;
40940711Swollman    unsigned newsize;
41040711Swollman    short *newss;
41140711Swollman    YYSTYPE *newvs;
41240711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
41340711Swollman    YYLTYPE *newps;
41440711Swollman#endif
41540711Swollman
41640711Swollman    if ((newsize = data->stacksize) == 0)
41740711Swollman        newsize = YYINITSTACKSIZE;
41840711Swollman    else if (newsize >= YYMAXDEPTH)
41940711Swollman        return YYENOMEM;
42071576Sjasone    else if ((newsize *= 2) > YYMAXDEPTH)
42140711Swollman        newsize = YYMAXDEPTH;
42271576Sjasone
42340711Swollman    i = (int) (data->s_mark - data->s_base);
42440711Swollman    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
42540711Swollman    if (newss == 0)
42640711Swollman        return YYENOMEM;
42740711Swollman
42840711Swollman    data->s_base = newss;
42940711Swollman    data->s_mark = newss + i;
43040711Swollman
43140711Swollman    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
43240711Swollman    if (newvs == 0)
43340711Swollman        return YYENOMEM;
43440711Swollman
43571576Sjasone    data->l_base = newvs;
43640711Swollman    data->l_mark = newvs + i;
43740711Swollman
43871576Sjasone#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
43940711Swollman    newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
44040711Swollman    if (newps == 0)
44140711Swollman        return YYENOMEM;
44240711Swollman
44340711Swollman    data->p_base = newps;
44471576Sjasone    data->p_mark = newps + i;
44540711Swollman#endif
44640711Swollman
44740711Swollman    data->stacksize = newsize;
44840711Swollman    data->s_last = data->s_base + newsize - 1;
44940711Swollman
45071576Sjasone#if YYDEBUG
45140711Swollman    if (yydebug)
45240711Swollman        fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
45340711Swollman#endif
45440711Swollman    return 0;
45540711Swollman}
45671576Sjasone
45740711Swollman#if YYPURE || defined(YY_NO_LEAKS)
45840711Swollmanstatic void yyfreestack(YYSTACKDATA *data)
45940711Swollman{
46040711Swollman    free(data->s_base);
46145720Speter    free(data->l_base);
46245720Speter#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
46340711Swollman    free(data->p_base);
46440711Swollman#endif
46540711Swollman    memset(data, 0, sizeof(*data));
46640711Swollman}
46740711Swollman#else
46840711Swollman#define yyfreestack(data) /* nothing */
46940711Swollman#endif /* YYPURE || defined(YY_NO_LEAKS) */
47040711Swollman#if YYBTYACC
47140711Swollman
47245720Speterstatic YYParseState *
47345720SpeteryyNewState(unsigned size)
47445720Speter{
47545720Speter    YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
47645720Speter    if (p == NULL) return NULL;
47745720Speter
47845720Speter    p->yystack.stacksize = size;
47945720Speter    if (size == 0)
48045720Speter    {
48171576Sjasone        p->yystack.s_base = NULL;
48245720Speter        p->yystack.l_base = NULL;
48371576Sjasone#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
48440711Swollman        p->yystack.p_base = NULL;
48540711Swollman#endif
48640711Swollman        return p;
48740711Swollman    }
48840711Swollman    p->yystack.s_base    = (short *) malloc(size * sizeof(short));
48940711Swollman    if (p->yystack.s_base == NULL) return NULL;
49040711Swollman    p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
49140711Swollman    if (p->yystack.l_base == NULL) return NULL;
49240711Swollman    memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
49345720Speter#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
49440711Swollman    p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
49540711Swollman    if (p->yystack.p_base == NULL) return NULL;
49640711Swollman    memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
49740711Swollman#endif
49840711Swollman
49940711Swollman    return p;
50040711Swollman}
50140711Swollman
50240711Swollmanstatic void
50340711SwollmanyyFreeState(YYParseState *p)
50440711Swollman{
50540711Swollman    yyfreestack(&p->yystack);
50640711Swollman    free(p);
50753225Sphk}
50840711Swollman#endif /* YYBTYACC */
50940711Swollman
51068727Smckusick#define YYABORT  goto yyabort
51168727Smckusick#define YYREJECT goto yyabort
51240711Swollman#define YYACCEPT goto yyaccept
51340711Swollman#define YYERROR  goto yyerrlab
51440711Swollman#if YYBTYACC
51540711Swollman#define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
51640711Swollman#define YYVALID_NESTED do { if (yyps->save && \
51740711Swollman                                yyps->save->save == 0) goto yyvalid; } while(0)
51853225Sphk#endif /* YYBTYACC */
51940711Swollman
52040711Swollmanint
52140711SwollmanYYPARSE_DECL()
52240711Swollman{
52340711Swollman    int yym, yyn, yystate, yyresult;
52440711Swollman#if YYBTYACC
52540711Swollman    int yynewerrflag;
52640711Swollman    YYParseState *yyerrctx = NULL;
52740711Swollman#endif /* YYBTYACC */
52840711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
52940711Swollman    YYLTYPE  yyerror_loc_range[2]; /* position of error start & end */
53068727Smckusick#endif
53168727Smckusick#if YYDEBUG
53240711Swollman    const char *yys;
53368764Smckusick
53468764Smckusick    if ((yys = getenv("YYDEBUG")) != 0)
53540711Swollman    {
53640711Swollman        yyn = *yys;
53740711Swollman        if (yyn >= '0' && yyn <= '9')
53840711Swollman            yydebug = yyn - '0';
53968727Smckusick    }
54068727Smckusick    if (yydebug)
54140711Swollman        fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
54268764Smckusick#endif
54340711Swollman
54440711Swollman#if YYBTYACC
54540711Swollman    yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
54640711Swollman    yyps->save = 0;
54768727Smckusick#endif /* YYBTYACC */
54868764Smckusick    yynerrs = 0;
54940711Swollman    yyerrflag = 0;
55040711Swollman    yychar = YYEMPTY;
55140711Swollman    yystate = 0;
55240711Swollman
55368727Smckusick#if YYPURE
55440711Swollman    memset(&yystack, 0, sizeof(yystack));
55540711Swollman#endif
55640711Swollman
55740711Swollman    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
55840711Swollman    yystack.s_mark = yystack.s_base;
55940711Swollman    yystack.l_mark = yystack.l_base;
56040711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
56140711Swollman    yystack.p_mark = yystack.p_base;
56240711Swollman#endif
56340711Swollman    yystate = 0;
56440711Swollman    *yystack.s_mark = 0;
56540711Swollman
56640711Swollmanyyloop:
56740711Swollman    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
56840711Swollman    if (yychar < 0)
56940711Swollman    {
57040711Swollman#if YYBTYACC
57140711Swollman        do {
57240711Swollman        if (yylvp < yylve)
57340711Swollman        {
57440711Swollman            /* we're currently re-reading tokens */
57540711Swollman            yylval = *yylvp++;
57640711Swollman#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
57740711Swollman            yylloc = *yylpp++;
57840711Swollman#endif
57971576Sjasone            yychar = *yylexp++;
58040711Swollman            break;
58171576Sjasone        }
58240711Swollman        if (yyps->save)
58340711Swollman        {
58467261Simp            /* in trial mode; save scanner results for future parse attempts */
58567261Simp            if (yylvp == yylvlim)
58667261Simp            {   /* Enlarge lexical value queue */
58767261Simp                size_t p = (size_t) (yylvp - yylvals);
58867261Simp                size_t s = (size_t) (yylvlim - yylvals);
58967261Simp
59067425Simp                s += YYLVQUEUEGROWTH;
59167425Simp                if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
59267425Simp                if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
59367425Simp#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
59467425Simp                if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
59567425Simp#endif
59667425Simp                yylvp   = yylve = yylvals + p;
59767425Simp                yylvlim = yylvals + s;
59867425Simp#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
59967261Simp                yylpp   = yylpe = yylpsns + p;
60067261Simp                yylplim = yylpsns + s;
60167425Simp#endif
602                yylexp  = yylexemes + p;
603            }
604            *yylexp = (short) YYLEX;
605            *yylvp++ = yylval;
606            yylve++;
607#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
608            *yylpp++ = yylloc;
609            yylpe++;
610#endif
611            yychar = *yylexp++;
612            break;
613        }
614        /* normal operation, no conflict encountered */
615#endif /* YYBTYACC */
616        yychar = YYLEX;
617#if YYBTYACC
618        } while (0);
619#endif /* YYBTYACC */
620        if (yychar < 0) yychar = YYEOF;
621        /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
622#if YYDEBUG
623        if (yydebug)
624        {
625            yys = yyname[YYTRANSLATE(yychar)];
626            fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
627                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
628#ifdef YYSTYPE_TOSTRING
629#if YYBTYACC
630            if (!yytrial)
631#endif /* YYBTYACC */
632                fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
633#endif
634            fputc('\n', stderr);
635        }
636#endif
637    }
638#if YYBTYACC
639
640    /* Do we have a conflict? */
641    if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
642        yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
643    {
644        YYINT ctry;
645
646        if (yypath)
647        {
648            YYParseState *save;
649#if YYDEBUG
650            if (yydebug)
651                fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
652                                YYDEBUGSTR, yydepth, yystate);
653#endif
654            /* Switch to the next conflict context */
655            save = yypath;
656            yypath = save->save;
657            save->save = NULL;
658            ctry = save->ctry;
659            if (save->state != yystate) YYABORT;
660            yyFreeState(save);
661
662        }
663        else
664        {
665
666            /* Unresolved conflict - start/continue trial parse */
667            YYParseState *save;
668#if YYDEBUG
669            if (yydebug)
670            {
671                fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
672                if (yyps->save)
673                    fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
674                else
675                    fputs("Starting trial parse.\n", stderr);
676            }
677#endif
678            save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
679            if (save == NULL) goto yyenomem;
680            save->save            = yyps->save;
681            save->state           = yystate;
682            save->errflag         = yyerrflag;
683            save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
684            memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
685            save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
686            memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
687#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
688            save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
689            memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
690#endif
691            ctry                  = yytable[yyn];
692            if (yyctable[ctry] == -1)
693            {
694#if YYDEBUG
695                if (yydebug && yychar >= YYEOF)
696                    fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
697#endif
698                ctry++;
699            }
700            save->ctry = ctry;
701            if (yyps->save == NULL)
702            {
703                /* If this is a first conflict in the stack, start saving lexemes */
704                if (!yylexemes)
705                {
706                    yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
707                    if (yylexemes == NULL) goto yyenomem;
708                    yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
709                    if (yylvals == NULL) goto yyenomem;
710                    yylvlim   = yylvals + YYLVQUEUEGROWTH;
711#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
712                    yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
713                    if (yylpsns == NULL) goto yyenomem;
714                    yylplim   = yylpsns + YYLVQUEUEGROWTH;
715#endif
716                }
717                if (yylvp == yylve)
718                {
719                    yylvp  = yylve = yylvals;
720#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
721                    yylpp  = yylpe = yylpsns;
722#endif
723                    yylexp = yylexemes;
724                    if (yychar >= YYEOF)
725                    {
726                        *yylve++ = yylval;
727#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
728                        *yylpe++ = yylloc;
729#endif
730                        *yylexp  = (short) yychar;
731                        yychar   = YYEMPTY;
732                    }
733                }
734            }
735            if (yychar >= YYEOF)
736            {
737                yylvp--;
738#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
739                yylpp--;
740#endif
741                yylexp--;
742                yychar = YYEMPTY;
743            }
744            save->lexeme = (int) (yylvp - yylvals);
745            yyps->save   = save;
746        }
747        if (yytable[yyn] == ctry)
748        {
749#if YYDEBUG
750            if (yydebug)
751                fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
752                                YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
753#endif
754            if (yychar < 0)
755            {
756                yylvp++;
757#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
758                yylpp++;
759#endif
760                yylexp++;
761            }
762            if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
763                goto yyoverflow;
764            yystate = yyctable[ctry];
765            *++yystack.s_mark = (short) yystate;
766            *++yystack.l_mark = yylval;
767#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
768            *++yystack.p_mark = yylloc;
769#endif
770            yychar  = YYEMPTY;
771            if (yyerrflag > 0) --yyerrflag;
772            goto yyloop;
773        }
774        else
775        {
776            yyn = yyctable[ctry];
777            goto yyreduce;
778        }
779    } /* End of code dealing with conflicts */
780#endif /* YYBTYACC */
781    if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
782            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
783    {
784#if YYDEBUG
785        if (yydebug)
786            fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
787                            YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
788#endif
789        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
790        yystate = yytable[yyn];
791        *++yystack.s_mark = yytable[yyn];
792        *++yystack.l_mark = yylval;
793#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
794        *++yystack.p_mark = yylloc;
795#endif
796        yychar = YYEMPTY;
797        if (yyerrflag > 0)  --yyerrflag;
798        goto yyloop;
799    }
800    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
801            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
802    {
803        yyn = yytable[yyn];
804        goto yyreduce;
805    }
806    if (yyerrflag != 0) goto yyinrecovery;
807#if YYBTYACC
808
809    yynewerrflag = 1;
810    goto yyerrhandler;
811    goto yyerrlab;
812
813yyerrlab:
814    yynewerrflag = 0;
815yyerrhandler:
816    while (yyps->save)
817    {
818        int ctry;
819        YYParseState *save = yyps->save;
820#if YYDEBUG
821        if (yydebug)
822            fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
823                            YYDEBUGSTR, yydepth, yystate, yyps->save->state,
824                    (int)(yylvp - yylvals - yyps->save->lexeme));
825#endif
826        /* Memorize most forward-looking error state in case it's really an error. */
827        if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
828        {
829            /* Free old saved error context state */
830            if (yyerrctx) yyFreeState(yyerrctx);
831            /* Create and fill out new saved error context state */
832            yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
833            if (yyerrctx == NULL) goto yyenomem;
834            yyerrctx->save           = yyps->save;
835            yyerrctx->state          = yystate;
836            yyerrctx->errflag        = yyerrflag;
837            yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
838            memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
839            yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
840            memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
841#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
842            yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
843            memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
844#endif
845            yyerrctx->lexeme         = (int) (yylvp - yylvals);
846        }
847        yylvp          = yylvals   + save->lexeme;
848#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
849        yylpp          = yylpsns   + save->lexeme;
850#endif
851        yylexp         = yylexemes + save->lexeme;
852        yychar         = YYEMPTY;
853        yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
854        memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
855        yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
856        memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
857#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
858        yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
859        memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
860#endif
861        ctry           = ++save->ctry;
862        yystate        = save->state;
863        /* We tried shift, try reduce now */
864        if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
865        yyps->save     = save->save;
866        save->save     = NULL;
867        yyFreeState(save);
868
869        /* Nothing left on the stack -- error */
870        if (!yyps->save)
871        {
872#if YYDEBUG
873            if (yydebug)
874                fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
875                                YYPREFIX, yydepth);
876#endif
877            /* Restore state as it was in the most forward-advanced error */
878            yylvp          = yylvals   + yyerrctx->lexeme;
879#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
880            yylpp          = yylpsns   + yyerrctx->lexeme;
881#endif
882            yylexp         = yylexemes + yyerrctx->lexeme;
883            yychar         = yylexp[-1];
884            yylval         = yylvp[-1];
885#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
886            yylloc         = yylpp[-1];
887#endif
888            yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
889            memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
890            yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
891            memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
892#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
893            yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
894            memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
895#endif
896            yystate        = yyerrctx->state;
897            yyFreeState(yyerrctx);
898            yyerrctx       = NULL;
899        }
900        yynewerrflag = 1;
901    }
902    if (yynewerrflag == 0) goto yyinrecovery;
903#endif /* YYBTYACC */
904
905    YYERROR_CALL("syntax error");
906#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
907    yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
908#endif
909
910#if !YYBTYACC
911    goto yyerrlab;
912yyerrlab:
913#endif
914    ++yynerrs;
915
916yyinrecovery:
917    if (yyerrflag < 3)
918    {
919        yyerrflag = 3;
920        for (;;)
921        {
922            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
923                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
924            {
925#if YYDEBUG
926                if (yydebug)
927                    fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
928                                    YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
929#endif
930                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
931                yystate = yytable[yyn];
932                *++yystack.s_mark = yytable[yyn];
933                *++yystack.l_mark = yylval;
934#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
935                /* lookahead position is error end position */
936                yyerror_loc_range[1] = yylloc;
937                YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
938                *++yystack.p_mark = yyloc;
939#endif
940                goto yyloop;
941            }
942            else
943            {
944#if YYDEBUG
945                if (yydebug)
946                    fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
947                                    YYDEBUGSTR, yydepth, *yystack.s_mark);
948#endif
949                if (yystack.s_mark <= yystack.s_base) goto yyabort;
950#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
951                /* the current TOS position is the error start position */
952                yyerror_loc_range[0] = *yystack.p_mark;
953#endif
954#if defined(YYDESTRUCT_CALL)
955#if YYBTYACC
956                if (!yytrial)
957#endif /* YYBTYACC */
958#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
959                    YYDESTRUCT_CALL("error: discarding state",
960                                    yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
961#else
962                    YYDESTRUCT_CALL("error: discarding state",
963                                    yystos[*yystack.s_mark], yystack.l_mark);
964#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
965#endif /* defined(YYDESTRUCT_CALL) */
966                --yystack.s_mark;
967                --yystack.l_mark;
968#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
969                --yystack.p_mark;
970#endif
971            }
972        }
973    }
974    else
975    {
976        if (yychar == YYEOF) goto yyabort;
977#if YYDEBUG
978        if (yydebug)
979        {
980            yys = yyname[YYTRANSLATE(yychar)];
981            fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
982                            YYDEBUGSTR, yydepth, yystate, yychar, yys);
983        }
984#endif
985#if defined(YYDESTRUCT_CALL)
986#if YYBTYACC
987        if (!yytrial)
988#endif /* YYBTYACC */
989#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
990            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
991#else
992            YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
993#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
994#endif /* defined(YYDESTRUCT_CALL) */
995        yychar = YYEMPTY;
996        goto yyloop;
997    }
998
999yyreduce:
1000    yym = yylen[yyn];
1001#if YYDEBUG
1002    if (yydebug)
1003    {
1004        fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1005                        YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1006#ifdef YYSTYPE_TOSTRING
1007#if YYBTYACC
1008        if (!yytrial)
1009#endif /* YYBTYACC */
1010            if (yym > 0)
1011            {
1012                int i;
1013                fputc('<', stderr);
1014                for (i = yym; i > 0; i--)
1015                {
1016                    if (i != yym) fputs(", ", stderr);
1017                    fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1018                                           yystack.l_mark[1-i]), stderr);
1019                }
1020                fputc('>', stderr);
1021            }
1022#endif
1023        fputc('\n', stderr);
1024    }
1025#endif
1026    if (yym > 0)
1027        yyval = yystack.l_mark[1-yym];
1028    else
1029        memset(&yyval, 0, sizeof yyval);
1030#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1031
1032    /* Perform position reduction */
1033    memset(&yyloc, 0, sizeof(yyloc));
1034#if YYBTYACC
1035    if (!yytrial)
1036#endif /* YYBTYACC */
1037    {
1038        YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1039        /* just in case YYERROR is invoked within the action, save
1040           the start of the rhs as the error start position */
1041        yyerror_loc_range[0] = yystack.p_mark[1-yym];
1042    }
1043#endif
1044
1045    switch (yyn)
1046    {
1047case 1:
1048#line 20 "inherit0.y"
1049	{ yyval = yystack.l_mark[0]; }
1050break;
1051case 2:
1052#line 22 "inherit0.y"
1053	{ yyval = yystack.l_mark[0]; }
1054break;
1055case 3:
1056#line 25 "inherit0.y"
1057	{ yyval = 1; }
1058break;
1059case 4:
1060#line 26 "inherit0.y"
1061	{ yyval = 2; }
1062break;
1063case 5:
1064#line 29 "inherit0.y"
1065	{ yyval = 1; }
1066break;
1067case 6:
1068#line 30 "inherit0.y"
1069	{ yyval = 2; }
1070break;
1071case 7:
1072#line 34 "inherit0.y"
1073	{ mksymbol(yystack.l_mark[-2], yystack.l_mark[-3], yystack.l_mark[0]); }
1074break;
1075case 8:
1076#line 36 "inherit0.y"
1077	{ mksymbol(yystack.l_mark[-1], yystack.l_mark[-2], yystack.l_mark[0]); }
1078break;
1079case 9:
1080#line 40 "inherit0.y"
1081	{ yyval = 2; }
1082break;
1083case 10:
1084#line 41 "inherit0.y"
1085	{ yyval = yystack.l_mark[-2]; }
1086break;
1087case 11:
1088#line 43 "inherit0.y"
1089	{ yyval = yystack.l_mark[0]; }
1090break;
1091#line 1092 "inherit0.tab.c"
1092    default:
1093        break;
1094    }
1095    yystack.s_mark -= yym;
1096    yystate = *yystack.s_mark;
1097    yystack.l_mark -= yym;
1098#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1099    yystack.p_mark -= yym;
1100#endif
1101    yym = yylhs[yyn];
1102    if (yystate == 0 && yym == 0)
1103    {
1104#if YYDEBUG
1105        if (yydebug)
1106        {
1107            fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1108#ifdef YYSTYPE_TOSTRING
1109#if YYBTYACC
1110            if (!yytrial)
1111#endif /* YYBTYACC */
1112                fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
1113#endif
1114            fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
1115        }
1116#endif
1117        yystate = YYFINAL;
1118        *++yystack.s_mark = YYFINAL;
1119        *++yystack.l_mark = yyval;
1120#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1121        *++yystack.p_mark = yyloc;
1122#endif
1123        if (yychar < 0)
1124        {
1125#if YYBTYACC
1126            do {
1127            if (yylvp < yylve)
1128            {
1129                /* we're currently re-reading tokens */
1130                yylval = *yylvp++;
1131#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1132                yylloc = *yylpp++;
1133#endif
1134                yychar = *yylexp++;
1135                break;
1136            }
1137            if (yyps->save)
1138            {
1139                /* in trial mode; save scanner results for future parse attempts */
1140                if (yylvp == yylvlim)
1141                {   /* Enlarge lexical value queue */
1142                    size_t p = (size_t) (yylvp - yylvals);
1143                    size_t s = (size_t) (yylvlim - yylvals);
1144
1145                    s += YYLVQUEUEGROWTH;
1146                    if ((yylexemes = (short *)   realloc(yylexemes, s * sizeof(short))) == NULL)
1147                        goto yyenomem;
1148                    if ((yylvals   = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
1149                        goto yyenomem;
1150#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1151                    if ((yylpsns   = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
1152                        goto yyenomem;
1153#endif
1154                    yylvp   = yylve = yylvals + p;
1155                    yylvlim = yylvals + s;
1156#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1157                    yylpp   = yylpe = yylpsns + p;
1158                    yylplim = yylpsns + s;
1159#endif
1160                    yylexp  = yylexemes + p;
1161                }
1162                *yylexp = (short) YYLEX;
1163                *yylvp++ = yylval;
1164                yylve++;
1165#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1166                *yylpp++ = yylloc;
1167                yylpe++;
1168#endif
1169                yychar = *yylexp++;
1170                break;
1171            }
1172            /* normal operation, no conflict encountered */
1173#endif /* YYBTYACC */
1174            yychar = YYLEX;
1175#if YYBTYACC
1176            } while (0);
1177#endif /* YYBTYACC */
1178            if (yychar < 0) yychar = YYEOF;
1179            /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
1180#if YYDEBUG
1181            if (yydebug)
1182            {
1183                yys = yyname[YYTRANSLATE(yychar)];
1184                fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
1185                                YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
1186            }
1187#endif
1188        }
1189        if (yychar == YYEOF) goto yyaccept;
1190        goto yyloop;
1191    }
1192    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
1193            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
1194        yystate = yytable[yyn];
1195    else
1196        yystate = yydgoto[yym];
1197#if YYDEBUG
1198    if (yydebug)
1199    {
1200        fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
1201#ifdef YYSTYPE_TOSTRING
1202#if YYBTYACC
1203        if (!yytrial)
1204#endif /* YYBTYACC */
1205            fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
1206#endif
1207        fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
1208    }
1209#endif
1210    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1211    *++yystack.s_mark = (short) yystate;
1212    *++yystack.l_mark = yyval;
1213#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1214    *++yystack.p_mark = yyloc;
1215#endif
1216    goto yyloop;
1217#if YYBTYACC
1218
1219    /* Reduction declares that this path is valid. Set yypath and do a full parse */
1220yyvalid:
1221    if (yypath) YYABORT;
1222    while (yyps->save)
1223    {
1224        YYParseState *save = yyps->save;
1225        yyps->save = save->save;
1226        save->save = yypath;
1227        yypath = save;
1228    }
1229#if YYDEBUG
1230    if (yydebug)
1231        fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
1232                        YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
1233#endif
1234    if (yyerrctx)
1235    {
1236        yyFreeState(yyerrctx);
1237        yyerrctx = NULL;
1238    }
1239    yylvp          = yylvals + yypath->lexeme;
1240#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1241    yylpp          = yylpsns + yypath->lexeme;
1242#endif
1243    yylexp         = yylexemes + yypath->lexeme;
1244    yychar         = YYEMPTY;
1245    yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
1246    memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1247    yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
1248    memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1249#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1250    yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
1251    memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1252#endif
1253    yystate        = yypath->state;
1254    goto yyloop;
1255#endif /* YYBTYACC */
1256
1257yyoverflow:
1258    YYERROR_CALL("yacc stack overflow");
1259#if YYBTYACC
1260    goto yyabort_nomem;
1261yyenomem:
1262    YYERROR_CALL("memory exhausted");
1263yyabort_nomem:
1264#endif /* YYBTYACC */
1265    yyresult = 2;
1266    goto yyreturn;
1267
1268yyabort:
1269    yyresult = 1;
1270    goto yyreturn;
1271
1272yyaccept:
1273#if YYBTYACC
1274    if (yyps->save) goto yyvalid;
1275#endif /* YYBTYACC */
1276    yyresult = 0;
1277
1278yyreturn:
1279#if defined(YYDESTRUCT_CALL)
1280    if (yychar != YYEOF && yychar != YYEMPTY)
1281#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1282        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
1283#else
1284        YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
1285#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1286
1287    {
1288        YYSTYPE *pv;
1289#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1290        YYLTYPE *pp;
1291
1292        for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
1293             YYDESTRUCT_CALL("cleanup: discarding state",
1294                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
1295#else
1296        for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
1297             YYDESTRUCT_CALL("cleanup: discarding state",
1298                             yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
1299#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1300    }
1301#endif /* defined(YYDESTRUCT_CALL) */
1302
1303#if YYBTYACC
1304    if (yyerrctx)
1305    {
1306        yyFreeState(yyerrctx);
1307        yyerrctx = NULL;
1308    }
1309    while (yyps)
1310    {
1311        YYParseState *save = yyps;
1312        yyps = save->save;
1313        save->save = NULL;
1314        yyFreeState(save);
1315    }
1316    while (yypath)
1317    {
1318        YYParseState *save = yypath;
1319        yypath = save->save;
1320        save->save = NULL;
1321        yyFreeState(save);
1322    }
1323#endif /* YYBTYACC */
1324    yyfreestack(&yystack);
1325    return (yyresult);
1326}
1327