⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse.c

📁 在VC6环境下开发
💻 C
📖 第 1 页 / 共 3 页
字号:
	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 + -