📄 parse.c
字号:
/* 194 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", /* 195 */ "expr ::= expr PLUS|MINUS expr", /* 196 */ "expr ::= expr STAR|SLASH|REM expr", /* 197 */ "expr ::= expr CONCAT expr", /* 198 */ "likeop ::= LIKE_KW", /* 199 */ "likeop ::= NOT LIKE_KW", /* 200 */ "likeop ::= MATCH", /* 201 */ "likeop ::= NOT MATCH", /* 202 */ "escape ::= ESCAPE expr", /* 203 */ "escape ::=", /* 204 */ "expr ::= expr likeop expr escape", /* 205 */ "expr ::= expr ISNULL|NOTNULL", /* 206 */ "expr ::= expr IS NULL", /* 207 */ "expr ::= expr NOT NULL", /* 208 */ "expr ::= expr IS NOT NULL", /* 209 */ "expr ::= NOT|BITNOT expr", /* 210 */ "expr ::= MINUS expr", /* 211 */ "expr ::= PLUS expr", /* 212 */ "between_op ::= BETWEEN", /* 213 */ "between_op ::= NOT BETWEEN", /* 214 */ "expr ::= expr between_op expr AND expr", /* 215 */ "in_op ::= IN", /* 216 */ "in_op ::= NOT IN", /* 217 */ "expr ::= expr in_op LP exprlist RP", /* 218 */ "expr ::= LP select RP", /* 219 */ "expr ::= expr in_op LP select RP", /* 220 */ "expr ::= expr in_op nm dbnm", /* 221 */ "expr ::= EXISTS LP select RP", /* 222 */ "expr ::= CASE case_operand case_exprlist case_else END", /* 223 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", /* 224 */ "case_exprlist ::= WHEN expr THEN expr", /* 225 */ "case_else ::= ELSE expr", /* 226 */ "case_else ::=", /* 227 */ "case_operand ::= expr", /* 228 */ "case_operand ::=", /* 229 */ "exprlist ::= nexprlist", /* 230 */ "exprlist ::=", /* 231 */ "nexprlist ::= nexprlist COMMA expr", /* 232 */ "nexprlist ::= expr", /* 233 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP", /* 234 */ "uniqueflag ::= UNIQUE", /* 235 */ "uniqueflag ::=", /* 236 */ "idxlist_opt ::=", /* 237 */ "idxlist_opt ::= LP idxlist RP", /* 238 */ "idxlist ::= idxlist COMMA idxitem collate sortorder", /* 239 */ "idxlist ::= idxitem collate sortorder", /* 240 */ "idxitem ::= nm", /* 241 */ "collate ::=", /* 242 */ "collate ::= COLLATE id", /* 243 */ "cmd ::= DROP INDEX ifexists fullname", /* 244 */ "cmd ::= VACUUM", /* 245 */ "cmd ::= VACUUM nm", /* 246 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", /* 247 */ "cmd ::= PRAGMA nm dbnm EQ ON", /* 248 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", /* 249 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", /* 250 */ "cmd ::= PRAGMA nm dbnm", /* 251 */ "nmnum ::= plus_num", /* 252 */ "nmnum ::= nm", /* 253 */ "plus_num ::= plus_opt number", /* 254 */ "minus_num ::= MINUS number", /* 255 */ "number ::= INTEGER|FLOAT", /* 256 */ "plus_opt ::= PLUS", /* 257 */ "plus_opt ::=", /* 258 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END", /* 259 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", /* 260 */ "trigger_time ::= BEFORE", /* 261 */ "trigger_time ::= AFTER", /* 262 */ "trigger_time ::= INSTEAD OF", /* 263 */ "trigger_time ::=", /* 264 */ "trigger_event ::= DELETE|INSERT", /* 265 */ "trigger_event ::= UPDATE", /* 266 */ "trigger_event ::= UPDATE OF inscollist", /* 267 */ "foreach_clause ::=", /* 268 */ "foreach_clause ::= FOR EACH ROW", /* 269 */ "when_clause ::=", /* 270 */ "when_clause ::= WHEN expr", /* 271 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", /* 272 */ "trigger_cmd_list ::=", /* 273 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt", /* 274 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP", /* 275 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select", /* 276 */ "trigger_cmd ::= DELETE FROM nm where_opt", /* 277 */ "trigger_cmd ::= select", /* 278 */ "expr ::= RAISE LP IGNORE RP", /* 279 */ "expr ::= RAISE LP raisetype COMMA nm RP", /* 280 */ "raisetype ::= ROLLBACK", /* 281 */ "raisetype ::= ABORT", /* 282 */ "raisetype ::= FAIL", /* 283 */ "cmd ::= DROP TRIGGER ifexists fullname", /* 284 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", /* 285 */ "cmd ::= DETACH database_kw_opt expr", /* 286 */ "key_opt ::=", /* 287 */ "key_opt ::= KEY expr", /* 288 */ "database_kw_opt ::= DATABASE", /* 289 */ "database_kw_opt ::=", /* 290 */ "cmd ::= REINDEX", /* 291 */ "cmd ::= REINDEX nm dbnm", /* 292 */ "cmd ::= ANALYZE", /* 293 */ "cmd ::= ANALYZE nm dbnm", /* 294 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", /* 295 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column", /* 296 */ "add_column_fullname ::= fullname", /* 297 */ "kwcolumn_opt ::=", /* 298 */ "kwcolumn_opt ::= COLUMNKW", /* 299 */ "cmd ::= create_vtab", /* 300 */ "cmd ::= create_vtab LP vtabarglist RP", /* 301 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm", /* 302 */ "vtabarglist ::= vtabarg", /* 303 */ "vtabarglist ::= vtabarglist COMMA vtabarg", /* 304 */ "vtabarg ::=", /* 305 */ "vtabarg ::= vtabarg vtabargtoken", /* 306 */ "vtabargtoken ::= ANY", /* 307 */ "vtabargtoken ::= lp anylist RP", /* 308 */ "lp ::= LP", /* 309 */ "anylist ::=", /* 310 */ "anylist ::= anylist ANY",};#endif /* NDEBUG */#if YYSTACKDEPTH<=0/*** Try to increase the size of the parser stack.*/static void yyGrowStack(yyParser *p){ int newSize; yyStackEntry *pNew; newSize = p->yystksz*2 + 100; pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); if( pNew ){ p->yystack = pNew; p->yystksz = newSize;#ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", yyTracePrompt, p->yystksz); }#endif }}#endif/* ** This function allocates a new parser.** The only argument is a pointer to a function which works like** malloc.**** Inputs:** A pointer to the function used to allocate memory.**** Outputs:** A pointer to a parser. This pointer is used in subsequent calls** to sqlite3Parser and sqlite3ParserFree.*/void *sqlite3ParserAlloc(void *(*mallocProc)(size_t)){ yyParser *pParser; pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); if( pParser ){ pParser->yyidx = -1;#if YYSTACKDEPTH<=0 yyGrowStack(pParser);#endif } return pParser;}/* The following function deletes the value associated with a** symbol. The symbol can be either a terminal or nonterminal.** "yymajor" is the symbol code, and "yypminor" is a pointer to** the value.*/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: case 189: case 206:#line 373 "parse.y"{sqlite3SelectDelete((yypminor->yy219));}#line 1273 "parse.c" break; case 169: case 170: case 194: case 196: case 204: case 210: case 218: case 221: case 223: case 235:#line 633 "parse.y"{sqlite3ExprDelete((yypminor->yy172));}#line 1287 "parse.c" break; case 174: case 182: case 192: case 195: case 197: case 199: case 209: case 211: case 212: case 215: case 216: case 222:#line 887 "parse.y"{sqlite3ExprListDelete((yypminor->yy174));}#line 1303 "parse.c" break; case 188: case 193: case 201: case 202:#line 490 "parse.y"{sqlite3SrcListDelete((yypminor->yy373));}#line 1311 "parse.c" break; case 205: case 208: case 214:#line 507 "parse.y"{sqlite3IdListDelete((yypminor->yy432));}#line 1318 "parse.c" break; case 231: case 236:#line 990 "parse.y"{sqlite3DeleteTriggerStep((yypminor->yy243));}#line 1324 "parse.c" break; case 233:#line 976 "parse.y"{sqlite3IdListDelete((yypminor->yy370).b);}#line 1329 "parse.c" break; case 238:#line 1063 "parse.y"{sqlite3ExprDelete((yypminor->yy386));}#line 1334 "parse.c" break; default: break; /* If no destructor action specified: do nothing */ }}/*** Pop the parser's stack once.**** If there is a destructor routine associated with the token which** is popped from the stack, then call it.**** Return the major token number for the symbol popped.*/static int yy_pop_parser_stack(yyParser *pParser){ YYCODETYPE yymajor; yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -