#include <stdio.h>
#ifndef INTERFACE
#define INTERFACE 1
#endif
#define YYCODETYPE unsigned char
#define YYNOCODE 28
#define YYACTIONTYPE unsigned char
#define ParseTOKENTYPE void *
typedef union
{
int yyinit;
ParseTOKENTYPE yy0;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 1000000
#endif
#define ParseARG_SDECL struct gml_data *p_data ;
#define ParseARG_PDECL , struct gml_data *p_data
#define ParseARG_FETCH struct gml_data *p_data = yypParser->p_data
#define ParseARG_STORE yypParser->p_data = p_data
#define YYNSTATE 49
#define YYNRULE 34
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
#define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
static const YYMINORTYPE yyzerominor = { 0 };
#ifndef yytestcase
#define yytestcase(X)
#endif
static const YYACTIONTYPE yy_action[] = {
20, 28, 29, 4, 48, 5, 3, 3, 5, 5,
42, 84, 1, 42, 42, 47, 46, 2, 10, 5,
21, 12, 32, 23, 42, 38, 22, 6, 49, 23,
13, 19, 14, 15, 35, 8, 8, 10, 25, 11,
18, 34, 33, 45, 37, 16, 40, 17, 41, 14,
9, 23, 43, 7, 45, 27, 30, 26, 31, 36,
39, 44, 24,
};
static const YYCODETYPE yy_lookahead[] = {
12, 13, 14, 15, 16, 17, 15, 15, 17, 17,
22, 10, 11, 22, 22, 24, 24, 15, 18, 17,
2, 3, 8, 5, 22, 25, 2, 3, 0, 5,
18, 19, 4, 20, 21, 20, 20, 18, 2, 3,
2, 26, 26, 5, 25, 20, 21, 20, 21, 4,
18, 5, 23, 20, 5, 1, 3, 23, 3, 7,
3, 3, 6,
};
#define YY_SHIFT_USE_DFLT (-1)
#define YY_SHIFT_MAX 26
static const signed char yy_shift_ofst[] = {
-1, 28, 45, 45, 45, 18, 14, 14, 14, 46,
46, 14, 14, 24, 38, 14, 14, 14, 49, 36,
54, 53, 55, 56, 52, 57, 58,
};
#define YY_REDUCE_USE_DFLT (-13)
#define YY_REDUCE_MAX 18
static const signed char yy_reduce_ofst[] = {
1, -12, -9, -8, 2, 12, 13, 15, 16, 0,
19, 25, 27, 32, 29, 33, 33, 33, 34,
};
static const YYACTIONTYPE yy_default[] = {
50, 83, 72, 72, 54, 83, 60, 80, 80, 76,
76, 61, 59, 83, 83, 64, 66, 62, 83, 83,
83, 83, 83, 83, 83, 83, 83, 51, 52, 53,
56, 57, 79, 81, 82, 65, 75, 77, 78, 58,
67, 63, 68, 69, 70, 71, 73, 74, 55,
};
#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0]))
#ifdef YYFALLBACK
static const YYCODETYPE yyFallback[] = {
};
#endif
struct yyStackEntry
{
YYACTIONTYPE stateno;
YYCODETYPE major;
YYMINORTYPE minor;
};
typedef struct yyStackEntry yyStackEntry;
struct yyParser
{
int yyidx;
#ifdef YYTRACKMAXSTACKDEPTH
int yyidxMax;
#endif
int yyerrcnt;
ParseARG_SDECL
#if YYSTACKDEPTH<=0
int yystksz;
yyStackEntry *yystack;
#else
yyStackEntry yystack[YYSTACKDEPTH];
#endif
};
typedef struct yyParser yyParser;
#ifndef NDEBUG
#include <stdio.h>
static FILE *yyTraceFILE = 0;
static char *yyTracePrompt = 0;
#endif
#ifndef NDEBUG
void
ParseTrace (FILE * TraceFILE, char *zTracePrompt)
{
yyTraceFILE = TraceFILE;
yyTracePrompt = zTracePrompt;
if (yyTraceFILE == 0)
yyTracePrompt = 0;
else if (yyTracePrompt == 0)
yyTraceFILE = 0;
}
#endif
#ifndef NDEBUG
static const char *const yyTokenName[] = {
"$", "GML_NEWLINE", "GML_END", "GML_CLOSE",
"GML_OPEN", "GML_KEYWORD", "GML_EQ", "GML_VALUE",
"GML_COORD", "error", "main", "in",
"state", "program", "gml_tree", "node",
"node_chain", "open_tag", "attr", "attributes",
"coord", "coord_chain", "close_tag", "keyword",
"extra_nodes", "extra_attr", "extra_coord",
};
#endif
#ifndef NDEBUG
static const char *const yyRuleName[] = {
"main ::= in",
"in ::=",
"in ::= in state GML_NEWLINE",
"state ::= program",
"program ::= gml_tree",
"gml_tree ::= node",
"gml_tree ::= node_chain",
"node ::= open_tag GML_END GML_CLOSE",
"node ::= open_tag attr GML_END GML_CLOSE",
"node ::= open_tag attributes GML_END GML_CLOSE",
"node ::= open_tag GML_CLOSE",
"node ::= open_tag attr GML_CLOSE",
"node ::= open_tag attributes GML_CLOSE",
"node ::= open_tag GML_CLOSE coord",
"node ::= open_tag GML_CLOSE coord_chain",
"node ::= open_tag attr GML_CLOSE coord",
"node ::= open_tag attr GML_CLOSE coord_chain",
"node ::= open_tag attributes GML_CLOSE coord",
"node ::= open_tag attributes GML_CLOSE coord_chain",
"node ::= close_tag",
"open_tag ::= GML_OPEN keyword",
"close_tag ::= GML_OPEN GML_END keyword GML_CLOSE",
"keyword ::= GML_KEYWORD",
"extra_nodes ::=",
"extra_nodes ::= node extra_nodes",
"node_chain ::= node node extra_nodes",
"attr ::= GML_KEYWORD GML_EQ GML_VALUE",
"extra_attr ::=",
"extra_attr ::= attr extra_attr",
"attributes ::= attr attr extra_attr",
"coord ::= GML_COORD",
"extra_coord ::=",
"extra_coord ::= coord extra_coord",
"coord_chain ::= coord coord extra_coord",
};
#endif
#if YYSTACKDEPTH<=0
static void
yyGrowStack (yyParser * p)
{
int newSize;
yyStackEntry *pNew;
newSize = p->yystksz * 2 + 100;
pNew = realloc (p->yystack, newSize * sizeof (pNew[0]));
if (pNew)
{
p->yystack = pNew;
p->yystksz = newSize;
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sStack grows to %d entries!\n",
yyTracePrompt, p->yystksz);
}
#endif
}
}
#endif
void *
ParseAlloc (void *(*mallocProc) (size_t))
{
yyParser *pParser;
pParser = (yyParser *) (*mallocProc) ((size_t) sizeof (yyParser));
if (pParser)
{
pParser->yyidx = -1;
#ifdef YYTRACKMAXSTACKDEPTH
pParser->yyidxMax = 0;
#endif
#if YYSTACKDEPTH<=0
pParser->yystack = NULL;
pParser->yystksz = 0;
yyGrowStack (pParser);
#endif
}
return pParser;
}
static void
yy_destructor (yyParser * yypParser,
YYCODETYPE yymajor,
YYMINORTYPE * yypminor
)
{
switch (yymajor)
{
default:
break;
}
}
static int
yy_pop_parser_stack (yyParser * pParser)
{
YYCODETYPE yymajor;
yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
if (pParser->yyidx < 0)
return 0;
#ifndef NDEBUG
if (yyTraceFILE && pParser->yyidx >= 0)
{
fprintf (yyTraceFILE, "%sPopping %s\n",
yyTracePrompt, yyTokenName[yytos->major]);
}
#endif
yymajor = yytos->major;
yy_destructor (pParser, yymajor, &yytos->minor);
pParser->yyidx--;
return yymajor;
}
void
ParseFree (void *p,
void (*freeProc) (void *)
)
{
yyParser *pParser = (yyParser *) p;
if (pParser == 0)
return;
while (pParser->yyidx >= 0)
yy_pop_parser_stack (pParser);
#if YYSTACKDEPTH<=0
free (pParser->yystack);
#endif
(*freeProc) ((void *) pParser);
}
#ifdef YYTRACKMAXSTACKDEPTH
int
ParseStackPeak (void *p)
{
yyParser *pParser = (yyParser *) p;
return pParser->yyidxMax;
}
#endif
static int
yy_find_shift_action (yyParser * pParser,
YYCODETYPE iLookAhead
)
{
int i;
int stateno = pParser->yystack[pParser->yyidx].stateno;
if (stateno > YY_SHIFT_MAX
|| (i = yy_shift_ofst[stateno]) == YY_SHIFT_USE_DFLT)
{
return yy_default[stateno];
}
assert (iLookAhead != YYNOCODE);
i += iLookAhead;
if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead)
{
if (iLookAhead > 0)
{
#ifdef YYFALLBACK
YYCODETYPE iFallback;
if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0])
&& (iFallback = yyFallback[iLookAhead]) != 0)
{
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n",
yyTracePrompt, yyTokenName[iLookAhead],
yyTokenName[iFallback]);
}
#endif
return yy_find_shift_action (pParser, iFallback);
}
#endif
#ifdef YYWILDCARD
{
int j = i - iLookAhead + YYWILDCARD;
if (j >= 0 && j < YY_SZ_ACTTAB
&& yy_lookahead[j] == YYWILDCARD)
{
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n",
yyTracePrompt, yyTokenName[iLookAhead],
yyTokenName[YYWILDCARD]);
}
#endif
return yy_action[j];
}
}
#endif
}
return yy_default[stateno];
}
else
{
return yy_action[i];
}
}
static int
yy_find_reduce_action (int stateno,
YYCODETYPE iLookAhead
)
{
int i;
#ifdef YYERRORSYMBOL
if (stateno > YY_REDUCE_MAX)
{
return yy_default[stateno];
}
#else
assert (stateno <= YY_REDUCE_MAX);
#endif
i = yy_reduce_ofst[stateno];
assert (i != YY_REDUCE_USE_DFLT);
assert (iLookAhead != YYNOCODE);
i += iLookAhead;
#ifdef YYERRORSYMBOL
if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead)
{
return yy_default[stateno];
}
#else
assert (i >= 0 && i < YY_SZ_ACTTAB);
assert (yy_lookahead[i] == iLookAhead);
#endif
return yy_action[i];
}
static void
yyStackOverflow (yyParser * yypParser, YYMINORTYPE * yypMinor)
{
ParseARG_FETCH;
yypParser->yyidx--;
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt);
}
#endif
while (yypParser->yyidx >= 0)
yy_pop_parser_stack (yypParser);
spatialite_e ("Giving up. Parser stack overflow\n");
ParseARG_STORE;
}
static void
yy_shift (yyParser * yypParser,
int yyNewState,
int yyMajor,
YYMINORTYPE * yypMinor
)
{
yyStackEntry *yytos;
yypParser->yyidx++;
#ifdef YYTRACKMAXSTACKDEPTH
if (yypParser->yyidx > yypParser->yyidxMax)
{
yypParser->yyidxMax = yypParser->yyidx;
}
#endif
#if YYSTACKDEPTH>0
if (yypParser->yyidx >= YYSTACKDEPTH)
{
yyStackOverflow (yypParser, yypMinor);
return;
}
#else
if (yypParser->yyidx >= yypParser->yystksz)
{
yyGrowStack (yypParser);
if (yypParser->yyidx >= yypParser->yystksz)
{
yyStackOverflow (yypParser, yypMinor);
return;
}
}
#endif
yytos = &yypParser->yystack[yypParser->yyidx];
yytos->stateno = (YYACTIONTYPE) yyNewState;
yytos->major = (YYCODETYPE) yyMajor;
yytos->minor = *yypMinor;
#ifndef NDEBUG
if (yyTraceFILE && yypParser->yyidx > 0)
{
int i;
fprintf (yyTraceFILE, "%sShift %d\n", yyTracePrompt, yyNewState);
fprintf (yyTraceFILE, "%sStack:", yyTracePrompt);
for (i = 1; i <= yypParser->yyidx; i++)
fprintf (yyTraceFILE, " %s",
yyTokenName[yypParser->yystack[i].major]);
fprintf (yyTraceFILE, "\n");
}
#endif
}
static const struct
{
YYCODETYPE lhs;
unsigned char nrhs;
} yyRuleInfo[] =
{
{
10, 1},
{
11, 0},
{
11, 3},
{
12, 1},
{
13, 1},
{
14, 1},
{
14, 1},
{
15, 3},
{
15, 4},
{
15, 4},
{
15, 2},
{
15, 3},
{
15, 3},
{
15, 3},
{
15, 3},
{
15, 4},
{
15, 4},
{
15, 4},
{
15, 4},
{
15, 1},
{
17, 2},
{
22, 4},
{
23, 1},
{
24, 0},
{
24, 2},
{
16, 3},
{
18, 3},
{
25, 0},
{
25, 2},
{
19, 3},
{
20, 1},
{
26, 0},
{
26, 2},
{
21, 3},};
static void yy_accept (yyParser *);
static void
yy_reduce (yyParser * yypParser,
int yyruleno
)
{
int yygoto;
int yyact;
YYMINORTYPE yygotominor;
yyStackEntry *yymsp;
int yysize;
ParseARG_FETCH;
yymsp = &yypParser->yystack[yypParser->yyidx];
#ifndef NDEBUG
if (yyTraceFILE && yyruleno >= 0
&& yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0])))
{
fprintf (yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
yyRuleName[yyruleno]);
}
#endif
yygotominor = yyzerominor;
switch (yyruleno)
{
case 5:
case 6:
yytestcase (yyruleno == 6);
{
p_data->result = yymsp[0].minor.yy0;
}
break;
case 7:
{
yygotominor.yy0 =
gml_createSelfClosedNode (p_data,
(void *) yymsp[-2].minor.yy0, NULL);
}
break;
case 8:
case 9:
yytestcase (yyruleno == 9);
{
yygotominor.yy0 =
gml_createSelfClosedNode (p_data,
(void *) yymsp[-3].minor.yy0,
(void *) yymsp[-2].minor.yy0);
}
break;
case 10:
{
yygotominor.yy0 =
gml_createNode (p_data, (void *) yymsp[-1].minor.yy0, NULL,
NULL);
}
break;
case 11:
case 12:
yytestcase (yyruleno == 12);
{
yygotominor.yy0 =
gml_createNode (p_data, (void *) yymsp[-2].minor.yy0,
(void *) yymsp[-1].minor.yy0, NULL);
}
break;
case 13:
case 14:
yytestcase (yyruleno == 14);
{
yygotominor.yy0 =
gml_createNode (p_data, (void *) yymsp[-2].minor.yy0, NULL,
(void *) yymsp[0].minor.yy0);
}
break;
case 15:
case 16:
yytestcase (yyruleno == 16);
case 17:
yytestcase (yyruleno == 17);
case 18:
yytestcase (yyruleno == 18);
{
yygotominor.yy0 =
gml_createNode (p_data, (void *) yymsp[-3].minor.yy0,
(void *) yymsp[-2].minor.yy0,
(void *) yymsp[0].minor.yy0);
}
break;
case 19:
{
yygotominor.yy0 =
gml_closingNode (p_data, (void *) yymsp[0].minor.yy0);
}
break;
case 20:
case 22:
yytestcase (yyruleno == 22);
{
yygotominor.yy0 = yymsp[0].minor.yy0;
}
break;
case 21:
{
yygotominor.yy0 = yymsp[-1].minor.yy0;
}
break;
case 23:
case 27:
yytestcase (yyruleno == 27);
case 31:
yytestcase (yyruleno == 31);
{
yygotominor.yy0 = NULL;
}
break;
case 24:
{
((gmlNodePtr) yymsp[-1].minor.yy0)->Next =
(gmlNodePtr) yymsp[0].minor.yy0;
yygotominor.yy0 = yymsp[-1].minor.yy0;
}
break;
case 25:
{
((gmlNodePtr) yymsp[-1].minor.yy0)->Next =
(gmlNodePtr) yymsp[0].minor.yy0;
((gmlNodePtr) yymsp[-2].minor.yy0)->Next =
(gmlNodePtr) yymsp[-1].minor.yy0;
yygotominor.yy0 = yymsp[-2].minor.yy0;
}
break;
case 26:
{
yygotominor.yy0 =
gml_attribute (p_data, (void *) yymsp[-2].minor.yy0,
(void *) yymsp[0].minor.yy0);
}
break;
case 28:
{
((gmlAttrPtr) yymsp[-1].minor.yy0)->Next =
(gmlAttrPtr) yymsp[0].minor.yy0;
yygotominor.yy0 = yymsp[-1].minor.yy0;
}
break;
case 29:
{
((gmlAttrPtr) yymsp[-1].minor.yy0)->Next =
(gmlAttrPtr) yymsp[0].minor.yy0;
((gmlAttrPtr) yymsp[-2].minor.yy0)->Next =
(gmlAttrPtr) yymsp[-1].minor.yy0;
yygotominor.yy0 = yymsp[-2].minor.yy0;
}
break;
case 30:
{
yygotominor.yy0 = gml_coord (p_data, (void *) yymsp[0].minor.yy0);
}
break;
case 32:
{
((gmlCoordPtr) yymsp[-1].minor.yy0)->Next =
(gmlCoordPtr) yymsp[0].minor.yy0;
yygotominor.yy0 = yymsp[-1].minor.yy0;
}
break;
case 33:
{
((gmlCoordPtr) yymsp[-1].minor.yy0)->Next =
(gmlCoordPtr) yymsp[0].minor.yy0;
((gmlCoordPtr) yymsp[-2].minor.yy0)->Next =
(gmlCoordPtr) yymsp[-1].minor.yy0;
yygotominor.yy0 = yymsp[-2].minor.yy0;
}
break;
default:
yytestcase (yyruleno == 0);
yytestcase (yyruleno == 1);
yytestcase (yyruleno == 2);
yytestcase (yyruleno == 3);
yytestcase (yyruleno == 4);
break;
};
yygoto = yyRuleInfo[yyruleno].lhs;
yysize = yyRuleInfo[yyruleno].nrhs;
yypParser->yyidx -= yysize;
yyact = yy_find_reduce_action (yymsp[-yysize].stateno, (YYCODETYPE) yygoto);
if (yyact < YYNSTATE)
{
#ifdef NDEBUG
if (yysize)
{
yypParser->yyidx++;
yymsp -= yysize - 1;
yymsp->stateno = (YYACTIONTYPE) yyact;
yymsp->major = (YYCODETYPE) yygoto;
yymsp->minor = yygotominor;
}
else
#endif
{
yy_shift (yypParser, yyact, yygoto, &yygotominor);
}
}
else
{
assert (yyact == YYNSTATE + YYNRULE + 1);
yy_accept (yypParser);
}
}
#ifndef YYNOERRORRECOVERY
static void
yy_parse_failed (yyParser * yypParser
)
{
ParseARG_FETCH;
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt);
}
#endif
while (yypParser->yyidx >= 0)
yy_pop_parser_stack (yypParser);
ParseARG_STORE;
}
#endif
static void
yy_syntax_error (yyParser * yypParser,
int yymajor,
YYMINORTYPE yyminor
)
{
ParseARG_FETCH;
#define TOKEN (yyminor.yy0)
p_data->gml_parse_error = 1;
p_data->result = NULL;
ParseARG_STORE;
}
static void
yy_accept (yyParser * yypParser
)
{
ParseARG_FETCH;
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt);
}
#endif
while (yypParser->yyidx >= 0)
yy_pop_parser_stack (yypParser);
ParseARG_STORE;
}
void
Parse (void *yyp,
int yymajor,
ParseTOKENTYPE yyminor
ParseARG_PDECL
)
{
YYMINORTYPE yyminorunion;
int yyact;
int yyendofinput;
#ifdef YYERRORSYMBOL
int yyerrorhit = 0;
#endif
yyParser *yypParser;
yypParser = (yyParser *) yyp;
if (yypParser->yyidx < 0)
{
#if YYSTACKDEPTH<=0
if (yypParser->yystksz <= 0)
{
yyminorunion = yyzerominor;
yyStackOverflow (yypParser, &yyminorunion);
return;
}
#endif
yypParser->yyidx = 0;
yypParser->yyerrcnt = -1;
yypParser->yystack[0].stateno = 0;
yypParser->yystack[0].major = 0;
}
yyminorunion.yy0 = yyminor;
yyendofinput = (yymajor == 0);
ParseARG_STORE;
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sInput %s\n", yyTracePrompt,
yyTokenName[yymajor]);
}
#endif
do
{
yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor);
if (yyact < YYNSTATE)
{
assert (!yyendofinput);
yy_shift (yypParser, yyact, yymajor, &yyminorunion);
yypParser->yyerrcnt--;
yymajor = YYNOCODE;
}
else if (yyact < YYNSTATE + YYNRULE)
{
yy_reduce (yypParser, yyact - YYNSTATE);
}
else
{
assert (yyact == YY_ERROR_ACTION);
#ifdef YYERRORSYMBOL
int yymx;
#endif
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt);
}
#endif
#ifdef YYERRORSYMBOL
if (yypParser->yyerrcnt < 0)
{
yy_syntax_error (yypParser, yymajor, yyminorunion);
}
yymx = yypParser->yystack[yypParser->yyidx].major;
if (yymx == YYERRORSYMBOL || yyerrorhit)
{
#ifndef NDEBUG
if (yyTraceFILE)
{
fprintf (yyTraceFILE, "%sDiscard input token %s\n",
yyTracePrompt, yyTokenName[yymajor]);
}
#endif
yy_destructor (yypParser, (YYCODETYPE) yymajor,
&yyminorunion);
yymajor = YYNOCODE;
}
else
{
while (yypParser->yyidx >= 0 &&
yymx != YYERRORSYMBOL &&
(yyact =
yy_find_reduce_action (yypParser->yystack
[yypParser->yyidx].stateno,
YYERRORSYMBOL)) >=
YYNSTATE)
{
yy_pop_parser_stack (yypParser);
}
if (yypParser->yyidx < 0 || yymajor == 0)
{
yy_destructor (yypParser, (YYCODETYPE) yymajor,
&yyminorunion);
yy_parse_failed (yypParser);
yymajor = YYNOCODE;
}
else if (yymx != YYERRORSYMBOL)
{
YYMINORTYPE u2;
u2.YYERRSYMDT = 0;
yy_shift (yypParser, yyact, YYERRORSYMBOL, &u2);
}
}
yypParser->yyerrcnt = 3;
yyerrorhit = 1;
#elif defined(YYNOERRORRECOVERY)
yy_syntax_error (yypParser, yymajor, yyminorunion);
yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion);
yymajor = YYNOCODE;
#else
if (yypParser->yyerrcnt <= 0)
{
yy_syntax_error (yypParser, yymajor, yyminorunion);
}
yypParser->yyerrcnt = 3;
yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion);
if (yyendofinput)
{
yy_parse_failed (yypParser);
}
yymajor = YYNOCODE;
#endif
}
}
while (yymajor != YYNOCODE && yypParser->yyidx >= 0);
return;
}