Anarres-Mud-Driver
view release on metacpan or search on metacpan
Compiler/parser.c view on Meta::CPAN
{
amd_yyerror("parser stack overflow");
#ifndef YYSTACK_USE_ALLOCA
if (amd_yyfree_stacks)
{
free (amd_yyss);
free (amd_yyvs);
#ifdef YYLSP_NEEDED
free (amd_yyls);
#endif
}
#endif
return 2;
}
amd_yystacksize *= 2;
if (amd_yystacksize > YYMAXDEPTH)
amd_yystacksize = YYMAXDEPTH;
#ifndef YYSTACK_USE_ALLOCA
amd_yyfree_stacks = 1;
#endif
amd_yyss = (short *) YYSTACK_ALLOC (amd_yystacksize * sizeof (*amd_yyssp));
__yy_memcpy ((char *)amd_yyss, (char *)amd_yyss1,
size * (unsigned int) sizeof (*amd_yyssp));
amd_yyvs = (AMD_YYSTYPE *) YYSTACK_ALLOC (amd_yystacksize * sizeof (*amd_yyvsp));
__yy_memcpy ((char *)amd_yyvs, (char *)amd_yyvs1,
size * (unsigned int) sizeof (*amd_yyvsp));
#ifdef YYLSP_NEEDED
amd_yyls = (YYLTYPE *) YYSTACK_ALLOC (amd_yystacksize * sizeof (*amd_yylsp));
__yy_memcpy ((char *)amd_yyls, (char *)amd_yyls1,
size * (unsigned int) sizeof (*amd_yylsp));
#endif
#endif /* no amd_yyoverflow */
amd_yyssp = amd_yyss + size - 1;
amd_yyvsp = amd_yyvs + size - 1;
#ifdef YYLSP_NEEDED
amd_yylsp = amd_yyls + size - 1;
#endif
#if YYDEBUG != 0
if (amd_yydebug)
fprintf(stderr, "Stack size increased to %d\n", amd_yystacksize);
#endif
if (amd_yyssp >= amd_yyss + amd_yystacksize - 1)
YYABORT;
}
#if YYDEBUG != 0
if (amd_yydebug)
fprintf(stderr, "Entering state %d\n", amd_yystate);
#endif
goto amd_yybackup;
amd_yybackup:
/* Do appropriate processing given the current state. */
/* Read a lookahead token if we need one and don't already have one. */
/* amd_yyresume: */
/* First try to decide what to do without reference to lookahead token. */
amd_yyn = amd_yypact[amd_yystate];
if (amd_yyn == YYFLAG)
goto amd_yydefault;
/* Not known => get a lookahead token if don't already have one. */
/* amd_yychar is either YYEMPTY or YYEOF
or a valid token in external form. */
if (amd_yychar == YYEMPTY)
{
#if YYDEBUG != 0
if (amd_yydebug)
fprintf(stderr, "Reading a token: ");
#endif
amd_yychar = YYLEX;
}
/* Convert token to internal form (in amd_yychar1) for indexing tables with */
if (amd_yychar <= 0) /* This means end of input. */
{
amd_yychar1 = 0;
amd_yychar = YYEOF; /* Don't call YYLEX any more */
#if YYDEBUG != 0
if (amd_yydebug)
fprintf(stderr, "Now at end of input.\n");
#endif
}
else
{
amd_yychar1 = YYTRANSLATE(amd_yychar);
#if YYDEBUG != 0
if (amd_yydebug)
{
fprintf (stderr, "Next token is %d (%s", amd_yychar, amd_yytname[amd_yychar1]);
/* Give the individual parser a way to print the precise meaning
of a token, for further debugging info. */
#ifdef YYPRINT
YYPRINT (stderr, amd_yychar, amd_yylval);
#endif
fprintf (stderr, ")\n");
}
#endif
}
amd_yyn += amd_yychar1;
if (amd_yyn < 0 || amd_yyn > YYLAST || amd_yycheck[amd_yyn] != amd_yychar1)
goto amd_yydefault;
amd_yyn = amd_yytable[amd_yyn];
/* amd_yyn is what to do for this token type in this state.
Negative => reduce, -amd_yyn is rule number.
Positive => shift, amd_yyn is new state.
New state is final state => don't bother to shift,
just return success.
( run in 0.803 second using v1.01-cache-2.11-cpan-39bf76dae61 )