Mercurial > freewnn
annotate Wnn/jserver/kaiseki.h @ 29:35bc1f2e3f14 default tip
minor fix
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Sat, 06 Mar 2010 23:55:24 +0900 |
parents | 466fe6732d8d |
children |
rev | line source |
---|---|
0 | 1 /* |
2 * $Id: kaiseki.h,v 1.5 2003/05/11 18:35:54 hiroo Exp $ | |
3 */ | |
4 | |
5 /* | |
6 * FreeWnn is a network-extensible Kana-to-Kanji conversion system. | |
7 * This file is part of FreeWnn. | |
8 * | |
9 * Copyright Kyoto University Research Institute for Mathematical Sciences | |
10 * 1987, 1988, 1989, 1990, 1991, 1992 | |
11 * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999 | |
12 * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992 | |
13 * Copyright FreeWnn Project 1999, 2000, 2003 | |
14 * | |
15 * Maintainer: FreeWnn Project <freewnn@tomo.gr.jp> | |
16 * | |
17 * This program is free software; you can redistribute it and/or modify | |
18 * it under the terms of the GNU General Public License as published by | |
19 * the Free Software Foundation; either version 2 of the License, or | |
20 * (at your option) any later version. | |
21 * | |
22 * This program is distributed in the hope that it will be useful, | |
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
25 * GNU General Public License for more details. | |
26 * | |
27 * You should have received a copy of the GNU General Public License | |
28 * along with this program; if not, write to the Free Software | |
29 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
30 */ | |
31 | |
32 #ifndef JSERVER_KAISEKI_H | |
33 #define JSERVER_KAISEKI_H 1 | |
34 | |
35 #ifdef STDC_HEADERS | |
36 # include <sys/types.h> | |
37 #endif /* STDC_HEADERS */ | |
38 | |
39 #ifdef GLOBAL_VALUE_DEFINE | |
25
466fe6732d8d
- fixed more NULL pointer related errata
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
40 #undef GLOBAL |
0 | 41 #define GLOBAL |
25
466fe6732d8d
- fixed more NULL pointer related errata
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
42 #undef GLOBAL_VAL |
0 | 43 #define GLOBAL_VAL(v) = (v) |
44 #else | |
45 #define GLOBAL extern | |
46 #define GLOBAL_VAL(v) | |
47 #endif /* GLOBAL_VALUE_DEFINE */ | |
48 | |
49 #include "commonhd.h" | |
50 #include "ddefine.h" | |
51 | |
52 /********************* | |
53 * header of daemon | |
54 **********************/ | |
55 #define WNN_BUN 0 | |
56 #define WNN_ZENKOUHO 1 | |
57 #define WNN_SHO 0 | |
58 #define WNN_DAI 1 | |
59 | |
60 | |
61 #define _MININT 0x80000000 | |
62 #define HIRA_HYOUKA -2000; /* 全候補取り出しの時の平仮名の評価値 */ | |
63 #define KATA_HYOUKA -1000; /* 全候補取り出しの時の片仮名の評価値 */ | |
64 | |
65 #define _DIVID(val, div) (((int)(val) > (int)0) ? ((val) / (div)) : ((val) * (div))) | |
66 | |
67 extern struct fzkkouho *getfzkoh_body (); | |
68 extern struct fzkkouho *getfzkoh1_body (); | |
69 | |
70 #define getfzkoh(ichbnp_p,no) \ | |
71 (((int)(no) < (int)FZKIBNO) ? &((ichbnp_p)->fzkib[no]) : getfzkoh_body(ichbnp_p,no)) | |
72 | |
73 #define getfzkoh1(ichbnp_p,no) \ | |
74 (((int)(no) < (int)FZKIBNO) ? &((ichbnp_p)->fzkib1[no]) : getfzkoh1_body(ichbnp_p,no)) | |
75 | |
76 #define kan_ck_vector(h, v) \ | |
77 (((((int)*((v) + ((h) / (sizeof(int)<<3))) >> (int)((int)(h) % (int)((int)sizeof(int)<<(int)3))) & 1) == 1) ? \ | |
78 WNN_CONNECT_BK : WNN_NOT_CONNECT_BK) | |
79 | |
80 GLOBAL struct FT *ft; /* カレントの付属語テーブル */ | |
81 | |
82 /* 解析エリアの管理用のリスト */ | |
83 struct free_list | |
84 { | |
85 struct free_list *lnk; | |
86 int num; | |
87 }; | |
88 | |
89 #define FIRST_BZD_KOSUU 200 /* 最初に取り出す大文節解析エリア */ | |
90 #define BZD_KOSUU 20 /* 足らんかったら付け加える大きさ */ | |
91 | |
92 #define FIRST_SBN_KOSUU 200 /* 最初に取り出す小文節解析エリア */ | |
93 #define SBN_KOSUU 20 /* 足らんかったら付け加える大きさ */ | |
94 | |
95 #define FIRST_ICHBN_KOSUU 20 /* 最初に取り出す付属語解析エリア */ | |
96 #define ICHBN_KOSUU 4 /* 足らんかったら付け加える大きさ */ | |
97 | |
98 #define FIRST_JKDBN_KOSUU 50 /* 最初に取り出す大文節次候補エリア */ | |
99 #define JKDBN_KOSUU 10 /* 足らんかったら付け加える大きさ */ | |
100 | |
101 #define FIRST_JKSBN_KOSUU 50 /* 最初に取り出す小文節次候補エリア */ | |
102 #define JKSBN_KOSUU 10 /* 足らんかったら付け加える大きさ */ | |
103 | |
104 #define FIRST_JKSONE_KOSUU 300 /* 最初に取り出す小文節次候補エリア */ | |
105 #define JKSONE_KOSUU 20 /* 足らんかったら付け加える大きさ */ | |
106 | |
107 /************************************************ | |
108 * 擬似文節候補評価ルーチン * | |
109 ************************************************/ | |
110 /* | |
111 #define HYOKAVAL(jiritugo_len, bnst_len) \ | |
112 hyoka1(0x80, 0, (jiritugo_len), (bnst_len), 0) | |
113 */ | |
114 /* | |
115 #define HYOKAVAL(hindo, jiritugo_len, bnst_len) \ | |
116 hyoka1(0, hindo, (jiritugo_len), (bnst_len), 0) | |
117 */ | |
118 #define HYOKAVAL(hindo, jiritugo_len, bnst_len) \ | |
119 (c_env->hindoval * (hindo) \ | |
120 + c_env->jirival * (jiritugo_len) \ | |
121 + c_env->lenval * (bnst_len) ) | |
122 | |
123 /************************************************ | |
124 * 小文節候補評価ルーチン * | |
125 ************************************************/ | |
126 #define hyoka1(HINDO, HINDO_IN, LENGTH, BUNLNGTH, PRIO) \ | |
127 (c_env->hindoval * (((HINDO) & 0x7f) + ((HINDO_IN) & 0x7f)) \ | |
128 + c_env->jirival * (LENGTH) \ | |
129 + c_env->lenval * (BUNLNGTH) \ | |
130 + c_env->jishoval * (PRIO)\ | |
131 + c_env->flagval * ((int)((HINDO) & 0x80) >> (int)7)) | |
132 | |
133 /************************************************ | |
134 * 大文節候補評価ルーチン * | |
135 ************************************************/ | |
136 /* 大文節の評価値 | |
137 sbn_val * 小文節の評価値の和 / 小文節数 | |
138 + sbn_cnt_val * 小文節数 | |
139 + dbn_len_val * 大文節長 | |
140 */ | |
141 #define hyoka_dbn(SON_V, SBNCNT, DAILEN) \ | |
142 ((c_env->sbn_val * (SON_V)) / (SBNCNT) \ | |
143 + c_env->sbn_cnt_val * (SBNCNT) \ | |
144 + c_env->dbn_len_val * (DAILEN)) | |
145 | |
146 /* 大文節の評価値を前の文節と接続できるか否かで変える。 | |
147 divid : 1 前の文節と接続できる hyouka * 2 | |
148 0 大文節の先頭 hyouka | |
149 -1 前の文節と接続できない hyouka / 2 | |
150 */ | |
151 #define DIVID_HYOUKA(hyouka, divid) \ | |
152 (((divid) == 0) ? (hyouka) : \ | |
153 (((divid)) > 0 ? ((hyouka) << 1) : ((hyouka) >> 1))) | |
154 | |
155 /********************* | |
156 * kaiseki work area | |
157 **********************/ | |
158 GLOBAL w_char *bun; /* D */ | |
159 GLOBAL w_char giji_eisuu[20]; /* 擬似「英数」の定義 */ | |
160 GLOBAL size_t maxchg; | |
161 GLOBAL int *maxj; /* maxj is counts to entries in jmt_ */ | |
162 | |
163 /* jmt_ptr is used in jmt0.c only. (untrue! do_dic_no.c use it 2003.05.09) | |
164 but it must be changed by clients. | |
165 jishobiki does not use it. this is sent to jishobiki by arguments | |
166 */ | |
167 | |
168 GLOBAL struct jdata *j_e_p; /* holds the current point to which jmtw_ is used */ | |
169 GLOBAL struct jdata **jmt_; | |
170 GLOBAL struct jdata *jmtw_; | |
171 GLOBAL struct jdata **jmt_end; | |
172 GLOBAL struct jdata *jmtw_end; | |
173 GLOBAL struct jdata **jmt_ptr; | |
174 GLOBAL struct jdata ***jmtp; | |
175 | |
176 | |
177 /******************************** | |
178 * 疑似自立語の品詞 * | |
179 ********************************/ | |
180 #ifdef nodef | |
181 GLOBAL int sentou_no; /* 「先頭」文節先頭に成れるもの */ | |
182 GLOBAL int suuji_no; /* 「数字」数詞相当 */ | |
183 GLOBAL int katakanago_no; /* 「カナ」外来語など 名詞相当 */ | |
184 GLOBAL int eisuu_no; /* 「英数」 */ | |
185 GLOBAL int kigou_no; /* 「記号」 */ | |
186 GLOBAL int toji_kakko_no; /* 「閉括弧」 */ | |
187 GLOBAL int fuzokugo_no; /* 付属語だけ */ | |
188 GLOBAL int kai_kakko_no; /* 「開括弧」 */ | |
189 GLOBAL int giji_no; /* 疑似 */ | |
190 #endif /* nodef */ | |
191 | |
192 #define sentou_no 0 /* 「先頭」文節先頭に成れるもの */ | |
193 #define suuji_no 1 /* 「数字」数詞相当 */ | |
194 #define katakanago_no 2 /* 「カナ」外来語など 名詞相当 */ | |
195 #define eisuu_no 3 /* 「英数」 */ | |
196 #define kigou_no 4 /* 「記号」 */ | |
197 #define toji_kakko_no 5 /* 「閉括弧」 */ | |
198 #define fuzokugo_no 6 /* 付属語だけ */ | |
199 #define kai_kakko_no 7 /* 「開括弧」 */ | |
200 #define giji_no 8 /* 疑似 */ | |
201 | |
202 #endif /* JSERVER_KAISEKI_H */ | |
203 |