最近在看sqlite3源码,不明白下面这段代码。如下面红色部分,不能调试,根本走不到那里,也高不明白是干什么。查了查#line,还是不明白。达人指点。
static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
switch( yymajor ){
/* Here is inserted the actions which take place when a
** terminal or non-terminal is destroyed. This can happen
** when the symbol is popped from the stack during a
** reduce or during error processing or when a parser is
** being destroyed before it is finished parsing.
**
** Note: during a reduce, the only symbols destroyed are those
** which appear on the RHS of the rule, but which are not used
** inside the C code.
*/
case 155: /* select */
{
#line 369 "parse.y"
sqlite3SelectDelete((yypminor->yy219));
#line 1277 "parse.c"
}
break;
case 169: /* term */
{
#line 629 "parse.y"
sqlite3ExprDelete((yypminor->yy172));
#line 1284 "parse.c"
}
break;
case 170: /* expr */
{
#line 627 "parse.y"
sqlite3ExprDelete((yypminor->yy172));
#line 1291 "parse.c"
}
break;
case 174: /* idxlist_opt */
{
#line 887 "parse.y"
sqlite3ExprListDelete((yypminor->yy174));
#line 1298 "parse.c"
}
break;
case 182: /* idxlist */
{
#line 885 "parse.y"
sqlite3ExprListDelete((yypminor->yy174));
#line 1305 "parse.c"
}
break;
case 188: /* fullname */
{
#line 486 "parse.y"
sqlite3SrcListDelete((yypminor->yy373));
#line 1312 "parse.c"
}
break;
case 189: /* oneselect */
{
#line 371 "parse.y"
sqlite3SelectDelete((yypminor->yy219));
#line 1319 "parse.c"
}