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

📄 parse.c

📁 sqlite的最新源码 This ZIP archive contains preprocessed C code for the SQLite library as individual sour
💻 C
📖 第 1 页 / 共 5 页
字号:
 /* 154 */ "having_opt ::=", /* 155 */ "having_opt ::= HAVING expr", /* 156 */ "limit_opt ::=", /* 157 */ "limit_opt ::= LIMIT expr", /* 158 */ "limit_opt ::= LIMIT expr OFFSET expr", /* 159 */ "limit_opt ::= LIMIT expr COMMA expr", /* 160 */ "cmd ::= DELETE FROM fullname indexed_opt where_opt", /* 161 */ "where_opt ::=", /* 162 */ "where_opt ::= WHERE expr", /* 163 */ "cmd ::= UPDATE orconf fullname indexed_opt SET setlist where_opt", /* 164 */ "setlist ::= setlist COMMA nm EQ expr", /* 165 */ "setlist ::= nm EQ expr", /* 166 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP", /* 167 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select", /* 168 */ "cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES", /* 169 */ "insert_cmd ::= INSERT orconf", /* 170 */ "insert_cmd ::= REPLACE", /* 171 */ "itemlist ::= itemlist COMMA expr", /* 172 */ "itemlist ::= expr", /* 173 */ "inscollist_opt ::=", /* 174 */ "inscollist_opt ::= LP inscollist RP", /* 175 */ "inscollist ::= inscollist COMMA nm", /* 176 */ "inscollist ::= nm", /* 177 */ "expr ::= term", /* 178 */ "expr ::= LP expr RP", /* 179 */ "term ::= NULL", /* 180 */ "expr ::= ID", /* 181 */ "expr ::= JOIN_KW", /* 182 */ "expr ::= nm DOT nm", /* 183 */ "expr ::= nm DOT nm DOT nm", /* 184 */ "term ::= INTEGER|FLOAT|BLOB", /* 185 */ "term ::= STRING", /* 186 */ "expr ::= REGISTER", /* 187 */ "expr ::= VARIABLE", /* 188 */ "expr ::= expr COLLATE ids", /* 189 */ "expr ::= CAST LP expr AS typetoken RP", /* 190 */ "expr ::= ID LP distinct exprlist RP", /* 191 */ "expr ::= ID LP STAR RP", /* 192 */ "term ::= CTIME_KW", /* 193 */ "expr ::= expr AND expr", /* 194 */ "expr ::= expr OR expr", /* 195 */ "expr ::= expr LT|GT|GE|LE expr", /* 196 */ "expr ::= expr EQ|NE expr", /* 197 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", /* 198 */ "expr ::= expr PLUS|MINUS expr", /* 199 */ "expr ::= expr STAR|SLASH|REM expr", /* 200 */ "expr ::= expr CONCAT expr", /* 201 */ "likeop ::= LIKE_KW", /* 202 */ "likeop ::= NOT LIKE_KW", /* 203 */ "likeop ::= MATCH", /* 204 */ "likeop ::= NOT MATCH", /* 205 */ "escape ::= ESCAPE expr", /* 206 */ "escape ::=", /* 207 */ "expr ::= expr likeop expr escape", /* 208 */ "expr ::= expr ISNULL|NOTNULL", /* 209 */ "expr ::= expr IS NULL", /* 210 */ "expr ::= expr NOT NULL", /* 211 */ "expr ::= expr IS NOT NULL", /* 212 */ "expr ::= NOT expr", /* 213 */ "expr ::= BITNOT expr", /* 214 */ "expr ::= MINUS expr", /* 215 */ "expr ::= PLUS expr", /* 216 */ "between_op ::= BETWEEN", /* 217 */ "between_op ::= NOT BETWEEN", /* 218 */ "expr ::= expr between_op expr AND expr", /* 219 */ "in_op ::= IN", /* 220 */ "in_op ::= NOT IN", /* 221 */ "expr ::= expr in_op LP exprlist RP", /* 222 */ "expr ::= LP select RP", /* 223 */ "expr ::= expr in_op LP select RP", /* 224 */ "expr ::= expr in_op nm dbnm", /* 225 */ "expr ::= EXISTS LP select RP", /* 226 */ "expr ::= CASE case_operand case_exprlist case_else END", /* 227 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", /* 228 */ "case_exprlist ::= WHEN expr THEN expr", /* 229 */ "case_else ::= ELSE expr", /* 230 */ "case_else ::=", /* 231 */ "case_operand ::= expr", /* 232 */ "case_operand ::=", /* 233 */ "exprlist ::= nexprlist", /* 234 */ "exprlist ::=", /* 235 */ "nexprlist ::= nexprlist COMMA expr", /* 236 */ "nexprlist ::= expr", /* 237 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP", /* 238 */ "uniqueflag ::= UNIQUE", /* 239 */ "uniqueflag ::=", /* 240 */ "idxlist_opt ::=", /* 241 */ "idxlist_opt ::= LP idxlist RP", /* 242 */ "idxlist ::= idxlist COMMA nm collate sortorder", /* 243 */ "idxlist ::= nm collate sortorder", /* 244 */ "collate ::=", /* 245 */ "collate ::= COLLATE ids", /* 246 */ "cmd ::= DROP INDEX ifexists fullname", /* 247 */ "cmd ::= VACUUM", /* 248 */ "cmd ::= VACUUM nm", /* 249 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", /* 250 */ "cmd ::= PRAGMA nm dbnm EQ ON", /* 251 */ "cmd ::= PRAGMA nm dbnm EQ DELETE", /* 252 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", /* 253 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", /* 254 */ "cmd ::= PRAGMA nm dbnm", /* 255 */ "nmnum ::= plus_num", /* 256 */ "nmnum ::= nm", /* 257 */ "plus_num ::= plus_opt number", /* 258 */ "minus_num ::= MINUS number", /* 259 */ "number ::= INTEGER|FLOAT", /* 260 */ "plus_opt ::= PLUS", /* 261 */ "plus_opt ::=", /* 262 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END", /* 263 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", /* 264 */ "trigger_time ::= BEFORE", /* 265 */ "trigger_time ::= AFTER", /* 266 */ "trigger_time ::= INSTEAD OF", /* 267 */ "trigger_time ::=", /* 268 */ "trigger_event ::= DELETE|INSERT", /* 269 */ "trigger_event ::= UPDATE", /* 270 */ "trigger_event ::= UPDATE OF inscollist", /* 271 */ "foreach_clause ::=", /* 272 */ "foreach_clause ::= FOR EACH ROW", /* 273 */ "when_clause ::=", /* 274 */ "when_clause ::= WHEN expr", /* 275 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", /* 276 */ "trigger_cmd_list ::= trigger_cmd SEMI", /* 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 raisetype COMMA nm RP", /* 284 */ "raisetype ::= ROLLBACK", /* 285 */ "raisetype ::= ABORT", /* 286 */ "raisetype ::= FAIL", /* 287 */ "cmd ::= DROP TRIGGER ifexists fullname", /* 288 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", /* 289 */ "cmd ::= DETACH database_kw_opt expr", /* 290 */ "key_opt ::=", /* 291 */ "key_opt ::= KEY expr", /* 292 */ "database_kw_opt ::= DATABASE", /* 293 */ "database_kw_opt ::=", /* 294 */ "cmd ::= REINDEX", /* 295 */ "cmd ::= REINDEX nm dbnm", /* 296 */ "cmd ::= ANALYZE", /* 297 */ "cmd ::= ANALYZE nm dbnm", /* 298 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", /* 299 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column", /* 300 */ "add_column_fullname ::= fullname", /* 301 */ "kwcolumn_opt ::=", /* 302 */ "kwcolumn_opt ::= COLUMNKW", /* 303 */ "cmd ::= create_vtab", /* 304 */ "cmd ::= create_vtab LP vtabarglist RP", /* 305 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm", /* 306 */ "vtabarglist ::= vtabarg", /* 307 */ "vtabarglist ::= vtabarglist COMMA vtabarg", /* 308 */ "vtabarg ::=", /* 309 */ "vtabarg ::= vtabarg vtabargtoken", /* 310 */ "vtabargtoken ::= ANY", /* 311 */ "vtabargtoken ::= lp anylist RP", /* 312 */ "lp ::= LP", /* 313 */ "anylist ::=", /* 314 */ "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;#ifdef YYTRACKMAXSTACKDEPTH    pParser->yyidxMax = 0;#endif#if YYSTACKDEPTH<=0    pParser->yystack = NULL;    pParser->yystksz = 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(  yyParser *yypParser,    /* The parser */  YYCODETYPE yymajor,     /* Type code for object to destroy */  YYMINORTYPE *yypminor   /* The object to be destroyed */){  sqlite3ParserARG_FETCH;  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 156: /* select */    case 190: /* oneselect */    case 208: /* seltablist_paren */{#line 370 "parse.y"sqlite3SelectDelete(pParse->db, (yypminor->yy43));#line 1302 "parse.c"}      break;    case 170: /* term */    case 171: /* expr */    case 195: /* where_opt */    case 197: /* having_opt */    case 206: /* on_opt */    case 212: /* sortitem */    case 220: /* escape */    case 223: /* case_operand */    case 225: /* case_else */    case 236: /* when_clause */    case 239: /* key_opt */{#line 670 "parse.y"sqlite3ExprDelete(pParse->db, (yypminor->yy450));#line 1319 "parse.c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -