-/* allow stack size to grow effectively without limit */
-#define YYMAXDEPTH 10000000
-
-#include "EXTERN.h"
-#define PERL_IN_PERLY_C
-#include "perl.h"
-
-typedef signed char yysigned_char;
-
-#ifdef DEBUGGING
-# define YYDEBUG 1
-#else
-# define YYDEBUG 0
-#endif
-
-/* contains all the parser state tables; auto-generated from madly.y */
-#include "madly.tab"
-
-# define YYSIZE_T size_t
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrlab1
-
-
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-
-#define YYFAIL goto yyerrlab
-
-#define YYRECOVERING() (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) { \
- yychar = (Token); \
- yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else { \
- yyerror ("syntax error: cannot back up"); \
- YYERROR; \
- } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-/* Enable debugging if requested. */
-#ifdef DEBUGGING
-
-# define yydebug (DEBUG_p_TEST)
-
-# define YYFPRINTF PerlIO_printf
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-
-# define YYDSYMPRINT(Args) \
-do { \
- if (yydebug) \
- yysymprint Args; \
-} while (0)
-
-# define YYDSYMPRINTF(Title, Token, Value) \
-do { \
- if (yydebug) { \
- YYFPRINTF (Perl_debug_log, "%s ", Title); \
- yysymprint (aTHX_ Perl_debug_log, Token, Value); \
- YYFPRINTF (Perl_debug_log, "\n"); \
- } \
-} while (0)
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-static void
-yysymprint (pTHX_ PerlIO *yyoutput, int yytype, YYSTYPE *yyvaluep)
-{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvaluep;
-
- if (yytype < YYNTOKENS) {
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
- YYFPRINTF (yyoutput, "0x%x", yyvaluep->ival);
-# endif
- }
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
- switch (yytype) {
- default:
- break;
- }
- YYFPRINTF (yyoutput, ")");
-}
-
-
-/* yy_stack_print()
- * print the top 8 items on the parse stack. The args have the same
- * meanings as the local vars in yyparse() of the same name */
-
-static void
-yy_stack_print (pTHX_ short *yyss, short *yyssp, YYSTYPE *yyvs, const char**yyns)
-{
- int i;
- int start = 1;
- int count = (int)(yyssp - yyss);
-
- if (count > 8) {
- start = count - 8 + 1;
- count = 8;
- }
-
- PerlIO_printf(Perl_debug_log, "\nindex:");
- for (i=0; i < count; i++)
- PerlIO_printf(Perl_debug_log, " %8d", start+i);
- PerlIO_printf(Perl_debug_log, "\nstate:");
- for (i=0, yyss += start; i < count; i++, yyss++)
- PerlIO_printf(Perl_debug_log, " %8d", *yyss);
- PerlIO_printf(Perl_debug_log, "\ntoken:");
- for (i=0, yyns += start; i < count; i++, yyns++)
- PerlIO_printf(Perl_debug_log, " %8.8s", *yyns);
- PerlIO_printf(Perl_debug_log, "\nvalue:");
- for (i=0, yyvs += start; i < count; i++, yyvs++)
- PerlIO_printf(Perl_debug_log, " %8x", yyvs->ival);
- PerlIO_printf(Perl_debug_log, "\n\n");
-}
-
-# define YY_STACK_PRINT(yyss, yyssp, yyvs, yyns) \
-do { \
- if (yydebug && DEBUG_v_TEST) \
- yy_stack_print (aTHX_ (yyss), (yyssp), (yyvs), (yyns)); \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced. |
-`------------------------------------------------*/
-
-static void
-yy_reduce_print (pTHX_ int yyrule)
-{
- int yyi;
- unsigned int yylineno = yyrline[yyrule];
- YYFPRINTF (Perl_debug_log, "Reducing stack by rule %d (line %u), ",
- yyrule - 1, yylineno);
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
- YYFPRINTF (Perl_debug_log, "%s ", yytname [yyrhs[yyi]]);
- YYFPRINTF (Perl_debug_log, "-> %s\n", yytname [yyr1[yyrule]]);
-}
-
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (aTHX_ Rule); \
-} while (0)
-
-#else /* !DEBUGGING */
-# define YYDPRINTF(Args)
-# define YYDSYMPRINT(Args)
-# define YYDSYMPRINTF(Title, Token, Value)
-# define YY_STACK_PRINT(yyss, yyssp, yyvs, yyns)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !DEBUGGING */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-
-#if YYERROR_VERBOSE
-# ifndef yystrlen
-# if defined (__GLIBC__) && defined (_STRING_H)
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
- register const char *yys = yystr;
-
- while (*yys++ != '\0')
- continue;
-
- return yys - yystr - 1;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-yystpcpy (pTHX_ char *yydest, const char *yysrc)
-{
- register char *yyd = yydest;
- register const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-
-#endif /* !YYERROR_VERBOSE */
-
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-static void
-yydestruct (int yytype, YYSTYPE *yyvaluep)
-{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvaluep;
-
- switch (yytype) {
- default:
- break;
- }
-}
-
-
-
-
-/*----------.
-| yyparse. |
-`----------*/
-
-int
-Perl_madparse (pTHX)
-{
- int yychar; /* The lookahead symbol. */
- YYSTYPE yylval; /* The semantic value of the lookahead symbol. */
- int yynerrs; /* Number of syntax errors so far. */
- register int yystate;
- register int yyn;
- int yyresult;
-
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
-
- /* two stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- short *yyss;
- register short *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE *yyvs;
- register YYSTYPE *yyvsp;
-
- /* for ease of re-allocation and automatic freeing, have two SVs whose
- * SvPVX points to the stacks */
- SV *yyss_sv, *yyvs_sv;
-
-#ifdef DEBUGGING
- /* maintain also a stack of token/rule names for debugging with -Dpv */
- const char **yyns, **yynsp;
- SV *yyns_sv;
-# define YYPOPSTACK (yyvsp--, yyssp--, yynsp--)
-#else
-# define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-
-
- /* When reducing, the number of symbols on the RHS of the reduced
- rule. */
- int yylen;
-
- YYDPRINTF ((Perl_debug_log, "Starting parse\n"));
-
- ENTER; /* force stack free before we return */
- SAVEVPTR(PL_yycharp);
- SAVEVPTR(PL_yylvalp);
- PL_yycharp = &yychar; /* so PL_yyerror() can access it */
- PL_yylvalp = &yylval; /* so various functions in toke.c can access it */
-
- yyss_sv = newSV(YYINITDEPTH * sizeof(short));
- yyvs_sv = newSV(YYINITDEPTH * sizeof(YYSTYPE));
- SAVEFREESV(yyss_sv);
- SAVEFREESV(yyvs_sv);
- yyss = (short *) SvPVX(yyss_sv);
- yyvs = (YYSTYPE *) SvPVX(yyvs_sv);
- /* note that elements zero of yyvs and yyns are not used */
- yyssp = yyss;
- yyvsp = yyvs;
-#ifdef DEBUGGING
- yyns_sv = newSV(YYINITDEPTH * sizeof(char *));
- SAVEFREESV(yyns_sv);
- yyns = (const char **) SvPVX(yyns_sv);
- yynsp = yyns;
-#endif
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
-
-
- YYDPRINTF ((Perl_debug_log, "Entering state %d\n", yystate));
-
- 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++;