|
|
BSD 4.2
# line 15 "grammar.z"
/* SCANNER/PARSER GLOBALS & TABLES */
# include <ingres.h>
# include <aux.h>
# include <tree.h>
# include <symbol.h>
# include <pv.h>
# include "parser.h"
# include <sccs.h>
SCCSID(@(#)grammar.y 7.2 4/7/82)
# ifdef xPTR1
# define YYDEBUG
# endif
int i;
struct atstash *aptr;
char permbuf[3];
/* space for two names, their null bytes and the seperator */
char modbuf[(2 * (MAXNAME + 1)) + 1];
static char hqmbuf[2];
extern DESC Reldesc;
extern int Opflag;
extern QTREE *Lastree;
extern QTREE *Tidnode;
extern int Rsdmno;
extern int Resrng;
extern int Qrymod;
extern int Permcomd;
extern char *Trname;
extern int Qlflag;
extern struct atstash Faketid;
# ifdef DISTRIB
extern struct atstash Fakesid;
# endif
extern int Patflag;
extern char *Indexname;
extern QTREE *tree();
extern QTREE *tlprepend();
extern QTREE *addresdom();
extern QTREE *xdot();
extern QTREE *norml();
extern struct atstash *attlookup();
extern int rngent();
extern int rnglook();
extern PARRNG Parrng[];
# line 71 "grammar.z"
typedef union
{
int type_type; /* OPERATOR TYPES ETC. */
QTREE *tree_type;
int rng_type;
char char_type;
int int_type;
short *I2_type;
long *I4_type;
float *F4_type;
double *F8_type;
char *string_type;
} YYSTYPE;
# define APPEND 257
# define COPY 258
# define CREATE 259
# define DELETE 260
# define DESTROY 261
# define HELP 262
# define INDEX 263
# define MODIFY 264
# define PRINT 265
# define RANGE 266
# define REPLACE 267
# define RETRIEVE 268
# define SAVE 269
# define DEFINE 270
# define PERMIT 271
# define VIEW 272
# define INTEGRITY 273
# define ALL 274
# define BY 275
# define FROM 276
# define IN 277
# define INTO 278
# define UNIQUE 279
# define AT 280
# define IS 281
# define OF 282
# define ON 283
# define ONTO 284
# define TO 285
# define UNTIL 286
# define WHERE 287
# define NAME 288
# define SCONST 289
# define I2CONST 290
# define I4CONST 291
# define F4CONST 292
# define F8CONST 293
# define COMMA 294
# define LPAREN 295
# define PERIOD 296
# define RPAREN 297
# define COLON 298
# define BGNCMNT 299
# define ENDCMNT 300
# define UAOP 301
# define BAOP 302
# define BAOPH 303
# define BDOP 304
# define EOP 305
# define LBOP 306
# define LUOP 307
# define FOP 308
# define FBOP 309
# define AGOP 310
# define unaryop 311
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
extern short yyerrflag;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
YYSTYPE yylval, yyval;
# define YYERRCODE 256
# line 1091 "grammar.z"
# include "scanner.h"
# include "tables.y"
# include "yyerror.y"
short yyexca[] ={
-1, 1,
0, -1,
-2, 0,
-1, 35,
295, 45,
-2, 49,
-1, 195,
296, 128,
-2, 134,
};
# define YYNPROD 203
# define YYLAST 485
short yyact[]={
183, 314, 195, 194, 190, 191, 192, 193, 270, 180,
225, 230, 142, 284, 331, 197, 320, 225, 287, 234,
326, 181, 187, 188, 189, 195, 194, 190, 191, 192,
193, 234, 237, 231, 230, 271, 297, 316, 197, 232,
231, 230, 235, 233, 207, 187, 188, 189, 144, 296,
241, 232, 231, 230, 235, 233, 232, 231, 230, 204,
240, 321, 232, 231, 230, 232, 231, 230, 295, 301,
70, 271, 232, 231, 230, 232, 231, 230, 232, 231,
230, 267, 210, 200, 266, 211, 199, 122, 135, 134,
162, 136, 60, 62, 239, 144, 238, 108, 168, 120,
132, 87, 323, 76, 119, 81, 286, 106, 208, 122,
127, 126, 125, 61, 73, 178, 307, 77, 78, 306,
332, 330, 325, 318, 311, 61, 253, 293, 178, 159,
72, 77, 78, 69, 157, 68, 280, 265, 328, 244,
319, 292, 285, 304, 261, 61, 221, 245, 246, 147,
61, 264, 173, 245, 222, 117, 166, 161, 150, 137,
124, 123, 80, 56, 206, 144, 258, 260, 59, 57,
58, 104, 103, 141, 329, 324, 218, 85, 105, 130,
308, 227, 86, 83, 84, 223, 216, 236, 99, 98,
154, 156, 112, 158, 100, 96, 66, 64, 203, 251,
302, 263, 243, 65, 202, 205, 171, 164, 249, 291,
248, 220, 176, 19, 38, 39, 40, 41, 42, 43,
53, 46, 47, 48, 49, 50, 51, 45, 177, 201,
272, 273, 274, 275, 93, 179, 198, 92, 276, 277,
278, 279, 196, 146, 94, 91, 114, 113, 115, 89,
75, 90, 110, 109, 111, 107, 116, 2, 67, 54,
175, 174, 36, 32, 283, 257, 259, 215, 256, 214,
165, 30, 44, 28, 79, 27, 74, 26, 71, 250,
252, 254, 25, 255, 24, 22, 155, 153, 247, 152,
21, 95, 298, 143, 163, 82, 29, 312, 315, 290,
289, 305, 133, 288, 262, 217, 131, 88, 31, 52,
37, 102, 118, 101, 35, 317, 97, 34, 63, 23,
121, 55, 20, 33, 315, 327, 322, 18, 17, 16,
15, 14, 13, 12, 11, 10, 9, 8, 7, 129,
128, 6, 5, 4, 3, 149, 186, 185, 313, 229,
184, 148, 252, 300, 138, 182, 145, 139, 219, 140,
167, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 151, 0, 0, 160, 0, 0,
0, 0, 169, 0, 209, 0, 212, 0, 0, 0,
170, 0, 0, 0, 172, 0, 0, 0, 0, 213,
0, 0, 0, 0, 224, 0, 0, 310, 0, 0,
309, 0, 0, 0, 0, 0, 226, 228, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 149, 0, 0,
0, 0, 0, 148, 242, 0, 0, 0, 0, 0,
0, 0, 0, 268, 303, 0, 0, 0, 0, 0,
0, 269, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 294,
281, 299, 0, 0, 282 };
short yypact[]={
-43, -43,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-115,-143,-143, -80,-138,-160,-171,-126,-190,-100,
-143, -23,-143, -87, -89,-107,-143,-198,-1000,-1000,
-1000,-1000,-1000, -19, -91, -25,-1000,-1000,-1000,-1000,
-1000,-1000,-133,-1000,-1000,-133,-1000,-1000,-1000,-1000,
-191,-1000,-196,-133,-1000,-1000,-1000,-185,-127,-128,
-1000,-182,-1000,-1000,-183,-1000,-1000,-1000,-1000,-184,
-1000,-143,-133,-1000,-1000,-1000,-1000,-106,-194,-1000,
-1000,-1000,-1000,-1000,-1000,-185,-129,-133,-1000,-1000,
-1000,-198,-133,-1000,-1000,-1000,-113,-122,-139,-1000,
-1000,-1000,-130,-1000,-1000,-1000,-1000,-1000,-198,-143,
-143,-122,-143,-1000,-1000,-161,-157,-131,-207, -74,
-132,-197, -23,-133,-1000,-1000,-1000, -75,-198,-122,
-1000,-175,-1000,-286,-1000,-211,-1000, -77,-1000,-237,
-76,-122,-253,-186, -77,-212, -77,-1000,-1000,-1000,
-1000,-1000,-1000,-286,-1000, -97,-1000,-109,-142,-1000,
-1000,-134,-122,-1000,-1000,-162,-1000,-1000,-1000,-296,
-286,-286,-1000,-250,-1000,-1000,-263,-199,-201,-235,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-246,-1000,
-139,-263,-1000,-1000,-135,-140,-1000, -68,-143,-163,
-143,-1000,-143,-296,-121,-144,-1000, -79,-137,-213,
-1000,-1000,-1000,-1000,-162,-286,-289,-262,-1000,-263,
-263,-263,-263,-1000,-1000,-1000,-1000,-263,-263,-263,
-263,-141,-1000,-223,-1000,-1000,-1000,-153,-1000,-1000,
-77,-1000,-1000,-1000, -77,-1000,-1000,-146,-1000,-188,
-1000,-280, -67,-147,-1000,-1000,-1000,-142,-1000,-1000,
-1000,-1000,-223,-1000,-292,-269,-226,-229,-245,-239,
-1000,-163,-143,-225,-1000, -81,-144,-145,-122,-103,
-103,-166,-1000,-1000,-1000,-1000,-263,-263,-260,-1000,
-1000,-146,-167,-1000,-1000,-1000,-1000,-1000,-148,-1000,
-1000,-282,-236,-192,-1000,-223,-1000,-1000,-1000,-110,
-168,-1000,-277,-263,-150,-111,-1000,-1000,-1000,-169,
-284,-170,-1000 };
short yypgo[]={
0, 361, 360, 358, 211, 255, 356, 243, 12, 235,
355, 0, 350, 349, 348, 1, 242, 236, 347, 346,
70, 257, 344, 343, 342, 341, 338, 337, 336, 335,
334, 333, 332, 331, 330, 329, 328, 327, 323, 322,
321, 256, 319, 318, 317, 316, 314, 313, 311, 310,
309, 308, 307, 306, 305, 304, 303, 249, 302, 300,
119, 299, 116, 296, 295, 294, 229, 293, 290, 289,
288, 287, 199, 286, 285, 284, 258, 282, 278, 277,
276, 275, 274, 250, 273, 272, 271, 270, 269, 268,
267, 266, 167, 265, 264, 13, 263, 262, 261, 260,
228 };
short yyr1[]={
0, 1, 1, 1, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 33, 38, 22, 39, 40, 40, 40, 40, 40,
25, 42, 43, 43, 43, 43, 34, 44, 45, 45,
45, 45, 35, 46, 47, 47, 47, 48, 48, 48,
37, 49, 50, 31, 51, 52, 52, 57, 57, 57,
57, 57, 53, 58, 58, 58, 2, 2, 3, 3,
4, 54, 54, 55, 55, 55, 56, 56, 56, 56,
61, 62, 59, 60, 29, 63, 64, 64, 64, 64,
64, 65, 65, 41, 5, 6, 6, 7, 7, 7,
66, 66, 8, 8, 67, 9, 9, 9, 9, 10,
13, 13, 13, 11, 11, 11, 11, 11, 11, 11,
11, 11, 12, 12, 14, 14, 15, 16, 17, 18,
18, 18, 18, 18, 18, 18, 19, 23, 68, 69,
69, 71, 71, 72, 72, 20, 73, 73, 70, 70,
24, 74, 26, 26, 75, 77, 77, 78, 78, 78,
27, 27, 27, 79, 81, 81, 81, 80, 80, 80,
83, 83, 82, 82, 28, 84, 85, 30, 86, 87,
88, 88, 90, 91, 91, 92, 92, 89, 89, 93,
94, 94, 95, 76, 76, 32, 96, 36, 97, 98,
99, 99, 100 };
short yyr2[]={
0, 2, 1, 0, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 5, 1, 5, 1, 1, 1, 1, 1, 0,
4, 1, 1, 1, 1, 0, 5, 1, 1, 1,
1, 0, 4, 1, 2, 0, 1, 1, 1, 0,
3, 2, 2, 8, 2, 1, 3, 1, 1, 1,
1, 1, 2, 1, 1, 1, 3, 0, 1, 3,
1, 2, 2, 2, 2, 0, 2, 2, 2, 2,
0, 0, 8, 4, 5, 2, 1, 1, 1, 1,
0, 1, 0, 1, 3, 1, 3, 3, 1, 3,
1, 1, 2, 0, 1, 3, 2, 3, 1, 3,
1, 1, 1, 1, 1, 3, 3, 3, 3, 2,
4, 6, 7, 5, 1, 3, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 7, 1, 1,
0, 3, 5, 1, 1, 1, 3, 5, 1, 1,
5, 1, 2, 2, 1, 3, 3, 1, 3, 1,
2, 1, 2, 1, 2, 2, 2, 1, 3, 1,
1, 1, 1, 3, 4, 5, 1, 6, 1, 1,
2, 0, 1, 1, 3, 1, 3, 2, 0, 1,
1, 3, 3, 1, 3, 2, 1, 4, 1, 3,
1, 1, 1 };
short yychk[]={
-1000, -1, -21, -22, -23, -24, -25, -26, -27, -28,
-29, -30, -31, -32, -33, -34, -35, -36, -37, 256,
-39, -68, -74, -42, -75, -77, -79, -81, -84, -63,
-86, -51, -96, -38, -44, -46, -97, -49, 257, 258,
259, 260, 261, 262, -85, 270, 264, 265, 266, 267,
268, 269, -50, 263, -21, -40, 278, 284, 285, 283,
-20, 288, -20, -43, 277, 283, 276, -76, 273, 271,
-20, -78, 290, 274, -80, -83, 274, 288, 289, -82,
288, 295, -64, 283, 284, 277, 282, -20, -52, -57,
274, 268, 260, 257, 267, -76, 282, -45, 278, 277,
283, -47, -48, 279, 278, 285, -20, -5, 295, 272,
271, 273, 283, 272, 271, 273, -41, 288, -41, 295,
295, -41, 294, 288, 288, 294, 294, 294, -76, -41,
285, -53, 294, -58, 283, 282, 285, 288, -41, -5,
-41, 286, -8, -67, 287, -6, -7, 288, -16, -17,
288, -5, -69, -71, -20, -73, -20, -8, -20, 290,
-83, 288, 297, -65, 281, -87, 288, -2, 295, -57,
-41, 281, -5, -8, -98, -99, -20,-100, 290, -9,
295, 307, -10, -11, -12, -18, -19, 308, 309, 310,
290, 291, 292, 293, 289, 288, -16, 301, -17, 297,
294, -66, 281, 275, 296, 281, -8, 297, 294, -66,
294, 297, -66, -9, -88, -90, 283, -54, 285, -3,
-4, 288, 288, -8,-100, 306, -9, -11, -9, -13,
303, 302, 301, 305, 281, 304, -11, 295, 295, 295,
295, 296, -7, -11, 274, 288, 288, -70, 278, 276,
-20, -72, -20, 289, -20, -20, -89, -93, 287, -91,
-92, 288, -55, 280, 288, 274, 297, 294,-100, -9,
297, 297, -11, -11, -11, -11, -11, -11, -11, -11,
289, -66, -66, -94, -95, 288, 294, 298, -56, -59,
-61, 276, 288, 274, -4, 297, 294, 275, -8, -72,
-20, 294, 281, -92, 288, -8, -60, -62, 283, -60,
-62, 290, -11, -14, -15, -11, 297, -95, 290, 288,
298, 297, -8, 294, 285, 290, 297, -15, 288, 285,
290, 298, 290 };
short yydef[]={
3, -2, 2, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
29, 0, 0, 35, 0, 0, 161, 0, 0, 90,
0, 0, 0, 0, 41, -2, 0, 0, 24, 138,
151, 31, 154, 163, 0, 0, 178, 196, 22, 37,
43, 198, 0, 176, 1, 0, 25, 26, 27, 28,
0, 145, 0, 0, 32, 33, 34, 152, 0, 0,
193, 153, 157, 159, 160, 167, 169, 170, 171, 162,
172, 0, 0, 86, 87, 88, 89, 0, 0, 55,
57, 58, 59, 60, 61, 195, 0, 0, 38, 39,
40, 0, 0, 46, 47, 48, 0, 103, 0, 164,
165, 166, 0, 52, 54, 85, 51, 93, 0, 140,
0, 103, 0, 155, 156, 0, 0, 0, 0, 92,
0, 67, 0, 0, 63, 64, 65, 0, 0, 103,
44, 0, 50, 0, 104, 0, 95, 128, 98, 0,
0, 103, 0, 139, 0, 0, 0, 30, 194, 158,
168, 173, 174, 0, 91, 181, 179, 0, 0, 56,
62, 0, 103, 42, 197, 0, 200, 201, 202, 102,
0, 0, 108, 0, 113, 114, 0, 0, 0, 0,
129, 130, 131, 132, 133, -2, 135, 136, 0, 94,
0, 0, 100, 101, 0, 0, 23, 0, 0, 0,
0, 150, 0, 84, 188, 0, 182, 75, 0, 0,
68, 70, 21, 36, 0, 0, 0, 0, 106, 0,
0, 0, 0, 110, 111, 112, 119, 0, 0, 0,
0, 0, 96, 97, 99, 127, 175, 0, 148, 149,
0, 141, 143, 144, 0, 146, 177, 0, 189, 180,
183, 185, 80, 0, 71, 72, 66, 0, 199, 107,
105, 118, 109, 115, 116, 117, 0, 0, 0, 103,
137, 0, 0, 187, 190, 0, 0, 0, 103, 81,
81, 0, 73, 74, 69, 120, 0, 0, 0, 142,
147, 0, 0, 184, 186, 53, 76, 78, 0, 77,
79, 0, 0, 103, 124, 126, 123, 191, 192, 0,
0, 121, 0, 0, 0, 0, 122, 125, 83, 0,
0, 0, 82 };
#
# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)
/* parser for yacc output */
#ifdef YYDEBUG
int yydebug = 0; /* 1 for debugging */
#endif
YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
int yychar = -1; /* current input token number */
int yynerrs = 0; /* number of errors */
short yyerrflag = 0; /* error recovery flag */
yyparse() {
short yys[YYMAXDEPTH];
short yyj, yym;
register YYSTYPE *yypvt;
register short yystate, *yyps, yyn;
register YYSTYPE *yypv;
register short *yyxi;
yystate = 0;
yychar = -1;
yynerrs = 0;
yyerrflag = 0;
yyps= &yys[-1];
yypv= &yyv[-1];
yystack: /* put a state and value onto the stack */
#ifdef YYDEBUG
if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );
#endif
if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
*yyps = yystate;
++yypv;
*yypv = yyval;
yynewstate:
yyn = yypact[yystate];
if( yyn<= YYFLAG ) goto yydefault; /* simple state */
if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
yychar = -1;
yyval = yylval;
yystate = yyn;
if( yyerrflag > 0 ) --yyerrflag;
goto yystack;
}
yydefault:
/* default state action */
if( (yyn=yydef[yystate]) == -2 ) {
if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
/* look through exception table */
for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
while( *(yyxi+=2) >= 0 ){
if( *yyxi == yychar ) break;
}
if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */
}
if( yyn == 0 ){ /* error */
/* error ... attempt to resume parsing */
switch( yyerrflag ){
case 0: /* brand new error */
yyerror( "syntax error" );
yyerrlab:
++yynerrs;
case 1:
case 2: /* incompletely recovered error ... try again */
yyerrflag = 3;
/* find a state where "error" is a legal shift action */
while ( yyps >= yys ) {
yyn = yypact[*yyps] + YYERRCODE;
if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
yystate = yyact[yyn]; /* simulate a shift of "error" */
goto yystack;
}
yyn = yypact[*yyps];
/* the current yyps has no shift onn "error", pop stack */
#ifdef YYDEBUG
if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
#endif
--yyps;
--yypv;
}
/* there is no state on the stack with an error shift ... abort */
yyabort:
return(1);
case 3: /* no shift yet; clobber input char */
#ifdef YYDEBUG
if( yydebug ) printf( "error recovery discards char %d\n", yychar );
#endif
if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
yychar = -1;
goto yynewstate; /* try again in the same state */
}
}
/* reduction by production yyn */
#ifdef YYDEBUG
if( yydebug ) printf("reduce %d\n",yyn);
#endif
yyps -= yyr2[yyn];
yypvt = yypv;
yypv -= yyr2[yyn];
yyval = yypv[1];
yym=yyn;
/* consult goto table to find next state */
yyn = yyr1[yyn];
yyj = yypgo[yyn] + *yyps + 1;
if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
switch(yym){
case 1:
# line 156 "grammar.z"
{
# ifdef xPTR1
tTfp(38, 0, "*** [program stmnt] parsed.\n");
# endif
if (endquelst(Opflag) < 0)
return (-1);
} break;
case 2:
# line 165 "grammar.z"
{
# ifdef xPTR1
tTfp(38, 1, "*** [stmnt] parsed.\n");
# endif
if (endquelst(Opflag) < 0)
return (-1);
} break;
case 3:
# line 175 "grammar.z"
{
# ifdef xPTR1
tTfp(38, 2, "*** [(NULL)] parsed.\n");
# endif
} break;
case 20:
# line 198 "grammar.z"
{
# ifdef xPTR1
tTfp(38, 0, "*** [error] parsed.\n");
# endif
} break;
case 21:
# line 205 "grammar.z"
{
if ((i = openr(&Reldesc, -1, yypvt[-0].string_type)) < 0)
syserr("relname: error in openr '%d'", i);
if (i > 0)
{
/* invalid relation name */
par_error(RNGEXIST, WARN, yypvt[-0].string_type, 0);
YYERROR;
}
else
rngent(R_EXTERNAL, yypvt[-2].string_type, &Reldesc);
} break;
case 22:
# line 219 "grammar.z"
{
Opflag = mdRANGE;
} break;
case 23:
# line 224 "grammar.z"
{
/* make root node */
Lastree = tree(yypvt[-1].tree_type, yypvt[-0].tree_type, ROOT, sizeof(struct rootnode), 1);
} break;
case 24:
# line 230 "grammar.z"
{
Opflag = mdAPP;
} break;
case 30:
# line 241 "grammar.z"
{
/* make root node for delete, with a TIDNODE at leftmost */
Lastree = tree(tree(NULL, Tidnode, RESDOM, sizeof(struct resdomnode), NULL), yypvt[-0].tree_type, ROOT, sizeof(struct rootnode), 1);
} break;
case 31:
# line 247 "grammar.z"
{
Opflag = mdDEL;
} break;
case 36:
# line 257 "grammar.z"
{
/* make root node for replace */
Lastree = tree(yypvt[-1].tree_type, yypvt[-0].tree_type, ROOT, sizeof(struct rootnode), 1);
} break;
case 37:
# line 263 "grammar.z"
{
Opflag = mdREPL;
} break;
case 42:
# line 273 "grammar.z"
{
/* make root node for retrieve */
Lastree = tree(yypvt[-1].tree_type, yypvt[-0].tree_type, ROOT, sizeof(struct rootnode), 1);
} break;
case 43:
# line 279 "grammar.z"
{
Opflag = mdRETR;
} break;
case 44:
# line 284 "grammar.z"
{
/* set up pipe block and save relname for create */
# ifdef xPTR2
tTfp(38, 4, "retclause: Rsdmno %d", Rsdmno);
# endif
Rsdmno = 0;
setp(PV_STR, "0"); /* relstat = nil */
setp(PV_STR, trim_relname(Parrng[Resrng].vardesc.reldum.relid));
} break;
case 45:
# line 294 "grammar.z"
{
/* no result relation, output to terminal */
Rsdmno = 0;
Resrng = -1;
} break;
case 46:
# line 300 "grammar.z"
{
Opflag = mdRET_UNI;
Rsdmno = 0;
Resrng = -1;
} break;
case 50:
# line 311 "grammar.z"
{
Lastree = tree(yypvt[-1].tree_type, yypvt[-0].tree_type, ROOT, sizeof(struct rootnode), 1);
} break;
case 51:
# line 316 "grammar.z"
{
Rsdmno = 0;
setp(PV_STR, "0040"); /* relstat = S_VIEW */
setp(PV_STR, trim_relname(Parrng[Resrng].vardesc.reldum.relid));
} break;
case 52:
# line 323 "grammar.z"
{
Opflag = mdVIEW;
if (!Qrymod)
{
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
}
} break;
case 53:
# line 333 "grammar.z"
{
Lastree = tree(yypvt[-4].tree_type, yypvt[-0].tree_type, ROOT, sizeof(struct rootnode), 1);
} break;
case 54:
# line 338 "grammar.z"
{
Opflag = mdPROT;
if (!Qrymod)
{
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
}
} break;
case 57:
# line 351 "grammar.z"
{
permcom(-1); /* means 'all' commands */
} break;
case 58:
# line 355 "grammar.z"
{
permcom(mdRETR);
} break;
case 59:
# line 359 "grammar.z"
{
permcom(mdDEL);
} break;
case 60:
# line 363 "grammar.z"
{
permcom(mdAPP);
} break;
case 61:
# line 367 "grammar.z"
{
permcom(mdREPL);
} break;
case 62:
# line 372 "grammar.z"
{
/* put command vector into list now since this always happens */
setp(PV_INT, Permcomd);
Permcomd = 0; /* reset command map */
setp(PV_STR, trim_relname(Parrng[Resrng].vardesc.reldum.relid));
bmove(Parrng[Resrng].vardesc.reldum.relowner, permbuf, 2);
permbuf[2] = 0;
setp(PV_STR, permbuf);
} break;
case 66:
# line 387 "grammar.z"
{
yyval.tree_type = yypvt[-1].tree_type;
} break;
case 67:
# line 391 "grammar.z"
{
yyval.tree_type = NULL;
} break;
case 69:
# line 397 "grammar.z"
{
/*
** attach bulk of permit tl to leftmost node of new elem
*/
if (!Err_current)
yyval.tree_type = tlprepend(yypvt[-2].tree_type, yypvt[-0].tree_type);
} break;
case 70:
# line 406 "grammar.z"
{
/* Resrng is set by the "relation" production */
if (!Err_current)
{
Trname = yypvt[-0].string_type;
aptr = attlookup(Resrng, Trname);
yyval.tree_type = tree(NULL, NULL, VAR, sizeof(struct varnode), Resrng, aptr);
yyval.tree_type = addresdom(NULL, yyval.tree_type);
}
} break;
case 71:
# line 418 "grammar.z"
{
setp(PV_STR, yypvt[-0].string_type);
} break;
case 72:
# line 422 "grammar.z"
{
setp(PV_STR, "all");
} break;
case 73:
# line 427 "grammar.z"
{
setp(PV_STR, yypvt[-0].string_type);
} break;
case 74:
# line 431 "grammar.z"
{
setp(PV_STR, "all");
} break;
case 75:
# line 435 "grammar.z"
{
setp(PV_STR, "all"); /* default is all */
} break;
case 80:
# line 445 "grammar.z"
{
setp(PV_INT, 0);
setp(PV_INT, 1440);
} break;
case 81:
# line 451 "grammar.z"
{
setp(PV_STR, "sun");
setp(PV_STR, "sat");
} break;
case 82:
# line 457 "grammar.z"
{
setp(PV_INT, timeofday(yypvt[-6].I2_type, yypvt[-4].I2_type));
setp(PV_INT, timeofday(yypvt[-2].I2_type, yypvt[-0].I2_type));
} break;
case 83:
# line 463 "grammar.z"
{
setp(PV_STR, yypvt[-2].string_type);
setp(PV_STR, yypvt[-0].string_type);
} break;
case 84:
# line 469 "grammar.z"
{
Lastree = tree(NULL, norml(yypvt[-0].tree_type), ROOT, sizeof(struct rootnode), 1);
Qlflag--; /* turn off here */
} break;
case 85:
# line 475 "grammar.z"
{
Opflag = mdINTEG;
Qlflag++; /* OK to turn on here because integrity doesn't have a targ list */
if (!Qrymod)
{
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
}
} break;
case 93:
# line 495 "grammar.z"
{
# ifdef xPTR2
tTfp(38, 3, "res rel name/var: '%s'\n", yypvt[-0].string_type);
# endif
switch (Opflag)
{
case mdRETR:
case mdVIEW:
/* result better not be a rel name */
if ((i = openr(&Reldesc, -1, yypvt[-0].string_type)) < 0)
syserr("relation: err openr '%d'", i);
if (i == 0)
{
/* reln exists */
if (bequal(Reldesc.reldum.relowner, Usercode, 2))
{
/* same owner, can't duplicate name */
par_error(RESEXIST, WARN, yypvt[-0].string_type, 0);
YYERROR;
}
else if (!Err_current)
{
/* owned by dba -- purge range table */
rngdel(yypvt[-0].string_type);
}
}
if (!Err_current)
{
bmove(Usercode, Reldesc.reldum.relowner, 2);
pmove(yypvt[-0].string_type, Reldesc.reldum.relid, MAXNAME, ' ');
Resrng = rngent(R_INTERNAL, "", &Reldesc);
}
break;
case mdAPP:
/* result is a rel name */
if (!Err_current)
{
Resrng = rnglook(yypvt[-0].string_type, LOOKREL);
if (Resrng < 0)
{
if ((i = openr(&Reldesc, -1, yypvt[-0].string_type)) < 0)
syserr("relation: err openr '%d'", i);
if (i)
{
/* invalid relation name */
par_error(RESAPPEX, WARN, yypvt[-0].string_type, 0);
YYERROR;
}
Resrng = rngent(R_INTERNAL, "", &Reldesc);
}
else
ctlmod_decl(Resrng);
checkupd(Resrng);
}
break;
case mdPROT:
case mdINTEG:
# ifdef DISTRIB
case mdDISTRIB:
# endif
/* the result is a tuple variable */
Resrng = rnglook(yypvt[-0].string_type, LOOKVAR);
if (Resrng < 0)
{
/* variable not declared */
par_error(NOVBLE, WARN, yypvt[-0].string_type, 0);
YYERROR;
}
else
ctlmod_decl(Resrng);
break;
case mdREPL:
case mdDEL:
/* the result is a tuple variable */
Resrng = rnglook(yypvt[-0].string_type, LOOKVAR);
if (Resrng < 0)
/* variable not declared */
{
par_error(NOVBLE, WARN, yypvt[-0].string_type, 0);
YYERROR;
}
else
ctlmod_decl(Resrng);
checkupd(Resrng);
Tidnode = tree(NULL, NULL, VAR, sizeof(struct varnode), Resrng, &Faketid);
break;
}
} break;
case 94:
# line 589 "grammar.z"
{
if (Patflag)
{
/* no patt match in targ list */
par_error(NOPATMAT, WARN, 0);
}
yyval.tree_type = yypvt[-1].tree_type;
/*
** replace must have tid node as left branch
** (so does delete but it doesn't have a targ list)
*/
if (Opflag == mdREPL && !Err_current)
{
yyval.tree_type = tlprepend(tree(NULL, Tidnode, RESDOM, sizeof(struct resdomnode), 0), yyval.tree_type);
}
} break;
case 96:
# line 609 "grammar.z"
{
/*
** attach bulk of targ list to leftmost node
** of new element
*/
if (!Err_current)
yyval.tree_type = tlprepend(yypvt[-2].tree_type, yypvt[-0].tree_type);
} break;
case 97:
# line 619 "grammar.z"
{
Trname = yypvt[-2].string_type;
/* make a new resdom entry for targ list */
if (!Err_current)
yyval.tree_type = addresdom(NULL, yypvt[-0].tree_type);
} break;
case 98:
# line 626 "grammar.z"
{
/* makes a new resdom entry for targ list */
if (!Err_current)
yyval.tree_type = addresdom(NULL, yypvt[-0].tree_type);
} break;
case 99:
# line 632 "grammar.z"
{
if (Opflag == mdREPL)
{
/* ALL not defined for REPLACE */
par_error(REPALL, WARN,
trim_relname(Qt.qt_rangev[yypvt[-2].rng_type].rngvdesc->relvname), 0);
YYERROR;
}
/* makes set of new resdom entries for targ list */
else if (!Err_current)
yyval.tree_type = xdot(yypvt[-2].rng_type);
} break;
case 102:
# line 649 "grammar.z"
{
yyval.tree_type = norml(yypvt[-0].tree_type);
Qlflag--;
} break;
case 103:
# line 654 "grammar.z"
{
/* null qualification */
yyval.tree_type = norml(NULL);
} break;
case 104:
# line 660 "grammar.z"
{
Qlflag++;
} break;
case 105:
# line 665 "grammar.z"
{
yyval.tree_type = yypvt[-1].tree_type;
} break;
case 106:
# line 669 "grammar.z"
{
yyval.tree_type = tree(NULL, yypvt[-0].tree_type, UOP, 2, yypvt[-1].type_type);
} break;
case 107:
# line 673 "grammar.z"
{
yyval.tree_type = tree(yypvt[-2].tree_type, yypvt[-0].tree_type, yypvt[-1].type_type, sizeof (struct rootnode) -2, 0);
} break;
case 109:
# line 679 "grammar.z"
{
yyval.tree_type = tree(yypvt[-2].tree_type, yypvt[-0].tree_type, BOP, 2, yypvt[-1].type_type);
} break;
case 115:
# line 690 "grammar.z"
{
yyval.tree_type = tree(yypvt[-2].tree_type, yypvt[-0].tree_type, BOP, 2, yypvt[-1].type_type);
} break;
case 116:
# line 694 "grammar.z"
{
yyval.tree_type = tree(yypvt[-2].tree_type, yypvt[-0].tree_type, BOP, 2, yypvt[-1].type_type);
} break;
case 117:
# line 698 "grammar.z"
{
yyval.tree_type = tree(yypvt[-2].tree_type, yypvt[-0].tree_type, BOP, 2, yypvt[-1].type_type);
} break;
case 118:
# line 702 "grammar.z"
{
yyval.tree_type = yypvt[-1].tree_type;
} break;
case 119:
# line 706 "grammar.z"
{
yyval.tree_type = tree(NULL, yypvt[-0].tree_type, UOP, 2, yypvt[-1].type_type);
} break;
case 120:
# line 710 "grammar.z"
{
yyval.tree_type = tree(yypvt[-1].tree_type, NULL, UOP, 2, yypvt[-3].type_type);
} break;
case 121:
# line 714 "grammar.z"
{
yyval.tree_type = tree(yypvt[-3].tree_type, yypvt[-1].tree_type, BOP, 2, yypvt[-5].type_type);
} break;
case 122:
# line 719 "grammar.z"
{
# ifdef xPTR2
tTfp(39, 0, "agg func\n");
# endif
windup(yypvt[-2].tree_type);
yyval.tree_type = tree(tree(yypvt[-2].tree_type, tree(NULL, yypvt[-4].tree_type, AOP, 6, yypvt[-6].type_type), BYHEAD, sizeof(struct resdomnode), 0), yypvt[-1].tree_type, AGHEAD, sizeof(struct rootnode), 0);
tlprepend(tree(NULL, NULL, TREE, 0), yyval.tree_type);
} break;
case 123:
# line 728 "grammar.z"
{
yyval.tree_type = tree(tree(NULL, yypvt[-2].tree_type, AOP, 6, yypvt[-4].type_type), yypvt[-1].tree_type, AGHEAD, sizeof(struct rootnode), 0);
} break;
case 125:
# line 734 "grammar.z"
{
yyval.tree_type = tlprepend(yypvt[-2].tree_type, yypvt[-0].tree_type);
} break;
case 126:
# line 739 "grammar.z"
{
yyval.tree_type = tree(NULL, yypvt[-0].tree_type, RESDOM, sizeof(struct resdomnode), Rsdmno);
} break;
case 127:
# line 744 "grammar.z"
{
# ifdef xPTR2
tTfp(39, 1, "attrib %12s.%12s found\n",
Qt.qt_rangev[yypvt[-2].rng_type].rngvdesc->relvname, yypvt[-0].string_type);
# endif
/* remember attribute name */
Trname = yypvt[-0].string_type;
/* look up attribute */
aptr = attlookup(yypvt[-2].rng_type, Trname);
yyval.tree_type = tree(NULL, NULL, VAR, sizeof(struct varnode), yypvt[-2].rng_type, aptr);
} break;
case 128:
# line 759 "grammar.z"
{
yyval.rng_type = rnglook(yypvt[-0].string_type, LOOKVAR);
if (yyval.rng_type < 0)
{
/* variable not declared */
par_error(NOVBLE, WARN, yypvt[-0].string_type, 0);
YYERROR;
}
else
ctlmod_decl(yyval.rng_type);
} break;
case 129:
# line 772 "grammar.z"
{
yyval.tree_type = tree(NULL, NULL, INT, 2, yypvt[-0].I2_type);
} break;
case 130:
# line 776 "grammar.z"
{
yyval.tree_type = tree(NULL, NULL, INT, 4, yypvt[-0].I4_type);
} break;
case 131:
# line 780 "grammar.z"
{
yyval.tree_type = tree(NULL, NULL, FLOAT, 4, yypvt[-0].F4_type);
} break;
case 132:
# line 784 "grammar.z"
{
yyval.tree_type = tree(NULL, NULL, FLOAT, 8, yypvt[-0].F8_type);
} break;
case 133:
# line 788 "grammar.z"
{
if (patmat(yypvt[-0].string_type) && !Qlflag)
Patflag = 1;
yyval.tree_type = tree(NULL, NULL, CHAR, length(yypvt[-0].string_type), yypvt[-0].string_type);
} break;
case 134:
# line 794 "grammar.z"
{
yyval.tree_type = tree(NULL, NULL, COP, 2, yypvt[-0].string_type);
} break;
case 136:
# line 800 "grammar.z"
{
if (yypvt[-0].type_type == opADD)
yyval.type_type = opPLUS;
else
if (yypvt[-0].type_type == opSUB)
yyval.type_type = opMINUS;
} break;
case 137:
# line 809 "grammar.z"
{
# ifdef xPTR2
tTfp(39, 3, "copy %12s,%12s\n", yypvt[-5].string_type, yypvt[-0].string_type);
# endif
setp(PV_STR, yypvt[-0].string_type);
} break;
case 138:
# line 818 "grammar.z"
{
Opflag = mdCOPY;
} break;
case 144:
# line 830 "grammar.z"
{
setp(PV_STR, yypvt[-0].string_type);
} break;
case 145:
# line 835 "grammar.z"
{
if (!Err_current)
{
setp(PV_STR, yypvt[-0].string_type);
if (Opflag == mdDESTROY || Opflag == mdCREATE
# ifdef DISTRIB
|| Opflag == mdDCREATE
# endif
)
rngdel(yypvt[-0].string_type);
}
} break;
case 148:
# line 852 "grammar.z"
{
setp(PV_STR, "\0");
setp(PV_STR, "i");
} break;
case 149:
# line 857 "grammar.z"
{
setp(PV_STR, "\0");
setp(PV_STR, "f");
} break;
case 151:
# line 865 "grammar.z"
{
Opflag = mdCREATE;
/* set up parameters for regular create */
setp(PV_STR, "0"); /* relstat = nil */
} break;
case 154:
# line 876 "grammar.z"
{
Opflag = mdDESTROY;
} break;
case 155:
# line 881 "grammar.z"
{
Opflag = mdREMQM;
if (!Qrymod)
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
setp(PV_STR, "6");
setp(PV_STR, yypvt[-0].string_type);
} break;
case 156:
# line 890 "grammar.z"
{
Opflag = mdREMQM;
if (!Qrymod)
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
setp(PV_STR, "5");
setp(PV_STR, yypvt[-0].string_type);
} break;
case 157:
# line 900 "grammar.z"
{
i = iocv(*(yypvt[-0].I2_type));
setp(PV_STR, i);
} break;
case 158:
# line 905 "grammar.z"
{
i = iocv(*(yypvt[-0].I2_type));
setp(PV_STR, i);
} break;
case 161:
# line 913 "grammar.z"
{
setp(PV_STR, "2"); /* all relns */
} break;
case 163:
# line 919 "grammar.z"
{
Opflag = mdHELP;
} break;
case 164:
# line 924 "grammar.z"
{
Opflag = mdDISPLAY;
if (!Qrymod)
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
smove("4", hqmbuf);
} break;
case 165:
# line 932 "grammar.z"
{
Opflag = mdDISPLAY;
if (!Qrymod)
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
smove("5", hqmbuf);
} break;
case 166:
# line 940 "grammar.z"
{
Opflag = mdDISPLAY;
if (!Qrymod)
/* no qrymod in database */
par_error(NOQRYMOD, WARN, 0);
smove("6", hqmbuf);
} break;
case 169:
# line 951 "grammar.z"
{
setp(PV_STR, "3");
} break;
case 170:
# line 956 "grammar.z"
{
/* relation */
setp(PV_STR, "0");
setp(PV_STR, yypvt[-0].string_type);
} break;
case 171:
# line 962 "grammar.z"
{
/* manual page */
setp(PV_STR, "1");
setp(PV_STR, yypvt[-0].string_type);
} break;
case 172:
# line 969 "grammar.z"
{
setp(PV_STR, hqmbuf);
setp(PV_STR, yypvt[-0].string_type);
} break;
case 173:
# line 974 "grammar.z"
{
setp(PV_STR, hqmbuf);
setp(PV_STR, yypvt[-0].string_type);
} break;
case 174:
# line 980 "grammar.z"
{
if (Rsdmno > MAXKEYS)
/* too many attributes in key */
par_error(INDEXTRA, WARN, 0);
} break;
case 175:
# line 987 "grammar.z"
{
/* init INDEX command */
Rsdmno = 0;
setp(PV_STR, yypvt[-2].string_type);
setp(PV_STR, yypvt[-0].string_type);
Indexname = yypvt[-0].string_type;
} break;
case 176:
# line 996 "grammar.z"
{
Opflag = mdINDEX;
} break;
case 178:
# line 1003 "grammar.z"
{
Opflag = mdMODIFY;
Rsdmno = 0;
} break;
case 179:
# line 1009 "grammar.z"
{
setp(PV_STR, yypvt[-0].string_type);
} break;
case 182:
# line 1016 "grammar.z"
{
setp(PV_STR, "name");
} break;
case 185:
# line 1024 "grammar.z"
{
setp(PV_STR, yypvt[-0].string_type);
} break;
case 186:
# line 1028 "grammar.z"
{
concat(yypvt[-2].string_type, ztack(":", yypvt[-0].string_type), modbuf);
setp(PV_STR, modbuf);
} break;
case 189:
# line 1037 "grammar.z"
{
setp(PV_STR, "\0");
} break;
case 192:
# line 1045 "grammar.z"
{
setp(PV_STR, yypvt[-2].string_type);
i = iocv(*(yypvt[-0].I2_type));
setp(PV_STR, i);
} break;
case 193:
# line 1052 "grammar.z"
{
Rsdmno++;
} break;
case 194:
# line 1056 "grammar.z"
{
Rsdmno++;
} break;
case 196:
# line 1063 "grammar.z"
{
Opflag = mdPRINT;
} break;
case 198:
# line 1070 "grammar.z"
{
Opflag = mdSAVE;
} break;
case 202:
# line 1080 "grammar.z"
{
i = iocv(*(yypvt[-0].I2_type));
# ifdef xPTR3
tTfp(39, 4, "day_year: %s\n", i);
# endif
setp(PV_STR, i);
} break;
}
goto yystack; /* stack new state and value */
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.