259 lines
16 KiB
C
259 lines
16 KiB
C
/* This code is generated by program for seeking hash algorithms, copyright TcX Datakonsult AB */
|
|
|
|
#include "lex.h"
|
|
|
|
|
|
static uint16 char_table[] = {
|
|
12750,52020,34935,35700,2805,13005,43605,32640,51000,29070,23460,28305,16065,53040,22950,43860,
|
|
59925,22695,64770,51765,17340,27795,45645,44115,44370,56610,61200,4335,42330,24480,20145,15810,
|
|
13515,8670,24225,64515,60435,50745,47940,50235,34425,21165,26265,32895,47430,41055,45900,54825,
|
|
15045,43095,30090,53805,35445,2550,42840,55590,11220,25500,41565,39270,42585,59415,5610,26010,
|
|
510,28815,28560,54315,7140,65282,15555,38250,44880,21930,34170,56355,27540,20400,37740,37995,
|
|
60180,2295,24735,60690,17850,29580,56865,51255,48705,7395,33150,4080,10455,34680,8925,13770,
|
|
38505,28815,28560,54315,7140,65282,15555,38250,44880,21930,34170,56355,27540,20400,37740,37995,
|
|
60180,2295,24735,60690,17850,29580,56865,51255,48705,7395,33150,10710,47685,59160,56100,25245,
|
|
6630,62730,255,20910,9945,18360,30855,16575,64005,13260,8415,21420,18870,22440,16320,17595,
|
|
12240,2040,58650,9180,36210,27285,3315,38760,58140,32385,7905,5100,36720,45135,57885,52275,
|
|
1785,24990,21675,6120,23970,48195,16830,48960,43350,52785,35190,14790,41820,55080,29325,61455,
|
|
58395,63240,30600,52530,11475,57120,19635,14025,55335,4590,54570,40290,8160,19125,49470,62985,
|
|
46665,20655,15300,49215,14535,53295,37485,62475,32130,10965,9690,61710,40035,36465,12495,65025,
|
|
1530,11730,39525,27030,35955,9435,44625,7650,51510,19380,63750,1275,33660,31875,46920,4845,
|
|
39780,3060,55845,6375,23205,26520,6885,61965,25755,46410,17085,31365,1020,5355,48450,49725,
|
|
57375,50490,54060,19890,30345,62220,18105,36975,60945,31620,10200,29835,23715,3570,765,59670
|
|
};
|
|
|
|
|
|
static uint16 my_function_table[] = {
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,4,
|
|
325,32767,32767,32767,32767,26,32767,32767,32767,32767,32767,32767,
|
|
81,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,280,32767,126,191,32767,32767,32767,32767,153,
|
|
32767,32767,32767,32767,32767,32767,293,187,32767,32767,32767,32767,
|
|
247,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,124,32767,32767,227,101,32767,
|
|
32767,32767,32767,32767,32767,32767,37,32767,32767,328,32767,154,
|
|
32767,32767,193,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,175,32767,205,32767,32767,59,32767,109,32767,32767,
|
|
32767,32767,32767,32767,32767,269,306,32767,129,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,167,32767,32767,
|
|
32767,32767,32767,32767,206,32767,32767,32767,32767,32767,32767,32767,
|
|
209,32767,32767,32767,78,32767,32767,32767,32767,32767,32767,32767,
|
|
309,32767,32767,32767,122,32767,32767,84,32767,20,32767,32767,
|
|
9,32767,32767,32767,32767,49,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,137,32767,32767,32767,297,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,1,32767,32767,
|
|
32767,32767,21,32767,32767,302,32767,232,272,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,313,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,189,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,177,
|
|
44,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,106,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,288,32767,32767,32767,32767,32767,
|
|
32767,32767,266,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
16,32767,32767,71,32767,32767,32767,89,32767,48,32767,32767,
|
|
32767,27,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,251,213,32767,32767,32767,32767,
|
|
32767,142,32767,32767,320,32767,32767,97,32767,32767,32767,185,
|
|
32767,32767,32767,32767,32767,32767,317,32767,32767,32767,32767,141,
|
|
32767,32767,32767,32767,32767,32767,31,32767,61,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,237,32767,32767,32767,
|
|
32767,32767,32767,32767,249,32767,32767,32767,32767,131,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,283,158,17,32767,
|
|
32767,32767,32767,32767,32767,32767,56,32767,32767,32767,32767,32767,
|
|
161,32767,32767,32767,32767,32767,32767,303,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,162,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,268,32767,32767,32767,229,
|
|
22,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,69,32767,294,115,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,105,32767,32767,32767,32767,32767,32767,32767,107,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
307,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,144,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,147,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,10,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
60,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,263,32767,32767,32767,32767,32767,32767,240,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,212,
|
|
32767,32767,32767,32767,32767,32767,32767,70,32767,32767,32767,32767,
|
|
32767,316,32767,32767,32767,32767,32767,32767,32767,138,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,77,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,149,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,252,32767,102,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,253,32767,32767,32767,32767,32767,259,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,146,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,42,32767,32767,32767,314,32767,32767,
|
|
214,32767,32767,32767,32767,32767,67,32767,176,32767,32767,234,
|
|
32767,32767,32767,32767,32767,32767,32767,258,190,32767,32767,32767,
|
|
32767,238,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,123,32767,32767,32767,32767,32767,32767,32767,32767,275,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,33,32767,32767,32767,
|
|
32767,14,32767,32767,32767,32767,32767,32767,79,32767,32767,310,
|
|
32767,32767,32767,32767,139,32767,32767,32767,32767,43,244,32767,
|
|
32767,32767,32767,32767,215,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,165,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,207,32767,200,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,255,32767,32767,32767,
|
|
32767,32767,32767,32767,151,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,51,243,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,239,74,32767,82,
|
|
32767,32767,32767,32767,32767,32767,173,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,46,32767,
|
|
32767,32767,32767,32767,32767,181,32767,8,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,127,32767,32767,32767,322,32767,103,
|
|
32767,32767,32767,32767,32767,32767,32767,195,32767,32767,99,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,208,274,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
73,32767,32767,32767,32767,32767,32767,32767,32767,5,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,18,32767,32767,32767,298,32767,
|
|
32767,32767,32767,32767,32767,36,32767,32767,32767,32767,192,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,299,271,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,196,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,76,32767,32767,32767,6,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,216,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
219,32767,276,32767,32767,32767,32767,32767,32767,32767,32767,114,
|
|
32767,32767,282,32767,117,32767,88,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,321,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,104,32767,32767,29,32767,32767,32767,32767,32767,83,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,118,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
65,32767,32767,32767,168,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,163,32767,
|
|
116,32767,32767,32767,32767,94,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,68,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
66,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,12,
|
|
210,32767,32767,32767,32767,32767,32767,32767,96,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,264,32767,32767,327,125,32767,32767,284,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,19,32767,155,
|
|
32767,32767,32767,32767,32767,93,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,183,32767,32767,32767,143,32767,261,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,204,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,30,32767,136,32767,32767,
|
|
32767,32767,32767,32767,41,32767,32767,32767,32767,32767,233,32767,
|
|
171,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,197,32767,32767,32767,32767,32767,32767,32767,13,112,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,111,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,86,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,311,120,32767,32767,32767,32767,32767,32767,
|
|
140,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
172,32767,32767,32767,221,32767,241,32767,32767,32767,291,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
326,32767,32767,250,150,32767,32767,217,45,32,32767,32767,
|
|
315,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,35,
|
|
32767,32767,32767,32767,32767,246,32767,2,32767,32767,39,32767,
|
|
90,32767,32767,32767,32767,245,32767,32767,32767,32767,62,32767,
|
|
32767,32767,32767,32767,32767,32767,135,32767,279,32767,32767,110,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,199,32767,133,134,
|
|
32767,32767,32767,52,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,25,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,152,32767,179,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,324,32767,32767,15,32767,
|
|
32767,32767,32767,64,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,178,32767,32767,32767,32767,32767,182,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,290,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,260,32767,32767,32767,203,32767,32767,32767,
|
|
32767,100,32767,32767,32767,32767,32767,32767,32767,32767,32767,188,
|
|
254,159,32767,32767,11,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,319,57,32767,32767,32767,32767,32767,32767,32767,312,32767,
|
|
32767,265,32767,32767,32767,32767,32767,32767,32767,32767,95,32767,
|
|
32767,32767,267,32767,32767,32767,32767,164,32767,32767,286,270,
|
|
32767,32767,32767,40,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,3,32767,32767,32767,170,
|
|
32767,32767,32767,32767,32767,32767,32767,281,32767,32767,32767,53,
|
|
32767,32767,32767,32767,113,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,242,32767,32767,323,32767,32767,32767,32767,32767,32767,32767,
|
|
277,32767,257,32767,32767,308,32767,296,32767,32767,32767,32767,
|
|
32767,28,218,32767,32767,32767,32767,32767,32767,32767,256,32767,
|
|
32767,32767,32767,32767,32767,301,32767,32767,32767,32767,32767,32767,
|
|
98,128,32767,32767,32767,32767,32767,121,32767,32767,72,32767,
|
|
32767,32767,32767,230,32767,160,287,32767,32767,32767,32767,166,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,174,32767,248,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,184,32767,157,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,180,32767,32767,32767,32767,156,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,7,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,87,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,300,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,289,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,295,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,222,169,32767,32767,32767,148,32767,
|
|
32767,32767,32767,32767,186,32767,32767,32767,32767,32767,32767,226,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,132,32767,32767,32767,211,32767,32767,32767,
|
|
32767,32767,32767,220,32767,32767,32767,34,32767,32767,32767,32767,
|
|
32767,285,32767,32767,32767,32767,228,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
0,32767,32767,32767,32767,32767,32767,32767,278,32767,32767,292,
|
|
32767,38,32767,305,32767,32767,130,32767,32767,32767,32767,32767,
|
|
32767,225,32767,32767,32767,32767,32767,32767,202,32767,273,32767,
|
|
32767,235,32767,32767,32767,32767,32767,32767,32767,32767,32767,50,
|
|
32767,32767,32767,318,54,32767,32767,32767,223,63,32767,32767,
|
|
145,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,198,32767,32767,32767,
|
|
32767,32767,32767,304,32767,119,32767,32767,32767,32767,32767,32767,
|
|
32767,236,194,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,47,32767,201,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,85,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
91,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
108,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,75,224,32767,32767,32767,32767,32767,32767,23,
|
|
32767,32767,32767,32767,32767,32767,92,32767,32767,32767,32767,32767,
|
|
32767,58,32767,32767,32767,55,80,32767,32767,231,32767,32767,
|
|
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
|
|
32767,32767,32767,32767,32767,24,262
|
|
};
|
|
|
|
|
|
inline SYMBOL *get_hash_symbol(const char *s,unsigned int length,bool function)
|
|
{
|
|
uint i; ulong index = 2003;
|
|
SYMBOL *sim;
|
|
const char *start=s;
|
|
for (i=length;i--;)
|
|
index= (index ^ (char_table[(uchar) *s++] + (index << 5)));
|
|
index=my_function_table[(index & 8388607) % 2515];
|
|
if (index >= 223)
|
|
{
|
|
if (!function || index >= 32767) return (SYMBOL*) 0;
|
|
sim=sql_functions + (index - 223);
|
|
}
|
|
else
|
|
sim=symbols + index;
|
|
if ((length != sim->length) || my_casecmp(start,sim->name,length))
|
|
return (SYMBOL *)0;
|
|
return sim;
|
|
}
|