📄 parse.c
字号:
/* 169 */ "inscollist_opt ::= LP inscollist RP", /* 170 */ "inscollist ::= inscollist COMMA nm", /* 171 */ "inscollist ::= nm", /* 172 */ "expr ::= LP expr RP", /* 173 */ "expr ::= NULL", /* 174 */ "expr ::= ID", /* 175 */ "expr ::= JOIN_KW", /* 176 */ "expr ::= nm DOT nm", /* 177 */ "expr ::= nm DOT nm DOT nm", /* 178 */ "expr ::= INTEGER", /* 179 */ "expr ::= FLOAT", /* 180 */ "expr ::= STRING", /* 181 */ "expr ::= VARIABLE", /* 182 */ "expr ::= ID LP exprlist RP", /* 183 */ "expr ::= ID LP STAR RP", /* 184 */ "expr ::= expr AND expr", /* 185 */ "expr ::= expr OR expr", /* 186 */ "expr ::= expr LT expr", /* 187 */ "expr ::= expr GT expr", /* 188 */ "expr ::= expr LE expr", /* 189 */ "expr ::= expr GE expr", /* 190 */ "expr ::= expr NE expr", /* 191 */ "expr ::= expr EQ expr", /* 192 */ "expr ::= expr BITAND expr", /* 193 */ "expr ::= expr BITOR expr", /* 194 */ "expr ::= expr LSHIFT expr", /* 195 */ "expr ::= expr RSHIFT expr", /* 196 */ "expr ::= expr likeop expr", /* 197 */ "expr ::= expr NOT likeop expr", /* 198 */ "likeop ::= LIKE", /* 199 */ "likeop ::= GLOB", /* 200 */ "expr ::= expr PLUS expr", /* 201 */ "expr ::= expr MINUS expr", /* 202 */ "expr ::= expr STAR expr", /* 203 */ "expr ::= expr SLASH expr", /* 204 */ "expr ::= expr REM expr", /* 205 */ "expr ::= expr CONCAT expr", /* 206 */ "expr ::= expr ISNULL", /* 207 */ "expr ::= expr IS NULL", /* 208 */ "expr ::= expr NOTNULL", /* 209 */ "expr ::= expr NOT NULL", /* 210 */ "expr ::= expr IS NOT NULL", /* 211 */ "expr ::= NOT expr", /* 212 */ "expr ::= BITNOT expr", /* 213 */ "expr ::= MINUS expr", /* 214 */ "expr ::= PLUS expr", /* 215 */ "expr ::= LP select RP", /* 216 */ "expr ::= expr BETWEEN expr AND expr", /* 217 */ "expr ::= expr NOT BETWEEN expr AND expr", /* 218 */ "expr ::= expr IN LP exprlist RP", /* 219 */ "expr ::= expr IN LP select RP", /* 220 */ "expr ::= expr NOT IN LP exprlist RP", /* 221 */ "expr ::= expr NOT IN LP select RP", /* 222 */ "expr ::= expr IN nm dbnm", /* 223 */ "expr ::= expr NOT IN nm dbnm", /* 224 */ "expr ::= CASE case_operand case_exprlist case_else END", /* 225 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", /* 226 */ "case_exprlist ::= WHEN expr THEN expr", /* 227 */ "case_else ::= ELSE expr", /* 228 */ "case_else ::=", /* 229 */ "case_operand ::= expr", /* 230 */ "case_operand ::=", /* 231 */ "exprlist ::= exprlist COMMA expritem", /* 232 */ "exprlist ::= expritem", /* 233 */ "expritem ::= expr", /* 234 */ "expritem ::=", /* 235 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf", /* 236 */ "uniqueflag ::= UNIQUE", /* 237 */ "uniqueflag ::=", /* 238 */ "idxlist_opt ::=", /* 239 */ "idxlist_opt ::= LP idxlist RP", /* 240 */ "idxlist ::= idxlist COMMA idxitem", /* 241 */ "idxlist ::= idxitem", /* 242 */ "idxitem ::= nm sortorder", /* 243 */ "cmd ::= DROP INDEX nm dbnm", /* 244 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING", /* 245 */ "cmd ::= COPY orconf nm dbnm FROM nm", /* 246 */ "cmd ::= VACUUM", /* 247 */ "cmd ::= VACUUM nm", /* 248 */ "cmd ::= PRAGMA ids EQ nm", /* 249 */ "cmd ::= PRAGMA ids EQ ON", /* 250 */ "cmd ::= PRAGMA ids EQ plus_num", /* 251 */ "cmd ::= PRAGMA ids EQ minus_num", /* 252 */ "cmd ::= PRAGMA ids LP nm RP", /* 253 */ "cmd ::= PRAGMA ids", /* 254 */ "plus_num ::= plus_opt number", /* 255 */ "minus_num ::= MINUS number", /* 256 */ "number ::= INTEGER", /* 257 */ "number ::= FLOAT", /* 258 */ "plus_opt ::= PLUS", /* 259 */ "plus_opt ::=", /* 260 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END", /* 261 */ "trigger_decl ::= temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause", /* 262 */ "trigger_time ::= BEFORE", /* 263 */ "trigger_time ::= AFTER", /* 264 */ "trigger_time ::= INSTEAD OF", /* 265 */ "trigger_time ::=", /* 266 */ "trigger_event ::= DELETE", /* 267 */ "trigger_event ::= INSERT", /* 268 */ "trigger_event ::= UPDATE", /* 269 */ "trigger_event ::= UPDATE OF inscollist", /* 270 */ "foreach_clause ::=", /* 271 */ "foreach_clause ::= FOR EACH ROW", /* 272 */ "foreach_clause ::= FOR EACH STATEMENT", /* 273 */ "when_clause ::=", /* 274 */ "when_clause ::= WHEN expr", /* 275 */ "trigger_cmd_list ::= trigger_cmd SEMI trigger_cmd_list", /* 276 */ "trigger_cmd_list ::=", /* 277 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt", /* 278 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP", /* 279 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select", /* 280 */ "trigger_cmd ::= DELETE FROM nm where_opt", /* 281 */ "trigger_cmd ::= select", /* 282 */ "expr ::= RAISE LP IGNORE RP", /* 283 */ "expr ::= RAISE LP ROLLBACK COMMA nm RP", /* 284 */ "expr ::= RAISE LP ABORT COMMA nm RP", /* 285 */ "expr ::= RAISE LP FAIL COMMA nm RP", /* 286 */ "cmd ::= DROP TRIGGER nm dbnm", /* 287 */ "cmd ::= ATTACH database_kw_opt ids AS nm key_opt", /* 288 */ "key_opt ::= USING ids", /* 289 */ "key_opt ::=", /* 290 */ "database_kw_opt ::= DATABASE", /* 291 */ "database_kw_opt ::=", /* 292 */ "cmd ::= DETACH database_kw_opt nm",};#endif /* NDEBUG *//*** This function returns the symbolic name associated with a token** value.*/const char *sqliteParserTokenName(int tokenType){#ifndef NDEBUG if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){ return yyTokenName[tokenType]; }else{ return "Unknown"; }#else return "";#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 sqliteParser and sqliteParserFree.*/void *sqliteParserAlloc(void *(*mallocProc)(size_t)){ yyParser *pParser; pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); if( pParser ){ pParser->yyidx = -1; } 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 146: case 171: case 189:#line 286 "ext/sqlite/libsqlite/src/parse.y"{sqliteSelectDelete((yypminor->yy179));}#line 1237 "ext/sqlite/libsqlite/src/parse.c" break; case 158: case 176: case 178: case 187: case 192: case 204:#line 533 "ext/sqlite/libsqlite/src/parse.y"{sqliteExprDelete((yypminor->yy242));}#line 1247 "ext/sqlite/libsqlite/src/parse.c" break; case 159: case 167: case 188: case 197: case 199:#line 746 "ext/sqlite/libsqlite/src/parse.y"{sqliteIdListDelete((yypminor->yy320));}#line 1256 "ext/sqlite/libsqlite/src/parse.c" break; case 174: case 177: case 179: case 181: case 191: case 194: case 195: case 198: case 202:#line 322 "ext/sqlite/libsqlite/src/parse.y"{sqliteExprListDelete((yypminor->yy322));}#line 1269 "ext/sqlite/libsqlite/src/parse.c" break; case 175: case 183: case 184:#line 353 "ext/sqlite/libsqlite/src/parse.y"{sqliteSrcListDelete((yypminor->yy307));}#line 1276 "ext/sqlite/libsqlite/src/parse.c" break; case 212: case 217:#line 828 "ext/sqlite/libsqlite/src/parse.y"{sqliteDeleteTriggerStep((yypminor->yy19));}#line 1282 "ext/sqlite/libsqlite/src/parse.c" break; case 214:#line 812 "ext/sqlite/libsqlite/src/parse.y"{sqliteIdListDelete((yypminor->yy290).b);}#line 1287 "ext/sqlite/libsqlite/src/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]; if( pParser->yyidx<0 ) return 0;#ifndef NDEBUG if( yyTraceFILE && pParser->yyidx>=0 ){ fprintf(yyTrac
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -