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 )