📄 parse.c
字号:
/* 134 */ "dbnm ::=", /* 135 */ "dbnm ::= DOT nm", /* 136 */ "fullname ::= nm dbnm", /* 137 */ "joinop ::= COMMA|JOIN", /* 138 */ "joinop ::= JOIN_KW JOIN", /* 139 */ "joinop ::= JOIN_KW nm JOIN", /* 140 */ "joinop ::= JOIN_KW nm nm JOIN", /* 141 */ "on_opt ::= ON expr", /* 142 */ "on_opt ::=", /* 143 */ "indexed_opt ::=", /* 144 */ "indexed_opt ::= INDEXED BY nm", /* 145 */ "indexed_opt ::= NOT INDEXED", /* 146 */ "using_opt ::= USING LP inscollist RP", /* 147 */ "using_opt ::=", /* 148 */ "orderby_opt ::=", /* 149 */ "orderby_opt ::= ORDER BY sortlist", /* 150 */ "sortlist ::= sortlist COMMA sortitem sortorder", /* 151 */ "sortlist ::= sortitem sortorder", /* 152 */ "sortitem ::= expr", /* 153 */ "sortorder ::= ASC", /* 154 */ "sortorder ::= DESC", /* 155 */ "sortorder ::=", /* 156 */ "groupby_opt ::=", /* 157 */ "groupby_opt ::= GROUP BY nexprlist", /* 158 */ "having_opt ::=", /* 159 */ "having_opt ::= HAVING expr", /* 160 */ "limit_opt ::=", /* 161 */ "limit_opt ::= LIMIT expr", /* 162 */ "limit_opt ::= LIMIT expr OFFSET expr", /* 163 */ "limit_opt ::= LIMIT expr COMMA expr", /* 164 */ "cmd ::= DELETE FROM fullname indexed_opt where_opt", /* 165 */ "where_opt ::=", /* 166 */ "where_opt ::= WHERE expr", /* 167 */ "cmd ::= UPDATE orconf fullname indexed_opt SET setlist where_opt", /* 168 */ "setlist ::= setlist COMMA nm EQ expr", /* 169 */ "setlist ::= nm EQ expr", /* 170 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP", /* 171 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select", /* 172 */ "cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES", /* 173 */ "insert_cmd ::= INSERT orconf", /* 174 */ "insert_cmd ::= REPLACE", /* 175 */ "itemlist ::= itemlist COMMA expr", /* 176 */ "itemlist ::= expr", /* 177 */ "inscollist_opt ::=", /* 178 */ "inscollist_opt ::= LP inscollist RP", /* 179 */ "inscollist ::= inscollist COMMA nm", /* 180 */ "inscollist ::= nm", /* 181 */ "expr ::= term", /* 182 */ "expr ::= LP expr RP", /* 183 */ "term ::= NULL", /* 184 */ "expr ::= ID", /* 185 */ "expr ::= JOIN_KW", /* 186 */ "expr ::= nm DOT nm", /* 187 */ "expr ::= nm DOT nm DOT nm", /* 188 */ "term ::= INTEGER|FLOAT|BLOB", /* 189 */ "term ::= STRING", /* 190 */ "expr ::= REGISTER", /* 191 */ "expr ::= VARIABLE", /* 192 */ "expr ::= expr COLLATE ids", /* 193 */ "expr ::= CAST LP expr AS typetoken RP", /* 194 */ "expr ::= ID LP distinct exprlist RP", /* 195 */ "expr ::= ID LP STAR RP", /* 196 */ "term ::= CTIME_KW", /* 197 */ "expr ::= expr AND expr", /* 198 */ "expr ::= expr OR expr", /* 199 */ "expr ::= expr LT|GT|GE|LE expr", /* 200 */ "expr ::= expr EQ|NE expr", /* 201 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", /* 202 */ "expr ::= expr PLUS|MINUS expr", /* 203 */ "expr ::= expr STAR|SLASH|REM expr", /* 204 */ "expr ::= expr CONCAT expr", /* 205 */ "likeop ::= LIKE_KW", /* 206 */ "likeop ::= NOT LIKE_KW", /* 207 */ "likeop ::= MATCH", /* 208 */ "likeop ::= NOT MATCH", /* 209 */ "escape ::= ESCAPE expr", /* 210 */ "escape ::=", /* 211 */ "expr ::= expr likeop expr escape", /* 212 */ "expr ::= expr ISNULL|NOTNULL", /* 213 */ "expr ::= expr IS NULL", /* 214 */ "expr ::= expr NOT NULL", /* 215 */ "expr ::= expr IS NOT NULL", /* 216 */ "expr ::= NOT expr", /* 217 */ "expr ::= BITNOT expr", /* 218 */ "expr ::= MINUS expr", /* 219 */ "expr ::= PLUS expr", /* 220 */ "between_op ::= BETWEEN", /* 221 */ "between_op ::= NOT BETWEEN", /* 222 */ "expr ::= expr between_op expr AND expr", /* 223 */ "in_op ::= IN", /* 224 */ "in_op ::= NOT IN", /* 225 */ "expr ::= expr in_op LP exprlist RP", /* 226 */ "expr ::= LP select RP", /* 227 */ "expr ::= expr in_op LP select RP", /* 228 */ "expr ::= expr in_op nm dbnm", /* 229 */ "expr ::= EXISTS LP select RP", /* 230 */ "expr ::= CASE case_operand case_exprlist case_else END", /* 231 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", /* 232 */ "case_exprlist ::= WHEN expr THEN expr", /* 233 */ "case_else ::= ELSE expr", /* 234 */ "case_else ::=", /* 235 */ "case_operand ::= expr", /* 236 */ "case_operand ::=", /* 237 */ "exprlist ::= nexprlist", /* 238 */ "exprlist ::=", /* 239 */ "nexprlist ::= nexprlist COMMA expr", /* 240 */ "nexprlist ::= expr", /* 241 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP", /* 242 */ "uniqueflag ::= UNIQUE", /* 243 */ "uniqueflag ::=", /* 244 */ "idxlist_opt ::=", /* 245 */ "idxlist_opt ::= LP idxlist RP", /* 246 */ "idxlist ::= idxlist COMMA nm collate sortorder", /* 247 */ "idxlist ::= nm collate sortorder", /* 248 */ "collate ::=", /* 249 */ "collate ::= COLLATE ids", /* 250 */ "cmd ::= DROP INDEX ifexists fullname", /* 251 */ "cmd ::= VACUUM", /* 252 */ "cmd ::= VACUUM nm", /* 253 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", /* 254 */ "cmd ::= PRAGMA nm dbnm EQ ON", /* 255 */ "cmd ::= PRAGMA nm dbnm EQ DELETE", /* 256 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", /* 257 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", /* 258 */ "cmd ::= PRAGMA nm dbnm", /* 259 */ "nmnum ::= plus_num", /* 260 */ "nmnum ::= nm", /* 261 */ "plus_num ::= plus_opt number", /* 262 */ "minus_num ::= MINUS number", /* 263 */ "number ::= INTEGER|FLOAT", /* 264 */ "plus_opt ::= PLUS", /* 265 */ "plus_opt ::=", /* 266 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END", /* 267 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", /* 268 */ "trigger_time ::= BEFORE", /* 269 */ "trigger_time ::= AFTER", /* 270 */ "trigger_time ::= INSTEAD OF", /* 271 */ "trigger_time ::=", /* 272 */ "trigger_event ::= DELETE|INSERT", /* 273 */ "trigger_event ::= UPDATE", /* 274 */ "trigger_event ::= UPDATE OF inscollist", /* 275 */ "foreach_clause ::=", /* 276 */ "foreach_clause ::= FOR EACH ROW", /* 277 */ "when_clause ::=", /* 278 */ "when_clause ::= WHEN expr", /* 279 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", /* 280 */ "trigger_cmd_list ::= trigger_cmd SEMI", /* 281 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt", /* 282 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP", /* 283 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select", /* 284 */ "trigger_cmd ::= DELETE FROM nm where_opt", /* 285 */ "trigger_cmd ::= select", /* 286 */ "expr ::= RAISE LP IGNORE RP", /* 287 */ "expr ::= RAISE LP raisetype COMMA nm RP", /* 288 */ "raisetype ::= ROLLBACK", /* 289 */ "raisetype ::= ABORT", /* 290 */ "raisetype ::= FAIL", /* 291 */ "cmd ::= DROP TRIGGER ifexists fullname", /* 292 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", /* 293 */ "cmd ::= DETACH database_kw_opt expr", /* 294 */ "key_opt ::=", /* 295 */ "key_opt ::= KEY expr", /* 296 */ "database_kw_opt ::= DATABASE", /* 297 */ "database_kw_opt ::=", /* 298 */ "cmd ::= REINDEX", /* 299 */ "cmd ::= REINDEX nm dbnm", /* 300 */ "cmd ::= ANALYZE", /* 301 */ "cmd ::= ANALYZE nm dbnm", /* 302 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", /* 303 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column", /* 304 */ "add_column_fullname ::= fullname", /* 305 */ "kwcolumn_opt ::=", /* 306 */ "kwcolumn_opt ::= COLUMNKW", /* 307 */ "cmd ::= create_vtab", /* 308 */ "cmd ::= create_vtab LP vtabarglist RP", /* 309 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm", /* 310 */ "vtabarglist ::= vtabarg", /* 311 */ "vtabarglist ::= vtabarglist COMMA vtabarg", /* 312 */ "vtabarg ::=", /* 313 */ "vtabarg ::= vtabarg vtabargtoken", /* 314 */ "vtabargtoken ::= ANY", /* 315 */ "vtabargtoken ::= lp anylist RP", /* 316 */ "lp ::= LP", /* 317 */ "anylist ::=", /* 318 */ "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. ** ** Not
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -