suftab.c 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612
  1. /*
  2. * Suffix table
  3. */
  4. typedef unsigned char Uchar;
  5. static Uchar sufa[] = {
  6. 02,0200+'t', /* -TA */
  7. 02,0200+'s', /* -SA */
  8. 03,0200+'t','r', /* -TRA */
  9. 03,0200+'d','r', /* -DRA */
  10. 03,0200+'b','r', /* -BRA */
  11. 02,0200+'p', /* -PA */
  12. 02,0200+'n', /* -NA */
  13. 02,0200+'m', /* -MA */
  14. 03,0200+'p','l', /* -PLA */
  15. 02,0200+'l', /* -LA */
  16. 02,0200+'k', /* -KA */
  17. 03,0200+'t','h', /* -THA */
  18. 03,0200+'s','h', /* -SHA */
  19. 02,0200+'g', /* -GA */
  20. 02,0200+'d', /* -DA */
  21. 02,0200+'c', /* -CA */
  22. 02,0200+'b', /* -BA */
  23. 00
  24. };
  25. static Uchar sufc[] = {
  26. 04,'e','t',0200+'i', /* ET-IC */
  27. 07,'a','l',0200+'i','s',0200+'t','i', /* AL-IS-TIC */
  28. 04,'s',0200+'t','i', /* S-TIC */
  29. 04,'p',0200+'t','i', /* P-TIC */
  30. 05,0200+'l','y','t',0200+'i', /* -LYT-IC */
  31. 04,'o','t',0200+'i', /* OT-IC */
  32. 05,'a','n',0200+'t','i', /* AN-TIC */
  33. 04,'n',0200+'t','i', /* N-TIC */
  34. 04,'c',0200+'t','i', /* C-TIC */
  35. 04,'a','t',0200+'i', /* AT-IC */
  36. 04,'h',0200+'n','i', /* H-NIC */
  37. 03,'n',0200+'i', /* N-IC */
  38. 03,'m',0200+'i', /* M-IC */
  39. 04,'l',0200+'l','i', /* L-LIC */
  40. 04,'b',0200+'l','i', /* B-LIC */
  41. 04,0200+'c','l','i', /* -CLIC */
  42. 03,'l',0200+'i', /* L-IC */
  43. 03,'h',0200+'i', /* H-IC */
  44. 03,'f',0200+'i', /* F-IC */
  45. 03,'d',0200+'i', /* D-IC */
  46. 03,0200+'b','i', /* -BIC */
  47. 03,'a',0200+'i', /* A-IC */
  48. 03,0200+'m','a', /* -MAC */
  49. 03,'i',0200+'a', /* I-AC */
  50. 00
  51. };
  52. static Uchar sufd[] = {
  53. 04,0200+'w','o','r', /* -WORD */
  54. 04,0200+'l','o','r', /* -LORD */
  55. 04,0200+'f','o','r', /* -FORD */
  56. 04,0200+'y','a','r', /* -YARD */
  57. 04,0200+'w','a','r', /* -WARD */
  58. 05,0200+'g','u','a','r', /* -GUARD */
  59. 04,0200+'t','a','r', /* -TARD */
  60. 05,0200+'b','o','a','r', /* -BOARD */
  61. 04,0200+'n','a','r', /* -NARD */
  62. 05,0200+'l','i','a','r', /* -LIARD */
  63. 04,0200+'i','a','r', /* -IARD */
  64. 04,0200+'g','a','r', /* -GARD */
  65. 04,0200+'b','a','r', /* -BARD */
  66. 03,0200+'r','o', /* -ROD */
  67. 04,0200+'w','o','o', /* -WOOD */
  68. 04,0200+'h','o','o', /* -HOOD */
  69. 04,0200+'m','o','n', /* -MOND */
  70. 04,0200+'t','e','n', /* -TEND */
  71. 05,0200+'s','t','a','n', /* -STAND */
  72. 04,0200+'l','a','n', /* -LAND */
  73. 04,0200+'h','a','n', /* -HAND */
  74. 04,0200+'h','o','l', /* -HOLD */
  75. 04,0200+'f','o','l', /* -FOLD */
  76. 05,0200+'f','i','e','l', /* -FIELD */
  77. 03,0200+'v','i', /* -VID */
  78. 03,0200+'c','i', /* -CID */
  79. 04,0200+'s','a','i', /* -SAID */
  80. 04,0200+'m','a','i', /* -MAID */
  81. 04,'t',0200+'t','e', /* T-TED */
  82. 03,'t',0200+'e', /* T-ED */
  83. 04,0200+'d','r','e', /* -DRED */
  84. 04,0200+'c','r','e', /* -CRED */
  85. 04,0200+'b','r','e', /* -BRED */
  86. 05,'v',0200+'e','l','e', /* V-ELED */
  87. 0100+04,'a','l',0200+'e', /* AL/ED */
  88. 0140+03,0200+'e','e', /* /EED */
  89. 040+05,'e','d',0200+'d','e', /* ED-DED */
  90. 04,'d',0200+'d','e', /* D-DED */
  91. 040+04,'e','d',0200+'e', /* ED-ED */
  92. 03,'d',0200+'e', /* D-ED */
  93. 05,0200+'d','u','c','e', /* -DUCED */
  94. 0300+02,'e', /* E/D */
  95. 05,0200+'s','t','e','a', /* -STEAD */
  96. 05,0200+'a','h','e','a', /* -AHEAD */
  97. 04,0200+'h','e','a', /* -HEAD */
  98. 00
  99. };
  100. static Uchar sufe[] = {
  101. 05,'a','r',0200+'i','z', /* AR-IZE */
  102. 05,'a','n',0200+'i','z', /* AN-IZE */
  103. 05,'a','l',0200+'i','z', /* AL-IZE */
  104. 06,0200+'a','r','d',0200+'i','z', /* -ARD-IZE */
  105. 05,0200+'s','e','l','v', /* -SELVE */
  106. 05,0200+'k','n','i','v', /* -KNIVE */
  107. 05,0200+'l','i','e','v', /* -LIEVE */
  108. 0100+03,0200+'q','u', /* /QUE */
  109. 07,'o','n',0200+'t','i','n',0200+'u', /* ON-TIN-UE */
  110. 03,0200+'n','u', /* -NUE */
  111. 03,0200+'d','u', /* -DUE */
  112. 0300+02,'u', /* U/E */
  113. 0300+05,'q','u','a','t', /* QUAT/E */
  114. 04,'u',0200+'a','t', /* U-ATE */
  115. 05,0200+'s','t','a','t', /* -STATE */
  116. 04,0200+'t','a','t', /* -TATE */
  117. 06,0200+'t','o','r',0200+'a','t', /* -TOR-ATE */
  118. 05,'e','n',0200+'a','t', /* EN-ATE */
  119. 04,0200+'m','a','t', /* -MATE */
  120. 05,0200+'h','o','u','s', /* -HOUSE */
  121. 05,0200+'c','l','o','s', /* -CLOSE */
  122. 04,'i',0200+'o','s', /* I-OSE */
  123. 04,0200+'w','i','s', /* -WISE */
  124. 05,'a','s',0200+'u','r', /* AS-URE */
  125. 040+04,0200+'s','u','r', /* -SURE */
  126. 06,0200+'f','i','g',0200+'u','r', /* -FIG-URE */
  127. 040+03,0200+'t','r', /* -TRE */
  128. 05,0200+'s','t','o','r', /* -STORE */
  129. 04,0200+'f','o','r', /* -FORE */
  130. 05,0200+'w','h','e','r', /* -WHERE */
  131. 06,0200+'s','p','h','e','r', /* -SPHERE */
  132. 03,0200+'d','r', /* -DRE */
  133. 03,0200+'c','r', /* -CRE */
  134. 03,0200+'b','r', /* -BRE */
  135. 05,0200+'s','c','o','p', /* -SCOPE */
  136. 04,'y',0200+'o','n', /* Y-ONE */
  137. 05,0200+'s','t','o','n', /* -STONE */
  138. 05,0200+'p','h','o','n', /* -PHONE */
  139. 04,0200+'g','o','n', /* -GONE */
  140. 04,'e',0200+'o','n', /* E-ONE */
  141. 040+04,0200+'e','n','n', /* -ENNE */
  142. 040+05,'a',0200+'r','i','n', /* A-RINE */
  143. 05,0200+'c','l','i','n', /* -CLINE */
  144. 04,0200+'l','i','n', /* -LINE */
  145. 007,00200+'r','o','u',00200+'t','i','n', /*-ROU-TINE */
  146. 04,0200+'s','o','m', /* -SOME */
  147. 04,0200+'c','o','m', /* -COME */
  148. 04,0200+'t','i','m', /* -TIME */
  149. 03,0200+'z','l', /* -ZLE */
  150. 03,0200+'t','l', /* -TLE */
  151. 03,0200+'s','l', /* -SLE */
  152. 03,0200+'p','l', /* -PLE */
  153. 05,0200+'v','i','l','l', /* -VILLE */
  154. 04,'c','k',0200+'l', /* CK-LE */
  155. 03,0200+'k','l', /* -KLE */
  156. 03,0200+'g','l', /* -GLE */
  157. 03,0200+'f','l', /* -FLE */
  158. 03,0200+'d','l', /* -DLE */
  159. 03,0200+'c','l', /* -CLE */
  160. 05,0200+'p','a',0200+'b','l', /* -PA-BLE */
  161. 05,'f','a',0200+'b','l', /* FA-BLE */
  162. 05,0200+'c','a',0200+'b','l', /* -CA-BLE */
  163. 06,0200+'s','t','a','b','l', /* -STABLE */
  164. 04,0200+'a','b','l', /* -ABLE */
  165. 03,0200+'b','l', /* -BLE */
  166. 04,0200+'d','a','l', /* -DALE */
  167. 04,0200+'m','a','l', /* -MALE */
  168. 04,0200+'s','a','l', /* -SALE */
  169. 04,0200+'l','i','k', /* -LIKE */
  170. 0340+05,'g',0200+'u','a','g', /* -G/UAGE */
  171. 05,0200+'r','i','a','g', /* -RIAGE */
  172. 05,'e','r',0200+'a','g', /* ER-AGE */
  173. 04,'m',0200+'a','g', /* M-AGE */
  174. 04,'k',0200+'a','g', /* K-AGE */
  175. 04,'d',0200+'a','g', /* D-AGE */
  176. 04,0200+'w','i','f', /* -WIFE */
  177. 05,0200+'k','n','i','f', /* -KNIFE */
  178. 03,0200+'s','e', /* -SEE */
  179. 04,0200+'f','r','e', /* -FREE */
  180. 0340+02,'e', /* EE */
  181. 04,0200+'w','i','d', /* -WIDE */
  182. 04,0200+'t','i','d', /* -TIDE */
  183. 04,0200+'s','i','d', /* -SIDE */
  184. 06,0200+'q','u','e','n','c', /* -QUENCE */
  185. 07,0200+'f','l','u',0200+'e','n','c', /* -FLU-ENCE */
  186. 040+06,'e','s',0200+'e','n','c', /* ES-ENCE */
  187. 06,'e','r',0200+'e','n','c', /* ER-ENCE */
  188. 05,'i',0200+'e','n','c', /* I-ENCE */
  189. 040+05,0200+'s','a','n','c', /* -SANCE */
  190. 06,'e','r',0200+'a','n','c', /* ER-ANCE */
  191. 06,'a','r',0200+'a','n','c', /* AR-ANCE */
  192. 05,0200+'n','a','n','c', /* -NANCE */
  193. 07,0200+'b','a','l',0200+'a','n','c', /* -BAL-ANCE */
  194. 05,'i',0200+'a','n','c', /* I-ANCE */
  195. 07,0200+'j','u','s',0200+'t','i','c', /* -JUS-TICE */
  196. 05,0200+'s','t','i','c', /* -STICE */
  197. 06,0200+'n','o','v',0200+'i','c', /* NOV-ICE */
  198. 04,0200+'v','i','c', /* -VICE */
  199. 05,0200+'p','i','e','c', /* -PIECE */
  200. 05,0200+'p','l','a','c', /* -PLACE */
  201. 0340+01, /* /E */
  202. 00
  203. };
  204. static Uchar suff[] = {
  205. 03,0200+'o','f', /* -OFF */
  206. 05,0200+'p','r','o','o', /* -PROOF */
  207. 04,0200+'s','e','l', /* -SELF */
  208. 03,0200+'r','i', /* -RIF */
  209. 040+04,0200+'l','i','e', /* -LIEF */
  210. 00
  211. };
  212. static Uchar sufg[] = {
  213. 03,0200+'l','o', /* -LOG */
  214. 04,0200+'l','o','n', /* -LONG */
  215. 05,'t',0200+'t','i','n', /* T-TING */
  216. 06,0200+'s','t','r','i','n', /* -STRING */
  217. 05,'r',0200+'r','i','n', /* R-RING */
  218. 05,'p',0200+'p','i','n', /* P-PING */
  219. 05,'n',0200+'n','i','n', /* N-NING */
  220. 05,'m',0200+'m','i','n', /* M-MING */
  221. 05,'l',0200+'l','i','n', /* L-LING */
  222. 05,0200+'z','l','i','n', /* -ZLING */
  223. 05,0200+'t','l','i','n', /* -TLING */
  224. 040+05,'s',0200+'l','i','n', /* S-LING */
  225. 05,'r',0200+'l','i','n', /* R-LING */
  226. 05,0200+'p','l','i','n', /* -PLING */
  227. 06,'n',0200+'k','l','i','n', /* N-KLING */
  228. 05,'k',0200+'l','i','n', /* K-LING */
  229. 05,0200+'g','l','i','n', /* -GLING */
  230. 05,0200+'f','l','i','n', /* -FLING */
  231. 05,0200+'d','l','i','n', /* -DLING */
  232. 05,0200+'c','l','i','n', /* -CLING */
  233. 05,0200+'b','l','i','n', /* -BLING */
  234. 06,'y',0200+'t','h','i','n', /* Y-THING */
  235. 07,'e','e','t','h',0200+'i','n', /* EETH-ING */
  236. 06,'e',0200+'t','h','i','n', /* E-THING */
  237. 05,'g',0200+'g','i','n', /* G-GING */
  238. 05,'d',0200+'d','i','n', /* D-DING */
  239. 05,'b',0200+'b','i','n', /* B-BING */
  240. 03,0200+'i','n', /* -ING */
  241. 00
  242. };
  243. static Uchar sufh[] = {
  244. 05,0200+'m','o','u','t', /* -MOUTH */
  245. 05,0200+'w','o','r','t', /* -WORTH */
  246. 04,0200+'w','i','t', /* -WITH */
  247. 05,'t',0200+'t','i','s', /* T-TISH */
  248. 05,'e',0200+'t','i','s', /* E-TISH */
  249. 05,'p',0200+'p','i','s', /* P-PISH */
  250. 05,'r',0200+'n','i','s', /* R-NISH */
  251. 05,'n',0200+'n','i','s', /* N-NISH */
  252. 05,0200+'p','l','i','s', /* -PLISH */
  253. 05,0200+'g','u','i','s', /* -GUISH */
  254. 05,0200+'g','l','i','s', /* -GLISH */
  255. 05,'b',0200+'l','i','s', /* B-LISH */
  256. 05,'g',0200+'g','i','s', /* G-GISH */
  257. 05,'d',0200+'d','i','s', /* D-DISH */
  258. 03,0200+'i','s', /* -ISH */
  259. 05,0200+'g','r','a','p', /* -GRAPH */
  260. 07,0200+'b','o','r',0200+'o','u','g', /* -BOR-OUGH */
  261. 05,0200+'b','u','r','g', /* -BURGH */
  262. 04,0200+'v','i','c', /* -VICH */
  263. 03,0200+'n','a', /* -NAH */
  264. 03,0200+'l','a', /* -LAH */
  265. 04,0200+'m','i',0200+'a', /* -MI-AH */
  266. 00
  267. };
  268. static Uchar sufi[] = {
  269. 03,0200+'t','r', /* -TRI */
  270. 03,0200+'c','h', /* -CHI */
  271. 0200+03,'i','f', /* IF-I */
  272. 0200+03,'e','d', /* ED-I */
  273. 05,0200+'a','s','c','i', /* -ASCII */
  274. 04,0200+'s','e','m', /* -SEMI */
  275. 00
  276. };
  277. static Uchar sufk[] = {
  278. 04,0200+'w','o','r', /* -WORK */
  279. 04,0200+'m','a','r', /* -MARK */
  280. 04,0200+'b','o','o', /* -BOOK */
  281. 04,0200+'w','a','l', /* -WALK */
  282. 05,0200+'c','r','a','c', /* -CRACK */
  283. 04,0200+'b','a','c', /* -BACK */
  284. 00
  285. };
  286. static Uchar sufl[] = {
  287. 03,0200+'f','u', /* -FUL */
  288. 05,'s',0200+'w','e','l', /* S-WELL */
  289. 04,0200+'t','e','l', /* -TELL */
  290. 05,0200+'s','h','e','l', /* -SHELL */
  291. 05,0200+'s','t','a','l', /* -STALL */
  292. 04,'s',0200+'t','a', /* S-TAL */
  293. 04,0200+'b','a','l', /* -BALL */
  294. 04,0200+'c','a','l', /* -CALL */
  295. 03,'v',0200+'e', /* V-EL */
  296. 03,'u',0200+'e', /* U-EL */
  297. 03,'k',0200+'e', /* K-EL */
  298. 04,'t','h',0200+'e', /* TH-EL */
  299. 05,'t','c','h',0200+'e', /* TCH-EL */
  300. 03,'a',0200+'e', /* A-EL */
  301. 0140+04,0200+'q','u','a', /* /QUAL */
  302. 040+03,'u',0200+'a', /* U-AL */
  303. 03,0200+'t','a', /* -TAL */
  304. 04,'u','r',0200+'a', /* UR-AL */
  305. 040+05,'g',0200+'o',0200+'n','a', /* G-O-NAL */
  306. 04,'o','n',0200+'a', /* ON-AL */
  307. 03,0200+'n','a', /* -NAL */
  308. 04,0200+'t','i','a', /* -TIAL */
  309. 04,0200+'s','i','a', /* -SIAL */
  310. 040+05,0200+'t','r','i',0200+'a', /* -TRI-AL */
  311. 04,'r','i',0200+'a', /* RI-AL */
  312. 04,0200+'n','i',0200+'a', /* -NI-AL */
  313. 04,0200+'d','i',0200+'a', /* -DI-AL */
  314. 04,0200+'c','i','a', /* -CIAL */
  315. 03,0200+'g','a', /* -GAL */
  316. 04,0200+'m','e','a', /* -MEAL */
  317. /* 040+04,0200+'r','e',0200+'a', /* -RE-AL */
  318. 040+04,0200+'r','e','a', /* -REAL */
  319. 06,'c',0200+'t','i',0200+'c','a', /* C-TI-CAL */
  320. 05,0200+'s','i',0200+'c','a', /* -SI-CAL */
  321. 04,0200+'i',0200+'c','a', /* -I-CAL */
  322. 03,0200+'c','a', /* -CAL */
  323. 03,0200+'b','a', /* -BAL */
  324. 06,0200+'n','o',0200+'m','i',0200+'a', /* -NO-MI-AL */
  325. 00
  326. };
  327. static Uchar sufm[] = {
  328. 03,0200+'n','u', /* -NUM */
  329. 05,'o',0200+'r','i',0200+'u', /* O-RI-UM */
  330. 040+03,'i',0200+'u', /* I-UM */
  331. 040+03,'e',0200+'u', /* E-UM */
  332. 05,'i','v',0200+'i','s', /* IV-ISM */
  333. 04,0200+'t','i','s', /* -TISM */
  334. 05,'i',0200+'m','i','s', /* I-MISM */
  335. 05,'a','l',0200+'i','s', /* AL-ISM */
  336. 040+04,'e',0200+'i','s', /* E-ISM */
  337. 040+04,'a',0200+'i','s', /* A-ISM */
  338. 04,0200+'r','o','o', /* -ROOM */
  339. 03,0200+'d','o', /* -DOM */
  340. 03,0200+'h','a', /* -HAM */
  341. 06,0200+'a',0200+'r','i','t','h', /* -A-RITHM */
  342. 05,0200+'r','i','t','h', /* -RITHM */
  343. 00
  344. };
  345. static Uchar sufn[] = {
  346. 05,0200+'k','n','o','w', /* -KNOWN */
  347. 04,0200+'t','o','w', /* -TOWN */
  348. 04,0200+'d','o','w', /* -DOWN */
  349. 04,0200+'t','u','r', /* -TURN */
  350. 05,0200+'s','p','o','o', /* -SPOON */
  351. 04,0200+'n','o','o', /* -NOON */
  352. 04,0200+'m','o','o', /* -MOON */
  353. 011,'a','l',0200+'i',0200+'z','a',0200+'t','i','o', /* AL-I-ZA-TION */
  354. 07,0200+'i',0200+'z','a',0200+'t','i','o', /* -I-ZA-TION */
  355. 07,'l',0200+'i',0200+'a',0200+'t','i','o', /* L-I-A-TION */
  356. 04,0200+'t','i','o', /* -TION */
  357. 040+05,'s',0200+'s','i','o', /* S-SION */
  358. 04,0200+'s','i','o', /* -SION */
  359. 04,'n',0200+'i','o', /* N-ION */
  360. 04,0200+'g','i','o', /* -GION */
  361. 04,0200+'c','i','o', /* -CION */
  362. 03,0200+'c','o', /* -CON */
  363. 05,0200+'c','o','l','o', /* -COLON */
  364. 03,0200+'t','o', /* -TON */
  365. 04,'i','s',0200+'o', /* IS-ON */
  366. 03,0200+'s','o', /* -SON */
  367. 03,0200+'r','i', /* -RIN */
  368. 03,0200+'p','i', /* -PIN */
  369. 03,0200+'n','i', /* -NIN */
  370. 03,0200+'m','i', /* -MIN */
  371. 03,0200+'l','i', /* -LIN */
  372. 03,0200+'k','i', /* -KIN */
  373. 05,0200+'s','t','e','i', /* -STEIN */
  374. 04,0200+'t','a','i', /* -TAIN */
  375. 05,'g','h','t',0200+'e', /* GHT-EN */
  376. 05,0200+'w','o','m',0200+'e', /* -WOM-EN */
  377. 03,0200+'m','e', /* -MEN */
  378. 04,'o',0200+'k','e', /* O-KEN */
  379. 03,'k',0200+'e', /* K-EN */
  380. 04,0200+'t','e','e', /* -TEEN */
  381. 04,0200+'s','e','e', /* -SEEN */
  382. 040+03,0200+'s','a', /* -SAN */
  383. 05,0200+'w','o','m',0200+'a', /* -WOM-AN */
  384. 03,0200+'m','a', /* -MAN */
  385. 04,0200+'t','i','a', /* -TIAN */
  386. 04,0200+'s','i','a', /* -SIAN */
  387. 040+04,'e',0200+'i','a', /* E-IAN */
  388. 04,0200+'c','i','a', /* -CIAN */
  389. 0300+03,'i','a', /* IA/N */
  390. 05,0200+'c','l','e','a', /* -CLEAN */
  391. 04,0200+'m','e','a', /* -MEAN */
  392. 040+03,'e',0200+'a', /* E-AN */
  393. 00
  394. };
  395. static Uchar sufo[] = {
  396. 05,0200+'m','a','c',0200+'r', /* -MAC-RO */
  397. 00
  398. };
  399. static Uchar sufp[] = {
  400. 05,0200+'g','r','o','u', /* -GROUP */
  401. 02,0200+'u', /* -UP */
  402. 04,0200+'s','h','i', /* -SHIP */
  403. 04,0200+'k','e','e', /* -KEEP */
  404. 00
  405. };
  406. static Uchar sufr[] = {
  407. 04,0200+'z','a','r', /* -ZARR */
  408. 0300+02,'r', /* R/R */
  409. 03,0200+'t','o', /* -TOR */
  410. 040+03,0200+'s','o', /* -SOR */
  411. 040+04,0200+'r','i',0200+'o', /* -RI-OR */
  412. 04,'i','z',0200+'e', /* IZ-ER */
  413. 05,0200+'c','o','v',0200+'e', /* -COV-ER */
  414. 04,0200+'o','v','e', /* -OVER */
  415. 04,0200+'e','v',0200+'e', /* -EV-ER */
  416. 8,0200+'c','o','m',0200+'p','u','t',0200+'e', /* -COM-PUT-ER */
  417. 040+05,'u','s',0200+'t','e', /* US-TER */
  418. 05,'o','s','t',0200+'e', /* OST-ER */
  419. 040+05,0200+'a','c',0200+'t','e', /* -AC-TER */
  420. 06,0200+'w','r','i','t',0200+'e', /* -WRIT-ER */
  421. 040+05,'i','s',0200+'t','e', /* IS-TER */
  422. 040+05,'e','s',0200+'t','e', /* ES-TER */
  423. 040+05,'a','s',0200+'t','e', /* AS-TER */
  424. 04,0200+'s','t','e', /* -STER */
  425. 05,'a','r',0200+'t','e', /* AR-TER */
  426. 04,'r','t',0200+'e', /* RT-ER */
  427. 040+05,'m',0200+'e',0200+'t','e', /* M-E-TER */
  428. 05,0200+'w','a',0200+'t','e', /* -WA-TER */
  429. 03,'r',0200+'e', /* R-ER */
  430. 04,'o','p',0200+'e', /* OP-ER */
  431. 05,0200+'p','a',0200+'p','e', /* -PA-PER */
  432. 04,'w','n',0200+'e', /* WN-ER */
  433. 040+04,'s',0200+'n','e', /* S-NER */
  434. 04,'o','n',0200+'e', /* ON-ER */
  435. 04,'r','m',0200+'e', /* RM-ER */
  436. 03,0200+'m','e', /* -MER */
  437. 04,'l','l',0200+'e', /* LL-ER */
  438. 05,'d',0200+'d','l','e', /* D-DLER */
  439. 04,0200+'b','l','e', /* -BLER */
  440. 03,'k',0200+'e', /* K-ER */
  441. 05,'n',0200+'t','h','e', /* N-THER */
  442. 06,0200+'f','a',0200+'t','h','e', /* -FA-THER */
  443. 06,'e','i',0200+'t','h','e', /* EI-THER */
  444. 04,'t','h',0200+'e', /* TH-ER */
  445. 04,'s','h',0200+'e', /* SH-ER */
  446. 04,0200+'p','h','e', /* -PHER */
  447. 04,'c','h',0200+'e', /* CH-ER */
  448. 04,'d','g',0200+'e', /* DG-ER */
  449. 04,'r','d',0200+'e', /* RD-ER */
  450. 06,'o','u','n','d',0200+'e', /* OUND-ER */
  451. 04,'l','d',0200+'e', /* LD-ER */
  452. 04,'i','d',0200+'e', /* ID-ER */
  453. 05,0200+'d','u','c',0200+'e', /* -DUC-ER */
  454. 04,'n','c',0200+'e', /* NC-ER */
  455. 0100+02, 0200+'e', /* /ER */
  456. 03,0200+'s','a', /* -SAR */
  457. 040+06,'a','c',0200+'u',0200+'l','a', /* AC-U-LAR */
  458. 040+06,'e','c',0200+'u',0200+'l','a', /* EC-U-LAR */
  459. 040+06,'i','c',0200+'u',0200+'l','a', /* IC-U-LAR */
  460. 040+06,'e','g',0200+'u',0200+'l','a', /* EG-U-LAR */
  461. 00
  462. };
  463. static Uchar sufs[] = {
  464. 040+04,'u',0200+'o','u', /* U-OUS */
  465. 05,0200+'t','i','o','u', /* -TIOUS */
  466. 05,0200+'g','i','o','u', /* -GIOUS */
  467. 05,0200+'c','i','o','u', /* -CIOUS */
  468. 040+04,'i',0200+'o','u', /* I-OUS */
  469. 05,0200+'g','e','o','u', /* -GEOUS */
  470. 05,0200+'c','e','o','u', /* -CEOUS */
  471. 04,'e',0200+'o','u', /* E-OUS */
  472. 0140+02,0200+'u', /* /US */
  473. 04,0200+'n','e','s', /* -NESS */
  474. 04,0200+'l','e','s', /* -LESS */
  475. 0140+02,0200+'s', /* /SS */
  476. 040+05,'p',0200+'o',0200+'l','i', /* P-O-LIS */
  477. 0140+02,0200+'i', /* /IS */
  478. 0100+03,0200+'x','e', /* X/ES */
  479. 0100+03,0200+'s','e', /* S/ES */
  480. 0100+04,'s','h',0200+'e', /* SH/ES */
  481. 0100+04,'c','h',0200+'e', /* CH/ES */
  482. 0300+01, /* /S */
  483. 00
  484. };
  485. static Uchar suft[] = {
  486. 05,0200+'l','i','m',0200+'i', /* -LIM-IT */
  487. 06,'i','o','n',0200+'i','s', /* ION-IST */
  488. 05,'i','n',0200+'i','s', /* IN-IST */
  489. 05,'a','l',0200+'i','s', /* AL-IST */
  490. 06,'l',0200+'o',0200+'g','i','s', /* L-O-GIST */
  491. 05,'h','t',0200+'e','s', /* HT-EST */
  492. 04,'i',0200+'e','s', /* I-EST */
  493. 05,'g',0200+'g','e','s', /* G-GEST */
  494. 04,'g',0200+'e','s', /* G-EST */
  495. 05,'d',0200+'d','e','s', /* D-DEST */
  496. 04,'d',0200+'e','s', /* D-EST */
  497. 04,0200+'c','a','s', /* -CAST */
  498. 05,0200+'h','e','a','r', /* -HEART */
  499. 04,0200+'f','o','o', /* -FOOT */
  500. 03,'i',0200+'o', /* I-OT */
  501. 05,0200+'f','r','o','n', /* -FRONT */
  502. 05,0200+'p','r','i','n', /* -PRINT */
  503. 04,0200+'m','e','n', /* -MENT */
  504. 05,0200+'c','i','e','n', /* -CIENT */
  505. 04,'i',0200+'a','n', /* I-ANT */
  506. 06,0200+'w','r','i','g','h', /* -WRIGHT */
  507. 06,0200+'b','r','i','g','h', /* -BRIGHT */
  508. 06,0200+'f','l','i','g','h', /* -FLIGHT */
  509. 06,0200+'w','e','i','g','h', /* -WEIGHT */
  510. 05,0200+'s','h','i','f', /* -SHIFT */
  511. 05,0200+'c','r','a','f', /* -CRAFT */
  512. 040+04,'d','g',0200+'e', /* DG-ET */
  513. 04,0200+'g','o','a', /* -GOAT */
  514. 04,0200+'c','o','a', /* -COAT */
  515. 04,0200+'b','o','a', /* -BOAT */
  516. 04,0200+'w','h','a', /* -WHAT */
  517. 04,0200+'c','u','i', /* -CUIT */
  518. 00
  519. };
  520. static Uchar sufy[] = {
  521. 040+04,'e','s',0200+'t', /* ES-TY */
  522. 040+05,'q','u','i',0200+'t', /* QUI-TY */
  523. 04,0200+'t','i',0200+'t', /* -TI-TY */
  524. 040+05,'o','s',0200+'i',0200+'t', /* OS-I-TY */
  525. 04,0200+'s','i',0200+'t', /* -SI-TY */
  526. 05,'i','n',0200+'i',0200+'t', /* IN-I-TY */
  527. 04,'n','i',0200+'t', /* NI-TY */
  528. 040+010,'f','a',0200+'b','i','l',0200+'i',0200+'t', /* FA-BIL-I-TY */
  529. 010,0200+'c','a',0200+'b','i','l',0200+'i',0200+'t', /* -CA-BIL-I-TY */
  530. 010,0200+'p','a',0200+'b','i','l',0200+'i',0200+'t', /* -PA-BIL-I-TY */
  531. 06,0200+'b','i','l',0200+'i',0200+'t', /* -BIL-I-TY */
  532. 03,'i',0200+'t', /* I-TY */
  533. 04,0200+'b','u','r', /* -BUR-Y */
  534. 04,0200+'t','o',0200+'r', /* -TO-RY */
  535. 05,0200+'q','u','a','r', /* -QUAR-Y */
  536. 040+04,'u',0200+'a','r', /* U-ARY */
  537. 07,0200+'m','e','n',0200+'t','a',0200+'r', /* -MEN-TA-RY */
  538. 06,'i','o','n',0200+'a','r', /* ION-ARY */
  539. 04,'i',0200+'a','r', /* I-ARY */
  540. 04,'n',0200+'o',0200+'m', /* N-O-MY */
  541. 03,0200+'p','l', /* -PLY */
  542. 04,'g',0200+'g','l', /* G-GLY */
  543. 05,0200+'p','a',0200+'b','l', /* -PA-BLY */
  544. 05,'f','a',0200+'b','l', /* FA-BLY */
  545. 05,0200+'c','a',0200+'b','l', /* -CA-BLY */
  546. 04,0200+'a','b','l', /* -ABLY */
  547. 03,0200+'b','l', /* -BLY */
  548. 02,0200+'l', /* -LY */
  549. 03,0200+'s','k', /* -SKY */
  550. 040+06,'g',0200+'r','a',0200+'p','h', /* G-RA-PHY */
  551. 04,'l',0200+'o',0200+'g', /* L-O-GY */
  552. 02,0200+'f', /* -FY */
  553. 03,0200+'n','e', /* -NEY */
  554. 03,0200+'l','e', /* -LEY */
  555. 04,'c','k',0200+'e', /* CK-EY */
  556. 03,0200+'k','e', /* -KEY */
  557. 04,0200+'b','o','d', /* -BODY */
  558. 05,0200+'s','t','u','d', /* -STUDY */
  559. 0340+04,'e','e','d', /* EEDY */
  560. 02,0200+'b', /* -BY */
  561. 03,0200+'w','a', /* -WAY */
  562. 03,0200+'d','a', /* -DAY */
  563. 00
  564. };
  565. Uchar *suftab[] = {
  566. sufa,
  567. 0,
  568. sufc,
  569. sufd,
  570. sufe,
  571. suff,
  572. sufg,
  573. sufh,
  574. sufi,
  575. 0,
  576. sufk,
  577. sufl,
  578. sufm,
  579. sufn,
  580. sufo,
  581. sufp,
  582. 0,
  583. sufr,
  584. sufs,
  585. suft,
  586. 0,
  587. 0,
  588. 0,
  589. 0,
  590. sufy,
  591. 0,
  592. };