/* ANSI-C code produced by gperf version 2.7.1 (19981006 egcs) */ /* Command-line: gperf -L ANSI-C -I -t -H b5Hash -N inBig5 -C -E -o -n -c -D b5percent.txt */ /**************************************************** 400 Most frequently used BIG5 chars in GB code space. The percentage is taken over all BIG5 code space. ****************************************************/ #include #include "zhstatis.h" /* maximum key range = 986, duplicates = 4 */ #ifdef __GNUC__ __inline #endif static unsigned int b5Hash (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 81, 0, 166, 0, 55, 35, 5, 396, 21, 116, 80, 265, 19, 986, 311, 28, 25, 345, 105, 215, 95, 10, 415, 30, 468, 40, 110, 330, 80, 155, 480, 180, 333, 21, 498, 188, 190, 89, 453, 200, 228, 380, 13, 436, 475, 11, 278, 273, 430, 280, 340, 120, 236, 183, 296, 488, 500, 456, 356, 246, 120, 64, 491, 78, 285, 163, 461, 418, 288, 4, 510, 326, 438, 383, 478, 76, 135, 330, 260, 495, 45, 33, 1, 73, 501, 380, 433, 348, 505, 425, 363, 23, 206, 195, 986 }; return asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]]; } #ifdef __GNUC__ __inline #endif const struct charHz * inBig5 (register const char *str, register unsigned int len) { enum { TOTAL_KEYWORDS = 400, MIN_WORD_LENGTH = 2, MAX_WORD_LENGTH = 2, MIN_HASH_VALUE = 0, MAX_HASH_VALUE = 985 }; static const struct charHz wordlist[] = { {"中", 0.769287}, {"之", 0.306841}, {"坐", 0.019016}, {"更", 0.088828}, {"隊", 0.065464}, {"介", 0.031305}, {"及", 0.112574}, {"陽", 0.028211}, {"形", 0.046708}, {"弄", 0.015041}, {"五", 0.071498}, {"順", 0.025611}, {"傷", 0.035635}, {"惜", 0.016753}, {"禮", 0.018038}, {"什", 0.160736}, {"望", 0.090439}, {"元", 0.058479}, {"黑", 0.037804}, {"毛", 0.015738}, {"薦", 0.014759}, {"何", 0.229607}, {"集", 0.034256}, {"行", 0.166304}, {"內", 0.093519}, {"舊", 0.018394}, {"裝", 0.045773}, {"比", 0.147260}, {"授", 0.017462}, {"竹", 0.055894}, {"葉", 0.015586}, {"控", 0.018907}, {"睡", 0.019326}, {"載", 0.015277}, {"早", 0.039054}, {"失", 0.049332}, {"件", 0.057086}, {"似", 0.043716}, {"交", 0.423518}, {"曲", 0.038273}, {"漫", 0.016983}, {"跟", 0.065455}, {"引", 0.043318}, {"次", 0.137466}, {"用", 0.404486}, {"佛", 0.027452}, {"技", 0.031913}, {"爾", 0.022180}, {"水", 0.108684}, {"平", 0.064182}, {"死", 0.066723}, {"木", 0.023091}, {"公", 0.113864}, {"抓", 0.021874}, {"塊", 0.015441}, {"賣", 0.037946}, {"局", 0.028469}, {"均", 0.014519}, {"化", 0.069696}, {"它", 0.093334}, {"間", 0.128990}, {"希", 0.070255}, {"今", 0.083516}, {"轉", 0.072818}, {"筆", 0.016109}, {"翻", 0.018793}, {"路", 0.135395}, {"管", 0.098976}, {"項", 0.022989}, {"情", 0.185013}, {"單", 0.067999}, {"六", 0.041783}, {"位", 0.169524}, {"網", 0.098767}, {"排", 0.035493}, {"雲", 0.031729}, {"式", 0.117938}, {"詞", 0.019888}, {"接", 0.079914}, {"滿", 0.041485}, {"絡", 0.018574}, {"麻", 0.016470}, {"任", 0.068123}, {"策", 0.014632}, {"陸", 0.019986}, {"市", 0.061454}, {"央", 0.060330}, {"趕", 0.016134}, {"有", 1.331823}, {"麼", 0.311471}, {"豬", 0.014513}, {"竟", 0.033989}, {"等", 0.103263}, {"鳳", 0.127011}, {"趣", 0.029026}, {"賞", 0.015288}, {"野", 0.025526}, {"手", 0.137685}, {"本", 0.205378}, {"不", 1.647294}, {"把", 0.114942}, {"住", 0.049163}, {"左", 0.023332}, {"嗯", 0.029635}, {"善", 0.022240}, {"職", 0.030851}, {"分", 0.141643}, {"少", 0.120274}, {"魚", 0.028860}, {"部", 0.102537}, {"快", 0.092950}, {"黃", 0.051303}, {"說", 0.371579}, {"檢", 0.014627}, {"備", 0.046636}, {"腦", 0.049927}, {"色", 0.063111}, {"午", 0.019307}, {"忙", 0.019892}, {"算", 0.082802}, {"推", 0.037599}, {"王", 0.069500}, {"幫", 0.046553}, {"戲", 0.022982}, {"答", 0.039860}, {"覺", 0.125828}, {"仍", 0.027650}, {"媽", 0.014572}, {"殺", 0.035152}, {"續", 0.028902}, {"福", 0.030283}, {"普", 0.018765}, {"棒", 0.037953}, {"升", 0.015175}, {"需", 0.052447}, {"欲", 0.016471}, {"母", 0.018525}, {"援", 0.016991}, {"皮", 0.016309}, {"敢", 0.023295}, {"但", 0.210737}, {"聽", 0.109895}, {"勢", 0.019304}, {"湖", 0.016478}, {"全", 0.120442}, {"環", 0.029056}, {"景", 0.017140}, {"嗎", 0.205663}, {"補", 0.021996}, {"鳥", 0.026937}, {"先", 0.100132}, {"誰", 0.076828}, {"改", 0.074701}, {"試", 0.070771}, {"盡", 0.033967}, {"打", 0.135818}, {"都", 0.286923}, {"領", 0.021442}, {"戰", 0.066187}, {"話", 0.154665}, {"反", 0.066513}, {"夫", 0.019366}, {"至", 0.092406}, {"警", 0.019427}, {"應", 0.143276}, {"啥", 0.019852}, {"文", 0.378802}, {"擊", 0.029765}, {"白", 0.060734}, {"議", 0.060089}, {"換", 0.047633}, {"尤", 0.017041}, {"教", 0.142548}, {"收", 0.041400}, {"示", 0.036977}, {"救", 0.030253}, {"啟", 0.014722}, {"讀", 0.041732}, {"屬", 0.023904}, {"醫", 0.024133}, {"絕", 0.034493}, {"斯", 0.031733}, {"仁", 0.017932}, {"碟", 0.036924}, {"考", 0.086345}, {"調", 0.036020}, {"磁", 0.014800}, {"布", 0.015329}, {"雄", 0.039660}, {"血", 0.021045}, {"輕", 0.029324}, {"方", 0.180739}, {"田", 0.020917}, {"止", 0.021087}, {"肉", 0.016450}, {"切", 0.034270}, {"甲", 0.023452}, {"太", 0.135500}, {"博", 0.022743}, {"樣", 0.175203}, {"志", 0.029011}, {"壓", 0.025235}, {"異", 0.020801}, {"請", 0.335331}, {"謝", 0.159704}, {"掉", 0.043805}, {"統", 0.082474}, {"課", 0.041141}, {"西", 0.070902}, {"牛", 0.019910}, {"簡", 0.029031}, {"釋", 0.016313}, {"雜", 0.018368}, {"該", 0.125698}, {"條", 0.034810}, {"而", 0.267319}, {"論", 0.112807}, {"創", 0.018520}, {"畢", 0.030641}, {"提", 0.348555}, {"導", 0.036569}, {"未", 0.056596}, {"誠", 0.016607}, {"民", 0.122909}, {"喔", 0.054052}, {"自", 0.268859}, {"較", 0.094117}, {"懂", 0.024633}, {"讓", 0.096599}, {"必", 0.065257}, {"擇", 0.021939}, {"維", 0.019991}, {"梅", 0.014644}, {"質", 0.030914}, {"檔", 0.062679}, {"播", 0.015188}, {"石", 0.021828}, {"資", 0.649007}, {"百", 0.037749}, {"陳", 0.072864}, {"支", 0.053675}, {"數", 0.093825}, {"概", 0.034648}, {"趙", 0.018468}, {"找", 0.097010}, {"須", 0.031320}, {"落", 0.034071}, {"憶", 0.017071}, {"天", 0.331414}, {"成", 0.236619}, {"父", 0.017806}, {"忘", 0.033741}, {"變", 0.071342}, {"日", 0.158870}, {"結", 0.075241}, {"弟", 0.082499}, {"視", 0.050505}, {"勝", 0.037712}, {"園", 0.033770}, {"眾", 0.026064}, {"著", 0.122616}, {"報", 0.072859}, {"離", 0.036769}, {"敗", 0.023777}, {"巴", 0.018066}, {"評", 0.024433}, {"解", 0.105024}, {"我", 1.503535}, {"傳", 0.059178}, {"老", 0.115500}, {"裡", 0.106853}, {"黨", 0.072786}, {"極", 0.028320}, {"嗚", 0.024624}, {"完", 0.080762}, {"友", 0.124968}, {"月", 0.103272}, {"團", 0.036130}, {"光", 0.084656}, {"族", 0.023113}, {"投", 0.054908}, {"由", 0.095309}, {"份", 0.057877}, {"銘", 0.015462}, {"心", 0.259234}, {"親", 0.030173}, {"源", 0.028259}, {"楚", 0.025462}, {"號", 0.081804}, {"攻", 0.019704}, {"火", 0.037346}, {"此", 0.172006}, {"片", 0.062596}, {"李", 0.042139}, {"亂", 0.030141}, {"諸", 0.017032}, {"產", 0.033712}, {"樂", 0.097897}, {"江", 0.019585}, {"晚", 0.036788}, {"精", 0.040640}, {"歲", 0.021701}, {"鐘", 0.015084}, {"簽", 0.019035}, {"遠", 0.046922}, {"雙", 0.033282}, {"種", 0.142554}, {"生", 0.350021}, {"跳", 0.020720}, {"第", 0.117753}, {"正", 0.155168}, {"疑", 0.027903}, {"稱", 0.034138}, {"最", 0.195193}, {"目", 0.091897}, {"智", 0.025892}, {"立", 0.092087}, {"期", 0.098278}, {"當", 0.206358}, {"永", 0.035629}, {"談", 0.037969}, {"辦", 0.059885}, {"暴", 0.017369}, {"眼", 0.041338}, {"賽", 0.042914}, {"給", 0.110517}, {"亦", 0.024560}, {"際", 0.023162}, {"戀", 0.023874}, {"爛", 0.020609}, {"章", 0.227495}, {"像", 0.141367}, {"衛", 0.015495}, {"歷", 0.022215}, {"組", 0.056262}, {"華", 0.151584}, {"興", 0.061118}, {"機", 0.272770}, {"喜", 0.085263}, {"註", 0.016105}, {"標", 0.053881}, {"溫", 0.021204}, {"場", 0.093396}, {"學", 0.469347}, {"模", 0.020237}, {"據", 0.034130}, {"價", 0.059852}, {"整", 0.043658}, {"紹", 0.017357}, {"器", 0.045179}, {"灌", 0.023371}, {"體", 0.110726}, {"聊", 0.020201}, {"測", 0.024993}, {"終", 0.029663}, {"嘛", 0.032246}, {"樹", 0.015996}, {"顯", 0.026776}, {"樓", 0.027477}, {"票", 0.039371}, {"藝", 0.016772}, {"濟", 0.014455}, {"細", 0.024243}, {"錄", 0.048220}, {"煩", 0.027036}, {"蘭", 0.019130}, {"營", 0.022422}, {"類", 0.045496}, {"曾", 0.054332}, {"驗", 0.042048}, {"熱", 0.030469}, {"雖", 0.042275}, {"莫", 0.016165}, {"對", 0.291129}, {"選", 0.094920}, {"圖", 0.043175}, {"境", 0.025828}, {"鍵", 0.016134}, {"照", 0.034991}, {"謂", 0.020823}, {"證", 0.035779}, {"輯", 0.018547}, {"楊", 0.023479}, {"講", 0.045329}, {"還", 0.297640}, {"習", 0.028177}, {"難", 0.085551}, {"實", 0.153848}, {"準", 0.037319}, {"關", 0.129670}, {"錢", 0.049393}, {"邊", 0.042645}, {"輸", 0.030758}, {"夢", 0.041439}, {"識", 0.042696}, {"羅", 0.028028}, {"幕", 0.019105}, {"貓", 0.052699}, {"螢", 0.014792}, {"錯", 0.098239} }; static const short lookup[] = { 0, -1, -1, -1, -1, -408, 3, -399, -2, -1, -413, 6, -396, -2, -1, 7, 8, -1, 9, 10, 11, -1, -1, 12, -1, 13, 14, -1, 15, 16, 17, 18, -1, 19, 20, -1, 21, -1, 22, 23, 24, -1, 25, 26, -1, 27, 28, -1, 29, 30, 31, 32, -1, 33, 34, 35, 36, -1, 37, 38, 39, 40, -1, 41, 42, 43, 44, -1, 45, 46, 47, -1, -1, 48, 49, 50, 51, -1, -1, -1, 52, 53, -1, 54, 55, 56, 57, -1, -1, 58, 59, 60, -1, -1, 61, 62, -1, -1, -1, 63, 64, 65, -1, 66, 67, 68, 69, -1, -1, 70, 71, 72, -1, 73, 74, 75, 76, -1, 77, -1, 78, 79, -1, -1, -1, 80, 81, -1, 82, -1, 83, -1, -1, 84, -1, 85, 86, -1, 87, -1, 88, -1, -1, 89, 90, 91, -1, -1, -1, -1, 92, -1, -1, -1, -1, 93, 94, -1, 95, -1, 96, -1, -1, 97, -1, 98, 99, -1, 100, -1, 101, 102, -1, 103, -1, 104, 105, -1, -1, -1, 106, -1, -1, 107, -1, 108, 109, -1, 110, -1, 111, 112, -1, 113, 114, -1, 115, -1, 116, -1, 117, 118, -1, 119, -1, 120, 121, -1, 122, -1, 123, 124, -1, 125, -1, 126, 127, -1, -1, -1, 128, 129, -1, 130, -1, 131, 132, -1, 133, -1, 134, 135, -1, -1, -1, 136, 137, -1, 138, -1, 139, 140, -1, -1, -1, 141, 142, -1, 143, -1, 144, -1, -1, 145, -1, 146, 147, -1, 148, -1, 149, 150, -1, 151, -1, 152, 153, -1, 154, -1, 155, 156, -1, 157, -1, 158, 159, -1, 160, -1, 161, 162, -1, 163, -1, 164, 165, -1, 166, -1, 167, 168, -1, 169, -1, 170, 171, -1, 172, -1, 173, 174, -1, 175, -1, 176, 177, -1, 178, 179, -737, 182, -1, 183, -1, 184, 185, -1, 186, -1, 187, 188, -1, 189, -1, 190, 191, -1, 192, -1, 193, 194, -1, 195, -1, 196, -220, -2, -1, -1, 197, 198, -1, 199, -1, 200, 201, -1, -1, -1, 202, -1, -1, 203, 204, 205, 206, -1, -1, -1, 207, 208, -1, 209, -1, -1, 210, -1, 211, 212, 213, -1, -1, 214, -1, 215, 216, -1, 217, -1, 218, 219, -1, 220, -1, 221, 222, -1, 223, -1, 224, 225, -1, 226, -1, 227, 228, -1, -1, -1, 229, 230, -1, 231, -1, 232, 233, -1, 234, -1, 235, 236, -1, 237, -1, 238, 239, -1, 240, 241, 242, 243, -1, 244, -1, 245, 246, -1, 247, -1, 248, 249, -1, 250, -1, 251, 252, -1, 253, -1, 254, 255, -1, 256, -1, 257, -1, -1, 258, -1, 259, 260, -1, 261, 262, 263, 264, -1, 265, -1, 266, 267, -1, 268, -1, 269, 270, -1, 271, -1, 272, 273, -1, 274, -1, 275, -1, -1, 276, 277, 278, 279, -1, 280, -1, 281, -1, -1, 282, -1, 283, 284, -1, 285, -1, 286, 287, -1, 288, -1, 289, 290, -1, 291, -1, 292, 293, -1, 294, -1, 295, 296, -1, 297, -1, 298, 299, -1, 300, -1, 301, 302, -1, 303, -1, 304, 305, -1, 306, -1, 307, 308, -1, 309, -1, 310, -1, -1, 311, -1, 312, 313, -1, 314, -1, 315, 316, -1, 317, -1, 318, -1, -1, 319, -1, 320, 321, -1, 322, -1, 323, 324, -1, 325, -1, 326, 327, -1, -1, -1, 328, 329, -1, -975, -70, -2, -1, -1, 332, -1, 333, 334, -1, 335, -1, 336, -1, -1, 337, -1, -1, -1, -1, -1, -1, -1, 338, -1, -1, -1, 339, -1, -1, 340, -1, 341, 342, -1, 343, -1, 344, 345, -1, -1, -1, 346, 347, -1, 348, -1, -1, -1, -1, 349, -1, -1, 350, -1, 351, -1, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, 353, 354, -1, -1, -1, -1, -1, -1, 355, -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 358, -1, -1, -1, -1, 359, -1, -1, 360, -1, 361, -1, -1, -1, -1, 362, 363, -1, 364, 365, 366, -1, -1, 367, -1, 368, -1, -1, -1, -1, 369, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, -1, -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, 373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 374, -1, -1, -1, -1, -1, 375, -1, 376, -1, -1, 377, -1, -1, -1, 378, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 379, -1, 380, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, -1, -1, -1, -1, 382, -1, 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, -1, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, -1, 387, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 388, -1, -1, -1, -1, -1, -1, -1, -1, -1, 389, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 391, -1, 392, -1, -1, -1, -1, -1, 393, -1, -1, -1, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, -1, 396, -1, 397, -1, -1, -1, -1, -1, -1, 398, -1, -1, -1, -1, -1, -1, 399 }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = b5Hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register int index = lookup[key]; if (index >= 0) { register const char *s = wordlist[index].name; if (*str == *s && !strncmp (str + 1, s + 1, len - 1)) return &wordlist[index]; } else if (index < -TOTAL_KEYWORDS) { register int offset = - 1 - TOTAL_KEYWORDS - index; register const struct charHz *wordptr = &wordlist[TOTAL_KEYWORDS + lookup[offset]]; register const struct charHz *wordendptr = wordptr + -lookup[offset + 1]; while (wordptr < wordendptr) { register const char *s = wordptr->name; if (*str == *s && !strncmp (str + 1, s + 1, len - 1)) return wordptr; wordptr++; } } } } return 0; }