📄 gram.tab.cpp
字号:
/* A Bison parser, made from gram.y with Bison version GNU Bison version 1.24
*/
#define YYBISON 1 /* Identify Bison output. */
#define ID 258
#define INTCONST 259
#define DBLCONST 260
#define CREATE 261
#define INSERT 262
#define DROP 263
#define OPEN 264
#define CLOSE 265
#define QUIT 266
#define SELECT 267
#define DELETE 268
#define WHERE 269
#define FROM 270
#define NL 271
#define ERROR 272
#define AND 273
#define OR 274
#define DEBUG 275
#define HELP 276
#define DUMP 277
#define opLE 278
#define opGE 279
#define opNE 280
#define NOT 281
#line 1 "gram.y"
#include <iostream.h>
#ifndef UNIX
#include <malloc.h>
#endif
#include "RT.h"
#include "command.h"
#define YYDEBUG 1
void CommandPrompt();
int yyerror(char *msg);
int yylex();
#line 15 "gram.y"
typedef union {
RTkey *key;
char *string;
RToper oper;
GiSTpredicate *pred;
int number;
double dbl;
} YYSTYPE;
#ifndef YYLTYPE
typedef
struct yyltype
{
int timestamp;
int first_line;
int first_column;
int last_line;
int last_column;
char *text;
}
yyltype;
#define YYLTYPE yyltype
#endif
#include <stdio.h>
#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif
#define YYFINAL 79
#define YYFLAG -32768
#define YYNTBASE 34
#define YYTRANSLATE(x) ((unsigned)(x) <= 281 ? yytranslate[x] : 42)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 33, 2, 23,
24, 2, 2, 25, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 28,
27, 26, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 29, 30, 31,
32
};
#if YYDEBUG != 0
static const short yyprhs[] = { 0,
0, 1, 4, 9, 14, 18, 22, 28, 37, 43,
46, 49, 52, 57, 60, 62, 63, 65, 66, 69,
79, 81, 83, 87, 91, 95, 98, 102, 104, 106,
108
};
static const short yyrhs[] = { -1,
34, 35, 0, 6, 3, 3, 16, 0, 9, 3,
3, 16, 0, 8, 3, 16, 0, 10, 3, 16,
0, 12, 15, 3, 37, 16, 0, 7, 3, 23,
38, 25, 4, 24, 16, 0, 13, 15, 3, 37,
16, 0, 11, 16, 0, 20, 16, 0, 21, 16,
0, 22, 3, 36, 16, 0, 1, 16, 0, 16,
0, 0, 4, 0, 0, 14, 40, 0, 23, 39,
25, 39, 25, 39, 25, 39, 24, 0, 4, 0,
5, 0, 3, 41, 38, 0, 40, 19, 40, 0,
40, 18, 40, 0, 32, 40, 0, 23, 40, 24,
0, 33, 0, 28, 0, 26, 0, 27, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
47, 48, 53, 57, 61, 64, 67, 71, 75, 79,
81, 83, 85, 88, 90, 94, 96, 101, 103, 108,
113, 114, 118, 120, 122, 124, 126, 131, 132, 133,
134
};
static const char * const yytname[] = { "$","error","$undefined.","ID","INTCONST",
"DBLCONST","CREATE","INSERT","DROP","OPEN","CLOSE","QUIT","SELECT","DELETE",
"WHERE","FROM","NL","ERROR","AND","OR","DEBUG","HELP","DUMP","'('","')'","','",
"'>'","'='","'<'","opLE","opGE","opNE","NOT","'&'","commands","command","dump_page",
"where_clause","key","dub","predicate","operator",""
};
#endif
static const short yyr1[] = { 0,
34, 34, 35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 36, 36, 37, 37, 38,
39, 39, 40, 40, 40, 40, 40, 41, 41, 41,
41
};
static const short yyr2[] = { 0,
0, 2, 4, 4, 3, 3, 5, 8, 5, 2,
2, 2, 4, 2, 1, 0, 1, 0, 2, 9,
1, 1, 3, 3, 3, 2, 3, 1, 1, 1,
1
};
static const short yydefact[] = { 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
15, 0, 0, 0, 2, 14, 0, 0, 0, 0,
0, 10, 0, 0, 11, 12, 16, 0, 0, 5,
0, 6, 18, 18, 17, 0, 3, 0, 0, 4,
0, 0, 0, 13, 21, 22, 0, 0, 0, 0,
0, 19, 7, 9, 0, 0, 30, 31, 29, 28,
0, 0, 26, 0, 0, 0, 0, 23, 27, 25,
24, 0, 8, 0, 0, 0, 20, 0, 0
};
static const short yydefgoto[] = { 1,
15, 36, 42, 39, 47, 52, 61
};
static const short yypact[] = {-32768,
1, -13, 3, 13, 27, 31, 37, 25, 28, 29,
-32768, 26, 30, 42,-32768,-32768, 44, 33, 34, 45,
35,-32768, 46, 49,-32768,-32768, 50, 39, 36,-32768,
41,-32768, 47, 47,-32768, 48,-32768, 32, 38,-32768,
-3, 51, 52,-32768,-32768,-32768, 40, 54, -2, -3,
-3, 20,-32768,-32768, 32, 53,-32768,-32768,-32768,-32768,
36, 9,-32768, -3, -3, 55, 56,-32768,-32768,-32768,
57, 32,-32768, 58, 32, 60,-32768, 62,-32768
};
static const short yypgoto[] = {-32768,
-32768,-32768, 19, -1, -40, -46,-32768
};
#define YYLAST 84
static const short yytable[] = { 49,
78, 2, 16, 62, 63, 17, 3, 4, 5, 6,
7, 8, 9, 10, 66, 18, 11, 70, 71, 50,
12, 13, 14, 57, 58, 59, 64, 65, 51, 19,
60, 74, 69, 20, 76, 45, 46, 64, 65, 21,
22, 25, 23, 24, 27, 26, 28, 31, 33, 30,
32, 34, 43, 35, 37, 29, 40, 56, 38, 68,
41, 79, 48, 44, 55, 0, 53, 54, 0, 0,
0, 73, 0, 0, 64, 0, 67, 0, 0, 72,
0, 0, 75, 77
};
static const short yycheck[] = { 3,
0, 1, 16, 50, 51, 3, 6, 7, 8, 9,
10, 11, 12, 13, 55, 3, 16, 64, 65, 23,
20, 21, 22, 26, 27, 28, 18, 19, 32, 3,
33, 72, 24, 3, 75, 4, 5, 18, 19, 3,
16, 16, 15, 15, 3, 16, 3, 3, 3, 16,
16, 3, 34, 4, 16, 23, 16, 4, 23, 61,
14, 0, 25, 16, 25, -1, 16, 16, -1, -1,
-1, 16, -1, -1, 18, -1, 24, -1, -1, 25,
-1, -1, 25, 24
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "bison.simple"
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
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 2, 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. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not __GNUC__ */
#if HAVE_ALLOCA_H
#include <alloca.h>
#else /* not HAVE_ALLOCA_H */
#ifdef _AIX
#pragma alloca
#else /* not _AIX */
char *alloca ();
#endif /* not _AIX */
#endif /* not HAVE_ALLOCA_H */
#endif /* not __GNUC__ */
extern int yylex();
extern void yyerror();
#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C. */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
#include <malloc.h>
#pragma alloca
#else /* not MSDOS, __TURBOC__, or _AIX */
#ifdef __hpux
#ifdef __cplusplus
extern "C" {
void *alloca (unsigned int);
};
#else /* not __cplusplus */
void *alloca ();
#endif /* not __cplusplus */
#endif /* __hpux */
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc. */
#endif /* not GNU C. */
#endif /* alloca not defined. */
/* 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: there must be only one dollar sign in this file.
It is replaced by the list of actions, each action
as one case of the switch. */
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
#define YYACCEPT return(0)
#define YYABORT return(1)
#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); \
yychar1 = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ yyerror ("syntax error: cannot back up"); YYERROR; } \
while (0)
#define YYTERROR 1
#define YYERRCODE 256
#ifndef YYPURE
#define YYLEX yylex()
#endif
#ifdef YYPURE
#ifdef YYLSP_NEEDED
#ifdef YYLEX_PARAM
#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
#else
#define YYLEX yylex(&yylval, &yylloc)
#endif
#else /* not YYLSP_NEEDED */
#ifdef YYLEX_PARAM
#define YYLEX yylex(&yylval, YYLEX_PARAM)
#else
#define YYLEX yylex(&yylval)
#endif
#endif /* not YYLSP_NEEDED */
#endif
/* If nonreentrant, generate the variables here */
#ifndef YYPURE
int yychar; /* the lookahead symbol */
YYSTYPE yylval; /* the semantic value of the */
/* lookahead symbol */
#ifdef YYLSP_NEEDED
YYLTYPE yylloc; /* location data for the lookahead */
/* symbol */
#endif
int yynerrs; /* number of parse errors so far */
#endif /* not YYPURE */
#if YYDEBUG != 0
int yydebug; /* nonzero means print parse trace */
/* Since this is uninitialized, it does not stop multiple parsers
from coexisting. */
#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
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
int yyparse (void);
#endif
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
#else /* not GNU C or C++ */
#ifndef __cplusplus
/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */
static void
__yy_memcpy (from, to, count)
char *from;
char *to;
int count;
{
register char *f = from;
register char *t = to;
register int i = count;
while (i-- > 0)
*t++ = *f++;
}
#else /* __cplusplus */
/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */
static void
__yy_memcpy (char *from, char *to, int count)
{
register char *f = from;
register char *t = to;
register int i = count;
while (i-- > 0)
*t++ = *f++;
}
#endif
#endif
#line 192 "bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
It should actually point to an object.
Grammar actions can access the variable by casting it
to the proper pointer type. */
#ifdef YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#else
#define YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#endif
int
yyparse(YYPARSE_PARAM)
YYPARSE_PARAM_DECL
{
register int yystate;
register int yyn;
register short *yyssp;
register YYSTYPE *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 */
YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
short *yyss = yyssa; /* refer to the stacks thru separate pointers */
YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
#ifdef YYLSP_NEEDED
YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
YYLTYPE *yyls = yylsa;
YYLTYPE *yylsp;
#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
#else
#define YYPOPSTACK (yyvsp--, yyssp--)
#endif
int yystacksize = YYINITDEPTH;
#ifdef YYPURE
int yychar;
YYSTYPE yylval;
int yynerrs;
#ifdef YYLSP_NEEDED
YYLTYPE yylloc;
#endif
#endif
YYSTYPE yyval; /* the variable used to return */
/* semantic values from the action */
/* routines */
int yylen;
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Starting parse\n");
#endif
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
yychar = 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 YYLSP_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. */
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. */
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
YYLTYPE *yyls1 = yyls;
#endif
/* Get the current used size of the three stacks, in elements. */
int size = yyssp - yyss + 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -