1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325
|
cannaΥХʥ꼭η
$Id: dic.txt,v 1.4 2003/08/31 14:15:17 aida_s Exp $
cannaμˤϼΩ켭°켭ꡢ줾MWD,SWDȤɤ
̤롣ΤۤǤPRESUCȤΤƤꡢ
줾Ƭ졢μˤʤäƤ褦ߤΤȤȤƤ餺
ư뤫ɤǤ롣
ޤηϥƥȷȥХʥ롣ƥȼϡñϿ
ǽǤꡢؽˤäƤƤѲ롣ΤޥȤ˶ŪŪ
Ȥ뤿ᡢ桼Ѹ켭˻Ȥ롣ޤݻǤ
ؽϡñ̤ͥȡȤƤβŪ(tick)Ǥ롣
ʤ°켭Τfuzokugo.cbdϡåǡ¾ʸˡǡĤᡢ
ƥȷˤϤǤʤ
Хʥ꼭ϡФȤȤ˥ȡ뤵졢ΤޤƤѲʤ
ñϿϤǤؽ̤˺줿ؽե(.cld)¸롣
Ŭڹ¤餫äƤΤǡޥȻ˿
ɬפʤmmap()ǥ뤳ȤǽˤʤäƤ롣
ޤ1Ĥ.cbd˥Хʥ꼭ʣǼ뤳ȤǽǤ롣
ñʣΥХʥ꼭catǤĤʤηǤ롣.cbdΤȶ
뤿ᡢ.cbdθġμʲ(DM)ȸƤ֡
ؽե뤬ټȤƤФʤɡȤϤʰ̣
ȤΤǡä˼Ω켭°켭θʬ碌ơָüפ
Ƥ֤Ȥˤ롣ޤؽեϸüȴطΤǡʻ
⤹롣
3.7devel2ϡ⤤ĥȸߴΤᡢΥإåη¿
줿ϤޤȯСǤ뤿ᡢμˤĤƤεҤ
ĤƤ롣
㡧
BOOL 0ޤ1
CARDnn nnӥåȤ̵MSB first
CHAR ʸ
WCHAR 磻ʸ
ZSTR 0üʸ
1. ü
1.1 Wrec
Хʥ꼭δñ̤ϡɤߤȴʻޤȤWrecȤ쥳ɤǤ롣
RKǥХȥǡΤޤݻ졢ʴѴ뤿Ӥ˲Ϥ롣
ϼ̤Ǥ롣
WREC: WREC_HEADER2|WREC_HEADER4 LEFTYOMI(WCHAR*leftylen) CANDIDATE*ncand
WREC_HEADER2: 0(BOOL) LEFTYLEN(CARD6) WRECLEN(CARD6) NCAND(CARD3)
WREC_HEADER4: 1(BOOL) LEFTYLEN(CARD6) WRECLEN1(CARD6) NCAND1(CARD3) \
WRECLEN2(CARD7) NCAND2(CARD9)
CANDIDATE: KANJILEN(CARD7) HINSHIID(CARD9) KANJI(WCHAR*kanjilen)
䤬8İʾ夢뤫Wrec礭64ХȰʾˤʤȤϡ4ХȤΥإå
Ȥ롣ޤɤߤϥǥ쥯ȥWrecʬǤäƤꡢWrecդ
̤ǤΤɬפʬǥ쥯ȥˡĤ꤬WrecLEFTYOMIȤ롣
1.2 ι¤
DMHEADER
HD_RECORDS: HD_RECORD*n
HD_RECORD: TAG(CHAR*4) LENGTH(CARD32) OFFSET(CARD32)|VALUE(CARD32)
LENGTH0ΤȤϡͤ4ХȤľܽޤ롣
LENGTH1ʾΤȤϡͤVALUESΰ˽ޤ졢OFFSETˤä
ܻȤ롣OFFSETδHEADERƬǤ롣
ENDTAG: '\0'*4
VALUES
TOPDIR: DIRNODE_BROTHERS*n
DIRNODE_BROTHERS: NBROTHERS(CARD16) 0(CARD24) DIRNODE*nbrothers
DIRNODE: KEY(WCHAR) WORD_NODE(BOOL) NODEOFF(CARD23)|WRECOFF(CARD23)
NODEOFF,WRECOFFȤ⡢ФΥإåΥեåȤǤ롣
PAGES: PAGE*npages
PAGE
PAGEHEADER: PAGENUMBER(CARD16) N_PAGENODES(CARD16) NWREC(CARD16) \
0(CARD8) FIRST_LVO(CARD24) FIRST_CSN(CARD24) 0(CARD8)
PAGEDIR: PAGENODE*n_pagenodes
PAGENODE: KEY(WCHAR) WORD_NODE(BOOL) LAST_NODE(BOOL) \
NODEOFF(CARD14)|WRECOFF(CARD14)
NODEOFF,WRECOFFȤڡƬΥեåȤǤ롣
LINKTABLE: LINK*nwrec
LINK: WRECOFF(CARD14) LVO_IN_PAGE(CARD15) CSN_IN_PAGE(CARD11)
WORDS: WREC*nwrec
[GRAMMER]
Ω켭ξϤ϶Ǥ롣3.7devel1ޤǤΥХʥ°켭ξ硢
ʸˡǡɬפǤ롣¤ꡢʸˡʤХʥ꼭
ꤿϡ4ХȤ0ƤСRK֤ޤơư뤳Ȥ
Ǥ褦Ǥ롣3.7devel2ʹߤϡHD_GRAM쥳ɤά뤫HD_GRSZ
0ˤСʸˡ̵뤳ȤǤ롣
ϥڡȤñ̤ʬƤ롣¤Ƥˤϡڡ
̤˲ꡢڡñ̤mmapꤹ뤳ȤǡƤ褦
롣Wrecƥڡˤꡢڤϥڡȥǥ쥯ȥΰʬ
äƤ롣
1.3 إå
إåϳĥ⤤褦˸뤬3.6ޤǤμǤϡRKΤʤTAGȡ
λǥ顼ˤʤäƤޤΤᡢ쥳ɤߤȡŤRKǤ
ɤʤʤäƤޤä
3.7devel2ϡRKΤʤ쥳ɤ̵뤹褦ˤʤäƤꡢǤդΥǡ
ɲäǤ롣ޤСɽ쥳ɤϼºݤˤϻȤƤʤä塢
ߴܤ褦ˤϤʤäƤʤäΤǡHD_VERѻߤơ
ºݤΥСHD_CURVȡߴΤǤŤСHD_CMPV
ߤΤۤإåΥ¤ʤᡢפ5ĤΥ쥳ɤ
Ƭ֤뤳Ȥˤ
ߤΥ쥳ɤϼ̤Ǥ롣
1.3.1 ǽˡνǸͤФʤʤ(3.7devel2ǤϾǤ)
HD_MAG (MAG#): "CDIC"CARD32ȸ
HD_SIZ (#SIZ): Ф礭3.7devel2ʸˡǡ礭ޤ
HD_HSZ (#HSZ): إå礭
HD_CURV (CURV): ΥСߤ0x300702L
HD_CMPV (CMPV): ߴΤ뼭ΥСߤ0x300702L
1.3.2 Ǥդǡ3.7devel2μ¸ߤ
HD_VER (VER#): "R3.0"CARD32ȸ͡åƤʤ3.7devel2ѻ
HD_TIME (TIME):
HD_REC (#REC): Wrec
HD_CAN (#CAN):
HD_L2P (L2P#): log2(ڡ礭)crxdicǺä13=8KB
HD_L2C (L2C#): log2(ڡκ)crxdicǺä11=2048
HD_PAG (#PAG): ڡ
HD_LND (#LND): TOPDIR˴ޤޤο
HD_SND (#SND): PAGEDIR˴ޤޤο
HD_DROF (DROF): TOPDIRΰ֡̾HD_HSZƱǤRKǤ⺮ƱƤ
HD_PGOF (PGOF): ǽΥڡΰ
HD_DMNM (DMNM): Ф̾
HD_CODM (CODM): 0ؽեǤб뼭Ф̾
HD_LANG (LANG): "japan"
HD_WWID (WWID): 2(磻ʸ?)
HD_WTYP (WTYP): "W16 "CARD32ȸ
HD_COPY ((C) ): 0(?)
HD_NOTE (NOTE): 0(ɽ?)
HD_TYPE (TYPE): "jmwd"CARD32ȸ
1.3.3 3.7devel1о줷3.6Ϥμˤ¸ߤƤϤʤ
HD_CRC (#CRC): TOPDIRPAGE碌ΰISO/IEC 8802-3:1989 CRC
1.3.4 3.7devel2ʹߤо줷3.7devel1ޤǤμˤ¸ߤƤϤʤ
HD_GRAM (GRAM): ʸˡǡΰ
HD_GRSZ (GRSZ): ʸˡǡ礭
1.4 ڤι¤
Wrecɤߤ1ʸ1ĤȤڹ¤Ǹ롣դˤWORD_NODEե饰
ΩäƤꡢWRECOFFWrecؤΤΥǥ쥯ȥ(TOPDIR)
ڡǥ쥯ȥ(PAGEDIR)ʬäƤ롣ɤ°뤫ϡ
Υ르ꥺǷ롣
a.ĺxȤ롣ĺTOPDIR롣
b.x鲼ʬ(xȤ)٤ƥڡǼȲꤷơȡ
դؤWrecWrecؤ()碌礭롣
c.ʬڤƼޤڡǽΥڡõդФΥڡ
ǼƤޤPAGEDIRˡLINKTABLEˡWrecWORDSǼ롣
d.ɤΥڡˤޤʤȤϡxľܤλҶTOPDIR˳ǼҶ
ƤxȤƼbʲ֤
츫Ψ㤤褦˸뤬ΨȾʬڤڡϹ⡹1ĤǤꡢΨ
κǾͤmȤȡ¾ΥڡλΨ1-mʾǤ뤫顢ȤϤʤ
TOPDIRPAGEDIRȤǡηǼˡäƤ롣ˤĤƤ
1.2ǽʬǤǼȤϡɤξⷻˤ
ϿΤTOPDIRȤϡ郎ɤߤ1ʸȤϥå
ơ֥ʤƤΤФPAGEDIRȤϡñɤߤν˳Ǽ롣
ޤTOPDIRǤϥϥåơ֥礭ơ֥Ƭ˽ƤΤФ
PAGEDIRǤϷκǸLAST_NODEե饰ΩäƤ롣
֤פΤ褦ˡɤߤ¾θȤפФʤޤ
(ξϡ֤)ϡɤߤκǸ0ääΤ褦
롣ξǤС֤פλҶϡ0פȤʤ롣
1.5 ΰ
ڡˤϥȸƤФϿƤ롣ϡĹWrecȰа
бƤꡢWrecֹǥǥå뤳ȤǤ롣˳ؽ
˻ȤƤ롣ϼƤġ
WRECOFF:
ڡƬ¬äWrecΰ֡
LVO:
ؽեǡνϿؤºݤˤϡǽWrecLVO
FIRST_LVOȤƥڡΥإå˽졢ΰˤϡLVOFIRST_LVO
κηǵϿ롣
CSN:
˴ޤޤֹ̤档ڡκǽθCSNFIRST_CSN
Ȥƽ졢ΰˤFIRST_CSNȤκ롣3.6p3ޤǤϡ
CSN_IN_PAGEηְäƤCSNϡָ䤬Ǹ˻ȤƤλ
(tick)פ뤿˻ȤƤΤǡ³ͥ٤ߴĤ
¿ä褦Ǥ롣
2. ʸˡե
2.1 ι¤
GRAMMER_SIZE(CARD32)
GRAMMER_SIZE쥳ɼΤ礭(4byte)N_HINSHI쥳ɤ礭
ϴޤࡣ
N_HINSHI(CARD32)
CONJ_MATRIX
HINSHIMEI_TABLE: HINSHIMEI(ZSTR)*n_hinshi
BB,K5r,k5u,FkosoȤäʻ̾ñʻֹν0üʸ
äƤ롣
[NEG_CONJ_TABLE]
NUMNEG(CARD32)
NEG_CONJ*numneg
NEG_CONJ: 0(CARD4) HINSHIID1(CARD9) HINSHIID2(CARD9) \
HINSHIID3(CARD9) NEG_FLAG(BOOL)
0(CARD8)
LOGIC_HACKͭˤNEG_CONJ_TABLEդ
RKGRAMMER_SIZEʸˡǡΤ礭ؤȤꤷƤ뤬ߤ
crxgramμǤϡNEG_CONJ_TABLEȺǸ0礭ޤޤƤʤΤᡢ
3.7devel2μǡʸˡǡθ̤μФ³硢
ǤʤäˡNEG_CONJ_TABLE̵ۣͭǤꡢñʤRKνǤ
ѤޤʤΤη٤ˤʤäƤ
3.7devel2μǤϡʸˡǡΥDMHEADER˴ޤޤƤΤǡ
ʤ3.7devel2Ǥ⡢ʸˡեΤηϰѹƤʤᡢ
GRAMMER_SIZENEG_CONJ_TABLEȺǸ0ޤޤʤޤޤǤ롣
2.2 ³
ʻiθʻj³ɤϡӥåȤιɽ롣ij1ʤ
³0ʤ³ʤʻμब8ܿǤʤȡӥåȤüФ뤬
üϹڤ夲롣äơԤƬ(ʻ0BBǤ)Ͼ
Хȶ·Ƥ롣
2.3 Ǥä³ơ֥
NEG_CONJϡ3Ĥʻʻֹȡ³ڤ(NEG_FLAG=0)ͥ٤
(NEG_FLAG=1)ޤȤơ32ӥåȤˤΤǤ롣줬¤Ǥ롣
RKϤΥơ֥ΤޤʬõΤǡɬǤʤФʤʤ
3. ؽե
3.1 ι¤
DMHEADER
üΥإåȤޤäƱǤ롣ۤȤɤΥ쥳ɤϡб
üΥ쥳ɤΥԡǤꡢꤵΤHD_DMNM,HD_CODM,
HD_HSZǤ롣HD_SIZʤɤϰ̣ʤ
PERM_TABLE_SIZE(CARD32)
PERM_TABLE: PERMUTATION*nwrec PADDING
PERMUTATION: CANDNUM(CARDn)*ncand_in_wrec
RUC_TABLE
RUC_TABLE_SIZE(CARD32)
RUC_TABLE_BODYζʬޤȥ
N_RUC(CARD32)
RUC_TABLEΤºݤ˻ȤƤ륨ȥ
FIRST_RUC(CARD32)
ǽ(ĤޤǤŤ)Ȥ줿ֹ档N_RUC<RUT_SIZEξϥ
(̾0)äƤ롣
TM(CARD32)
ߤΤȤ0äƤ褦Ǥ롣
RUC_TABLE_BODY: RUC_ENTRY*n_ruc EMPTY_RUC_ENTRY*(ruc_table_size-n_ruc)
RUC_ENTRY: CSN(CARD20) AGE(CARD20)
NV_AREA
NV_SIZE(CARD32)
NV_AREA_BODYζʬޤȥ
NV_COUNT(CARD32)
NV_AREAΤºݤ˻ȤƤ륨ȥ
NV_HASHTABLE_SIZE(CARD32)
RKǻȤϥåơ֥礭ǻꤹ롣crfreqǺ
32ˤʤ롣
0(CARD32)
NV_AREA_BODY: NV_ENTRY*nv_size EMPTY_NV_ENTRY*(nv_size-nv_count)
NV_ENTRY: YOMILEN(CARD8) SPLITPOS(CARD8) YOMI(WCHAR*yomilen)
3.2 ơ֥
1ĤɤߤбνϼΤ褦˵Ͽ롣ncand=6ĤȤ롣
ǤǶȤ줿䤬3֡³0֡2֡4֡5֡1֤ǤäȤ롣
ΤȤֹ2ܤơ
6 0 4 8 10 2
Ȥ롣ơ0ʾncand*2ʲ(̤ǤϤʤ)οϿǤǾ
ӥåȿǡ6Ĥοɽ˵ͤǤǽο(Ǥ6)
(ӥåñ̤ǿ)ϡüΥΰLVOեɤ˽
䤬硢碌뤿ᡢncand*2롣5ܤ
硢
6 0 4 8 12 2
Τ褦ˤ롣12ΰ֤Ǥꡢ̾ĹȤäƤ֤˿κǸ
˰ưƤ
ȾüʥӥåȤФ硢Хȶ˹礦褦ˡơ֥ΰֺǸ0롣
3.3 RUCơ֥
ǶѤϿƤĤΥȥϡֹ̤CSNȡǸ
ȤƤλ(tick)ȤˤʤäƤ롣1.5ǽҤ٤褦ˡCSNηä
ᡢΥơ֥ƤʤäƤơ̷ϤʤΤΡä
ؽƤ
3.4 NVΰ
ʸڤĹؽΤΰǤ롣ĤΥȥϡʸɤߤȡʸڤ
֤Ȥ߹碌ǤꡢɤߤWCHARƥȤǵϿ롣
4.
DMHEADER礭: 1024ХȰʲ(3.7devel1ޤ)̵(3.7devel2ʹ)
1ĤμФ礭: 8MB(=2^23)̤
1ĤΥڡ礭: 16KB(=2^14)̤crxdicǺä8KBˤʤ
ڡθ: 2048(=2^11)̤ڡ礭¤˶
ڡνơ֥ξ: 32Kbit(=2^15)̤¤
ɤߤĹ: 64(=2^6)ʸ̤
δĹ: 128(=2^7)ʸ̤
ʻμ: 512(=2^9)̤BBʤɤȤ⤦ʤʤ
Wrec礭: 8KB(=2^13)Х̤
|