aboutsummaryrefslogtreecommitdiff
path: root/tools/mhmake/src/bison.cc
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-01-19 20:29:24 +0000
committermarha <marha@users.sourceforge.net>2011-01-19 20:29:24 +0000
commitcbe6ed88f01b654241301539d8fa3f6111a0a6de (patch)
tree0fe25b7083dc4cc0c3e162fe18e9d427fcb712a5 /tools/mhmake/src/bison.cc
parentcdc60fdcddbe5666aac11af34c6c030d4a670b99 (diff)
downloadvcxsrv-cbe6ed88f01b654241301539d8fa3f6111a0a6de.tar.gz
vcxsrv-cbe6ed88f01b654241301539d8fa3f6111a0a6de.tar.bz2
vcxsrv-cbe6ed88f01b654241301539d8fa3f6111a0a6de.zip
Use bison instead of bison++
The += operator should also take the environment variables into account Solved problem when & in redirect operator on command line Solved syntax error when SPACE was follewed by SPACE Removed kdevelop3 project files Enable debug info in debug build on linux Added support for foreach function Fixed dependency problem for implicit rules with extra dependencies Increased gnu make compatibility: allow implicit rules without commands Solved wrong error message when it cannot build a target in mhmake_dbg On windows: when checking the extension of a command: make sure a / does not cause a wrong decision Added safety against recursive implicit rules. Fixed wrong check on failure to open makefiles. Make sure no message is printed when -include is used flex and bison generated files: make sure the #line statements have the correct line numbers for the debugger after having added one line in the beginning of the file after running the flex/bison. Make sure that the variable defined just before an error or message/info macro is defined when the message is generated. mhmake_dbg: print error message when a target cannot be build because the directory of the target does not exist (and no rule is defined for it) Reformatted message/info macro output Also print makefile and line number when using error and message macro Solved crash in mhmake_dbg when -C is specified on the command line Solved problem in macro expansion when 2 patsubst inside each other addprefix should not give an error when done on an empty string Use comspec when echo is followed by a pipe character (piping is not supported by the echo internal command of mhmake) Solved possible stack curruption (there was little chance that this was occuring)
Diffstat (limited to 'tools/mhmake/src/bison.cc')
-rw-r--r--tools/mhmake/src/bison.cc1025
1 files changed, 0 insertions, 1025 deletions
diff --git a/tools/mhmake/src/bison.cc b/tools/mhmake/src/bison.cc
deleted file mode 100644
index 5a203f719..000000000
--- a/tools/mhmake/src/bison.cc
+++ /dev/null
@@ -1,1025 +0,0 @@
-/* This file is part of mhmake.
- *
- * Copyright (C) 2001-2010 marha@sourceforge.net
- *
- * Mhmake is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Mhmake is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mhmake. If not, see <http://www.gnu.org/licenses/>.
-*/
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-/* Skeleton output parser for bison,
- Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 1, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-/* HEADER SECTION */
-#if defined( _MSDOS ) || defined(MSDOS) || defined(__MSDOS__)
-#define __MSDOS_AND_ALIKE
-#endif
-#if defined(_WINDOWS) && defined(_MSC_VER)
-#define __HAVE_NO_ALLOCA
-#define __MSDOS_AND_ALIKE
-#endif
-
-#ifndef alloca
-#if defined( __GNUC__)
-#define alloca __builtin_alloca
-
-#elif (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-#include <alloca.h>
-
-#elif defined (__MSDOS_AND_ALIKE)
-#include <malloc.h>
-#ifndef __TURBOC__
-/* MS C runtime lib */
-#define alloca _alloca
-#endif
-
-#elif defined(_AIX)
-#include <malloc.h>
-#pragma alloca
-
-#elif defined(__hpux)
-#ifdef __cplusplus
-extern "C" {
-void *alloca (unsigned int);
-};
-#else /* not __cplusplus */
-void *alloca ();
-#endif /* not __cplusplus */
-
-#endif /* not _AIX not MSDOS, or __TURBOC__ or _AIX, not sparc. */
-#endif /* alloca not defined. */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-#ifdef __cplusplus
-#ifndef YY_USE_CLASS
-#define YY_USE_CLASS
-#endif
-#else
-#ifndef __STDC__
-#define const
-#endif
-#endif
-#include <stdio.h>
-#define YYBISON 1
-$/* %{ and %header{ and %union, during decl */
-#define YY_@_BISON 1
-#ifndef YY_@_COMPATIBILITY
-#ifndef YY_USE_CLASS
-#define YY_@_COMPATIBILITY 1
-#else
-#define YY_@_COMPATIBILITY 0
-#endif
-#endif
-
-#if YY_@_COMPATIBILITY != 0
-/* backward compatibility */
-#ifdef YYLTYPE
-#ifndef YY_@_LTYPE
-#define YY_@_LTYPE YYLTYPE
-#endif
-#endif
-#ifdef YYSTYPE
-#ifndef YY_@_STYPE
-#define YY_@_STYPE YYSTYPE
-#endif
-#endif
-#ifdef YYDEBUG
-#ifndef YY_@_DEBUG
-#define YY_@_DEBUG YYDEBUG
-#endif
-#endif
-#ifdef YY_@_STYPE
-#ifndef yystype
-#define yystype YY_@_STYPE
-#endif
-#endif
-/* use goto to be compatible */
-#ifndef YY_@_USE_GOTO
-#define YY_@_USE_GOTO 1
-#endif
-#endif
-
-/* use no goto to be clean in C++ */
-#ifndef YY_@_USE_GOTO
-#define YY_@_USE_GOTO 0
-#endif
-
-#ifndef YY_@_PURE
-$/* YY_@_PURE */
-#endif
-
-/* section apres lecture def, avant lecture grammaire S2 */
-$/* prefix */
-#ifndef YY_@_DEBUG
-$/* YY_@_DEBUG */
-#endif
-
-
-#ifndef YY_@_LSP_NEEDED
-$ /* YY_@_LSP_NEEDED*/
-#endif
-
-
-
-/* DEFAULT LTYPE*/
-#ifdef YY_@_LSP_NEEDED
-#ifndef YY_@_LTYPE
-typedef struct yyltype
-{
- int timestamp;
- int first_line;
- int first_column;
- int last_line;
- int last_column;
- char *text;
-}
-yyltype;
-
-#define YY_@_LTYPE yyltype
-#endif
-#endif
-/* DEFAULT STYPE*/
- /* We used to use `unsigned long' as YY_@_STYPE on MSDOS,
- but it seems better to be consistent.
- Most programs should declare their own type anyway. */
-
-#ifndef YY_@_STYPE
-#define YY_@_STYPE int
-#endif
-/* DEFAULT MISCELANEOUS */
-#ifndef YY_@_PARSE
-#define YY_@_PARSE yyparse
-#endif
-#ifndef YY_@_LEX
-#define YY_@_LEX yylex
-#endif
-#ifndef YY_@_LVAL
-#define YY_@_LVAL yylval
-#endif
-#ifndef YY_@_LLOC
-#define YY_@_LLOC yylloc
-#endif
-#ifndef YY_@_CHAR
-#define YY_@_CHAR yychar
-#endif
-#ifndef YY_@_NERRS
-#define YY_@_NERRS yynerrs
-#endif
-#ifndef YY_@_DEBUG_FLAG
-#define YY_@_DEBUG_FLAG yydebug
-#endif
-#ifndef YY_@_ERROR
-#define YY_@_ERROR yyerror
-#endif
-#ifndef YY_@_PARSE_PARAM
-#ifndef __STDC__
-#ifndef __cplusplus
-#ifndef YY_USE_CLASS
-#define YY_@_PARSE_PARAM
-#ifndef YY_@_PARSE_PARAM_DEF
-#define YY_@_PARSE_PARAM_DEF
-#endif
-#endif
-#endif
-#endif
-#ifndef YY_@_PARSE_PARAM
-#define YY_@_PARSE_PARAM void
-#endif
-#endif
-#if YY_@_COMPATIBILITY != 0
-/* backward compatibility */
-#ifdef YY_@_LTYPE
-#ifndef YYLTYPE
-#define YYLTYPE YY_@_LTYPE
-#else
-/* WARNING obsolete !!! user defined YYLTYPE not reported into generated header */
-#endif
-#endif
-#ifndef YYSTYPE
-#define YYSTYPE YY_@_STYPE
-#else
-/* WARNING obsolete !!! user defined YYSTYPE not reported into generated header */
-#endif
-#ifdef YY_@_PURE
-#ifndef YYPURE
-#define YYPURE YY_@_PURE
-#endif
-#endif
-#ifdef YY_@_DEBUG
-#ifndef YYDEBUG
-#define YYDEBUG YY_@_DEBUG
-#endif
-#endif
-#ifndef YY_@_ERROR_VERBOSE
-#ifdef YYERROR_VERBOSE
-#define YY_@_ERROR_VERBOSE YYERROR_VERBOSE
-#endif
-#endif
-#ifndef YY_@_LSP_NEEDED
-#ifdef YYLSP_NEEDED
-#define YY_@_LSP_NEEDED YYLSP_NEEDED
-#endif
-#endif
-#endif
-#ifndef YY_USE_CLASS
-/* TOKEN C */
-$ /* #defines tokens */
-#else
-/* CLASS */
-#ifndef YY_@_CLASS
-#define YY_@_CLASS @
-#endif
-#ifndef YY_@_INHERIT
-#define YY_@_INHERIT
-#endif
-#ifndef YY_@_MEMBERS
-#define YY_@_MEMBERS
-#endif
-#ifndef YY_@_LEX_BODY
-#define YY_@_LEX_BODY
-#endif
-#ifndef YY_@_ERROR_BODY
-#define YY_@_ERROR_BODY
-#endif
-#ifndef YY_@_CONSTRUCTOR_PARAM
-#define YY_@_CONSTRUCTOR_PARAM
-#endif
-#ifndef YY_@_CONSTRUCTOR_CODE
-#define YY_@_CONSTRUCTOR_CODE
-#endif
-#ifndef YY_@_CONSTRUCTOR_INIT
-#define YY_@_CONSTRUCTOR_INIT
-#endif
-/* choose between enum and const */
-#ifndef YY_@_USE_CONST_TOKEN
-#define YY_@_USE_CONST_TOKEN 0
-/* yes enum is more compatible with flex, */
-/* so by default we use it */
-#endif
-#if YY_@_USE_CONST_TOKEN != 0
-#ifndef YY_@_ENUM_TOKEN
-#define YY_@_ENUM_TOKEN yy_@_enum_token
-#endif
-#endif
-
-class YY_@_CLASS YY_@_INHERIT
-{
-public:
-#if YY_@_USE_CONST_TOKEN != 0
-/* static const int token ... */
-$ /* decl const */
-#else
-enum YY_@_ENUM_TOKEN { YY_@_NULL_TOKEN=0
-$ /* enum token */
- }; /* end of enum declaration */
-#endif
-public:
- int YY_@_PARSE (YY_@_PARSE_PARAM);
-#ifdef YY_@_PURE
-#else
-#ifdef YY_@_LSP_NEEDED
- YY_@_LTYPE YY_@_LLOC;
-#endif
- int YY_@_NERRS;
- int YY_@_CHAR;
-#endif
-#if YY_@_DEBUG != 0
- int YY_@_DEBUG_FLAG; /* nonzero means print parse trace */
-#endif
-public:
- YY_@_CLASS(YY_@_CONSTRUCTOR_PARAM);
-public:
- YY_@_MEMBERS
-};
-/* other declare folow */
-#if YY_@_USE_CONST_TOKEN != 0
-$ /* const YY_@_CLASS::token */
-#endif
-/*apres const */
-YY_@_CLASS::YY_@_CLASS(YY_@_CONSTRUCTOR_PARAM) YY_@_CONSTRUCTOR_INIT
-{
-#if YY_@_DEBUG != 0
-YY_@_DEBUG_FLAG=0;
-#endif
-YY_@_CONSTRUCTOR_CODE;
-};
-#endif
-$ /* fattrs + tables */
-
-/* parser code folow */
-
-
-/* This is the parser code that is written into each bison parser
- when the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-/* Note: dollar marks section change
- the next is replaced by the list of actions, each action
- as one case of the switch. */
-
-#if YY_@_USE_GOTO != 0
-/*
- SUPRESSION OF GOTO : on some C++ compiler (sun c++)
- the goto is strictly forbidden if any constructor/destructor
- is used in the whole function (very stupid isn't it ?)
- so goto are to be replaced with a 'while/switch/case construct'
- here are the macro to keep some apparent compatibility
-*/
-#define YYGOTO(lb) {yy_gotostate=lb;continue;}
-#define YYBEGINGOTO enum yy_labels yy_gotostate=yygotostart; \
- for(;;) switch(yy_gotostate) { case yygotostart: {
-#define YYLABEL(lb) } case lb: {
-#define YYENDGOTO } }
-#define YYBEGINDECLARELABEL enum yy_labels {yygotostart
-#define YYDECLARELABEL(lb) ,lb
-#define YYENDDECLARELABEL };
-#else
-/* macro to keep goto */
-#define YYGOTO(lb) goto lb
-#define YYBEGINGOTO
-#define YYLABEL(lb) lb:
-#define YYENDGOTO
-#define YYBEGINDECLARELABEL
-#define YYDECLARELABEL(lb)
-#define YYENDDECLARELABEL
-#endif
-/* LABEL DECLARATION */
-YYBEGINDECLARELABEL
- YYDECLARELABEL(yynewstate)
- YYDECLARELABEL(yybackup)
-/* YYDECLARELABEL(yyresume) */
- YYDECLARELABEL(yydefault)
- YYDECLARELABEL(yyreduce)
- YYDECLARELABEL(yyerrlab) /* here on detecting error */
- YYDECLARELABEL(yyerrlab1) /* here on error raised explicitly by an action */
- YYDECLARELABEL(yyerrdefault) /* current state does not do anything special for the error token. */
- YYDECLARELABEL(yyerrpop) /* pop the current state because it cannot handle the error token */
- YYDECLARELABEL(yyerrhandle)
-YYENDDECLARELABEL
-/* ALLOCA SIMULATION */
-/* __HAVE_NO_ALLOCA */
-#ifdef __HAVE_NO_ALLOCA
-int __alloca_free_ptr(char *ptr,char *ref)
-{if(ptr!=ref) free(ptr);
- return 0;}
-
-#define __ALLOCA_alloca(size) malloc(size)
-#define __ALLOCA_free(ptr,ref) __alloca_free_ptr((char *)ptr,(char *)ref)
-
-#ifdef YY_@_LSP_NEEDED
-#define __ALLOCA_return(num) \
- return( __ALLOCA_free(yyss,yyssa)+\
- __ALLOCA_free(yyvs,yyvsa)+\
- __ALLOCA_free(yyls,yylsa)+\
- (num))
-#else
-#define __ALLOCA_return(num) \
- return( __ALLOCA_free(yyss,yyssa)+\
- __ALLOCA_free(yyvs,yyvsa)+\
- (num))
-#endif
-#else
-#define __ALLOCA_return(num) return(num)
-#define __ALLOCA_alloca(size) alloca(size)
-#define __ALLOCA_free(ptr,ref)
-#endif
-
-/* ENDALLOCA SIMULATION */
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (YY_@_CHAR = YYEMPTY)
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYACCEPT __ALLOCA_return(0)
-#define YYABORT __ALLOCA_return(1)
-#define YYERROR YYGOTO(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 YYGOTO(yyerrlab)
-#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do\
- if (YY_@_CHAR == YYEMPTY && yylen == 1)\
- {\
- YY_@_CHAR = (token), YY_@_LVAL = (value);\
- yychar1 = YYTRANSLATE (YY_@_CHAR);\
- YYPOPSTACK;\
- YYGOTO(yybackup);\
- }\
- else\
- {\
- YY_@_ERROR ("syntax error: cannot back up"); YYERROR;\
- }\
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-#ifndef YY_@_PURE
-/* UNPURE */
-#define YYLEX YY_@_LEX()
-#ifndef YY_USE_CLASS
-/* If nonreentrant, and not class , generate the variables here */
-int YY_@_CHAR; /* the lookahead symbol */
- /* lookahead symbol */
-int YY_@_NERRS; /* number of parse errors so far */
-#ifdef YY_@_LSP_NEEDED
-YY_@_LTYPE YY_@_LLOC; /* location data for the lookahead */
- /* symbol */
-#endif
-#endif
-
-
-#else
-/* PURE */
-#ifdef YY_@_LSP_NEEDED
-#define YYLEX YY_@_LEX(&YY_@_LVAL, &YY_@_LLOC)
-#else
-#define YYLEX YY_@_LEX(&YY_@_LVAL)
-#endif
-#endif
-#ifndef YY_USE_CLASS
-#if YY_@_DEBUG != 0
-int YY_@_DEBUG_FLAG; /* nonzero means print parse trace */
-/* Since this is uninitialized, it does not stop multiple parsers
- from coexisting. */
-#endif
-#endif
-
-
-
-/* YYINITDEPTH indicates the initial size of the parser's stacks */
-
-#ifndef YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH is the maximum size the stacks can grow to
- (effective only if the built-in stack extension method is used). */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-
-#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
-#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
-#else /* not GNU C or C++ */
-
-/* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
-
-#ifdef __cplusplus
-static void __yy_bcopy (char *from, char *to, size_t count)
-#else
-#ifdef __STDC__
-static void __yy_bcopy (char *from, char *to, int count)
-#else
-static void __yy_bcopy (from, to, count)
- char *from;
- char *to;
- int count;
-#endif
-#endif
-{
- register char *f = from;
- register char *t = to;
- register size_t i = count;
-
- while (i-- > 0)
- *t++ = *f++;
-}
-#endif
-
-int
-#ifdef YY_USE_CLASS
- YY_@_CLASS::
-#endif
- YY_@_PARSE(YY_@_PARSE_PARAM)
-#ifndef __STDC__
-#ifndef __cplusplus
-#ifndef YY_USE_CLASS
-/* parameter definition without protypes */
-YY_@_PARSE_PARAM_DEF
-#endif
-#endif
-#endif
-{
- register int yystate;
- register int yyn;
- register short *yyssp;
- register YY_@_STYPE *yyvsp;
- int yyerrstatus; /* number of tokens to shift before error messages enabled */
- int yychar1=0; /* lookahead token as an internal (translated) token number */
-
- short yyssa[YYINITDEPTH]; /* the state stack */
- YY_@_STYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
-
- short *yyss = yyssa; /* refer to the stacks thru separate pointers */
- YY_@_STYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
-
-#ifdef YY_@_LSP_NEEDED
- YY_@_LTYPE yylsa[YYINITDEPTH]; /* the location stack */
- YY_@_LTYPE *yyls = yylsa;
- YY_@_LTYPE *yylsp;
-
-#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
- int yystacksize = YYINITDEPTH;
-
-#ifdef YY_@_PURE
- int YY_@_CHAR;
- YY_@_STYPE YY_@_LVAL;
- int YY_@_NERRS;
-#ifdef YY_@_LSP_NEEDED
- YY_@_LTYPE YY_@_LLOC;
-#endif
-#endif
-
- YY_@_STYPE yyval; /* the variable used to return */
- /* semantic values from the action */
- /* routines */
-
- int yylen;
-/* start loop, in which YYGOTO may be used. */
-YYBEGINGOTO
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Starting parse\n");
-#endif
- yystate = 0;
- yyerrstatus = 0;
- YY_@_NERRS = 0;
- YY_@_CHAR = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss - 1;
- yyvsp = yyvs;
-#ifdef YY_@_LSP_NEEDED
- yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in yystate . */
-/* In all cases, when you get here, the value and location stacks
- have just been pushed. so pushing a state here evens the stacks. */
-YYLABEL(yynewstate)
-
- *++yyssp = yystate;
-
- if (yyssp >= yyss + yystacksize - 1)
- {
- /* Give user a chance to reallocate the stack */
- /* Use copies of these so that the &'s don't force the real ones into memory. */
- YY_@_STYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
-#ifdef YY_@_LSP_NEEDED
- YY_@_LTYPE *yyls1 = yyls;
-#endif
-
- /* Get the current used size of the three stacks, in elements. */
- size_t size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- /* Each stack pointer address is followed by the size of
- the data in use in that stack, in bytes. */
-#ifdef YY_@_LSP_NEEDED
- /* This used to be a conditional around just the two extra args,
- but that might be undefined if yyoverflow is a macro. */
- yyoverflow("parser stack overflow",
- &yyss1, size * sizeof (*yyssp),
- &yyvs1, size * sizeof (*yyvsp),
- &yyls1, size * sizeof (*yylsp),
- &yystacksize);
-#else
- yyoverflow("parser stack overflow",
- &yyss1, size * sizeof (*yyssp),
- &yyvs1, size * sizeof (*yyvsp),
- &yystacksize);
-#endif
-
- yyss = yyss1; yyvs = yyvs1;
-#ifdef YY_@_LSP_NEEDED
- yyls = yyls1;
-#endif
-#else /* no yyoverflow */
- /* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
- {
- YY_@_ERROR("parser stack overflow");
- __ALLOCA_return(2);
- }
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
- yyss = (short *) __ALLOCA_alloca (yystacksize * sizeof (*yyssp));
- __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
- __ALLOCA_free(yyss1,yyssa);
- yyvs = (YY_@_STYPE *) __ALLOCA_alloca (yystacksize * sizeof (*yyvsp));
- __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
- __ALLOCA_free(yyvs1,yyvsa);
-#ifdef YY_@_LSP_NEEDED
- yyls = (YY_@_LTYPE *) __ALLOCA_alloca (yystacksize * sizeof (*yylsp));
- __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
- __ALLOCA_free(yyls1,yylsa);
-#endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + size - 1;
- yyvsp = yyvs + size - 1;
-#ifdef YY_@_LSP_NEEDED
- yylsp = yyls + size - 1;
-#endif
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
- if (yyssp >= yyss + yystacksize - 1)
- YYABORT;
- }
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
- YYGOTO(yybackup);
-YYLABEL(yybackup)
-
-/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
-/* YYLABEL(yyresume) */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- YYGOTO(yydefault);
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (YY_@_CHAR == YYEMPTY)
- {
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Reading a token: ");
-#endif
- YY_@_CHAR = YYLEX;
- }
-
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (YY_@_CHAR <= 0) /* This means end of input. */
- {
- yychar1 = 0;
- YY_@_CHAR = YYEOF; /* Don't call YYLEX any more */
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Now at end of input.\n");
-#endif
- }
- else
- {
- yychar1 = YYTRANSLATE(YY_@_CHAR);
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- {
- fprintf (stderr, "Next token is %d (%s", YY_@_CHAR, yytname[yychar1]);
- /* Give the individual parser a way to print the precise meaning
- of a token, for further debugging info. */
-#ifdef YYPRINT
- YYPRINT (stderr, YY_@_CHAR, YY_@_LVAL);
-#endif
- fprintf (stderr, ")\n");
- }
-#endif
- }
-
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
- YYGOTO(yydefault);
-
- yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- YYGOTO(yyerrlab);
- yyn = -yyn;
- YYGOTO(yyreduce);
- }
- else if (yyn == 0)
- YYGOTO(yyerrlab);
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Shifting token %d (%s), ", YY_@_CHAR, yytname[yychar1]);
-#endif
-
- /* Discard the token being shifted unless it is eof. */
- if (YY_@_CHAR != YYEOF)
- YY_@_CHAR = YYEMPTY;
-
- *++yyvsp = YY_@_LVAL;
-#ifdef YY_@_LSP_NEEDED
- *++yylsp = YY_@_LLOC;
-#endif
-
- /* count tokens shifted since error; after three, turn off error status. */
- if (yyerrstatus) yyerrstatus--;
-
- yystate = yyn;
- YYGOTO(yynewstate);
-
-/* Do the default action for the current state. */
-YYLABEL(yydefault)
-
- yyn = yydefact[yystate];
- if (yyn == 0)
- YYGOTO(yyerrlab);
-
-/* Do a reduction. yyn is the number of a rule to reduce with. */
-YYLABEL(yyreduce)
- yylen = yyr2[yyn];
- if (yylen > 0)
- yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- {
- int i;
-
- fprintf (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
- fprintf (stderr, "%s ", yytname[yyrhs[i]]);
- fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
-
-$ /* the action file gets copied in in place of this dollarsign */
- yyvsp -= yylen;
- yyssp -= yylen;
-#ifdef YY_@_LSP_NEEDED
- yylsp -= yylen;
-#endif
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- {
- short *ssp1 = yyss - 1;
- fprintf (stderr, "state stack now");
- while (ssp1 != yyssp)
- fprintf (stderr, " %d", *++ssp1);
- fprintf (stderr, "\n");
- }
-#endif
-
- *++yyvsp = yyval;
-
-#ifdef YY_@_LSP_NEEDED
- yylsp++;
- if (yylen == 0)
- {
- *yylsp= YY_@_LLOC;
- //yylsp->first_line = YY_@_LLOC.first_line;
- //yylsp->first_column = YY_@_LLOC.first_column;
- //yylsp->last_line = (yylsp-1)->last_line;
- //yylsp->last_column = (yylsp-1)->last_column;
- //yylsp->text = 0;
- }
- else
- {
- *yylsp = *(yylsp+yylen-1);
- //yylsp->last_line = (yylsp+yylen-1)->last_line;
- //yylsp->last_column = (yylsp+yylen-1)->last_column;
- }
-#endif
-
- /* Now "shift" the result of the reduction.
- Determine what state that goes to,
- based on the state we popped back to
- and the rule number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTBASE];
-
- YYGOTO(yynewstate);
-
-YYLABEL(yyerrlab) /* here on detecting error */
-
- if (! yyerrstatus)
- /* If not already recovering from an error, report this error. */
- {
- ++YY_@_NERRS;
-
-#ifdef YY_@_ERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- size_t size = 0;
- char *msg;
- int x, count;
-
- count = 0;
- /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
- for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- size += strlen(yytname[x]) + 15, count++;
- msg = (char *) malloc(size + 15);
- if (msg != 0)
- {
- strcpy(msg, "parse error");
-
- if (count < 5)
- {
- count = 0;
- for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof(yytname) / sizeof(char *)); x++)
- if (yycheck[x + yyn] == x)
- {
- strcat(msg, count == 0 ? ", expecting `" : " or `");
- strcat(msg, yytname[x]);
- strcat(msg, "'");
- count++;
- }
- }
- YY_@_ERROR(msg);
- free(msg);
- }
- else
- YY_@_ERROR ("parse error; also virtual memory exceeded");
- }
- else
-#endif /* YY_@_ERROR_VERBOSE */
- YY_@_ERROR("parse error");
- }
-
- YYGOTO(yyerrlab1);
-YYLABEL(yyerrlab1) /* here on error raised explicitly by an action */
-
- if (yyerrstatus == 3)
- {
- /* if just tried and failed to reuse lookahead token after an error, discard it. */
-
- /* return failure if at end of input */
- if (YY_@_CHAR == YYEOF)
- YYABORT;
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Discarding token %d (%s).\n", YY_@_CHAR, yytname[yychar1]);
-#endif
-
- YY_@_CHAR = YYEMPTY;
- }
-
- /* Else will try to reuse lookahead token
- after shifting the error token. */
-
- yyerrstatus = 3; /* Each real token shifted decrements this */
-
- YYGOTO(yyerrhandle);
-
-YYLABEL(yyerrdefault) /* current state does not do anything special for the error token. */
-
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
- yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
- if (yyn) YYGOTO(yydefault);
-#endif
-
-YYLABEL(yyerrpop) /* pop the current state because it cannot handle the error token */
-
- if (yyssp == yyss) YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#ifdef YY_@_LSP_NEEDED
- yylsp--;
-#endif
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- {
- short *ssp1 = yyss - 1;
- fprintf (stderr, "Error: state stack now");
- while (ssp1 != yyssp)
- fprintf (stderr, " %d", *++ssp1);
- fprintf (stderr, "\n");
- }
-#endif
-
-YYLABEL(yyerrhandle)
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- YYGOTO(yyerrdefault);
-
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- YYGOTO(yyerrdefault);
-
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- YYGOTO(yyerrpop);
- yyn = -yyn;
- YYGOTO(yyreduce);
- }
- else if (yyn == 0)
- YYGOTO(yyerrpop);
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
-#if YY_@_DEBUG != 0
- if (YY_@_DEBUG_FLAG)
- fprintf(stderr, "Shifting error token, ");
-#endif
-
- *++yyvsp = YY_@_LVAL;
-#ifdef YY_@_LSP_NEEDED
- *++yylsp = YY_@_LLOC;
-#endif
-
- yystate = yyn;
- YYGOTO(yynewstate);
-/* end loop, in which YYGOTO may be used. */
- YYENDGOTO
-}
-
-/* END */
-$ /* section 3 */
-
-/* AFTER END , NEVER READ !!! */
-