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

Side by Side Diff: third_party/sqlite/src/tool/mkkeywordhash.c

Issue 6990047: Import SQLite 3.7.6.3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/src/tool/lempar.c ('k') | third_party/sqlite/src/tool/mksqlite3c.tcl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ** Compile and run this standalone program in order to generate code that 2 ** Compile and run this standalone program in order to generate code that
3 ** implements a function that will translate alphabetic identifiers into 3 ** implements a function that will translate alphabetic identifiers into
4 ** parser token codes. 4 ** parser token codes.
5 */ 5 */
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <string.h> 7 #include <string.h>
8 #include <stdlib.h> 8 #include <stdlib.h>
9 #include <assert.h> 9 #include <assert.h>
10 10
11 /* 11 /*
12 ** A header comment placed at the beginning of generated code. 12 ** A header comment placed at the beginning of generated code.
13 */ 13 */
14 static const char zHdr[] = 14 static const char zHdr[] =
15 "/***** This file contains automatically generated code ******\n" 15 "/***** This file contains automatically generated code ******\n"
16 "**\n" 16 "**\n"
17 "** The code in this file has been automatically generated by\n" 17 "** The code in this file has been automatically generated by\n"
18 "**\n" 18 "**\n"
19 "** $Header: /home/drh/sqlite/trans/cvs/sqlite/sqlite/tool/mkkeywordhash.c ,v 1.38 2009/06/09 14:27:41 drh Exp $\n" 19 "** sqlite/tool/mkkeywordhash.c\n"
20 "**\n" 20 "**\n"
21 "** The code in this file implements a function that determines whether\n" 21 "** The code in this file implements a function that determines whether\n"
22 "** or not a given identifier is really an SQL keyword. The same thing\n" 22 "** or not a given identifier is really an SQL keyword. The same thing\n"
23 "** might be implemented more directly using a hand-written hash table.\n" 23 "** might be implemented more directly using a hand-written hash table.\n"
24 "** But by using this automatically generated code, the size of the code\n" 24 "** But by using this automatically generated code, the size of the code\n"
25 "** is substantially reduced. This is important for embedded applications\n" 25 "** is substantially reduced. This is important for embedded applications\n"
26 "** on platforms with limited memory.\n" 26 "** on platforms with limited memory.\n"
27 "*/\n" 27 "*/\n"
28 ; 28 ;
29 29
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 # define AUTOVACUUM 0 137 # define AUTOVACUUM 0
138 #else 138 #else
139 # define AUTOVACUUM 0x00020000 139 # define AUTOVACUUM 0x00020000
140 #endif 140 #endif
141 141
142 /* 142 /*
143 ** These are the keywords 143 ** These are the keywords
144 */ 144 */
145 static Keyword aKeywordTable[] = { 145 static Keyword aKeywordTable[] = {
146 { "ABORT", "TK_ABORT", CONFLICT|TRIGGER }, 146 { "ABORT", "TK_ABORT", CONFLICT|TRIGGER },
147 { "ACTION", "TK_ACTION", FKEY },
147 { "ADD", "TK_ADD", ALTER }, 148 { "ADD", "TK_ADD", ALTER },
148 { "AFTER", "TK_AFTER", TRIGGER }, 149 { "AFTER", "TK_AFTER", TRIGGER },
149 { "ALL", "TK_ALL", ALWAYS }, 150 { "ALL", "TK_ALL", ALWAYS },
150 { "ALTER", "TK_ALTER", ALTER }, 151 { "ALTER", "TK_ALTER", ALTER },
151 { "ANALYZE", "TK_ANALYZE", ANALYZE }, 152 { "ANALYZE", "TK_ANALYZE", ANALYZE },
152 { "AND", "TK_AND", ALWAYS }, 153 { "AND", "TK_AND", ALWAYS },
153 { "AS", "TK_AS", ALWAYS }, 154 { "AS", "TK_AS", ALWAYS },
154 { "ASC", "TK_ASC", ALWAYS }, 155 { "ASC", "TK_ASC", ALWAYS },
155 { "ATTACH", "TK_ATTACH", ATTACH }, 156 { "ATTACH", "TK_ATTACH", ATTACH },
156 { "AUTOINCREMENT", "TK_AUTOINCR", AUTOINCR }, 157 { "AUTOINCREMENT", "TK_AUTOINCR", AUTOINCR },
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 { "INTO", "TK_INTO", ALWAYS }, 212 { "INTO", "TK_INTO", ALWAYS },
212 { "IS", "TK_IS", ALWAYS }, 213 { "IS", "TK_IS", ALWAYS },
213 { "ISNULL", "TK_ISNULL", ALWAYS }, 214 { "ISNULL", "TK_ISNULL", ALWAYS },
214 { "JOIN", "TK_JOIN", ALWAYS }, 215 { "JOIN", "TK_JOIN", ALWAYS },
215 { "KEY", "TK_KEY", ALWAYS }, 216 { "KEY", "TK_KEY", ALWAYS },
216 { "LEFT", "TK_JOIN_KW", ALWAYS }, 217 { "LEFT", "TK_JOIN_KW", ALWAYS },
217 { "LIKE", "TK_LIKE_KW", ALWAYS }, 218 { "LIKE", "TK_LIKE_KW", ALWAYS },
218 { "LIMIT", "TK_LIMIT", ALWAYS }, 219 { "LIMIT", "TK_LIMIT", ALWAYS },
219 { "MATCH", "TK_MATCH", ALWAYS }, 220 { "MATCH", "TK_MATCH", ALWAYS },
220 { "NATURAL", "TK_JOIN_KW", ALWAYS }, 221 { "NATURAL", "TK_JOIN_KW", ALWAYS },
222 { "NO", "TK_NO", FKEY },
221 { "NOT", "TK_NOT", ALWAYS }, 223 { "NOT", "TK_NOT", ALWAYS },
222 { "NOTNULL", "TK_NOTNULL", ALWAYS }, 224 { "NOTNULL", "TK_NOTNULL", ALWAYS },
223 { "NULL", "TK_NULL", ALWAYS }, 225 { "NULL", "TK_NULL", ALWAYS },
224 { "OF", "TK_OF", ALWAYS }, 226 { "OF", "TK_OF", ALWAYS },
225 { "OFFSET", "TK_OFFSET", ALWAYS }, 227 { "OFFSET", "TK_OFFSET", ALWAYS },
226 { "ON", "TK_ON", ALWAYS }, 228 { "ON", "TK_ON", ALWAYS },
227 { "OR", "TK_OR", ALWAYS }, 229 { "OR", "TK_OR", ALWAYS },
228 { "ORDER", "TK_ORDER", ALWAYS }, 230 { "ORDER", "TK_ORDER", ALWAYS },
229 { "OUTER", "TK_JOIN_KW", ALWAYS }, 231 { "OUTER", "TK_JOIN_KW", ALWAYS },
230 { "PLAN", "TK_PLAN", EXPLAIN }, 232 { "PLAN", "TK_PLAN", EXPLAIN },
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 /* 294 /*
293 ** Comparision function for two Keyword records 295 ** Comparision function for two Keyword records
294 */ 296 */
295 static int keywordCompare1(const void *a, const void *b){ 297 static int keywordCompare1(const void *a, const void *b){
296 const Keyword *pA = (Keyword*)a; 298 const Keyword *pA = (Keyword*)a;
297 const Keyword *pB = (Keyword*)b; 299 const Keyword *pB = (Keyword*)b;
298 int n = pA->len - pB->len; 300 int n = pA->len - pB->len;
299 if( n==0 ){ 301 if( n==0 ){
300 n = strcmp(pA->zName, pB->zName); 302 n = strcmp(pA->zName, pB->zName);
301 } 303 }
304 assert( n!=0 );
302 return n; 305 return n;
303 } 306 }
304 static int keywordCompare2(const void *a, const void *b){ 307 static int keywordCompare2(const void *a, const void *b){
305 const Keyword *pA = (Keyword*)a; 308 const Keyword *pA = (Keyword*)a;
306 const Keyword *pB = (Keyword*)b; 309 const Keyword *pB = (Keyword*)b;
307 int n = pB->longestSuffix - pA->longestSuffix; 310 int n = pB->longestSuffix - pA->longestSuffix;
308 if( n==0 ){ 311 if( n==0 ){
309 n = strcmp(pA->zName, pB->zName); 312 n = strcmp(pA->zName, pB->zName);
310 } 313 }
314 assert( n!=0 );
311 return n; 315 return n;
312 } 316 }
313 static int keywordCompare3(const void *a, const void *b){ 317 static int keywordCompare3(const void *a, const void *b){
314 const Keyword *pA = (Keyword*)a; 318 const Keyword *pA = (Keyword*)a;
315 const Keyword *pB = (Keyword*)b; 319 const Keyword *pB = (Keyword*)b;
316 int n = pA->offset - pB->offset; 320 int n = pA->offset - pB->offset;
321 if( n==0 ) n = pB->id - pA->id;
322 assert( n!=0 );
317 return n; 323 return n;
318 } 324 }
319 325
320 /* 326 /*
321 ** Return a KeywordTable entry with the given id 327 ** Return a KeywordTable entry with the given id
322 */ 328 */
323 static Keyword *findById(int id){ 329 static Keyword *findById(int id){
324 int i; 330 int i;
325 for(i=0; i<nKeyword; i++){ 331 for(i=0; i<nKeyword; i++){
326 if( aKeywordTable[i].id==id ) break; 332 if( aKeywordTable[i].id==id ) break;
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 i, aKeywordTable[i].zOrigName); 589 i, aKeywordTable[i].zOrigName);
584 } 590 }
585 printf(" return aCode[i];\n"); 591 printf(" return aCode[i];\n");
586 printf(" }\n"); 592 printf(" }\n");
587 printf(" }\n"); 593 printf(" }\n");
588 printf(" return TK_ID;\n"); 594 printf(" return TK_ID;\n");
589 printf("}\n"); 595 printf("}\n");
590 printf("int sqlite3KeywordCode(const unsigned char *z, int n){\n"); 596 printf("int sqlite3KeywordCode(const unsigned char *z, int n){\n");
591 printf(" return keywordCode((char*)z, n);\n"); 597 printf(" return keywordCode((char*)z, n);\n");
592 printf("}\n"); 598 printf("}\n");
599 printf("#define SQLITE_N_KEYWORD %d\n", nKeyword);
593 600
594 return 0; 601 return 0;
595 } 602 }
OLDNEW
« no previous file with comments | « third_party/sqlite/src/tool/lempar.c ('k') | third_party/sqlite/src/tool/mksqlite3c.tcl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698