Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1889)

Side by Side Diff: third_party/sqlite/src/ext/fts5/fts5parse.y

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 ** 2014 May 31 2 ** 2014 May 31
3 ** 3 **
4 ** The author disclaims copyright to this source code. In place of 4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing: 5 ** a legal notice, here is a blessing:
6 ** 6 **
7 ** May you do good and not evil. 7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others. 8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give. 9 ** May you share freely, never taking more than you give.
10 ** 10 **
(...skipping 10 matching lines...) Expand all
21 // 21 //
22 %token_type {Fts5Token} 22 %token_type {Fts5Token}
23 %default_type {Fts5Token} 23 %default_type {Fts5Token}
24 24
25 // The generated parser function takes a 4th argument as follows: 25 // The generated parser function takes a 4th argument as follows:
26 %extra_argument {Fts5Parse *pParse} 26 %extra_argument {Fts5Parse *pParse}
27 27
28 // This code runs whenever there is a syntax error 28 // This code runs whenever there is a syntax error
29 // 29 //
30 %syntax_error { 30 %syntax_error {
31 UNUSED_PARAM(yymajor); /* Silence a compiler warning */
31 sqlite3Fts5ParseError( 32 sqlite3Fts5ParseError(
32 pParse, "fts5: syntax error near \"%.*s\"",TOKEN.n,TOKEN.p 33 pParse, "fts5: syntax error near \"%.*s\"",TOKEN.n,TOKEN.p
33 ); 34 );
34 } 35 }
35 %stack_overflow { 36 %stack_overflow {
36 assert( 0 ); 37 sqlite3Fts5ParseError(pParse, "fts5: parser stack overflow");
37 } 38 }
38 39
39 // The name of the generated procedure that implements the parser 40 // The name of the generated procedure that implements the parser
40 // is as follows: 41 // is as follows:
41 %name sqlite3Fts5Parser 42 %name sqlite3Fts5Parser
42 43
43 // The following text is included near the beginning of the C source 44 // The following text is included near the beginning of the C source
44 // code file that implements the parser. 45 // code file that implements the parser.
45 // 46 //
46 %include { 47 %include {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 } 97 }
97 expr(A) ::= expr(X) NOT expr(Y). { 98 expr(A) ::= expr(X) NOT expr(Y). {
98 A = sqlite3Fts5ParseNode(pParse, FTS5_NOT, X, Y, 0); 99 A = sqlite3Fts5ParseNode(pParse, FTS5_NOT, X, Y, 0);
99 } 100 }
100 101
101 expr(A) ::= LP expr(X) RP. {A = X;} 102 expr(A) ::= LP expr(X) RP. {A = X;}
102 expr(A) ::= exprlist(X). {A = X;} 103 expr(A) ::= exprlist(X). {A = X;}
103 104
104 exprlist(A) ::= cnearset(X). {A = X;} 105 exprlist(A) ::= cnearset(X). {A = X;}
105 exprlist(A) ::= exprlist(X) cnearset(Y). { 106 exprlist(A) ::= exprlist(X) cnearset(Y). {
106 A = sqlite3Fts5ParseNode(pParse, FTS5_AND, X, Y, 0); 107 A = sqlite3Fts5ParseImplicitAnd(pParse, X, Y);
107 } 108 }
108 109
109 cnearset(A) ::= nearset(X). { 110 cnearset(A) ::= nearset(X). {
110 A = sqlite3Fts5ParseNode(pParse, FTS5_STRING, 0, 0, X); 111 A = sqlite3Fts5ParseNode(pParse, FTS5_STRING, 0, 0, X);
111 } 112 }
112 cnearset(A) ::= colset(X) COLON nearset(Y). { 113 cnearset(A) ::= colset(X) COLON nearset(Y). {
113 sqlite3Fts5ParseSetColset(pParse, Y, X); 114 sqlite3Fts5ParseSetColset(pParse, Y, X);
114 A = sqlite3Fts5ParseNode(pParse, FTS5_STRING, 0, 0, Y); 115 A = sqlite3Fts5ParseNode(pParse, FTS5_STRING, 0, 0, Y);
115 } 116 }
116 117
117 %type colset {Fts5Colset*} 118 %type colset {Fts5Colset*}
118 %destructor colset { sqlite3_free($$); } 119 %destructor colset { sqlite3_free($$); }
119 %type colsetlist {Fts5Colset*} 120 %type colsetlist {Fts5Colset*}
120 %destructor colsetlist { sqlite3_free($$); } 121 %destructor colsetlist { sqlite3_free($$); }
121 122
123 colset(A) ::= MINUS LCP colsetlist(X) RCP. {
124 A = sqlite3Fts5ParseColsetInvert(pParse, X);
125 }
122 colset(A) ::= LCP colsetlist(X) RCP. { A = X; } 126 colset(A) ::= LCP colsetlist(X) RCP. { A = X; }
123 colset(A) ::= STRING(X). { 127 colset(A) ::= STRING(X). {
124 A = sqlite3Fts5ParseColset(pParse, 0, &X); 128 A = sqlite3Fts5ParseColset(pParse, 0, &X);
125 } 129 }
130 colset(A) ::= MINUS STRING(X). {
131 A = sqlite3Fts5ParseColset(pParse, 0, &X);
132 A = sqlite3Fts5ParseColsetInvert(pParse, A);
133 }
126 134
127 colsetlist(A) ::= colsetlist(Y) STRING(X). { 135 colsetlist(A) ::= colsetlist(Y) STRING(X). {
128 A = sqlite3Fts5ParseColset(pParse, Y, &X); } 136 A = sqlite3Fts5ParseColset(pParse, Y, &X); }
129 colsetlist(A) ::= STRING(X). { 137 colsetlist(A) ::= STRING(X). {
130 A = sqlite3Fts5ParseColset(pParse, 0, &X); 138 A = sqlite3Fts5ParseColset(pParse, 0, &X);
131 } 139 }
132 140
133
134 %type nearset {Fts5ExprNearset*} 141 %type nearset {Fts5ExprNearset*}
135 %type nearphrases {Fts5ExprNearset*} 142 %type nearphrases {Fts5ExprNearset*}
136 %destructor nearset { sqlite3Fts5ParseNearsetFree($$); } 143 %destructor nearset { sqlite3Fts5ParseNearsetFree($$); }
137 %destructor nearphrases { sqlite3Fts5ParseNearsetFree($$); } 144 %destructor nearphrases { sqlite3Fts5ParseNearsetFree($$); }
138 145
139 nearset(A) ::= phrase(X). { A = sqlite3Fts5ParseNearset(pParse, 0, X); } 146 nearset(A) ::= phrase(X). { A = sqlite3Fts5ParseNearset(pParse, 0, X); }
140 nearset(A) ::= STRING(X) LP nearphrases(Y) neardist_opt(Z) RP. { 147 nearset(A) ::= STRING(X) LP nearphrases(Y) neardist_opt(Z) RP. {
141 sqlite3Fts5ParseNear(pParse, &X); 148 sqlite3Fts5ParseNear(pParse, &X);
142 sqlite3Fts5ParseSetDistance(pParse, Y, &Z); 149 sqlite3Fts5ParseSetDistance(pParse, Y, &Z);
143 A = Y; 150 A = Y;
(...skipping 29 matching lines...) Expand all
173 A = sqlite3Fts5ParseTerm(pParse, 0, &Y, Z); 180 A = sqlite3Fts5ParseTerm(pParse, 0, &Y, Z);
174 } 181 }
175 182
176 /* 183 /*
177 ** Optional "*" character. 184 ** Optional "*" character.
178 */ 185 */
179 %type star_opt {int} 186 %type star_opt {int}
180 187
181 star_opt(A) ::= STAR. { A = 1; } 188 star_opt(A) ::= STAR. { A = 1; }
182 star_opt(A) ::= . { A = 0; } 189 star_opt(A) ::= . { A = 0; }
OLDNEW
« no previous file with comments | « third_party/sqlite/src/ext/fts5/fts5_vocab.c ('k') | third_party/sqlite/src/ext/fts5/test/fts5_common.tcl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698