📄 parse.c
字号:
/* Driver template for the LEMON parser generator.** The author disclaims copyright to this source code.*//* First off, code is include which follows the "include" declaration** in the input file. */#include <stdio.h>#line 33 "ext/sqlite/libsqlite/src/parse.y"#include "sqliteInt.h"#include "parse.h"/*** An instance of this structure holds information about the** LIMIT clause of a SELECT statement.*/struct LimitVal { int limit; /* The LIMIT value. -1 if there is no limit */ int offset; /* The OFFSET. 0 if there is none */};/*** An instance of the following structure describes the event of a** TRIGGER. "a" is the event type, one of TK_UPDATE, TK_INSERT,** TK_DELETE, or TK_INSTEAD. If the event is of the form**** UPDATE ON (a,b,c)**** Then the "b" IdList records the list "a,b,c".*/struct TrigEvent { int a; IdList * b; };#line 34 "ext/sqlite/libsqlite/src/parse.c"/* Next is all token values, in a form suitable for use by makeheaders.** This section will be null unless lemon is run with the -m switch.*//* ** These constants (all generated automatically by the parser generator)** specify the various kinds of tokens (terminals) that the parser** understands. **** Each symbol here is a terminal symbol in the grammar.*//* Make sure the INTERFACE macro is defined.*/#ifndef INTERFACE# define INTERFACE 1#endif/* The next thing included is series of defines which control** various aspects of the generated parser.** YYCODETYPE is the data type used for storing terminal** and nonterminal numbers. "unsigned char" is** used if there are fewer than 250 terminals** and nonterminals. "int" is used otherwise.** YYNOCODE is a number of type YYCODETYPE which corresponds** to no legal terminal or nonterminal number. This** number is used to fill in empty slots of the hash ** table.** YYFALLBACK If defined, this indicates that one or more tokens** have fall-back values which should be used if the** original value of the token will not parse.** YYACTIONTYPE is the data type used for storing terminal** and nonterminal numbers. "unsigned char" is** used if there are fewer than 250 rules and** states combined. "int" is used otherwise.** sqliteParserTOKENTYPE is the data type used for minor tokens given ** directly to the parser from the tokenizer.** YYMINORTYPE is the data type used for all minor tokens.** This is typically a union of many types, one of** which is sqliteParserTOKENTYPE. The entry in the union** for base tokens is called "yy0".** YYSTACKDEPTH is the maximum depth of the parser's stack.** sqliteParserARG_SDECL A static variable declaration for the %extra_argument** sqliteParserARG_PDECL A parameter declaration for the %extra_argument** sqliteParserARG_STORE Code to store %extra_argument into yypParser** sqliteParserARG_FETCH Code to extract %extra_argument from yypParser** YYNSTATE the combined number of states.** YYNRULE the number of rules in the grammar** YYERRORSYMBOL is the code number of the error symbol. If not** defined, then do no error processing.*/#define YYCODETYPE unsigned char#define YYNOCODE 221#define YYACTIONTYPE unsigned short int#define sqliteParserTOKENTYPE Tokentypedef union { sqliteParserTOKENTYPE yy0; TriggerStep * yy19; struct LimitVal yy124; Select* yy179; Expr * yy182; Expr* yy242; struct TrigEvent yy290; Token yy298; SrcList* yy307; IdList* yy320; ExprList* yy322; int yy372; struct {int value; int mask;} yy407; int yy441;} YYMINORTYPE;#define YYSTACKDEPTH 100#define sqliteParserARG_SDECL Parse *pParse;#define sqliteParserARG_PDECL ,Parse *pParse#define sqliteParserARG_FETCH Parse *pParse = yypParser->pParse#define sqliteParserARG_STORE yypParser->pParse = pParse#define YYNSTATE 563#define YYNRULE 293#define YYERRORSYMBOL 131#define YYERRSYMDT yy441#define YYFALLBACK 1#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)#define YY_ERROR_ACTION (YYNSTATE+YYNRULE)/* Next are that tables used to determine what action to take based on the** current state and lookahead token. These tables are used to implement** functions that take a state number and lookahead value and return an** action integer. **** Suppose the action integer is N. Then the action is determined as** follows**** 0 <= N < YYNSTATE Shift N. That is, push the lookahead** token onto the stack and goto state N.**** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.**** N == YYNSTATE+YYNRULE A syntax error has occurred.**** N == YYNSTATE+YYNRULE+1 The parser accepts its input.**** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused** slots in the yy_action[] table.**** The action table is constructed as a single large table named yy_action[].** Given state S and lookahead X, the action is computed as**** yy_action[ yy_shift_ofst[S] + X ]**** If the index value yy_shift_ofst[S]+X is out of range or if the value** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table** and that yy_default[S] should be used instead. **** The formula above is for computing the action when the lookahead is** a terminal symbol. If the lookahead is a non-terminal (as occurs after** a reduce action) then the yy_reduce_ofst[] array is used in place of** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of** YY_SHIFT_USE_DFLT.**** The following are the tables generated in this section:**** yy_action[] A single table containing all actions.** yy_lookahead[] A table containing the lookahead for each entry in** yy_action. Used to detect hash collisions.** yy_shift_ofst[] For each state, the offset into yy_action for** shifting terminals.** yy_reduce_ofst[] For each state, the offset into yy_action for** shifting non-terminals after a reduce.** yy_default[] Default action for each state.*/static const YYACTIONTYPE yy_action[] = { /* 0 */ 264, 5, 262, 119, 123, 117, 121, 129, 131, 133, /* 10 */ 135, 144, 146, 148, 150, 152, 154, 568, 106, 106, /* 20 */ 143, 857, 1, 562, 3, 142, 129, 131, 133, 135, /* 30 */ 144, 146, 148, 150, 152, 154, 174, 103, 8, 115, /* 40 */ 104, 139, 127, 125, 156, 161, 157, 162, 166, 119, /* 50 */ 123, 117, 121, 129, 131, 133, 135, 144, 146, 148, /* 60 */ 150, 152, 154, 31, 361, 392, 263, 143, 363, 369, /* 70 */ 374, 97, 142, 148, 150, 152, 154, 68, 75, 377, /* 80 */ 167, 64, 218, 46, 20, 289, 115, 104, 139, 127, /* 90 */ 125, 156, 161, 157, 162, 166, 119, 123, 117, 121, /* 100 */ 129, 131, 133, 135, 144, 146, 148, 150, 152, 154, /* 110 */ 193, 41, 336, 563, 44, 54, 60, 62, 308, 331, /* 120 */ 175, 20, 560, 561, 572, 333, 640, 18, 359, 144, /* 130 */ 146, 148, 150, 152, 154, 143, 181, 179, 303, 18, /* 140 */ 142, 84, 86, 20, 177, 66, 67, 111, 21, 22, /* 150 */ 112, 105, 83, 792, 115, 104, 139, 127, 125, 156, /* 160 */ 161, 157, 162, 166, 119, 123, 117, 121, 129, 131, /* 170 */ 133, 135, 144, 146, 148, 150, 152, 154, 790, 560, /* 180 */ 561, 46, 13, 113, 183, 21, 22, 534, 361, 2, /* 190 */ 3, 14, 363, 369, 374, 338, 361, 690, 544, 542, /* 200 */ 363, 369, 374, 377, 836, 143, 15, 21, 22, 16, /* 210 */ 142, 377, 44, 54, 60, 62, 308, 331, 396, 535, /* 220 */ 17, 9, 191, 333, 115, 104, 139, 127, 125, 156, /* 230 */ 161, 157, 162, 166, 119, 123, 117, 121, 129, 131, /* 240 */ 133, 135, 144, 146, 148, 150, 152, 154, 571, 230, /* 250 */ 340, 343, 143, 20, 536, 537, 538, 142, 402, 337, /* 260 */ 398, 339, 357, 68, 346, 347, 32, 64, 266, 391, /* 270 */ 37, 115, 104, 139, 127, 125, 156, 161, 157, 162, /* 280 */ 166, 119, 123, 117, 121, 129, 131, 133, 135, 144, /* 290 */ 146, 148, 150, 152, 154, 839, 193, 651, 291, 298, /* 300 */ 300, 221, 357, 43, 173, 689, 175, 251, 330, 36, /* 310 */ 37, 106, 232, 40, 335, 58, 137, 21, 22, 330, /* 320 */ 411, 143, 181, 179, 47, 59, 142, 358, 390, 174, /* 330 */ 177, 66, 67, 111, 448, 49, 112, 105, 583, 213, /* 340 */ 115, 104, 139, 127, 125, 156, 161, 157, 162, 166, /* 350 */ 119, 123, 117, 121, 129, 131, 133, 135, 144, 146, /* 360 */ 148, 150, 152, 154, 306, 301, 106, 249, 259, 113, /* 370 */ 183, 793, 70, 253, 281, 219, 20, 106, 20, 11, /* 380 */ 106, 482, 454, 444, 299, 143, 169, 10, 171, 172, /* 390 */ 142, 169, 73, 171, 172, 103, 688, 69, 174, 169, /* 400 */ 252, 171, 172, 12, 115, 104, 139, 127, 125, 156, /* 410 */ 161, 157, 162, 166, 119, 123, 117, 121, 129, 131, /* 420 */ 133, 135, 144, 146, 148, 150, 152, 154, 95, 237, /* 430 */ 313, 20, 143, 295, 244, 424, 169, 142, 171, 172, /* 440 */ 21, 22, 21, 22, 219, 386, 316, 323, 325, 837, /* 450 */ 19, 115, 104, 139, 127, 125, 156, 161, 157, 162, /* 460 */ 166, 119, 123, 117, 121, 129, 131, 133, 135, 144, /* 470 */ 146, 148, 150, 152, 154, 106, 661, 20, 264, 143, /* 480 */ 262, 844, 315, 169, 142, 171, 172, 333, 38, 842, /* 490 */ 10, 356, 348, 184, 421, 21, 22, 282, 115, 104, /* 500 */ 139, 127, 125, 156, 161, 157, 162, 166, 119, 123, /* 510 */ 117, 121, 129, 131, 133, 135, 144, 146, 148, 150, /* 520 */ 152, 154, 69, 254, 262, 251, 143, 639, 663, 35, /* 530 */ 65, 142, 726, 313, 283, 259, 185, 417, 419, 418, /* 540 */ 284, 21, 22, 690, 263, 115, 104, 139, 127, 125, /* 550 */ 156, 161, 157, 162, 166, 119, 123, 117, 121, 129, /* 560 */ 131, 133, 135, 144, 146, 148, 150, 152, 154, 256, /* 570 */ 20, 791, 424, 143, 169, 52, 171, 172, 142, 169, /* 580 */ 24, 171, 172, 247, 53, 315, 26, 169, 263, 171, /* 590 */ 172, 253, 115, 164, 139, 127, 125, 156, 161, 157, /* 600 */ 162, 166, 119, 123, 117, 121, 129, 131, 133, 135, /* 610 */ 144, 146, 148, 150, 152, 154, 426, 349, 252, 425, /* 620 */ 143, 262, 575, 297, 591, 142, 169, 296, 171, 172, /* 630 */ 169, 471, 171, 172, 21, 22, 427, 221, 91, 115, /* 640 */ 227, 139, 127, 125, 156, 161, 157, 162, 166, 119, /* 650 */ 123, 117, 121, 129, 131, 133, 135, 144, 146, 148, /* 660 */ 150, 152, 154, 388, 312, 106, 89, 143, 720, 376, /* 670 */ 387, 170, 142, 487, 666, 248, 320, 216, 319, 217, /* 680 */ 28, 459, 30, 305, 189, 263, 209, 104, 139, 127, /* 690 */ 125, 156, 161, 157, 162, 166, 119, 123, 117, 121, /* 700 */ 129, 131, 133, 135, 144, 146, 148, 150, 152, 154, /* 710 */ 106, 106, 809, 494, 143, 489, 106, 816, 33, 142, /* 720 */ 395, 234, 273, 217, 274, 420, 20, 545, 114, 481, /* 730 */ 137, 429, 576, 321, 116, 139, 127, 125, 156, 161, /* 740 */ 157, 162, 166, 119, 123, 117, 121, 129, 131, 133, /* 750 */ 135, 144, 146, 148, 150, 152, 154, 7, 322, 23, /* 760 */ 25, 27, 394, 68, 415, 416, 10, 64, 197, 477, /* 770 */ 577, 533, 266, 548, 578, 831, 276, 201, 520, 4, /* 780 */ 6, 245, 430, 557, 29, 266, 491, 106, 441, 497, /* 790 */ 21, 22, 205, 168, 443, 195, 193, 531, 276, 448, /* 800 */ 276, 808, 267, 272, 529, 174, 175, 318, 440, 341, /* 810 */ 344, 106, 342, 345, 69, 286, 68, 582, 69, 69, /* 820 */ 64, 540, 181, 179, 541, 328, 302, 366, 217, 118, /* 830 */ 177, 66, 67, 111, 34, 143, 112, 105, 445, 510, /* 840 */ 142, 215, 278, 800, 467, 276, 498, 503, 444, 193, /* 850 */ 106, 219, 486, 443, 42, 73, 231, 73, 45, 175, /* 860 */ 449, 39, 225, 229, 278, 451, 278, 68, 174, 113, /* 870 */ 183, 64, 371, 55, 106, 181, 179, 292, 69, 276, /* 880 */ 276, 69, 48, 177, 66, 67, 111, 224, 276, 112, /* 890 */ 105, 106, 481, 393, 106, 106, 63, 106, 106, 106, /* 900 */ 193, 653, 106, 467, 233, 51, 380, 437, 526, 120, /* 910 */ 175, 278, 122, 124, 219, 126, 128, 130, 69, 453, /* 920 */ 132, 106, 113, 183, 451, 106, 181, 179, 159, 106, /* 930 */ 106, 106, 518, 106, 177, 66, 67, 111, 106, 134, /* 940 */ 112, 105, 422, 136, 106, 278, 278, 138, 141, 145, /* 950 */ 720, 147, 106, 329, 275, 274, 149, 106, 852, 158, /* 960 */ 106, 106, 151, 106, 106, 351, 106, 352, 106, 464, /* 970 */ 153, 106, 106, 113, 183, 155, 106, 106, 163, 165, /* 980 */ 106, 176, 178, 106, 180, 106, 182, 106, 401, 190, /* 990 */ 192, 106, 106, 293, 210, 212, 106, 367, 214, 274,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -