📄 parse.c
字号:
0, /* UPDATE => nothing */ 0, /* INSERT => nothing */ 0, /* SET => nothing */ 0, /* DEFERRABLE => nothing */ 0, /* FOREIGN => nothing */ 0, /* DROP => nothing */ 0, /* UNION => nothing */ 0, /* ALL => nothing */ 0, /* INTERSECT => nothing */ 0, /* EXCEPT => nothing */ 0, /* SELECT => nothing */ 0, /* DISTINCT => nothing */ 0, /* DOT => nothing */ 0, /* FROM => nothing */ 0, /* JOIN => nothing */ 0, /* USING => nothing */ 0, /* ORDER => nothing */ 0, /* BY => nothing */ 0, /* GROUP => nothing */ 0, /* HAVING => nothing */ 0, /* LIMIT => nothing */ 0, /* WHERE => nothing */ 0, /* INTO => nothing */ 0, /* VALUES => nothing */ 0, /* INTEGER => nothing */ 0, /* FLOAT => nothing */ 0, /* BLOB => nothing */ 0, /* REGISTER => nothing */ 0, /* VARIABLE => nothing */ 0, /* EXISTS => nothing */ 0, /* CASE => nothing */ 0, /* WHEN => nothing */ 0, /* THEN => nothing */ 0, /* ELSE => nothing */ 0, /* INDEX => nothing */ 0, /* TO => nothing */ 0, /* ADD => nothing */ 0, /* COLUMNKW => nothing */};#endif /* YYFALLBACK *//* The following structure represents a single element of the** parser's stack. Information stored includes:**** + The state number for the parser at this level of the stack.**** + The value of the token stored at this level of the stack.** (In other words, the "major" token.)**** + The semantic value stored at this level of the stack. This is** the information used by the action routines in the grammar.** It is sometimes called the "minor" token.*/struct yyStackEntry { int stateno; /* The state-number */ int major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */};typedef struct yyStackEntry yyStackEntry;/* The state of the parser is completely contained in an instance of** the following structure */struct yyParser { int yyidx; /* Index of top element in stack */ int yyerrcnt; /* Shifts left before out of the error */ sqlite3ParserARG_SDECL /* A place to hold %extra_argument */ yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */};typedef struct yyParser yyParser;#ifndef NDEBUG#include <stdio.h>static FILE *yyTraceFILE = 0;static char *yyTracePrompt = 0;#endif /* NDEBUG */#ifndef NDEBUG/* ** Turn parser tracing on by giving a stream to which to write the trace** and a prompt to preface each trace message. Tracing is turned off** by making either argument NULL **** Inputs:** <ul>** <li> A FILE* to which trace output should be written.** If NULL, then tracing is turned off.** <li> A prefix string written at the beginning of every** line of trace output. If NULL, then tracing is** turned off.** </ul>**** Outputs:** None.*/void sqlite3ParserTrace(FILE *TraceFILE, char *zTracePrompt){ yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if( yyTraceFILE==0 ) yyTracePrompt = 0; else if( yyTracePrompt==0 ) yyTraceFILE = 0;}#endif /* NDEBUG */#ifndef NDEBUG/* For tracing shifts, the names of all terminals and nonterminals** are required. The following table supplies these names */static const char *const yyTokenName[] = { "$", "END_OF_FILE", "ILLEGAL", "SPACE", "UNCLOSED_STRING", "COMMENT", "FUNCTION", "COLUMN", "AGG_FUNCTION", "CONST_FUNC", "SEMI", "EXPLAIN", "BEGIN", "TRANSACTION", "DEFERRED", "IMMEDIATE", "EXCLUSIVE", "COMMIT", "END", "ROLLBACK", "CREATE", "TABLE", "TEMP", "LP", "RP", "AS", "COMMA", "ID", "ABORT", "AFTER", "ASC", "ATTACH", "BEFORE", "CASCADE", "CONFLICT", "DATABASE", "DESC", "DETACH", "EACH", "FAIL", "FOR", "IGNORE", "INITIALLY", "INSTEAD", "LIKE_KW", "MATCH", "KEY", "OF", "OFFSET", "PRAGMA", "RAISE", "REPLACE", "RESTRICT", "ROW", "STATEMENT", "TRIGGER", "VACUUM", "VIEW", "REINDEX", "RENAME", "CTIME_KW", "ALTER", "OR", "AND", "NOT", "IS", "BETWEEN", "IN", "ISNULL", "NOTNULL", "NE", "EQ", "GT", "LE", "LT", "GE", "ESCAPE", "BITAND", "BITOR", "LSHIFT", "RSHIFT", "PLUS", "MINUS", "STAR", "SLASH", "REM", "CONCAT", "UMINUS", "UPLUS", "BITNOT", "STRING", "JOIN_KW", "CONSTRAINT", "DEFAULT", "NULL", "PRIMARY", "UNIQUE", "CHECK", "REFERENCES", "COLLATE", "AUTOINCR", "ON", "DELETE", "UPDATE", "INSERT", "SET", "DEFERRABLE", "FOREIGN", "DROP", "UNION", "ALL", "INTERSECT", "EXCEPT", "SELECT", "DISTINCT", "DOT", "FROM", "JOIN", "USING", "ORDER", "BY", "GROUP", "HAVING", "LIMIT", "WHERE", "INTO", "VALUES", "INTEGER", "FLOAT", "BLOB", "REGISTER", "VARIABLE", "EXISTS", "CASE", "WHEN", "THEN", "ELSE", "INDEX", "TO", "ADD", "COLUMNKW", "error", "input", "cmdlist", "ecmd", "cmdx", "cmd", "explain", "transtype", "trans_opt", "nm", "create_table", "create_table_args", "temp", "dbnm", "columnlist", "conslist_opt", "select", "column", "columnid", "type", "carglist", "id", "ids", "typename", "signed", "plus_num", "minus_num", "carg", "ccons", "term", "onconf", "sortorder", "autoinc", "expr", "idxlist_opt", "refargs", "defer_subclause", "refarg", "refact", "init_deferred_pred_opt", "conslist", "tcons", "idxlist", "defer_subclause_opt", "orconf", "resolvetype", "raisetype", "fullname", "oneselect", "multiselect_op", "distinct", "selcollist", "from", "where_opt", "groupby_opt", "having_opt", "orderby_opt", "limit_opt", "sclp", "as", "seltablist", "stl_prefix", "joinop", "on_opt", "using_opt", "seltablist_paren", "joinop2", "inscollist", "sortlist", "sortitem", "collate", "exprlist", "setlist", "insert_cmd", "inscollist_opt", "itemlist", "likeop", "escape", "between_op", "in_op", "case_operand", "case_exprlist", "case_else", "expritem", "uniqueflag", "idxitem", "plus_opt", "number", "trigger_decl", "trigger_cmd_list", "trigger_time", "trigger_event", "foreach_clause", "when_clause", "trigger_cmd", "database_kw_opt", "key_opt", "add_column_fullname", "kwcolumn_opt",};#endif /* NDEBUG */#ifndef NDEBUG/* For tracing reduce actions, the names of all rules are required.*/static const char *const yyRuleName[] = { /* 0 */ "input ::= cmdlist", /* 1 */ "cmdlist ::= cmdlist ecmd", /* 2 */ "cmdlist ::= ecmd", /* 3 */ "cmdx ::= cmd", /* 4 */ "ecmd ::= SEMI", /* 5 */ "ecmd ::= explain cmdx SEMI", /* 6 */ "explain ::=", /* 7 */ "explain ::= EXPLAIN", /* 8 */ "cmd ::= BEGIN transtype trans_opt", /* 9 */ "trans_opt ::=", /* 10 */ "trans_opt ::= TRANSACTION", /* 11 */ "trans_opt ::= TRANSACTION nm", /* 12 */ "transtype ::=", /* 13 */ "transtype ::= DEFERRED", /* 14 */ "transtype ::= IMMEDIATE", /* 15 */ "transtype ::= EXCLUSIVE", /* 16 */ "cmd ::= COMMIT trans_opt", /* 17 */ "cmd ::= END trans_opt", /* 18 */ "cmd ::= ROLLBACK trans_opt", /* 19 */ "cmd ::= create_table create_table_args", /* 20 */ "create_table ::= CREATE temp TABLE nm dbnm", /* 21 */ "temp ::= TEMP", /* 22 */ "temp ::=", /* 23 */ "create_table_args ::= LP columnlist conslist_opt RP", /* 24 */ "create_table_args ::= AS select", /* 25 */ "columnlist ::= columnlist COMMA column", /* 26 */ "columnlist ::= column", /* 27 */ "column ::= columnid type carglist", /* 28 */ "columnid ::= nm", /* 29 */ "id ::= ID", /* 30 */ "ids ::= ID", /* 31 */ "ids ::= STRING", /* 32 */ "nm ::= ID", /* 33 */ "nm ::= STRING", /* 34 */ "nm ::= JOIN_KW", /* 35 */ "type ::=", /* 36 */ "type ::= typename", /* 37 */ "type ::= typename LP signed RP", /* 38 */ "type ::= typename LP signed COMMA signed RP", /* 39 */ "typename ::= ids", /* 40 */ "typename ::= typename ids", /* 41 */ "signed ::= plus_num", /* 42 */ "signed ::= minus_num", /* 43 */ "carglist ::= carglist carg", /* 44 */ "carglist ::=", /* 45 */ "carg ::= CONSTRAINT nm ccons", /* 46 */ "carg ::= ccons", /* 47 */ "carg ::= DEFAULT term", /* 48 */ "carg ::= DEFAULT PLUS term", /* 49 */ "carg ::= DEFAULT MINUS term", /* 50 */ "carg ::= DEFAULT id", /* 51 */ "ccons ::= NULL onconf", /* 52 */ "ccons ::= NOT NULL onconf", /* 53 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc", /* 54 */ "ccons ::= UNIQUE onconf", /* 55 */ "ccons ::= CHECK LP expr RP onconf", /* 56 */ "ccons ::= REFERENCES nm idxlist_opt refargs", /* 57 */ "ccons ::= defer_subclause", /* 58 */ "ccons ::= COLLATE id", /* 59 */ "autoinc ::=", /* 60 */ "autoinc ::= AUTOINCR", /* 61 */ "refargs ::=", /* 62 */ "refargs ::= refargs refarg", /* 63 */ "refarg ::= MATCH nm", /* 64 */ "refarg ::= ON DELETE refact", /* 65 */ "refarg ::= ON UPDATE refact", /* 66 */ "refarg ::= ON INSERT refact", /* 67 */ "refact ::= SET NULL", /* 68 */ "refact ::= SET DEFAULT", /* 69 */ "refact ::= CASCADE", /* 70 */ "refact ::= RESTRICT", /* 71 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt", /* 72 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt", /* 73 */ "init_deferred_pred_opt ::=", /* 74 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED", /* 75 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE", /* 76 */ "conslist_opt ::=",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -