📄 sdbms_sql.cpp
字号:
#include <yacc.h>
#define YYPARSEFAST
#line 1 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
#include "stdafx.h"
#include "sdbms.h"
#include "Sdbms_GlobalDefines.h"
#include "Sdbms_DataStruct.h"
#include "SqlMsg.h"
#include "sdbms_sql.h"
extern char * g_strSQL;
extern CSdbms g_sdbms;
extern CSqlMessage g_msg;
char g_strRangeItems[1000];
char g_strUserNames[1000];
char g_strRoleNames[1000];
char g_strSystemRights[1000];
char g_strObjectRights[1000];
char g_strTableNames[1000];
char g_strFieldNames[1000];
char g_strTableFieldNames[1000];
char g_strKeyColNames[1000];
struct Operations
{
ObjectRight nSqlID;
CString strFieldNames;
};
Operations g_opers[10]; //记录操作
int g_nOpersCount = 0; //操作个数
CSdbms_Cols g_cols[100]; //最大100列
int g_nColsCount = 0; //实际列数
CSdbms_Values g_values[100]; //最大100列
int g_nValuesCount = 0; //实际列数
CSdbms_Express* g_expr[100]; //最大100
int g_nExprCount = 0; //实际列数
CSdbms_OrderList g_order[100]; //最大100
int g_nOrderCount = 0; //实际列数
ObjectRight g_obright[10]; //10个应该足够了
int g_nObRightCount = 0;
struct KeyWordTable
{
char *strKeyWord;
int nValue;
};
KeyWordTable g_KeyWordTable[] =
{
{"AND", OPAND},
{"OR", OPOR},
{"NOT", OPNOT},
{"CONNECT", CONNECT},
{"CREATE", CREATE},
{"DROP", DROP},
{"ADD", ADD},
{"DEL", DEL},
{"CHANGE", CHANGE},
{"ROLE", ROLE},
{"GRANT", GRANT},
{"REVOKE", REVOKE},
{"SET", SET},
{"AUDIT", AUDIT},
{"NOAUDIT", NOAUDIT},
{"OBJRIGHT", OBJRIGHT},
{"SYSRIGHT", SYSRIGHT},
{"SELECT", SELECT},
{"INSERT", INSERT},
{"UPDATE", UPDATE},
{"DELETE", YDELETE},
{"NULL", YNULL},
{"INTO", INTO},
{"VALUES", VALUES},
{"WHERE", WHERE},
{"ORDER", ORDER},
{"ASC", ASC},
{"DESC", DESC},
{"BELIEVED", BELIEVED},
{"SELF", SELF},
{"DATABASE", DATABASE},
{"TABLE", TABLE},
{"VIEW", VIEW},
{"INDEX", INDEX},
{"CHAR", CHAR},
{"INT", INT},
{"BOOL", BOOL},
{"PRIMARY", PRIMARY},
{"KEY", KEY},
{"WITH", WITH},
{"AS", AS},
{"OF", OF},
{"TO", TO},
{"ON", ON},
{"BY", BY},
{"FROM", FROM},
{"FOR", FOR},
{"USER", USER},
{"ROLE", ROLE},
{"CHILD", CHILD},
{"PARENT", PARENT},
{"TOP", TOP},
{"PASSWORD", PASSWORD},
{"EXECUTED", EXECUTED},
{"OPTION", OPTION},
{"CASCADE", CASCADE},
{"RESTRICT", RESTRICT},
{"SECLEVEL", SECLEVEL},
{"SECURITY", SECURITY},
{"LEVEL", LEVEL},
{"ALLOW", ALLOW},
{"CURRENT", CURRENT},
{"TRUE", TRUE},
{"FALSE", FALSE}
};
#line 127 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
/* repeated because of possible precompiled header */
#include <yacc.h>
#define YYPARSEFAST
#include "sdbms_sql.h"
#ifndef YYSTYPE
#define YYSTYPE int
#endif
#ifndef YYSTACK_SIZE
#define YYSTACK_SIZE 100
#endif
/* (state) stack */
#if (YYSTACK_SIZE) != 0
static yystack_t YYNEAR yystack[(YYSTACK_SIZE)];
yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = yystack;
yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = yystack;
#else
yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = NULL;
yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = NULL;
#endif
/* attribute stack */
#if (YYSTACK_SIZE) != 0
static YYSTYPE YYNEAR yyattributestack[(YYSTACK_SIZE)];
#ifdef YYPROTOTYPE
void YYFAR *YYNEAR YYDCDECL yysattributestackptr = yyattributestack;
void YYFAR *YYNEAR YYDCDECL yyattributestackptr = yyattributestack;
#else
char YYFAR *YYNEAR YYDCDECL yysattributestackptr = (char YYFAR *) yyattributestack;
char YYFAR *YYNEAR YYDCDECL yyattributestackptr = (char YYFAR *) yyattributestack;
#endif
#else
#ifdef YYPROTOTYPE
void YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL;
void YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL;
#else
char YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL;
char YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL;
#endif
#endif
int YYNEAR YYDCDECL yysstack_size = (YYSTACK_SIZE);
int YYNEAR YYDCDECL yystack_size = (YYSTACK_SIZE);
/* attributes */
YYSTYPE YYNEAR yyval;
YYSTYPE YYNEAR yylval;
#ifdef YYPROTOTYPE
void YYFAR *YYNEAR YYDCDECL yyvalptr = &yyval;
void YYFAR *YYNEAR YYDCDECL yylvalptr = &yylval;
#else
char YYFAR *YYNEAR YYDCDECL yyvalptr = (char *) &yyval;
char YYFAR *YYNEAR YYDCDECL yylvalptr = (char *) &yylval;
#endif
size_t YYNEAR YYDCDECL yyattribute_size = sizeof(YYSTYPE);
/* yyattribute */
#ifdef YYDEBUG
#ifdef YYPROTOTYPE
static YYSTYPE YYFAR *yyattribute1(int index)
#else
static YYSTYPE YYFAR *yyattribute1(index)
int index;
#endif
{
YYSTYPE YYFAR *p = &((YYSTYPE YYFAR *) yyattributestackptr)[yytop + index];
return p;
}
#define yyattribute(index) (*yyattribute1(index))
#else
#define yyattribute(index) (((YYSTYPE YYFAR *) yyattributestackptr)[yytop + (index)])
#endif
#ifdef YYDEBUG
#ifdef YYPROTOTYPE
static void yyinitdebug(YYSTYPE YYFAR **p, int count)
#else
static void yyinitdebug(p, count)
YYSTYPE YYFAR **p;
int count;
#endif
{
int i;
yyassert(p != NULL);
yyassert(count >= 1);
for (i = 0; i < count; i++) {
p[i] = &((YYSTYPE YYFAR *) yyattributestackptr)[yytop + i - (count - 1)];
}
}
#endif
#ifdef YYPROTOTYPE
void YYCDECL yyparseaction(int action)
#else
void YYCDECL yyparseaction(action)
int action;
#endif
{
switch (action) {
case 0:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[6];
yyinitdebug(yya, 6);
#endif
{
#line 235 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoConnectDB(yyattribute(2 - 5).sval, yyattribute(5 - 5).sval);
delete yyattribute(2 - 5).sval;
delete yyattribute(5 - 5).sval;
#line 244 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 1:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[8];
yyinitdebug(yya, 8);
#endif
{
#line 241 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoConnectDB(yyattribute(2 - 7).sval, yyattribute(7 - 7).sval, yyattribute(4 - 7).sval);
delete yyattribute(2 - 7).sval;
delete yyattribute(4 - 7).sval;
delete yyattribute(7 - 7).sval;
#line 262 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 2:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 252 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoCreateDatabase(yyattribute(3 - 3).sval);
delete yyattribute(3 - 3).sval;
#line 278 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 3:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 261 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoDropDatabase(yyattribute(3 - 3).sval);
delete yyattribute(3 - 3).sval;
#line 294 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 4:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 267 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
yyval.sval = yyattribute(1 - 1).sval;
#line 307 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 5:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[7];
yyinitdebug(yya, 7);
#endif
{
#line 272 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoCreateUser(yyattribute(3 - 6).sval, yyattribute(6 - 6).sval);
delete yyattribute(3 - 6).sval;
delete yyattribute(6 - 6).sval;
#line 324 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 6:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[10];
yyinitdebug(yya, 10);
#endif
{
#line 278 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoCreateUser(yyattribute(3 - 9).sval, yyattribute(6 - 9).sval, yyattribute(9 - 9).nval);
delete yyattribute(3 - 9).sval;
delete yyattribute(6 - 9).sval;
#line 341 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 7:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[10];
yyinitdebug(yya, 10);
#endif
{
#line 284 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
ASSERT(yyattribute(9 - 9).slval);
g_sdbms.DoCreateUser(yyattribute(3 - 9).sval, yyattribute(6 - 9).sval, yyattribute(9 - 9).slval->m_nClassifaction);
delete yyattribute(3 - 9).sval;
delete yyattribute(6 - 9).sval;
delete yyattribute(9 - 9).slval;
#line 360 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 8:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 295 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.PreDropUser(g_strUserNames);
g_strUserNames[0] = '\0';
#line 376 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 9:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 301 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
yyval.sval = yyattribute(1 - 1).sval;
#line 389 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 10:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 304 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
strcat(g_strUserNames, ",");
strcat(g_strUserNames, yyattribute(3 - 3).sval);
delete yyattribute(3 - 3).sval;
#line 406 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 11:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 309 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
strcat(g_strUserNames, yyattribute(1 - 1).sval);
delete yyattribute(1 - 1).sval;
#line 422 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 12:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 315 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
yyval.sval = yyattribute(1 - 1).sval;
#line 435 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 13:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 320 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoCreateRole(yyattribute(3 - 3).sval);
delete yyattribute(3 - 3).sval;
#line 451 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 14:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[8];
yyinitdebug(yya, 8);
#endif
{
#line 325 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoCreateRole(yyattribute(3 - 7).sval);
g_sdbms.DoSetParentRole(yyattribute(7 - 7).sval, yyattribute(3 - 7).sval);
delete yyattribute(3 - 7).sval;
delete yyattribute(7 - 7).sval;
#line 469 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 15:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[8];
yyinitdebug(yya, 8);
#endif
{
#line 332 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.DoCreateRole(yyattribute(3 - 7).sval);
g_sdbms.PreSetParentRole(yyattribute(3 - 7).sval, g_strRoleNames);
g_strRoleNames[0] = '\0';
delete yyattribute(3 - 7).sval;
#line 487 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 16:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 342 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.PreDropRole(g_strRoleNames);
g_strRoleNames[0] = '\0';
#line 503 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 17:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 348 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
yyval.sval = yyattribute(1 - 1).sval;
#line 516 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 18:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[4];
yyinitdebug(yya, 4);
#endif
{
#line 351 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
strcat(g_strRoleNames, ",");
strcat(g_strRoleNames, yyattribute(3 - 3).sval);
delete yyattribute(3 - 3).sval;
#line 533 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 19:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[2];
yyinitdebug(yya, 2);
#endif
{
#line 356 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
strcat(g_strRoleNames, yyattribute(1 - 1).sval);
delete yyattribute(1 - 1).sval;
#line 549 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 20:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[7];
yyinitdebug(yya, 7);
#endif
{
#line 365 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.PreSetParentRole(yyattribute(4 - 6).sval, g_strRoleNames);
g_strRoleNames[0] = '\0';
delete yyattribute(4 - 6).sval;
#line 566 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
break;
case 21:
{
#ifdef YYDEBUG
YYSTYPE YYFAR *yya[7];
yyinitdebug(yya, 7);
#endif
{
#line 375 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.y"
g_sdbms.PreSetChildRole(yyattribute(6 - 6).sval, g_strRoleNames);
g_strRoleNames[0] = '\0';
delete yyattribute(6 - 6).sval;
#line 583 "E:\\cm\\test\\SdbmsDemo\\sdbms_sql.cpp"
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -