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

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

Issue 901033002: Import SQLite 3.8.7.4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Chromium changes to support SQLite 3.8.7.4. Created 5 years, 10 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 ** 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
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 #ifdef SQLITE_OMIT_VIRTUALTABLE 131 #ifdef SQLITE_OMIT_VIRTUALTABLE
132 # define VTAB 0 132 # define VTAB 0
133 #else 133 #else
134 # define VTAB 0x00010000 134 # define VTAB 0x00010000
135 #endif 135 #endif
136 #ifdef SQLITE_OMIT_AUTOVACUUM 136 #ifdef SQLITE_OMIT_AUTOVACUUM
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 #ifdef SQLITE_OMIT_CTE
142 # define CTE 0
143 #else
144 # define CTE 0x00040000
145 #endif
141 146
142 /* 147 /*
143 ** These are the keywords 148 ** These are the keywords
144 */ 149 */
145 static Keyword aKeywordTable[] = { 150 static Keyword aKeywordTable[] = {
146 { "ABORT", "TK_ABORT", CONFLICT|TRIGGER }, 151 { "ABORT", "TK_ABORT", CONFLICT|TRIGGER },
147 { "ACTION", "TK_ACTION", FKEY }, 152 { "ACTION", "TK_ACTION", FKEY },
148 { "ADD", "TK_ADD", ALTER }, 153 { "ADD", "TK_ADD", ALTER },
149 { "AFTER", "TK_AFTER", TRIGGER }, 154 { "AFTER", "TK_AFTER", TRIGGER },
150 { "ALL", "TK_ALL", ALWAYS }, 155 { "ALL", "TK_ALL", ALWAYS },
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 { "OFFSET", "TK_OFFSET", ALWAYS }, 232 { "OFFSET", "TK_OFFSET", ALWAYS },
228 { "ON", "TK_ON", ALWAYS }, 233 { "ON", "TK_ON", ALWAYS },
229 { "OR", "TK_OR", ALWAYS }, 234 { "OR", "TK_OR", ALWAYS },
230 { "ORDER", "TK_ORDER", ALWAYS }, 235 { "ORDER", "TK_ORDER", ALWAYS },
231 { "OUTER", "TK_JOIN_KW", ALWAYS }, 236 { "OUTER", "TK_JOIN_KW", ALWAYS },
232 { "PLAN", "TK_PLAN", EXPLAIN }, 237 { "PLAN", "TK_PLAN", EXPLAIN },
233 { "PRAGMA", "TK_PRAGMA", PRAGMA }, 238 { "PRAGMA", "TK_PRAGMA", PRAGMA },
234 { "PRIMARY", "TK_PRIMARY", ALWAYS }, 239 { "PRIMARY", "TK_PRIMARY", ALWAYS },
235 { "QUERY", "TK_QUERY", EXPLAIN }, 240 { "QUERY", "TK_QUERY", EXPLAIN },
236 { "RAISE", "TK_RAISE", TRIGGER }, 241 { "RAISE", "TK_RAISE", TRIGGER },
242 { "RECURSIVE", "TK_RECURSIVE", CTE },
237 { "REFERENCES", "TK_REFERENCES", FKEY }, 243 { "REFERENCES", "TK_REFERENCES", FKEY },
238 { "REGEXP", "TK_LIKE_KW", ALWAYS }, 244 { "REGEXP", "TK_LIKE_KW", ALWAYS },
239 { "REINDEX", "TK_REINDEX", REINDEX }, 245 { "REINDEX", "TK_REINDEX", REINDEX },
240 { "RELEASE", "TK_RELEASE", ALWAYS }, 246 { "RELEASE", "TK_RELEASE", ALWAYS },
241 { "RENAME", "TK_RENAME", ALTER }, 247 { "RENAME", "TK_RENAME", ALTER },
242 { "REPLACE", "TK_REPLACE", CONFLICT }, 248 { "REPLACE", "TK_REPLACE", CONFLICT },
243 { "RESTRICT", "TK_RESTRICT", FKEY }, 249 { "RESTRICT", "TK_RESTRICT", FKEY },
244 { "RIGHT", "TK_JOIN_KW", ALWAYS }, 250 { "RIGHT", "TK_JOIN_KW", ALWAYS },
245 { "ROLLBACK", "TK_ROLLBACK", ALWAYS }, 251 { "ROLLBACK", "TK_ROLLBACK", ALWAYS },
246 { "ROW", "TK_ROW", TRIGGER }, 252 { "ROW", "TK_ROW", TRIGGER },
247 { "SAVEPOINT", "TK_SAVEPOINT", ALWAYS }, 253 { "SAVEPOINT", "TK_SAVEPOINT", ALWAYS },
248 { "SELECT", "TK_SELECT", ALWAYS }, 254 { "SELECT", "TK_SELECT", ALWAYS },
249 { "SET", "TK_SET", ALWAYS }, 255 { "SET", "TK_SET", ALWAYS },
250 { "TABLE", "TK_TABLE", ALWAYS }, 256 { "TABLE", "TK_TABLE", ALWAYS },
251 { "TEMP", "TK_TEMP", ALWAYS }, 257 { "TEMP", "TK_TEMP", ALWAYS },
252 { "TEMPORARY", "TK_TEMP", ALWAYS }, 258 { "TEMPORARY", "TK_TEMP", ALWAYS },
253 { "THEN", "TK_THEN", ALWAYS }, 259 { "THEN", "TK_THEN", ALWAYS },
254 { "TO", "TK_TO", ALWAYS }, 260 { "TO", "TK_TO", ALWAYS },
255 { "TRANSACTION", "TK_TRANSACTION", ALWAYS }, 261 { "TRANSACTION", "TK_TRANSACTION", ALWAYS },
256 { "TRIGGER", "TK_TRIGGER", TRIGGER }, 262 { "TRIGGER", "TK_TRIGGER", TRIGGER },
257 { "UNION", "TK_UNION", COMPOUND }, 263 { "UNION", "TK_UNION", COMPOUND },
258 { "UNIQUE", "TK_UNIQUE", ALWAYS }, 264 { "UNIQUE", "TK_UNIQUE", ALWAYS },
259 { "UPDATE", "TK_UPDATE", ALWAYS }, 265 { "UPDATE", "TK_UPDATE", ALWAYS },
260 { "USING", "TK_USING", ALWAYS }, 266 { "USING", "TK_USING", ALWAYS },
261 { "VACUUM", "TK_VACUUM", VACUUM }, 267 { "VACUUM", "TK_VACUUM", VACUUM },
262 { "VALUES", "TK_VALUES", ALWAYS }, 268 { "VALUES", "TK_VALUES", ALWAYS },
263 { "VIEW", "TK_VIEW", VIEW }, 269 { "VIEW", "TK_VIEW", VIEW },
264 { "VIRTUAL", "TK_VIRTUAL", VTAB }, 270 { "VIRTUAL", "TK_VIRTUAL", VTAB },
271 { "WITH", "TK_WITH", CTE },
272 { "WITHOUT", "TK_WITHOUT", ALWAYS },
265 { "WHEN", "TK_WHEN", ALWAYS }, 273 { "WHEN", "TK_WHEN", ALWAYS },
266 { "WHERE", "TK_WHERE", ALWAYS }, 274 { "WHERE", "TK_WHERE", ALWAYS },
267 }; 275 };
268 276
269 /* Number of keywords */ 277 /* Number of keywords */
270 static int nKeyword = (sizeof(aKeywordTable)/sizeof(aKeywordTable[0])); 278 static int nKeyword = (sizeof(aKeywordTable)/sizeof(aKeywordTable[0]));
271 279
272 /* An array to map all upper-case characters into their corresponding 280 /* An array to map all upper-case characters into their corresponding
273 ** lower-case character. 281 ** lower-case character.
274 */ 282 */
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 if( j<i ){ 361 if( j<i ){
354 aKeywordTable[j] = aKeywordTable[i]; 362 aKeywordTable[j] = aKeywordTable[i];
355 } 363 }
356 j++; 364 j++;
357 } 365 }
358 nKeyword = j; 366 nKeyword = j;
359 367
360 /* Fill in the lengths of strings and hashes for all entries. */ 368 /* Fill in the lengths of strings and hashes for all entries. */
361 for(i=0; i<nKeyword; i++){ 369 for(i=0; i<nKeyword; i++){
362 Keyword *p = &aKeywordTable[i]; 370 Keyword *p = &aKeywordTable[i];
363 p->len = strlen(p->zName); 371 p->len = (int)strlen(p->zName);
364 assert( p->len<sizeof(p->zOrigName) ); 372 assert( p->len<sizeof(p->zOrigName) );
365 strcpy(p->zOrigName, p->zName); 373 memcpy(p->zOrigName, p->zName, p->len+1);
366 totalLen += p->len; 374 totalLen += p->len;
367 p->hash = (UpperToLower[(int)p->zName[0]]*4) ^ 375 p->hash = (UpperToLower[(int)p->zName[0]]*4) ^
368 (UpperToLower[(int)p->zName[p->len-1]]*3) ^ p->len; 376 (UpperToLower[(int)p->zName[p->len-1]]*3) ^ p->len;
369 p->id = i+1; 377 p->id = i+1;
370 } 378 }
371 379
372 /* Sort the table from shortest to longest keyword */ 380 /* Sort the table from shortest to longest keyword */
373 qsort(aKeywordTable, nKeyword, sizeof(aKeywordTable[0]), keywordCompare1); 381 qsort(aKeywordTable, nKeyword, sizeof(aKeywordTable[0]), keywordCompare1);
374 382
375 /* Look for short keywords embedded in longer keywords */ 383 /* Look for short keywords embedded in longer keywords */
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 printf(" }\n"); 601 printf(" }\n");
594 printf(" return TK_ID;\n"); 602 printf(" return TK_ID;\n");
595 printf("}\n"); 603 printf("}\n");
596 printf("int sqlite3KeywordCode(const unsigned char *z, int n){\n"); 604 printf("int sqlite3KeywordCode(const unsigned char *z, int n){\n");
597 printf(" return keywordCode((char*)z, n);\n"); 605 printf(" return keywordCode((char*)z, n);\n");
598 printf("}\n"); 606 printf("}\n");
599 printf("#define SQLITE_N_KEYWORD %d\n", nKeyword); 607 printf("#define SQLITE_N_KEYWORD %d\n", nKeyword);
600 608
601 return 0; 609 return 0;
602 } 610 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698