cannaΥХʥ꼭η

$Id: dic.txt,v 1.4.2.1 2003/09/12 05:00:48 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)Х̤
