sql.tab.c
来自「一个类似windows」· C语言 代码 · 共 2,284 行 · 第 1/5 页
C
2,284 行
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_EQ, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 43:
#line 440 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_AND, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 44:
#line 446 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_OR, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 45:
#line 452 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_EQ, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 46:
#line 458 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_GT, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 47:
#line 464 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_LT, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 48:
#line 470 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_LE, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 49:
#line 476 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_GE, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 50:
#line 482 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_NE, yyvsp[0].expr );
if( !yyval.expr )
YYABORT;
;}
break;
case 51:
#line 488 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-2].expr, OP_ISNULL, NULL );
if( !yyval.expr )
YYABORT;
;}
break;
case 52:
#line 494 "./sql.y"
{
yyval.expr = EXPR_complex( info, yyvsp[-3].expr, OP_NOTNULL, NULL );
if( !yyval.expr )
YYABORT;
;}
break;
case 55:
#line 508 "./sql.y"
{
yyval.column_list = parser_alloc_column( info, NULL, NULL );
if( !yyval.column_list )
YYABORT;
yyval.column_list->val = yyvsp[0].expr;
;}
break;
case 56:
#line 515 "./sql.y"
{
yyval.column_list = parser_alloc_column( info, NULL, NULL );
if( !yyval.column_list )
YYABORT;
yyval.column_list->val = yyvsp[-2].expr;
yyval.column_list->next = yyvsp[0].column_list;
;}
break;
case 58:
#line 527 "./sql.y"
{
yyval.column_list = yyvsp[-2].column_list;
yyval.column_list->next = yyvsp[0].column_list;
;}
break;
case 59:
#line 535 "./sql.y"
{
yyval.column_list = yyvsp[-2].column_list;
yyval.column_list->val = yyvsp[0].expr;
;}
break;
case 60:
#line 543 "./sql.y"
{
yyval.expr = EXPR_ival( info, yyvsp[0].integer );
if( !yyval.expr )
YYABORT;
;}
break;
case 61:
#line 549 "./sql.y"
{
yyval.expr = EXPR_ival( info, -yyvsp[0].integer );
if( !yyval.expr )
YYABORT;
;}
break;
case 62:
#line 555 "./sql.y"
{
yyval.expr = EXPR_sval( info, &yyvsp[0].str );
if( !yyval.expr )
YYABORT;
;}
break;
case 63:
#line 561 "./sql.y"
{
yyval.expr = EXPR_wildcard( info );
if( !yyval.expr )
YYABORT;
;}
break;
case 64:
#line 570 "./sql.y"
{
yyval.expr = EXPR_column( info, yyvsp[0].column_list );
if( !yyval.expr )
YYABORT;
;}
break;
case 65:
#line 579 "./sql.y"
{
yyval.column_list = parser_alloc_column( info, yyvsp[-2].string, yyvsp[0].string );
if( !yyval.column_list )
YYABORT;
;}
break;
case 66:
#line 585 "./sql.y"
{
yyval.column_list = parser_alloc_column( info, NULL, yyvsp[0].string );
if( !yyval.column_list )
YYABORT;
;}
break;
case 67:
#line 594 "./sql.y"
{
yyval.string = yyvsp[0].string;
;}
break;
case 68:
#line 601 "./sql.y"
{
yyval.string = SQL_getstring( info, &yyvsp[0].str );
if( !yyval.string )
YYABORT;
;}
break;
case 69:
#line 610 "./sql.y"
{
yyval.integer = SQL_getint( info );
;}
break;
}
/* Line 1000 of yacc.c. */
#line 2054 "sql.tab.c"
yyvsp -= yylen;
yyssp -= yylen;
YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
/* Now `shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
yyn = yyr1[yyn];
yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
yystate = yydefgoto[yyn - YYNTOKENS];
goto yynewstate;
/*------------------------------------.
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
++yynerrs;
#if YYERROR_VERBOSE
yyn = yypact[yystate];
if (YYPACT_NINF < yyn && yyn < YYLAST)
{
YYSIZE_T yysize = 0;
int yytype = YYTRANSLATE (yychar);
const char* yyprefix;
char *yymsg;
int yyx;
/* Start YYX at -YYN if negative to avoid negative indexes in
YYCHECK. */
int yyxbegin = yyn < 0 ? -yyn : 0;
/* Stay within bounds of both yycheck and yytname. */
int yychecklim = YYLAST - yyn;
int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
int yycount = 0;
yyprefix = ", expecting ";
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
yycount += 1;
if (yycount == 5)
{
yysize = 0;
break;
}
}
yysize += (sizeof ("syntax error, unexpected ")
+ yystrlen (yytname[yytype]));
yymsg = (char *) YYSTACK_ALLOC (yysize);
if (yymsg != 0)
{
char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
yyp = yystpcpy (yyp, yytname[yytype]);
if (yycount < 5)
{
yyprefix = ", expecting ";
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
yyp = yystpcpy (yyp, yyprefix);
yyp = yystpcpy (yyp, yytname[yyx]);
yyprefix = " or ";
}
}
yyerror (yymsg);
YYSTACK_FREE (yymsg);
}
else
yyerror ("syntax error; also virtual memory exhausted");
}
else
#endif /* YYERROR_VERBOSE */
yyerror ("syntax error");
}
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
error, discard it. */
if (yychar <= YYEOF)
{
/* If at end of input, pop the error token,
then the rest of the stack, then return failure. */
if (yychar == YYEOF)
for (;;)
{
YYPOPSTACK;
if (yyssp == yyss)
YYABORT;
YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
yydestruct (yystos[*yyssp], yyvsp);
}
}
else
{
YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
yydestruct (yytoken, &yylval);
yychar = YYEMPTY;
}
}
/* Else will try to reuse lookahead token after shifting the error
token. */
goto yyerrlab1;
/*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
#ifdef __GNUC__
/* Pacify GCC when the user code never invokes YYERROR and the label
yyerrorlab therefore never appears in user code. */
if (0)
goto yyerrorlab;
#endif
yyvsp -= yylen;
yyssp -= yylen;
yystate = *yyssp;
goto yyerrlab1;
/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR. |
`-------------------------------------------------------------*/
yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
for (;;)
{
yyn = yypact[yystate];
if (yyn != YYPACT_NINF)
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
{
yyn = yytable[yyn];
if (0 < yyn)
break;
}
}
/* Pop the current state because it cannot handle the error token. */
if (yyssp == yyss)
YYABORT;
YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
yydestruct (yystos[yystate], yyvsp);
YYPOPSTACK;
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
}
if (yyn == YYFINAL)
YYACCEPT;
YYDPRINTF ((stderr, "Shifting error token, "));
*++yyvsp = yylval;
yystate = yyn;
goto yynewstate;
/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here. |
`-------------------------------------*/
yyacceptlab:
yyresult = 0;
goto yyreturn;
/*-----------------------------------.
| yyabortlab -- YYABORT comes here. |
`-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
#ifndef yyoverflow
/*----------------------------------------------.
| yyoverflowlab -- parser overflow comes here. |
`----------------------------------------------*/
yyoverflowlab:
yyerror ("parser stack overflow");
yyresult = 2;
/* Fall through. */
#endif
yyreturn:
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
return yyresult;
}
#line 615 "./sql.y"
static void *parser_alloc( void *info, unsigned int sz )
{
SQL_input* sql = (SQL_input*) info;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?