📄 parse.c
字号:
eDbIdExprListDelete((yypminor->yy5)); break;
case 85:
eDbExprListDelete((yypminor->yy64)); break;
case 86:
eDbSrcListDelete((yypminor->yy95)); break;
case 87:
eDbExprListDelete((yypminor->yy64)); break;
case 88:
eDbExprDelete((yypminor->yy82)); break;
case 89:
eDbExprListDelete((yypminor->yy64)); break;
case 90:
eDbExprListDelete((yypminor->yy64)); break;
case 92:
eDbExprListDelete((yypminor->yy64)); break;
case 93:
eDbExprListDelete((yypminor->yy64)); break;
default: break; /* If no destructor action specified: do nothing */
}
}
static int yy_pop_parser_stack(yyParser *pParser){
yyCode yymajor;
yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
if( pParser->yyidx<0 ) return 0;
#ifndef NDEBUG
if( yyTraceFILE && pParser->yyidx>=0 ){
fprintf(yyTraceFILE,"%sPopping %s\n",
yyTracePrompt,
yyTokenName[yytos->major]);
}
#endif
yymajor = yytos->major;
yy_destructor( yymajor, &yytos->minor);
pParser->yyidx--;
return yymajor;
}
void eDbParserFree(void *p,void (*freeProc)(void*)){
yyParser *pParser = (yyParser*)p;
if( pParser==0 ) return;
while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
(*freeProc)((void*)pParser);
}
static int yy_find_shift_action(yyParser *pParser,int iLookAhead){
int i;
int stateno = pParser->yystack[pParser->yyidx].stateno;
/* if( pParser->yyidx<0 ) return YY_NO_ACTION; */
i = yy_shift_ofst[stateno];
if( i==YY_SHIFT_USE_DFLT ){
return yy_default[stateno];
}
if( iLookAhead==YYNOCODE ){
return YY_NO_ACTION;
}
i += iLookAhead;
if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
#ifdef YYFALLBACK
int iFallback; /* Fallback token */
if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
&& (iFallback = yyFallback[iLookAhead])!=0 ){
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
}
#endif
return yy_find_shift_action(pParser, iFallback);
}
#endif
return yy_default[stateno];
}else{
return yy_action[i];
}
}
static int yy_find_reduce_action(yyParser *pParser,int iLookAhead){
int i;
int stateno = pParser->yystack[pParser->yyidx].stateno;
i = yy_reduce_ofst[stateno];
if( i==YY_REDUCE_USE_DFLT ){
return yy_default[stateno];
}
if( iLookAhead==YYNOCODE ){
return YY_NO_ACTION;
}
i += iLookAhead;
if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
return yy_default[stateno];
}else{
return yy_action[i];
}
}
/*
** Perform a shift action.
*/
static void yy_shift(yyParser *yypParser,int yyNewState,int yyMajor,yyMinor *yypMinor){
yyStackEntry *yytos;
yypParser->yyidx++;
if( yypParser->yyidx>=YYSTACKDEPTH ){
eDbParserARG_FETCH;
yypParser->yyidx--;
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
}
#endif
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
/* Here code is inserted which will execute if the parser stack every overflows */
eDbParserARG_STORE; /* Suppress warning about unused %extra_argument var */
return;
}
yytos = &yypParser->yystack[yypParser->yyidx];
yytos->stateno = yyNewState;
yytos->major = yyMajor;
yytos->minor = *yypMinor;
#ifndef NDEBUG
if( yyTraceFILE && yypParser->yyidx>0 ){
int i;
fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
for(i=1; i<=yypParser->yyidx; i++)
fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
fprintf(yyTraceFILE,"\n");
}
#endif
}
/* The following table contains information about every rule that
** is used during the reduce.
*/
static struct {
yyCode lhs; /* Symbol on the left-hand side of the rule */
unsigned char nrhs; /* Number of right-hand side symbols in the rule */
} yyRuleInfo[] = {
{ 59, 1 },
{ 60, 3 },
{ 60, 1 },
{ 62, 1 },
{ 61, 0 },
{ 63, 2 },
{ 64, 3 },
{ 65, 3 },
{ 67, 3 },
{ 67, 1 },
{ 68, 3 },
{ 69, 1 },
{ 71, 2 },
{ 71, 0 },
{ 72, 1 },
{ 72, 1 },
{ 66, 1 },
{ 66, 1 },
{ 66, 1 },
{ 70, 0 },
{ 70, 1 },
{ 70, 4 },
{ 70, 6 },
{ 73, 1 },
{ 73, 2 },
{ 74, 1 },
{ 74, 2 },
{ 74, 2 },
{ 63, 3 },
{ 63, 9 },
{ 75, 1 },
{ 75, 0 },
{ 76, 3 },
{ 76, 1 },
{ 63, 3 },
{ 63, 8 },
{ 79, 3 },
{ 79, 1 },
{ 78, 0 },
{ 78, 3 },
{ 81, 3 },
{ 81, 1 },
{ 63, 4 },
{ 82, 0 },
{ 82, 2 },
{ 63, 5 },
{ 83, 5 },
{ 83, 3 },
{ 63, 9 },
{ 84, 1 },
{ 84, 1 },
{ 84, 0 },
{ 90, 2 },
{ 90, 0 },
{ 85, 3 },
{ 85, 2 },
{ 85, 4 },
{ 91, 2 },
{ 91, 1 },
{ 91, 0 },
{ 86, 4 },
{ 86, 2 },
{ 87, 0 },
{ 87, 3 },
{ 88, 0 },
{ 88, 2 },
{ 89, 0 },
{ 89, 3 },
{ 93, 4 },
{ 93, 2 },
{ 94, 1 },
{ 94, 1 },
{ 94, 0 },
{ 80, 3 },
{ 80, 3 },
{ 80, 1 },
{ 80, 1 },
{ 80, 1 },
{ 80, 1 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 80, 3 },
{ 92, 3 },
};
static void yy_accept(yyParser*); /* Forward Declaration */
/*
** Perform a reduce action and the shift that must immediately
** follow the reduce.
*/
static void yy_reduce(yyParser *yypParser,int yyruleno){
int yygoto; /* The next state */
int yyact; /* The next action */
yyMinor yygotominor; /* The LHS of the rule reduced */
yyStackEntry *yymsp; /* The top of the parser's stack */
int yysize; /* Amount to pop the stack */
eDbParserARG_FETCH;
yymsp = &yypParser->yystack[yypParser->yyidx];
#ifndef NDEBUG
if( yyTraceFILE && yyruleno>=0
&& yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
yyRuleName[yyruleno]);
}
#endif /* NDEBUG */
switch( yyruleno ){
/* Beginning here are the reduction cases. A typical example
** follows:
** case 0:
** #line <lineno> <grammarfile>
** { ... } // User supplied code
** #line <lineno> <thisfile>
** break;
*/
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
eDbExec(pParse); break;
case 4:
eDbBeginParse(pParse, 0); break;
case 5:
break;
case 6:
eDbStartTable(pParse,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy68); break;
case 7:
eDbEndTable(pParse,&yymsp[0].minor.yy0); break;
case 8:
break;
case 9:
break;
case 10:
break;
case 11:
eDbAddColumn(pParse,&yymsp[0].minor.yy68); break;
case 12:
eDbAddPrimaryKey(pParse,0); break;
case 13:
break;
case 14:
yygotominor.yy68 = yymsp[0].minor.yy0; break;
case 15:
yygotominor.yy68 = yymsp[0].minor.yy0; break;
case 16:
yygotominor.yy68 = yymsp[0].minor.yy0; break;
case 17:
yygotominor.yy68 = yymsp[0].minor.yy0; break;
case 18:
yygotominor.yy68 = yymsp[0].minor.yy0; break;
case 19:
break;
case 20:
eDbAddColumnType(pParse,&yymsp[0].minor.yy68,&yymsp[0].minor.yy68); break;
case 21:
eDbAddColumnType(pParse,&yymsp[-3].minor.yy68,&yymsp[0].minor.yy0); break;
case 22:
eDbAddColumnType(pParse,&yymsp[-5].minor.yy68,&yymsp[0].minor.yy0); break;
case 23:
yygotominor.yy68 = yymsp[0].minor.yy68; break;
case 24:
yygotominor.yy68 = yymsp[-1].minor.yy68; break;
case 25:
yygotominor.yy122 = atoi(yymsp[0].minor.yy0.z); break;
case 26:
yygotominor.yy122 = atoi(yymsp[0].minor.yy0.z); break;
case 27:
yygotominor.yy122 = -atoi(yymsp[0].minor.yy0.z); break;
case 28:
eDbDropTable(pParse,&yymsp[0].minor.yy68,0); break;
case 29:
eDbCreateIndex(pParse,&yymsp[-5].minor.yy68,eDbSrcListAppend(0,&yymsp[-3].minor.yy68,0),yymsp[-1].minor.yy90,yymsp[-7].minor.yy122,&yymsp[-8].minor.yy0,&yymsp[0].minor.yy0);
break;
case 30:
yygotominor.yy122 = OP_Unique; break;
case 31:
yygotominor.yy122 = OP_None; break;
case 32:
yygotominor.yy90 = eDbIdListAppend(yymsp[-2].minor.yy90,&yymsp[0].minor.yy68); break;
case 33:
yygotominor.yy90 = eDbIdListAppend(0,&yymsp[0].minor.yy68); break;
case 34:
eDbDropIndex(pParse,eDbSrcListAppend(0,&yymsp[0].minor.yy68,0)); break;
case 35:
eDbInsert(pParse,eDbSrcListAppend(0,&yymsp[-5].minor.yy68,0),yymsp[-1].minor.yy64,0,yymsp[-4].minor.yy20,0);
break;
case 36:
yygotominor.yy64 = eDbExprListAppend(yymsp[-2].minor.yy64,yymsp[0].minor.yy82,0); break;
case 37:
yygotominor.yy64 = eDbExprListAppend(0,yymsp[0].minor.yy82,0); break;
case 38:
yygotominor.yy20 = 0; break;
case 39:
yygotominor.yy20 = yymsp[-1].minor.yy20; break;
case 40:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -