From b568905e515b050050079500cb66421efd081677 Mon Sep 17 00:00:00 2001 From: Masanori Ogino Date: Sun, 26 Nov 2023 06:45:00 +0900 Subject: [PATCH] Import SJ3 2.0.1.20 Signed-off-by: Masanori Ogino --- CHANGES.eucJP | 284 + Imakefile | 64 + README | 90 + README.eucJP | 97 + demo/Imakefile | 63 + demo/sample.c | 390 + dict/Imakefile | 41 + dict/dict/Imakefile | 67 + dict/dict/visual.dic | 29803 ++++++++++++++++++++++++++++++++++++ dict/include/sj_const.h | 112 + dict/include/sj_macro.h | 49 + dict/include/sj_struct.h | 102 + dict/tool/GramTable | 198 + dict/tool/Imakefile | 79 + dict/tool/char.c | 283 + dict/tool/cnvhinsi.c | 118 + dict/tool/file.c | 169 + dict/tool/global.c | 58 + dict/tool/hindo.c | 643 + dict/tool/knjcvt.c | 276 + dict/tool/makedict.c | 241 + dict/tool/makelist.c | 648 + dict/tool/makeseg.c | 429 + dict/tool/memory.c | 67 + dict/tool/offset.c | 188 + dict/tool/readline.c | 272 + dict/tool/string.c | 232 + doc/Imakefile | 46 + doc/doc/Imakefile | 49 + doc/doc/Nihongo.ps.Z | Bin 0 -> 150105 bytes doc/doc/hinsi.ms | 489 + doc/doc/makedict.ms | 91 + doc/doc/sj3lib.ms | 619 + doc/doc/sj3serv.ms | 170 + doc/man/Imakefile | 58 + doc/man/sj3.1 | 121 + doc/man/sj3dic.1 | 141 + doc/man/sj3mkdic.1 | 576 + doc/man/sj3serv.1 | 78 + include/Const.h | 94 + include/Dict.h | 82 + include/Paths.h.in | 43 + include/Struct.h | 219 + include/sj3cmd.h | 107 + include/sj3err.h | 107 + include/sj3lowlib.h | 66 + include/sj_connect.h | 524 + include/sj_const.h | 199 + include/sj_define.h | 48 + include/sj_dict.h | 113 + include/sj_euc.h | 55 + include/sj_global.h | 46 + include/sj_hinsi.h | 231 + include/sj_kcnv.h | 53 + include/sj_left.h | 286 + include/sj_prty.h | 81 + include/sj_rename.h | 573 + include/sj_right.h | 373 + include/sj_struct.h | 200 + include/sj_study.h | 121 + include/sj_suuji.h | 146 + include/sj_sysvdef.h | 67 + include/sj_table.h | 138 + include/sj_typedef.h | 88 + include/sj_var.h | 64 + include/sj_yomi.h | 217 + kanakan/Imakefile | 172 + kanakan/adddic.c | 616 + kanakan/addelcmn.c | 502 + kanakan/alloc.c | 103 + kanakan/charsize.c | 62 + kanakan/chrtbl.c | 303 + kanakan/cl2knj.c | 279 + kanakan/clstudy.c | 361 + kanakan/cmpstr.c | 57 + kanakan/conjunc.c | 1245 ++ kanakan/connect.c | 8113 ++++++++++ kanakan/cvtclknj.c | 71 + kanakan/cvtdict.c | 254 + kanakan/cvtkanji.c | 216 + kanakan/deldic.c | 364 + kanakan/depend.c | 856 ++ kanakan/dict.c | 109 + kanakan/functbl.c | 96 + kanakan/fuzoku.c | 295 + kanakan/fzkyomi.c | 774 + kanakan/getkanji.c | 279 + kanakan/getrank.c | 195 + kanakan/global.c | 56 + kanakan/hzstrlen.c | 72 + kanakan/init.c | 86 + kanakan/istrcmp.c | 64 + kanakan/memcpy.c | 57 + kanakan/memory.c | 151 + kanakan/memset.c | 48 + kanakan/mk2claus.c | 163 + kanakan/mkbunset.c | 166 + kanakan/mkjiritu.c | 196 + kanakan/mkkouho.c | 562 + kanakan/mknumber.c | 494 + kanakan/mvmemd.c | 48 + kanakan/mvmemi.c | 48 + kanakan/peepdic.c | 501 + kanakan/ph2knj.c | 138 + kanakan/ph_khtbl.c | 126 + kanakan/priority.c | 290 + kanakan/prtytbl.c | 102 + kanakan/s2ctbl.c | 151 + kanakan/selclrec.c | 131 + kanakan/selsuuji.c | 123 + kanakan/setconj.c | 162 + kanakan/setjrec.c | 358 + kanakan/setkouho.c | 325 + kanakan/setubi.c | 86 + kanakan/sj2code.c | 133 + kanakan/skiphblk.c | 55 + kanakan/skipkstr.c | 65 + kanakan/srchdict.c | 163 + kanakan/srchhead.c | 64 + kanakan/srchidx.c | 79 + kanakan/srchnum.c | 624 + kanakan/sstrcmp.c | 50 + kanakan/sstrlen.c | 52 + kanakan/sstrncmp.c | 63 + kanakan/stbtbl.c | 144 + kanakan/stttbl.c | 90 + kanakan/study.c | 193 + kanakan/suujitbl.c | 194 + kanakan/terminat.c | 71 + kanakan/termtbl.c | 326 + kanakan/wakachi.c | 134 + patchlevel.h | 29 + server/Imakefile | 84 + server/comuni.c | 870 ++ server/error.c | 173 + server/execute.c | 1632 ++ server/main.c | 249 + server/rc.sj3serv | 117 + server/rc.sj3serv.FreeBSD | 98 + server/serverrc | 35 + server/setup.c | 562 + server/time_stamp.c | 41 + server/version.c | 40 + sj3.tmpl | 64 + sj3/Imakefile | 105 + sj3/News.cvt | 55 + sj3/Nwp511.cvt | 45 + sj3/Nwp517.cvt | 50 + sj3/Sjrc | 152 + sj3/Sjrk | 332 + sj3/Xterm.cvt | 64 + sj3/code.c | 213 + sj3/common.c | 140 + sj3/conv.c | 373 + sj3/display.c | 496 + sj3/douon.c | 527 + sj3/edit.c | 872 ++ sj3/etc.c | 479 + sj3/eucmessage.c | 490 + sj3/funckey.c | 342 + sj3/henkan.c | 887 ++ sj3/kigou.c | 307 + sj3/libif.c | 365 + sj3/nmttyslot.c | 114 + sj3/romaji.c | 550 + sj3/screen.c | 506 + sj3/sj3.c | 1340 ++ sj3/sj3ver.c | 52 + sj3/sjgetchar.c | 490 + sj3/sjrc.c | 859 ++ sj3/stat_conv.c | 945 ++ sj3/term.c | 60 + sj3/toroku.c | 480 + sj3/ttytest/ttytest.c | 274 + sj3/version.c | 46 + sj3dic/Imakefile | 81 + sj3dic/codecnv.c | 154 + sj3dic/dictdisp.c | 91 + sj3dic/dictmake.c | 223 + sj3dic/hinsi.c | 259 + sj3dic/sj3dic.c | 332 + sj3dic/sj3err.c | 109 + sj3dic/sjctype.h | 82 + sj3dic/sjrc.c | 310 + sj3dic/sjtool.h | 63 + sj3h/common.h | 57 + sj3h/conversion.h | 114 + sj3h/henkan.h | 50 + sj3h/inkey.h | 44 + sj3h/kana.h | 92 + sj3h/kctype.h | 115 + sj3h/key.h | 98 + sj3h/rk.h | 82 + sj3h/select.h | 45 + sj3h/sj.h | 112 + sj3h/sj2.h | 125 + sj3h/sj3libsj3.h | 63 + sj3h/wchar16.h | 392 + sj3lib/Imakefile | 55 + sj3lib/level1.c | 1384 ++ sj3lib/sj.c | 1132 ++ sj3lib/sj3lib.h | 152 + sj3lib/string.c | 383 + sj3rkcv/rk_conv.c | 1270 ++ sj3rkcv/sj3_rkcv.c | 842 + sj3rkcv/wc16_str.c | 453 + sj3stat/Imakefile | 61 + sj3stat/sj3stat.c | 107 + 208 files changed, 89304 insertions(+) create mode 100644 CHANGES.eucJP create mode 100644 Imakefile create mode 100644 README create mode 100644 README.eucJP create mode 100644 demo/Imakefile create mode 100644 demo/sample.c create mode 100644 dict/Imakefile create mode 100644 dict/dict/Imakefile create mode 100644 dict/dict/visual.dic create mode 100644 dict/include/sj_const.h create mode 100644 dict/include/sj_macro.h create mode 100644 dict/include/sj_struct.h create mode 100644 dict/tool/GramTable create mode 100644 dict/tool/Imakefile create mode 100644 dict/tool/char.c create mode 100644 dict/tool/cnvhinsi.c create mode 100644 dict/tool/file.c create mode 100644 dict/tool/global.c create mode 100644 dict/tool/hindo.c create mode 100644 dict/tool/knjcvt.c create mode 100644 dict/tool/makedict.c create mode 100644 dict/tool/makelist.c create mode 100644 dict/tool/makeseg.c create mode 100644 dict/tool/memory.c create mode 100644 dict/tool/offset.c create mode 100644 dict/tool/readline.c create mode 100644 dict/tool/string.c create mode 100644 doc/Imakefile create mode 100644 doc/doc/Imakefile create mode 100644 doc/doc/Nihongo.ps.Z create mode 100644 doc/doc/hinsi.ms create mode 100644 doc/doc/makedict.ms create mode 100644 doc/doc/sj3lib.ms create mode 100644 doc/doc/sj3serv.ms create mode 100644 doc/man/Imakefile create mode 100644 doc/man/sj3.1 create mode 100644 doc/man/sj3dic.1 create mode 100644 doc/man/sj3mkdic.1 create mode 100644 doc/man/sj3serv.1 create mode 100644 include/Const.h create mode 100644 include/Dict.h create mode 100644 include/Paths.h.in create mode 100644 include/Struct.h create mode 100644 include/sj3cmd.h create mode 100644 include/sj3err.h create mode 100644 include/sj3lowlib.h create mode 100644 include/sj_connect.h create mode 100644 include/sj_const.h create mode 100644 include/sj_define.h create mode 100644 include/sj_dict.h create mode 100644 include/sj_euc.h create mode 100644 include/sj_global.h create mode 100644 include/sj_hinsi.h create mode 100644 include/sj_kcnv.h create mode 100644 include/sj_left.h create mode 100644 include/sj_prty.h create mode 100644 include/sj_rename.h create mode 100644 include/sj_right.h create mode 100644 include/sj_struct.h create mode 100644 include/sj_study.h create mode 100644 include/sj_suuji.h create mode 100644 include/sj_sysvdef.h create mode 100644 include/sj_table.h create mode 100644 include/sj_typedef.h create mode 100644 include/sj_var.h create mode 100644 include/sj_yomi.h create mode 100644 kanakan/Imakefile create mode 100644 kanakan/adddic.c create mode 100644 kanakan/addelcmn.c create mode 100644 kanakan/alloc.c create mode 100644 kanakan/charsize.c create mode 100644 kanakan/chrtbl.c create mode 100644 kanakan/cl2knj.c create mode 100644 kanakan/clstudy.c create mode 100644 kanakan/cmpstr.c create mode 100644 kanakan/conjunc.c create mode 100644 kanakan/connect.c create mode 100644 kanakan/cvtclknj.c create mode 100644 kanakan/cvtdict.c create mode 100644 kanakan/cvtkanji.c create mode 100644 kanakan/deldic.c create mode 100644 kanakan/depend.c create mode 100644 kanakan/dict.c create mode 100644 kanakan/functbl.c create mode 100644 kanakan/fuzoku.c create mode 100644 kanakan/fzkyomi.c create mode 100644 kanakan/getkanji.c create mode 100644 kanakan/getrank.c create mode 100644 kanakan/global.c create mode 100644 kanakan/hzstrlen.c create mode 100644 kanakan/init.c create mode 100644 kanakan/istrcmp.c create mode 100644 kanakan/memcpy.c create mode 100644 kanakan/memory.c create mode 100644 kanakan/memset.c create mode 100644 kanakan/mk2claus.c create mode 100644 kanakan/mkbunset.c create mode 100644 kanakan/mkjiritu.c create mode 100644 kanakan/mkkouho.c create mode 100644 kanakan/mknumber.c create mode 100644 kanakan/mvmemd.c create mode 100644 kanakan/mvmemi.c create mode 100644 kanakan/peepdic.c create mode 100644 kanakan/ph2knj.c create mode 100644 kanakan/ph_khtbl.c create mode 100644 kanakan/priority.c create mode 100644 kanakan/prtytbl.c create mode 100644 kanakan/s2ctbl.c create mode 100644 kanakan/selclrec.c create mode 100644 kanakan/selsuuji.c create mode 100644 kanakan/setconj.c create mode 100644 kanakan/setjrec.c create mode 100644 kanakan/setkouho.c create mode 100644 kanakan/setubi.c create mode 100644 kanakan/sj2code.c create mode 100644 kanakan/skiphblk.c create mode 100644 kanakan/skipkstr.c create mode 100644 kanakan/srchdict.c create mode 100644 kanakan/srchhead.c create mode 100644 kanakan/srchidx.c create mode 100644 kanakan/srchnum.c create mode 100644 kanakan/sstrcmp.c create mode 100644 kanakan/sstrlen.c create mode 100644 kanakan/sstrncmp.c create mode 100644 kanakan/stbtbl.c create mode 100644 kanakan/stttbl.c create mode 100644 kanakan/study.c create mode 100644 kanakan/suujitbl.c create mode 100644 kanakan/terminat.c create mode 100644 kanakan/termtbl.c create mode 100644 kanakan/wakachi.c create mode 100644 patchlevel.h create mode 100644 server/Imakefile create mode 100644 server/comuni.c create mode 100644 server/error.c create mode 100644 server/execute.c create mode 100644 server/main.c create mode 100644 server/rc.sj3serv create mode 100644 server/rc.sj3serv.FreeBSD create mode 100644 server/serverrc create mode 100644 server/setup.c create mode 100644 server/time_stamp.c create mode 100644 server/version.c create mode 100644 sj3.tmpl create mode 100644 sj3/Imakefile create mode 100644 sj3/News.cvt create mode 100644 sj3/Nwp511.cvt create mode 100644 sj3/Nwp517.cvt create mode 100644 sj3/Sjrc create mode 100644 sj3/Sjrk create mode 100644 sj3/Xterm.cvt create mode 100644 sj3/code.c create mode 100644 sj3/common.c create mode 100644 sj3/conv.c create mode 100644 sj3/display.c create mode 100644 sj3/douon.c create mode 100644 sj3/edit.c create mode 100644 sj3/etc.c create mode 100644 sj3/eucmessage.c create mode 100644 sj3/funckey.c create mode 100644 sj3/henkan.c create mode 100644 sj3/kigou.c create mode 100644 sj3/libif.c create mode 100644 sj3/nmttyslot.c create mode 100644 sj3/romaji.c create mode 100644 sj3/screen.c create mode 100644 sj3/sj3.c create mode 100644 sj3/sj3ver.c create mode 100644 sj3/sjgetchar.c create mode 100644 sj3/sjrc.c create mode 100644 sj3/stat_conv.c create mode 100644 sj3/term.c create mode 100644 sj3/toroku.c create mode 100644 sj3/ttytest/ttytest.c create mode 100644 sj3/version.c create mode 100644 sj3dic/Imakefile create mode 100644 sj3dic/codecnv.c create mode 100644 sj3dic/dictdisp.c create mode 100644 sj3dic/dictmake.c create mode 100644 sj3dic/hinsi.c create mode 100644 sj3dic/sj3dic.c create mode 100644 sj3dic/sj3err.c create mode 100644 sj3dic/sjctype.h create mode 100644 sj3dic/sjrc.c create mode 100644 sj3dic/sjtool.h create mode 100644 sj3h/common.h create mode 100644 sj3h/conversion.h create mode 100644 sj3h/henkan.h create mode 100644 sj3h/inkey.h create mode 100644 sj3h/kana.h create mode 100644 sj3h/kctype.h create mode 100644 sj3h/key.h create mode 100644 sj3h/rk.h create mode 100644 sj3h/select.h create mode 100644 sj3h/sj.h create mode 100644 sj3h/sj2.h create mode 100644 sj3h/sj3libsj3.h create mode 100644 sj3h/wchar16.h create mode 100644 sj3lib/Imakefile create mode 100644 sj3lib/level1.c create mode 100644 sj3lib/sj.c create mode 100644 sj3lib/sj3lib.h create mode 100644 sj3lib/string.c create mode 100644 sj3rkcv/rk_conv.c create mode 100644 sj3rkcv/sj3_rkcv.c create mode 100644 sj3rkcv/wc16_str.c create mode 100644 sj3stat/Imakefile create mode 100644 sj3stat/sj3stat.c diff --git a/CHANGES.eucJP b/CHANGES.eucJP new file mode 100644 index 0000000..4708d78 --- /dev/null +++ b/CHANGES.eucJP @@ -0,0 +1,284 @@ +# +# $SonyId: CHANGES.eucJP,v 1.31 1998/04/08 13:11:09 notanaka Exp $ +# + +[After X11R6 contrib release] + +number: 1 +date: 1994/08/01 +contents: sjis2euc と euc2sjis が半角カタカナも変換してくれると勘違いしていた。 +source: sj3rkcv/wc16_str.c + +number: 2 +date: 1994/08/17 +from: ASHIDA Isao +contents: (sj3-bugs 1) Lynux でコンパイルができない +source: dict/tool/hindo.c +source: dict/tool/offset.c +source: kanakan/depend.c +source: server/comuni.c + +number: 3 +date: 1994/10/21 +contents: MaxClient の上限値を 512 にする。Client 構造体を動的に取る。 +source: include/Const.h +source: include/Struct.h +source: server/comuni.c +source: server/execute.c + +number: 4 +date: 1994/10/21 +contents: ユーザ辞書と学習ファイルのパーミッションのデフォルトを 600 にする。 +source: include/Struct.h +source: server/execute.c +source: server/setup.c + +number: 5 +date: 1994/11/16 +contents: fix spell miss(trdwr -> tirdwr) in warning message +source: server/comuni.c + +number: 6 +date: 1994/11/17 +contents: SJIS の環境で、sj3 の変換結果の文字列がむちゃくちゃになる。 +source: sj3rkcv/wc16_str.c + +number: 7 +date: 1994/11/22 +contents: sj3_zentohan*()が全カタの「ム」以降の文字でおかしい(使ってないけど) +source: sj3rkcv/sj3_rkcv.c + +number: 8 +date: 1994/12/09 +contents: sj3servで複数の辞書を扱えるようにして、sj3libにインタフェースを追加 +source(add): doc/man/sj3mkdic.1 +source: dict/dict/Imakefile +source: dict/tool/Imakefile +source: dict/tool/makedict.c +source: dict/tool/makeseg.c +source: include/sj_global.h +source: kanakan/global.c +source: patchlevel.h +source: server/execute.c +source: server/main.c +source: server/setup.c +source: server/time_stamp.c +source: server/version.c +source: sj3/eucmessage.c +source: sj3/libif.c +source: sj3/sjrc.c +source: sj3/version.c +source: sj3lib/sj.c +source: sj3rkcv/rk_conv.c + +number: 9 +date: 1995/02/03 +from: Haruyuki Kawabe +contents: (sj3-bugs 3) [sj3serv]: [FileReadError] +source: kanakan/depend.c +source: server/version.c + +number: 10 +date: 1995/02/03 +contents: FreeBSD で sj3 が動作するようにした。 +source: dict/tool/file.c +source: kanakan/depend.c +source: server/main.c +source: server/time_stamp.c +source: server/version.c +source: sj3/sj3.c +source: sj3/sjgetchar.c +source: sj3/version.c +source: sj3lib/level1.c + +number: 11 +date: 1995/02/10 +from: Manabe Takashi +contents: Linux で sj3 を動かすためのパッチをあてた。 +source: include/sj_sysvdef.h +source: sj3/sj3.c +source: sj3/sjgetchar.c +source: sj3/version.c + +number: 12 +date: 1995/02/10 +contents: sj3_zentohan()で漢字を入力すると字が化ける(使ってないけど) +source: sj3rkcv/sj3_rkcv.c + +[After fix-1 release] + +number: 13 +date: 1995/03/14 +from: Tsuyoshi Tada +contents: NetBSD/i386 でのコンパイルができるようにした。 +source: sj3/sj3.c +source: sj3/sjgetchar.c + +number: 14 +date: 1995/04/05 +contents: put_flush() が正常終了時に return value を返していない。 +source: sj3lib/level1.c + +number: 15 +date: 1995/04/07 +contents: NetBSD で環境変数 LANG が設定されていないと core dump する。 +source: sj3/sj3.c +source: sj3/version.c + +number: 16 +date: 1995/04/17 +contents: put_over() の引数が多いところがある(とりあえず実害はない)。 +source: sj3lib/level1.c + +number: 17 +date: 1995/05/30 +from: Yoshikatsu Kawabe +contents: (sj3-bugs 5) [SJ3]: Contrib new utility (sj3stat) +source(add): sj3stat/Imakefile +source(add): sj3stat/sj3stat.c +source: Imakefile + +number: 18 +date: 1995/07/18 +from: Ryuichi MATSUMOTO +contents: (sj3-bugs 4) SJ3: Illegal Conversion (-ku, ku-ru) +source: dict/dict/visual.dic + +number: 19 +date: 1995/07/18 +contents: sj3stat で client の情報が正しく取れない。 +source: server/execute.c +source: server/version.c +source: server/time_stamp.c + +number: 20 +date: 1995/07/21 +contents: 単語登録の読み文字列で[a-z],[ヴヵヶ],[#@〒]が正しく使用できない。 +source: kanakan/peepdic.c +source: kanakan/s2ctbl.c +source: kanakan/sj2code.c +source: server/version.c +source: server/time_stamp.c + +number: 21 +date: 1996/02/15 +contents: locale が正しく設定されていないと sj3dic が core dump する。 +source: sj3dic/sj3dic.c +source: sj3dic/sjtool.h +source: sj3dic/codecnv.c +source: sj3dic/sjrc.c + +number: 22 +date: 1996/02/23 +contents: sj3 の変換候補に読みを全角仮名にした候補をくわえた。 +source: sj3/douon.c +source: sj3/libif.c +source: sj3/version.c +source: sj3h/sj3libsj3.h +source: sj3h/sj.h + +number: 23 +date: 1996/02/23 +contents: 読みの全角仮名の候補を選択したとき、ユーザ辞書に登録されるようにした。 +source: sj3/douon.c +source: sj3/version.c + +number: 24 +date: 1996/05/27 +contents: 上記の修正についてマニュアルに記述を追加した。 +source: doc/doc/Nihongo.ps.Z + +number: 25 +date: 1996/05/27 +contents: 辞書が正常に作成できないことがある(SunOS Release 4.1.x)。 +source: dict/tool/cnvhinsi.c +source: sj3h/sj3libsj3.h + +number: 26 +date: 1996/09/05 +contents: sj3serv で使用されないグループ指定に関する文章とソースを削除した。 +source: doc/man/sj3mkdic.1 +source(delete): kanakan/srchgrp.c + +number: 27 +date: 1997/01/21 +from: Hidekazu Kuroki +contents: (sj3-bugs 10) FreeBSD port のための修正 +source(add): server/rc.sj3serv.FreeBSD +source(add): doc/Imakefile +source(add): doc/doc/Imakefile +source(add): doc/man/Imakefile +source: Imakefile +source: demo/sample.c +source: dict/dict/Imakefile +source: dict/tool/Imakefile +source: include/Const.h +source: server/Imakefile +source: sj3/Imakefile +source: sj3/edit.c +source: sj3/funckey.c +source: sj3/henkan.c +source: sj3/romaji.c +source: sj3/sj3.c +source: sj3/sjrc.c +source: sj3dic/Imakefile +source: sj3h/sj2.h +source: sj3lib/Imakefile +source: sj3stat/Imakefile +source: sj3stat/sj3stat.c + +number: 28 +date: 1997/01/22 +from: Toya +contents: (sj3-bugs 9) [NOT bug...] easier(?) installation to non-default directory +source(add): include/Paths.h.in +source(add): sj3.tmpl +source: Imakefile +source: dict/dict/Imakefile +source: dict/tool/Imakefile +source: doc/man/Imakefile +source: doc/doc/Imakefile +source: include/Const.h +source: server/Imakefile +source: sj3/Imakefile +source: sj3/funckey.c +source: sj3/sjrc.c +source: sj3dic/Imakefile +source: sj3lib/Imakefile +source: sj3stat/Imakefile + +number: 29 +date: 1997/01/22 +from: Iwama Yoshihiko +contents: (sj3-bugs 12) sj3: Can't compile sj3 command on BSD/OS +source: demo/sample.c +source: sj3/sj3.c +source: sj3/sjgetchar.c +source: sj3dic/codecnv.c +source: sj3dic/sjrc.c + +number: 30 +date: 1997/10/07 +from: UO Youjiro +contents: (sj3-bugs 20) not work sj3serv on bsdi platform +source: kanakan/depend.c + +number: 31 +date: 1998/01/14 +from: SL Baur +contents: (sj3-bugs 22) [PATCH] Port of sj3-2.0.1.17 to Linux/Libc6 +source: include/sj_sysvdef.h +source: kanakan/depend.c +source: server/comuni.c +source: sj3lib/string.c +source: sj3/display.c +source: sj3/sjgetchar.c +source: sj3/sj3.c + +number: 32 +date: 1998/03/23 +from: MURANAKA Masaki +contents: (sj3-bugs 23) Security bug on SJ3SERV +source: server/execute.c +source: server/time_stamp.c +source: server/version.c diff --git a/Imakefile b/Imakefile new file mode 100644 index 0000000..1d1b24c --- /dev/null +++ b/Imakefile @@ -0,0 +1,64 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.5 $ + * $SonyDate: 1997/01/23 11:50:09 $ + */ + +#include "sj3.tmpl" + +#define IHaveSubdirs +#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' + +/* + * Add make rules to install manpages and other documents. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +SUBDIRS = dict doc kanakan server sj3lib sj3 sj3dic sj3stat demo + +AllTarget(includes) +MakeSubdirs($(SUBDIRS)) +DependSubdirs($(SUBDIRS)) + +includes:: sj3.tmpl + cp include/Paths.h.in include/Paths.h + chmod +w include/Paths.h + (echo "#define RunCmdFile \"$(SJ3CONFDIR)/serverrc\""; \ @@\ + echo "#define DictRootDir \"$(SJ3DICTDIR)\""; \ @@\ + echo ""; \ @@\ + echo "#define DEFRKFILE \"$(SJ3CONFDIR)/sjrk\""; \ @@\ + echo "#define DEFRCFILE \"$(SJ3CONFDIR)/sjrc\""; \ @@\ + echo "#define DEFKEYFILE \"$(SJ3CONFDIR)/cvtkey.\"") \ @@\ + >> include/Paths.h + +clean:: + rm -f include/Paths.h + diff --git a/README b/README new file mode 100644 index 0000000..f9da3b0 --- /dev/null +++ b/README @@ -0,0 +1,90 @@ +* What's SJ3 + SJ3 is a Japanese input system developed by Sony Corporation. + SJ3 is composed of Kana-Kanji conversion server(sj3serv), + Kana-Kanji conversion client for terminal(sj3) and Kana-Kanji + conversion library(sj3lib). + +* Configuration notice + Default communication interface between Kana-Kanji server and client + is socket in BSD and TLI in System V. If you want to use socket + in System V, you need to delete "-DTLI" from sj3.tmpl file. + + And you can configure top directory to install SJ3 by setting + SJ3TOP variable in sj3.tmpl file. + The default value is '/usr/local'. + + Attention, if you make sj3 on FreeBSD that does not have libxpg4, + please delete CODE_LIBS variable in sj3.tmpl file. + +* How to make + In this directory, + + # xmkmf + # make Makefiles + # make + # make install + + Following files are installed after make install: + + $(SJ3TOP)/dict/sj3/sj3main.dic Main dictionary(used by sj3serv) + $(SJ3TOP)/bin/sj3serv Kana-Kanji conversion server + $(SJ3TOP)/bin/sj3 Kana-Kanji conversion client + $(SJ3TOP)/bin/sj3dic User dictionary utility + $(SJ3TOP)/bin/sj3mkdic Dictionary converter + $(SJ3TOP)/bin/sj3stat Utility to show status of sj3serv + $(SJ3TOP)/include/sj3lib.h Header file for sj3lib + $(SJ3TOP)/lib/libsj3lib.a Kana-Kanji conversion library + $(SJ3TOP)/lib/sj3/serverrc Configuration file for sj3serv + $(SJ3TOP)/lib/sj3/sjrc Configuration file for sj3 + $(SJ3TOP)/lib/sj3/sjrk Roma-Kana conversion file for sj3 + $(SJ3TOP)/lib/sj3/cvtkey.xterm Mapping table between function key + $(SJ3TOP)/lib/sj3/cvtkey.news and escape sequence for sj3 + $(SJ3TOP)/lib/sj3/cvtkey.nws511 + $(SJ3TOP)/lib/sj3/cvtkey.nws517 + +* Source tree + dict/dict Main dictionary(text file) + dict/tool Tool for converting main dictionary from text file + to binary file + dict/include Header files for above tool + + server Kana-Kanji conversion server + kanakan Kana-Kanji conversion part of server + include Header files for server + + sj3lib Kana-Kanji conversion library + + sj3 Kana-Kanji conversion client for terminal + sj3rkcv Roma-Kana conversion part of client + sj3h Header files for client and library + + sj3dic User dictionary utility + sj3stat Utility to show status of sj3serv + + demo Demonstration program for Kana-Kanji conversion + + doc/man Online manual(Japanese) + doc/doc Operation guide for SJ3 and other documents(Japanese) + +* Tested machine + Sony NEWS Workstation NEWS-OS 4.2.1a+ + NEWS-OS 6.1.1 + PC FreeBSD 2.1.5 + +* Bug report + If some bugs are found, please send bug report(Japanese or English) + using $(TOP)/xc/bug-report format to following e-mail address. + + sj3-bugs@sm.sony.co.jp + +* Acknowledgements + + I would like to thank to the following people for compiled and tested: + + Takashi Fujiwara (Fujitsu) + Katsuhisa Yano (Toshiba) + + January 22, 1997 + + Nobuyuki Tanaka + Sony Corporation diff --git a/README.eucJP b/README.eucJP new file mode 100644 index 0000000..de4e28d --- /dev/null +++ b/README.eucJP @@ -0,0 +1,97 @@ +・SJ3 とは + SJ3 は、ソニー(株)で開発された日本語入力システムです。 + SJ3 は、仮名漢字変換サーバ(sj3serv)と、端末用仮名漢字 + クライアント(sj3)、仮名漢字変換ライブラリ(sj3lib)で構成 + されています。 + + +・コンフィグレーション + サーバ/クライアント間の通信のインターフェースについて + は、BSD の場合はソケット、System V の場合は TLI を使用 + するようになっています。System V でソケットインターフェー + スを使用したい場合は、sj3.tmpl の -DTLI を削除してくだ + さい。 + + また、sj3.tmpl ファイルの SJ3TOP でインストールディレク + トリを指定することができます。デフォルトは /usr/local + です。 + + FreeBSD をお使いの方で、libxpg4 がリンクできなくて sj3 + が make できない場合は sj3.tmpl ファイルの CODE_LIBS + の -lxpg4 の記述を削除してください。 + + +・make の手順 + このディレクトリにおいて以下のようにしてください。 + + Makefile を作成する + # xmkmf + # make Makefiles + + make する + # make + + インストールする + # make install + + この操作によりインストールされるファイルをいかに示します。 + + $(SJ3TOP)/dict/sj3/sj3main.dic sj3serv が使用するメイン辞書 + $(SJ3TOP)/bin/sj3serv 仮名漢字変換サーバ + $(SJ3TOP)/bin/sj3 端末用仮名漢字変換クライアント + $(SJ3TOP)/bin/sj3dic ユーザ辞書ユーティリティ + $(SJ3TOP)/bin/sj3mkdic 辞書生成ツール + $(SJ3TOP)/bin/sj3stat sj3serv への接続状況表示ユーティリティ + $(SJ3TOP)/include/sj3lib.h 仮名漢字変換ライブラリのヘッダファイル + $(SJ3TOP)/lib/libsj3lib.a 仮名漢字変換ライブラリ + $(SJ3TOP)/lib/sj3/serverrc sj3serv の設定ファイル + $(SJ3TOP)/lib/sj3/sjrc sj3 の設定ファイル + $(SJ3TOP)/lib/sj3/sjrk sj3 のローマ字仮名変換設定ファイル + $(SJ3TOP)/lib/sj3/cvtkey.xterm sj3 のファンクションキーとエスケープ + $(SJ3TOP)/lib/sj3/cvtkey.news シーケンスの対応を設定するファイル。 + $(SJ3TOP)/lib/sj3/cvtkey.nws511 + $(SJ3TOP)/lib/sj3/cvtkey.nws517 + + +・ディレクトリ構成 + dict/dict メイン辞書のテキストファイル + dict/tool 辞書のテキストファイルをバイナリファイルに + 変換するツール + dict/include 上記のツールのソースで使用するヘッダファイル + + server 仮名漢字変換サーバ + kanakan 仮名漢字変換サーバの仮名漢字変換部 + include サーバで使用するヘッダファイル + + sj3lib 仮名漢字変換ライブラリ + + sj3 端末用仮名漢字変換クライアント + sj3rkcv 端末用仮名漢字変換クライアントのローマ字仮名変換部 + sj3h クライアントとライブラリで使用するヘッダファイル + + sj3dic ユーザ辞書ユーティリティ + sj3stat sj3serv への接続状況表示ユーティリティ + + demo 仮名漢字変換ライブラリのデモプログラム + + doc/man オンラインマニュアル + doc/doc SJ3 日本語入力ガイドとその他ドキュメント + + +・テスト機種 + Sony NEWS Workstation NEWS-OS 4.2.1a+ + NEWS-OS 6.1.1 + PC FreeBSD 2.1.5 + +・バグレポート + SJ3 のバグを見つけた方は $(TOP)/xc/bug-report 形式で以下の mail + address に報告していただけると助かります。レポートは日本語又は + 英語でお願いします。 + + sj3-bugs@sm.sony.co.jp + + + 1997年1月23日 + + ソニー株式会社 + 田中信行 diff --git a/demo/Imakefile b/demo/Imakefile new file mode 100644 index 0000000..6b25993 --- /dev/null +++ b/demo/Imakefile @@ -0,0 +1,63 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:14 $ + */ + +DEFINES = -DORG +LOCAL_LIBRARIES = ../sj3lib/libsj3lib.a +#ifdef SonySysvArchitecture +SYS_LIBRARIES = -ljcode +#endif +INCLUDES = -I../sj3h -I../include -I../sj3lib +RKDIR = ../sj3rkcv +DEPLIBS = $(LOCAL_LIBRARIES) + +SRC1 = sample.c + +SRC2 = $(RKDIR)/rk_conv.c \ + $(RKDIR)/sj3_rkcv.c \ + $(RKDIR)/wc16_str.c + +SRC = $(SRC1) $(SRC2) + +OBJS = sample.o rk_conv.o sj3_rkcv.o wc16_str.o + +AllTarget(sample) +NormalProgramTarget(sample,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),) +DependTarget() +LinkSourceFile(rk_conv.c,$(RKDIR)) +LinkSourceFile(sj3_rkcv.c,$(RKDIR)) +LinkSourceFile(wc16_str.c,$(RKDIR)) + + + + diff --git a/demo/sample.c b/demo/sample.c new file mode 100644 index 0000000..04d47ac --- /dev/null +++ b/demo/sample.c @@ -0,0 +1,390 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sample.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:26:29 $ + */ + + + + + +#include +#include +#include +#include "sj3lib.h" +#include "wchar16.h" + +#define RETURN(c) ((c == '\n') || (c == '\r')) +/* + * Change a default value. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ +#define RKFILE "/usr/local/lib/sj3/sjrk" +#define LOCALHOST "localhost" +#define HBUFSIZ 512 +#define QBUFSIZ 256 + +char *pname; +char *hname; +int current_locale = LC_CTYPE_EUC; + +usage() +{ + fprintf(stderr, "Usage: %s [-v] [-H hostname]\n", pname); + exit(1); +} + +main (argc, argv) +int argc; +char **argv; +{ + register int c; + int ret; + int vflag; + struct bunsetu bun[HBUFSIZ]; + unsigned char alphabet[QBUFSIZ]; + unsigned char yomi[HBUFSIZ]; + unsigned char kanji[BUFSIZ]; + char *uname, *loc; + extern char *optarg; + char *rindex(), *getlogin(); + struct passwd *getpwuid(), *pwd; + int count=1; + + loc = setlocale(LC_CTYPE, ""); + + if (strcmp(loc, "ja_JP.SJIS") == 0) { + current_locale = LC_CTYPE_SHIFTJIS; + } else if (strncmp(loc, "ja", 2) != 0 && + strncmp(loc, "Ja", 2) != 0) { + fprintf(stderr, "Error: %s is not japanese locale\n", loc); + exit(1); + } + vflag = 0; + hname = NULL; + + + print_head(); + + + pname = argv[0]; + + + while ((c = getopt(argc, argv, "vk:H:")) != EOF) { + switch(c) { + case 'v': + + vflag++; + break; + case 'H': + + hname = optarg; + break; + case 'k': + fprintf(stderr, "optarg = %s\n", optarg); + count = atoi(optarg); + break; + case '?': + default : + usage(); + break; + } + } + + uname = getlogin(); + if (uname == NULL || *uname == '\0') { + setpwent(); + if ((pwd = getpwuid(getuid())) != NULL) { + uname = pwd->pw_name; + endpwent(); + } else { + fprintf(stderr, "Can't get user name\n"); + exit(1); + } + } +#ifndef ORG +while (count--) { +#endif + + + if (ret = sj3_rkinit(RKFILE)) { + if (ret == 1) + fprintf(stderr, "Can't open Romaji Kana Rule file %s\n", + RKFILE); + else + fprintf(stderr, "Error sj3_rkinit\n"); + exit (1); + } + ret = sj3_open(hname, uname); + if (hname == NULL) + hname = LOCALHOST; + if (ret != 0) { + if (ret & SJ3_SERVER_DEAD) { + fprintf(stderr, "%s:sj3serv dead\n", hname); + exit(1); + } + else if (ret & SJ3_ALREADY_CONNECTED) { + fprintf(stderr, "Already connected %s:sj3serv\n",hname); + exit(1); + } + else if (ret & SJ3_CONNECT_ERROR) { + fprintf(stderr, "Can't connect %s:sj3serv\n", hname); + exit(1); + } + else if (ret & SJ3_CANNOT_OPEN_MDICT) { + fprintf(stderr, "Can't open sj3 main dictionary\n"); + (void)sj3_close(); + exit(1); + } + fprintf(stderr, "Warning sj3_open error (return 0x%x)\n", ret); + } + + + +#ifdef ORG + while (1) { + + + fprintf(stdout, "[Input Alphabet] "); + if (fgets((char *)alphabet, QBUFSIZ, stdin) == NULL) + break; + if (RETURN(alphabet[0])) + break; +#else + sprintf(alphabet, "%s", "tonarinokyakuhayokukakikuukyakuda"); +#endif + + + rkconvs(yomi, alphabet); + + + + ret = sj3_getkan_mb(yomi, bun, kanji, BUFSIZ); + if (ret == -1) { + fprintf(stderr, "sj3_getkan: disconnected %s:sj3serv\n", + hname); + exit(1); + } + + + + if (vflag) + pr_kanji(bun, ret); + + + + if (bun[ret - 1].destlen == 0) + strcat(kanji, bun[ret - 1].srcstr); + fprintf(stdout, "[Output Yomi ]:[%s]\n", yomi); + fprintf(stdout, "[Output Kanji]:[%s]\n", kanji); +#ifdef ORG + } +#endif + + + (void)sj3_close(); +#ifndef ORG +} +#endif +} + +rkconvs(yomi, roma) +unsigned char *yomi; +unsigned char *roma; +{ + register unsigned char *p, *q, *yp; + register int i; + int rlen; + int len; + unsigned char rbuf[16]; + unsigned char ybuf[32]; + unsigned char tmp[HBUFSIZ]; + + yp = tmp; + p = rbuf; + rlen = 0; + while (*roma != '\0' && !RETURN(*roma)) { + *p++ = *roma++; + *p = '\0'; + rlen++; + while(1) { + + if ((len = sj3_rkconv_mb(rbuf, ybuf)) > 0) { + q = ybuf; + while (*q != '\0') { + *yp++ = *q++; + } + i = rlen; + rlen = strlen(rbuf); + p = rbuf; + p += rlen; + if (len >= i) + break; + } + + else if (len < 0) { + *yp++ = rbuf[0]; + p = rbuf; + q = (p + 1); + while(*q != '\0') + *p++ = *q++; + *p = '\0'; + rlen--; + } + + else + break; + } + } + + + if (rlen > 0) { + *p++ = '\n'; + *p = '\0'; + rlen++; + while(rbuf[0] != '\0') { + if ((len = sj3_rkconv_mb(rbuf, ybuf)) > 0) { + q = ybuf; + while (*q != '\0') { + *yp++ = *q++; + } + + rlen = strlen(rbuf); + p = rbuf; + p += rlen; + } + else { + *yp++ = rbuf[0]; + p = rbuf; + q = (p + 1); + while(*q != '\0') + *p++ = *q++; + *p = '\0'; + } + } + yp--; + } + *yp = '\0'; + + + sj3_hantozen_mb(yomi, tmp); +} + +print_head() { + + + fprintf(stdout, "\t*--------------------------------------------*\n"); + fprintf(stdout, "\t* Sample Program for *\n"); + fprintf(stdout, "\t* New Japanese Convert Library *\n"); + fprintf(stdout, "\t* SJ3LIB *\n"); + fprintf(stdout, "\t* *\n"); + fprintf(stdout, "\t* Terminator of Input : Newline-code *\n"); + fprintf(stdout, "\t* *\n"); + fprintf(stdout, "\t* If you want to end this process, *\n"); + fprintf(stdout, "\t* input Newline-code or Control-D. *\n"); + fprintf(stdout, "\t*--------------------------------------------*\n"); +} + +str_make(out_str, in_str, len) +unsigned char *out_str; +unsigned char *in_str; +int len; +{ + + + strncpy(out_str, in_str, len); + out_str += len; + *out_str = '\0'; +} + +pr_douon(yomi) +unsigned char *yomi; +{ + register int i; + struct douon douon[BUFSIZ]; + int douon_cnt; + + + + douon_cnt = sj3_getdouon_mb(yomi, douon); + if (douon_cnt < 0) { + fprintf(stderr, "sj3_getdouon: disconnected %s:sj3serv\n", + hname); + exit(1); + } + fprintf(stdout, "\t\tsj3_getdouon(yomi, douon)"); + fprintf(stdout, "...Douon count : %d\n", douon_cnt); + for (i = 0; i < douon_cnt; i++) { + fprintf(stdout, "\t\t--- * Douon : %d * ---\n", i); + fprintf(stdout, "\t\t\tdlen : %d\n", douon[i].dlen); + fprintf(stdout, "\t\t\tddata:[%s]\n",douon[i].ddata); + } +} + +pr_bunsetu(now_bun, bunsetu_cnt) +struct bunsetu *now_bun; +int bunsetu_cnt; +{ + unsigned char tmp_str[BUFSIZ]; + unsigned char *yomi; + + + + fprintf(stdout, "\t--- < Bunsetu : %d > ---\n", bunsetu_cnt); + fprintf(stdout, "\t\tsrclen : %d\n", now_bun -> srclen); + str_make(tmp_str, now_bun -> srcstr, now_bun -> srclen); + fprintf(stdout, "\t\tsrcstr:[%s]\n", tmp_str); + + yomi = tmp_str; + if (now_bun->destlen > 0) + pr_douon(yomi); + else + fprintf(stderr, "\t\tNot Conversion Bunsetsu\n"); + + fprintf(stdout, "\t\tdestlen : %d\n", now_bun -> destlen); + str_make(tmp_str, now_bun -> deststr, now_bun -> destlen); + fprintf(stdout, "\t\tdeststr:[%s]\n", tmp_str); +} + +pr_kanji(bun, bnum) +struct bunsetu *bun; +int bnum; +{ + register int i; + + + + fprintf(stdout, "\tsj3_getkan(yomi, kanji)"); + fprintf(stdout, "...Bunsetu count : %d\n", bnum); + for (i = 0; i < bnum; i++) + pr_bunsetu(&(bun[i]), i); +} diff --git a/dict/Imakefile b/dict/Imakefile new file mode 100644 index 0000000..7f777ec --- /dev/null +++ b/dict/Imakefile @@ -0,0 +1,41 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:16 $ + */ + +#define IHaveSubdirs +#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' + +SUBDIRS = tool dict + +MakeSubdirs($(SUBDIRS)) +DependSubdirs($(SUBDIRS)) diff --git a/dict/dict/Imakefile b/dict/dict/Imakefile new file mode 100644 index 0000000..4211255 --- /dev/null +++ b/dict/dict/Imakefile @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.4 $ + * $SonyDate: 1997/01/23 11:20:50 $ + */ + +/* + * Change some make rules. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#include "../../sj3.tmpl" + +TOOL_DIR = ../tool +TOOL_NAME = sj3mkdic + +SRCS = ./visual.dic +OBJS = sj3main.dic +OUTPUT = Moutput + +XCOMM INSTFLAGS = -o $(SJ3OWNER) -g $(SJ3GROUP) -m 444 + +all: $(OBJS) + +$(OBJS): $(SRCS) + $(TOOL_DIR)/$(TOOL_NAME) $(SRCS) $(OBJS) > $(OUTPUT) + +depend:: + +clean:: + $(RM) $(OBJS) $(OUTPUT) + +InstallNamedNonExec(sj3main.dic,sj3main.dic,$(SJ3DICTDIR)) + +install:: + if [ ! -d $(SJ3DICTDIR)/user ]; then \ @@\ + (mkdir $(SJ3DICTDIR)/user; \ @@\ + chown $(SJ3OWNER) $(SJ3DICTDIR)/user; \ @@\ + chgrp $(SJ3GROUP) $(SJ3DICTDIR)/user); fi diff --git a/dict/dict/visual.dic b/dict/dict/visual.dic new file mode 100644 index 0000000..e46cf9c --- /dev/null +++ b/dict/dict/visual.dic @@ -0,0 +1,29803 @@ +## +## Copyright (c) 1991-1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: visual.dic,v $ +## $SonyRevision: 1.2 $ +## $SonyDate: 1995/07/18 02:30:34 $ +## +あ 亜 接頭1: +あ 開 カ五2: +あ 空 カ五4: +あ 明 カ五2: +あ 飽 カ五3: +あ 編 マ五6: +あ あ ラ五1: +あ 在 ラ五3: +あ 有 ラ五4: +あ 会 ワ五8: +あ 合 ワ五7: +あ 逢 ワ五8: +あ 遭 ワ五7: +あ 阿 単漢: +あ 唖 単漢: +あ 娃 単漢: +あーきてくちゃ アーキテクチャ 名1: +あーく アーク 名1: +あーす アース 代4: +あーち アーチ 名1: +あーちすと アーチスト 名1: +あーてぃすと アーティスト 名1: +ああ ああ 代6: +あい 愛 代4:サ五5: +あい 藍 代1: +あい 哀 代1: +あい 相 代1: +あい 姶 単漢: +あい 娃 単漢: +あい 挨 単漢: +あいあん アイアン 名1: +あいいれな 相容れな 形1: +あいお 秋穂 地名: +あいおい 相生 地名: +あいかわ 愛川 苗字: +あいかわ 相川 苗字: +あいかわ 合川 地名: +あいかわらず 相変わらず 副8: +あいがん 哀願 名6: +あいがん 愛玩 名6: +あいきょう 愛敬 名3: +あいきょう 愛嬌 名3: +あいけん 愛犬 名1: +あいこ 愛顧 名3: +あいこ 愛子 名前: +あいこう 愛好 名7: +あいこう 愛甲 苗字: +あいこう 愛甲 地名: +あいこく 愛国 名1: +あいこん アイコン 名1: +あいご 愛護 名6: +あいさい 愛妻 名1: +あいさつ 挨拶 名7: +あいざわ 相沢 苗字: +あいしゅう 哀愁 名1: +あいしょう 愛称 名1: +あいしょう 相性 名1: +あいしょう 愛誦 名6: +あいじ 愛児 名1: +あいじょう 愛情 名1: +あいじん 愛人 名1: +あいす アイス 名1: +あいず 合図 名6: +あいずみ 藍住 地名: +あいせき 哀惜 名6: +あいそ 愛想 名5: +あいぞう 愛憎 名1: +あいたい 相対 名6: +あいだ 間 名11: +あいだ 会田 苗字: +あいだ 相田 苗字: +あいだ 英田 地名: +あいだがら 間柄 代1: +あいち 愛知 地名: +あいちゃく 愛着 名7: +あいちょう 愛鳥 名1: +あいつ あいつ 代1: +あいつ 相次 ガ五3: +あいづ 会津 苗字: +あいづたかだ 会津高田 地名: +あいづばんげ 会津坂下 地名: +あいづわかまつ 会津若松 地名: +あいて 相手 名2: +あいてさき 相手先 名1: +あいてむ アイテム 名1: +あいであ アイデア 名1: +あいでぃあ アイディア 名1: +あいでんてぃてぃー アイデンティティー 名1: +あいとう 哀悼 名7: +あいとう 愛東 地名: +あいどく 愛読 名7: +あいどりんぐ アイドリング 名6: +あいどる アイドル 名1: +あいにく あいにく 形動6: +あいにく 生憎 形動6: +あいぬ アイヌ 名1: +あいの 愛野 地名: +あいはら 相原 苗字: +あいびーえむ アイビーエム 企業: +あいびき 逢引 代4: +あいぶ 愛撫 名6: +あいべつ 愛別 地名: +あいま 合間 名1: +あいまい 曖昧 名8: +あいまい あいまい 名8: +あいみ 会見 地名: +あいよう 愛用 名7: +あいら 姶良 地名: +あいら 吾平 地名: +あいらく 哀楽 名1: +あいらし 愛らし 形3: +あいろ 隘路 名1: +あいろん アイロン 名1: +あうと アウト 代4: +あえ あえ ガ五3:一段1: +あえ 喘 ガ五3: +あえ 和え 一段1: +あえて 敢えて 副1: +あえて あえて 副1: +あえな 敢な 形1: +あえろふろーと アエロフロート 名1: +あえん 亜鉛 名1: +あお 青 代1:形11: +あお 仰 ガ五7: +あお 扇 ガ五7: +あお 煽 ラ五7: +あお 蒼 形8: +あお 碧 単漢: +あおあお 青々 副3: +あおい 葵 代1: +あおがき 青垣 地名: +あおがしま 青ヶ島 地名: +あおき 青木 苗字: +あおざめ 青ざめ 一段1: +あおしま 青島 苗字: +あおしま 青島 地名: +あおじろ 青白 形2: +あおぞら 青空 名1: +あおた 青田 苗字: +あおぬま 青沼 苗字: +あおの 青野 苗字: +あおば 青葉 名1: +あおもの 青物 名1: +あおもり 青森 地名: +あおや 青谷 地名: +あおやぎ 青柳 苗字: +あおやま 青山 苗字: +あおやま 青山 地名: +あか 赤 代1:形11: +あか 垢 代1: +あか 明か サ五1: +あか 飽か サ五1: +あかい 赤井 苗字: +あかいがわ 赤井川 地名: +あかいけ 赤池 苗字: +あかいわ 赤磐 地名: +あかうんと アカウント 代1: +あかおか 赤岡 地名: +あかがわ 赤川 苗字: +あかがわ 赤川 地名: +あかぎ 赤城 苗字: +あかぎ 赤城 地名: +あかぎ 赤木 苗字: +あかご 赤子 代1: +あかさか 赤坂 地名: +あかさか 赤坂 苗字: +あかさき 赤碕 地名: +あかざわ 赤沢 苗字: +あかし 証 代1: +あかし 明石 苗字: +あかし 明石 地名: +あかしお 赤潮 名1: +あかしな 明科 地名: +あかじ 赤字 名1: +あかつか 赤塚 苗字: +あかつき 暁 代1: +あかつき あかつき 代1: +あかどまり 赤泊 地名: +あかぬけ 垢抜け 代4:一段1: +あかね 茜 名1:名前: +あかばね 赤羽 苗字: +あかばね 赤羽 地名: +あかばね 赤羽根 地名: +あかびら 赤平 地名: +あかぼう 赤帽 名1: +あかぼり 赤堀 苗字: +あかま 赤間 苗字: +あかまつ 赤松 苗字: +あから 赤ら マ五1: +あからさま あからさま 形動1: +あかり 灯り 名1: +あかり 灯 名1: +あかり 明り 名1: +あかる 明る 形6:マ五3: +あかん 阿寒 地名: +あかんぼう 赤ん坊 代1: +あが あが カ五7:ラ五8: +あが 上が ラ五8: +あが 挙が ラ五1: +あが 揚が ラ五1: +あがつま 我妻 苗字: +あがつま 吾妻 地名: +あがる 上ル 地名: +あがわ 吾川 地名: +あき 秋 代1:接頭1: +あき 飽き 一段3: +あき 亜紀 名前: +あき 安岐 地名: +あき 安芸 地名: +あき 明 単漢: +あき 穐 単漢: +あきう 秋保 地名: +あきお 昭夫 名前: +あきお 昭男 名前: +あきお 昭雄 名前: +あきお 明男 名前: +あきお 明夫 名前: +あきお 明雄 名前: +あきお 秋男 名前: +あきお 秋夫 名前: +あきお 秋雄 名前: +あきお 章夫 名前: +あきがわ 秋川 地名: +あきこ 晃子 名前: +あきこ 昭子 名前: +あきこ 章子 名前: +あきこ 明子 名前: +あきこ 晶子 名前: +あきこ 顕子 名前: +あきさめ 秋雨 名1: +あきしま 昭島 地名: +あきた 秋田 苗字: +あきた 秋田 地名: +あきた 飽田 地名: +あきち 空き地 名1: +あきつ 安芸津 地名: +あきな 明菜 名前: +あきな 商 ワ五7: +あきない 商い サ変: +あきはばら 秋葉原 地名: +あきば 秋葉 苗字: +あきばれ 秋晴れ 代1: +あきひこ 昭彦 名前: +あきひこ 明彦 名前: +あきひと 明仁 名前: +あきひろ 明宏 名前: +あきひろ 明弘 名前: +あきもと 秋本 苗字: +あきもと 秋元 苗字: +あきや 空き家 名1: +あきやま 秋山 苗字: +あきら 晃 名前: +あきら 彰 名前: +あきら 昭 名前: +あきら 晶 名前: +あきら 章 名前: +あきら 明 名前: +あきら 朗 名前: +あきら 旭 名前: +あきらか 明らか 形動1: +あきらめ あきらめ 一段3: +あきらめ 諦め 一段3: +あきれ 呆れ 一段1: +あく 悪 代1:接頭1: +あく 握 代1: +あく 渥 代1: +あくしつ 悪質 名8: +あくしでんと アクシデント 名1: +あくしゅ 握手 名6: +あくしゅう 悪臭 名1: +あくしょん アクション 名1: +あくじ 悪事 名1: +あくせい 悪性 名8: +あくせさりー アクセサリー 名1: +あくせす アクセス 名6: +あくせぷと アクセプト 名1: +あくせる アクセル 名1: +あくせんと アクセント 名1: +あくた 芥 代1: +あくたい 悪態 名1: +あくたがわ 芥川 苗字: +あくつ 阿久津 苗字: +あくてぃびてぃ アクティビティ 名1: +あくてぃぶ アクティブ 名8: +あくとく 悪徳 名8: +あくにん 悪人 名1: +あくね 阿久根 地名: +あくび あくび 代4: +あくびょう 悪病 名1: +あくま 悪魔 名1: +あくまで あくまで 副6: +あくみ 飽海 地名: +あくみょう 悪名 名1: +あくむ 悪夢 名1: +あくよう 悪用 名6: +あくりょく 握力 名1: +あくりる アクリル 名1: +あぐ 倦 マ五1: +あぐい 阿久比 地名: +あぐに 粟国 地名: +あけ 開け 一段2: +あけ 空け 一段1: +あけ 明け 一段3: +あけ 朱 単漢: +あけがた 明け方 代1: +あけち 明智 苗字: +あけの 明野 地名: +あけはな 開け放 サ五7:タ五5: +あけはま 明浜 地名: +あけぼの 曙 代1: +あけわた 明け渡 サ五7:ラ五1: +あげ あげ 一段2: +あげ 上げ 接尾1:一段2: +あげ 揚げ 接尾1:一段2: +あげ 挙げ 一段2: +あげ 安芸 地名: +あげあし 揚げ足 代1: +あげお 上尾 地名: +あげく 挙げ句 代1: +あげぞこ 上げ底 代1: +あげつら 論 ワ五3: +あげまつ 上松 地名: +あこーすてぃっく アコースティック 代5: +あこう 赤穂 地名: +あこお 赤穂 地名: +あこがれ 憧れ 一段3: +あこがれ あこがれ 一段3: +あご 顎 代1: +あご 阿児 地名: +あさ 浅 形8: +あさ 漁 ラ五7: +あさ 朝 名11: +あさ 麻 名1: +あさ 安佐 地名: +あさ 厚狭 地名: +あさい 浅井 苗字: +あさいち 朝市 代1: +あさお 麻生 地名: +あさか 浅香 苗字: +あさか 浅香 地名: +あさか 朝霞 地名: +あさかわ 浅川 苗字: +あさかわ 浅川 地名: +あさが 浅賀 苗字: +あさがた 朝方 代6: +あさきた 安佐北 地名: +あさくさ 浅草 地名: +あさくち 浅口 地名: +あさくら 朝倉 苗字: +あさくら 朝倉 地名: +あさぐろ 浅黒 形2: +あさこ 朝来 地名: +あさしな 浅科 地名: +あさじ 朝地 地名: +あさだ 浅田 苗字: +あさだ 麻田 苗字: +あさって あさって 代6: +あさって 明後日 代6: +あさぬま 浅沼 苗字: +あさの 浅野 苗字: +あさはら 浅原 苗字: +あさば 浅羽 地名: +あさばん 朝晩 代6: +あさひ 朝日 名1: +あさひ 旭 代1: +あさひかせい 旭化成 企業: +あさひかわ 旭川 地名: +あさひがわ 旭川 地名: +あさみ 浅見 苗字: +あさみなみ 安佐南 地名: +あさめし 朝飯 代1: +あさやけ 朝焼け 代1: +あさゆう 朝夕 代6: +あさり 鯏 単漢: +あざ 字 代1: +あざい 浅井 地名: +あざな 糾 ワ五5: +あざぶ 麻布 地名: +あざむ 欺 カ五7: +あざやか 鮮やか 形動4: +あし 足 代1: +あし 脚 代1: +あし 葦 代1: +あし 芦 単漢: +あしあと 足跡 代1: +あしお 足尾 地名: +あしおと 足音 代1: +あしかが 足利 苗字: +あしかが 足利 地名: +あしかけ 足掛け 副1: +あしからず あしからず 副1: +あしかり 芦刈 地名: +あしがかり 足掛かり 名1: +あしがかり 足掛り 名1: +あしがため 足固め 代1: +あしがら 足柄 地名: +あしがらかみ 足柄上 地名: +あしがらしも 足柄下 地名: +あしがわ 芦川 地名: +あしきた 芦北 地名: +あしくび 足首 代1: +あしこし 足腰 代1: +あしざわ 芦沢 苗字: +あしすたんと アシスタント 名1: +あしずり 足摺 サ変: +あしずり 足摺 地名: +あした 明日 代6: +あしどり 足取り 代1: +あしなみ 足並み 代1: +あしび 馬酔木 代1: +あしべ 芦辺 地名: +あしべつ 芦別 地名: +あしもと 足元 名2: +あしや 芦屋 苗字: +あしや 芦屋 地名: +あしやす 芦安 地名: +あしゅら 阿修羅 代1: +あしょろ 足寄 地名: +あしよろ 足寄 地名: +あしろ 安代 地名: +あしわだ 足和田 地名: +あじ 味 代1: +あじ 鯵 代1: +あじ 鰺 代1: +あじ 庵治 地名: +あじあ アジア 名1: +あじがさわ 鯵ヶ沢 地名: +あじけな 味気な 形5: +あじさい 紫陽花 名1: +あじす 阿知須 地名: +あじつけ 味付け 一段3: +あじな 芦品 地名: +あじみ 味見 名5: +あじむ 安心院 地名: +あじわ 味わ ワ五8: +あす 明日 代6: +あすか 明日香 地名: +あすか 明日香 名前: +あすか 飛鳥 地名: +あすか 飛鳥 名前: +あすきー アスキー 企業: +あすけ 足助 地名: +あすぱらがす アスパラガス 名1: +あすぺくと アスペクト 名1: +あすわ 足羽 地名: +あずか 預か ラ五8: +あずか 与 ラ五3: +あずか 預 ラ五8: +あずき 小豆 代1: +あずき あずき 代1: +あずけ 預け 一段4: +あずけいれ 預け入れ 一段4: +あずさ 梓 苗字:名前: +あずさがわ 梓川 地名: +あずま 東 苗字: +あずみ 安曇 地名: +あせ 汗 代1: +あせ 焦 ラ五3: +あせ 褪せ 一段1: +あせんぶら アセンブラ 名1: +あせんぶり アセンブリ 名1: +あせんぶる アセンブル 名6: +あぜ 畦 代1: +あぜ 畔 代1: +あそ 遊 バ五8: +あそ 阿蘇 地名: +あそ 安蘇 地名: +あそ 阿曽 苗字: +あそう 麻生 苗字: +あそこ あそこ 代1: +あそしえーしょん アソシエーション 名1: +あた あた ラ五3: +あた 当た ラ五7: +あた 当 ラ五7: +あたい 値 代4: +あたい 価 代1: +あたい 値い 代4: +あたえ 与え 一段2: +あたかも あたかも 副1: +あたたか 温か 形8:形動1: +あたたか 暖か 形8:形動1: +あたたま 温ま ラ五5: +あたたま 暖ま ラ五5: +あたため 温め 一段2: +あたため 暖め 一段2: +あたっく アタック 代4: +あたっちめんと アタッチメント 名1: +あたま 頭 代1: +あたまかず 頭数 代1: +あたまきん 頭金 名1: +あたまごなし 頭ごなし 名1: +あたみ 熱海 地名: +あたらし 新し 形8: +あたり 辺り 代1: +あたりまえ 当たり前 代5: +あたりまえ 当たりまえ 代5: +あたりまえ 当り前 代5: +あたる 中 単漢: +あだ 仇 代1: +あだ 徒 代1: +あだち 足立 苗字: +あだち 足立 地名: +あだち 安達 苗字: +あだち 安達 地名: +あだぷた アダプタ 名1: +あち 阿智 地名: +あちこち あちこち 代1: +あちら あちら 代1: +あっか 悪化 代4: +あっかん 圧巻 名1: +あっけし 厚岸 地名: +あっけらかん アッケラカン 副2: +あっさぶ 厚沢部 地名: +あっさり あっさり 副9: +あっしゅく 圧縮 名6: +あっしょう 圧勝 名6: +あっせん 斡旋 名7: +あっち あっち 代1: +あっちゃく 圧着 名6: +あっと あっと 副1: +あっとう 圧倒 名6: +あっぱく 圧迫 名6: +あっぴ 安比 地名: +あっぷ アップ 名6: +あっぷる アップル 名1: +あつ 厚 形11: +あつ 熱 形10: +あつ 暑 形10: +あつ 篤 形2: +あつ 圧 接尾1: +あつえん 圧延 名6: +あつか 扱 ワ五8: +あつかいだか 扱い高 名1: +あつかまし 厚かまし 形3: +あつがみ 厚紙 名1: +あつぎ 厚木 地名: +あつぎ 厚着 代4: +あつくるし 暑苦し 形5: +あつこ 敦子 名前: +あつし 厚 名前: +あつし 淳 名前: +あつし 篤 名前: +あつし 敦 名前: +あつしおかのう 熱塩加納 地名: +あつじ 厚地 名1: +あつた 厚田 地名: +あつた 熱田 苗字: +あつた 熱田 地名: +あつで 厚手 代1: +あつま 集ま ラ五8: +あつま 厚真 地名: +あつみ 渥美 地名: +あつみ 渥美 名前: +あつみ 温海 地名: +あつめ 集め 一段4: +あつりょく 圧力 名1: +あづち 安土 地名: +あづま 吾妻 苗字: +あて 宛 接尾1: +あて 宛て 一段3: +あて 充て 一段1: +あて 当て 接尾1:一段2: +あて あて 一段3: +あてが あてが ワ五5: +あてさき 宛先 代1: +あてつ 阿哲 地名: +あてつけ 当てつけ 一段3: +あてな 宛名 代1: +あてね アテネ 地名: +あてはま 当てはま ラ五1: +あてはめ 当てはめ 一段3: +あと あと 代1: +あと 後 代1: +あと 痕 代1: +あと 跡 代1: +あと 蹟 単漢: +あとあと 後々 代6: +あとう 阿東 地名: +あとおし 後押し 代4: +あとかたづけ 後かたづけ 代3: +あとさき 後先 代1: +あとしまつ 後始末 代4: +あとち 跡地 名1: +あとつぎ 跡継ぎ 代1: +あとばらい 後払い 代1: +あとみっく アトミック 名8: +あとむ アトム 名1: +あともどり 後戻り 代4: +あとりえ アトリエ 名1: +あとりびゅーと アトリビュート 代1: +あどがわ 安曇川 地名: +あどけな あどけな 形3: +あどばいす アドバイス 名6: +あどほっく アドホック 代5: +あどれす アドレス 名1: +あどれなりん アドレナリン 名1: +あな 穴 代1: +あな 孔 代1: +あな 坑 単漢: +あなうめ 穴埋め 代4: +あなうんさー アナウンサー 名1: +あなうんす アナウンス 名6: +あながち あながち 副1: +あなた あなた 代1: +あなた 貴方 代1: +あなど 侮 ラ五7: +あなぶき 穴吹 苗字: +あなみず 穴水 地名: +あならいざ アナライザ 代1: +あなりすと アナリスト 名1: +あなろぐ アナログ 名1: +あなろじー アナロジー 名1: +あなん 阿南 苗字: +あなん 阿南 地名: +あに 兄 名1: +あに 阿仁 地名: +あにき 兄貴 代1: +あにめ アニメ 名1: +あにめーしょん アニメーション 名1: +あね 姉 代2: +あね 姐 代2: +あねったい 亜熱帯 名1: +あの あの 連体: +あのう 安濃 地名: +あのよう あのよう 形動1: +あのよう あの様 形動1: +あば 暴 カ五5: +あば 阿波 地名: +あばきだ 暴き出 サ五5: +あばしり 網走 地名: +あばらぼね 肋骨 名1: +あばれ 暴れ 一段1: +あぱーと アパート 名1: +あぱれる アパレル 名1: +あび 浴び 一段2: +あびきょうかん 阿鼻叫喚 名1: +あびこ 我孫子 苗字: +あびこ 我孫子 地名: +あびせ 浴びせ 一段1: +あぴーる アピール 名6: +あふがにすたん アフガニスタン 地名: +あふりか アフリカ 地名: +あふれ あふれ 一段4: +あふれ 溢れ 一段4: +あぶ あぶ ラ五7: +あぶ 虻 名1: +あぶ 阿武 地名: +あぶすとらくと アブストラクト 名1: +あぶた 虻田 地名: +あぶな 危な 形5: +あぶな あぶな 形5: +あぶみ 鐙 代1: +あぶら 油 代1: +あぶら 脂 代1: +あぶらえ 油絵 名1: +あぷりけーしょん アプリケーション 名1: +あぷろーち アプローチ 名6: +あべ 阿部 苗字: +あべ 安部 苗字: +あべっく アベック 名1: +あべの 阿倍野 地名: +あべれーじ アベレージ 名1: +あほ 阿呆 代5: +あほう 阿呆 代5: +あほうどり 信天翁 代1: +あま 甘 形8:接頭1: +あま 余 サ五1:ラ五4: +あま 海女 代2: +あま 尼 代1: +あま アマ 代1: +あま 海士 地名: +あま 海部 地名: +あまえ 甘え 一段4: +あまがさ 雨傘 代1: +あまがさ 雨がさ 代1 +あまがさ 雨ガサ 代1: +あまがさき 尼崎 地名: +あまがせ 天瀬 地名: +あまぎ 甘木 地名: +あまぎ 天城 地名: +あまぎゆがしま 天城湯ヶ島 地名: +あまくさ 天草 地名: +あまくち 甘口 代5: +あまぐも 雨雲 名1: +あまた あまた 副7: +あまた 天田 地名: +あまだれ 雨だれ 代1: +あまちゅあ アマチュア 名1: +あまつこみなと 天津小湊 地名: +あまど 雨戸 代1: +あまぬま 天沼 苗字: +あまの 天野 苗字: +あまのじゃく 天の邪鬼 代1: +あまみ 奄美 地名: +あまみず 雨水 代1: +あまみや 雨宮 苗字: +あまもり 雨漏り 代4: +あまやか 甘やか サ五7: +あまり あまり 副7: +あまるめ 余目 地名: +あまん 甘ん ザ変: +あみ 網 名1: +あみ 阿見 地名: +あみだな 網棚 代1: +あみど アミド 代1: +あみの 網野 苗字: +あみのさん アミノ酸 名1: +あめ 雨 代1: +あめ 飴 代1: +あめ あめ 代1: +あめあがり 雨上がり 代1: +あめふり 雨降り 代1: +あめふり 雨ふり 代1: +あめみや 雨宮 苗字: +あめよこ アメ横 地名: +あめりか アメリカ 地名: +あめりかん アメリカン 名1: +あや 絢 代1: +あや 綾 代1: +あや 彩 単漢: +あや 文 単漢: +あやう 危う 形3: +あやう あやう 形3: +あやうた 綾歌 地名: +あやかみ 綾上 地名: +あやこ 文子 名前: +あやこ 綾子 名前: +あやし 怪し 形5:マ五1: +あやせ 綾瀬 苗字: +あやせ 綾瀬 地名: +あやつ 操 ラ五7: +あやふや あやふや 形動9: +あやぶ 危ぶ マ五5: +あやべ 綾部 苗字: +あやべ 綾部 地名: +あやま 過 タ五3: +あやま 誤 ラ五8: +あやま 謝 ラ五8: +あやま 阿山 地名: +あゆ 歩 マ五7: +あゆ 鮎 代1: +あゆみよ 歩み寄 ラ五7: +あら 荒 形2: +あら 洗 ワ五8: +あら 粗 形2: +あらー アラー 名1: +あらあらし 荒々し 形3: +あらい 荒井 苗字: +あらい 新井 苗字: +あらい 新井 地名: +あらい 新居 苗字: +あらいおと 洗い落と サ五7: +あらいなが 洗い流 サ五5: +あらお 荒尾 地名: +あらかじめ あらかじめ 副1: +あらかじめ 予め 副1: +あらかると アラカルト 名1: +あらかわ 荒川 苗字: +あらかわ 荒川 地名: +あらき 荒木 苗字: +あらけずり 荒削り 代4:形動4: +あらし 嵐 代1: +あらしやま 嵐山 地名: +あらすか アラスカ 地名: +あらすじ 粗筋 名1: +あらそ 争 ワ五7: +あらた 新た 形動1: +あらたま 改ま ラ五6: +あらため 改め 一段2: +あらっぽ 荒っぽ 形2: +あらて 新手 代1: +あらなみ 荒波 代1: +あらびあ アラビア 地名: +あらまき 新巻 代1: +あらゆる あらゆる 連体: +あらわ あらわ 形動1:サ五5: +あらわ 表 サ五5: +あらわ 現 サ五5: +あらわ 著 サ五5: +あらわれ 表れ 一段4: +あらわれ 現れ 一段4: +あらわれ 現われ 一段4: +あり 蟻 代1: +ありあけ 有明 地名: +ありあけかい 有明海 地名: +ありあり ありあり 副8: +ありあわせ 有り合わせ 一段3: +ありえ 有家 地名: +ありかわ 有川 苗字: +ありかわ 有川 地名: +ありが 有賀 苗字: +ありがた ありがた 形5: +ありがた 有難 形8: +ありがたみ ありがた味 代1: +ありがとう ありがとう 挨拶: +ありがとう 有難う 挨拶: +ありさま 有り様 代1: +ありさわ 有沢 苗字: +ありぞな アリゾナ 地名: +ありた 有田 苗字: +ありた 有田 地名: +ありだ 有田 地名: +ありふれ ありふれ 一段1: +ありま 有馬 苗字: +ありま 有馬 地名: +ありゅう 亜流 名1: +ありよし 有吉 苗字: +ある 歩 カ五8: +ある 或 単漢: +あるいは あるいは 接続: +あるいは 或は 接続: +あるかり アルカリ 名1: +あるきめです アルキメデス 名1: +あるこーる アルコール 名1: +あるごりずむ アルゴリズム 名1: +あるごん アルゴン 名1: +あるじ 主 代1: +あるぜんちん アルゼンチン 地名: +あるばいと アルバイト 名6: +あるばむ アルバム 名1: +あるふぁ α 代1: +あるふぁべっと アルファベット 名1: +あるぷす アルプス 地名: +あるぺん アルペン 名1: +あるまいと アルマイト 名1: +あるみ アルミ 名1: +あるみにうむ アルミニウム 名1: +あれ あれ 代1: +あれ 荒れ 一段3: +あれい アレイ 名1: +あれるぎー アレルギー 名1: +あれんじ アレンジ 名6: +あろけーしょん アロケーション 名1: +あろけーと アロケート 名6: +あわ 粟 代1: +あわ 阿波 地名: +あわ 安房 地名: +あわ 淡 形2: +あわ 泡 代1: +あわさ 合わさ ラ五1: +あわじ 淡路 地名: +あわじしま 淡路島 地名: +あわせ 合わせ 代1: +あわせ 袷 代1: +あわせて 併せて 接続: +あわだ 泡立 タ五3: +あわて 慌て 一段2: +あわて あわて 一段2: +あわの 粟野 苗字: +あわび 鮑 代1: +あわや あわや 副1: +あわゆき 淡雪 代1: +あわら 芦原 地名: +あわれ 哀れ 代5:マ五3: +あわれ 憐れ マ五3: +あわれ あわれ マ五3: +あん 案 代1:助数:ザ変: +あん 庵 代1: +あん 按 ザ変: +あん 暗 単漢: +あん 安 単漢: +あん 闇 単漢: +あん 鞍 単漢: +あん 杏 単漢: +あんい 安易 名8: +あんうん 暗雲 名1: +あんか 安価 代5: +あんがい 案外 形動1: +あんき 暗記 名6: +あんけーと アンケート 名6: +あんこーる アンコール 代4: +あんこう 鮟鱇 代1: +あんこく 暗黒 名8: +あんごう 暗号 名4: +あんさつ 暗殺 名6: +あんざい 安斎 苗字: +あんざい 安西 苗字: +あんざん 暗算 名6: +あんしつ 暗室 名1: +あんしょう 暗証 名1: +あんしょう 暗礁 名1: +あんしん 安心 名7:形動8: +あんじ 暗示 名6: +あんじゅう 安住 名6: +あんじょう 安城 苗字: +あんじょう 安城 地名: +あんず 杏 名1: +あんず あんず 代1: +あんせい 安静 名8: +あんぜん 安全 名8: +あんそく 安息 名1: +あんたい 安泰 名10: +あんだー アンダー 名1: +あんち 安置 名6: +あんちゅうもさく 暗中模索 代4: +あんちょく 安直 形動4: +あんてい 安定 名6: +あんてな アンテナ 名1: +あんど 安堵 名7: +あんどう 安東 苗字: +あんどう 安藤 苗字: +あんな あんな 連体: +あんない 案内 名7: +あんなか 安中 地名: +あんに 暗に 副1: +あんのじょう 案の定 副8: +あんばらんす アンバランス 名8: +あんぱち 安八 地名: +あんぴ 安否 名3: +あんぺあ アンペア 助数2: +あんぽ 安保 名1: +あんまり あんまり 形動1: +あんみん 安眠 名6: +あんもく 暗黙 名8: +あんもにあ アンモニア 名1: +あんらく 安楽 名8: +い い 一段1:ラ五7:ワ五7:カ五7: +い 行 カ五7: +い 往 カ五1: +い 逝 カ五1: +い 忌 マ五5: +い 入 ラ五3: +い 要 ラ五3: +い 煎 ラ五3: +い 言 ワ五7: +い 云 ワ五7: +い 居 一段1: +い 射 一段1: +い 鋳 一段1: +い 委 接尾1: +い 医 接尾1: +い 胃 代1: +い 意 代1: +い 井 代1: +い 衣 代1: +い 伊 代1: +い 猪 代1: +い 位 助数: +い 異 代1: +い 夷 代1: +い 威 代1: +い 緯 代1: +い 偉 代1: +い 以 単漢: +い 依 単漢: +い 囲 単漢: +い 尉 単漢: +い 惟 単漢: +い 慰 単漢: +い 易 単漢: +い 椅 単漢: +い 為 単漢: +い 畏 単漢: +い 移 単漢: +い 維 単漢: +い 萎 単漢: +い 謂 単漢: +い 違 単漢: +い 遺 単漢: +い 亥 単漢: +い 蔚 単漢: +い 莞 単漢: +い 詑 単漢: +い 斐 単漢: +い 鮪 単漢: +いーさ イーサ 代1: +いーさねっと イーサネット 代1: +いあつ 威圧 名6: +いあん 慰安 名6: +いい 飯 単漢: +いいあ 言い合 ワ五7: +いいあらそ 言い争 ワ五7: +いいあらわ 言い表 サ五5: +いいえ いいえ 代1: +いいおか 飯岡 苗字: +いいおか 飯岡 地名: +いいかえ 言い換え 一段3: +いいかえ 言い返 サ五7: +いいかえ 言い替え 一段3: +いいかげん いい加減 形動4: +いいかね 言い兼ね 一段1: +いいかわ 言い交わ サ五7: +いいき 言い切 ラ五7: +いいし 飯石 地名: +いいじま 飯島 苗字: +いいすて 言い捨て 一段1: +いいそこな 言い損な ワ五3: +いいたか 飯高 苗字: +いいたか 飯高 地名: +いいたがわ 飯田川 地名: +いいたて 飯館 地名: +いいだ 飯田 苗字: +いいだ 飯田 地名: +いいだ 言い出 サ五7: +いいつけ 言いつけ 一段4: +いいづか 飯塚 苗字: +いいづか 飯塚 地名: +いいで 飯豊 地名: +いいなお 言い直 サ五7: +いいなずけ 許嫁 代1: +いいなん 飯南 地名: +いいぬま 飯沼 苗字: +いいの 飯野 名1: +いいのがれ 言い逃れ 一段3: +いいは 言い張 ラ五5: +いいふら 言い触ら サ五3: +いいぶん 言い分 名1: +いいむら 飯村 苗字: +いいもり 飯森 苗字: +いいもり 飯盛 地名: +いいやま 飯山 苗字: +いいやま 飯山 地名: +いいわけ 言い訳 代4: +いいわた 言い渡 サ五7: +いいん 委員 名1: +いいん 医院 名1: +いいんかい 委員会 名1: +いえ 家 名2: +いえ 癒え 一段1: +いえ 伊江 地名: +いえがら 家柄 名2: +いえしま 家島 地名: +いえじ 家路 名1: +いえす イエス 名1: +いえで 家出 名6: +いえもと 家元 名2: +いえろー イエロー 名1: +いおう 硫黄 名1: +いおうじま 伊王島 地名: +いおり 庵 代1: +いおん イオン 名1: +いか 活か サ五5: +いか 生か サ五5: +いか 怒 ラ五8: +いか 以下 接尾9:助数2: +いか 医科 名1: +いか 烏賊 代1: +いか 異化 代4: +いか 伊香 地名: +いかが 如何 副1:形動1: +いかが いかが 副1:形動1: +いかく 威嚇 名6: +いかさま いかさま 代1: +いかざき 五十崎 地名: +いかた 伊方 地名: +いかだ 筏 代1: +いかなる いかなる 連体: +いかなる 如何なる 連体: +いかに いかに 副6: +いかほ 伊香保 地名: +いかり 碇 代1: +いかり 錨 代1: +いかりがせき 碇ヶ関 地名: +いかわ 井川 苗字: +いかわ 井川 地名: +いかん 遺憾 名8: +いかん 移管 名6: +いかん 如何 名1: +いが 伊賀 苗字: +いが 伊賀 地名: +いがい 以外 接尾9:助数2: +いがい 意外 名8: +いがい 遺骸 名1: +いがく 医学 名4: +いがみあ いがみ合 ワ五7: +いがらし 五十嵐 苗字: +いがわ 井川 苗字: +いがん 依願 名1: +いき 生き 一段3: +いき 活き 一段3: +いき 意気 名1: +いき 息 代3: +いき 域 接尾1: +いき 遺棄 代4: +いき 粋 代5: +いき 壱岐 地名: +いきいき 生き生き 副3: +いきいき いきいき 副3: +いきいき イキイキ 副3: +いきうめ 生き埋め 代1: +いきおい 勢い 代6: +いきおいこ 勢い込 マ五1: +いきかえ 生き返 ラ五7: +いきがい 生きがい 代1: +いきき 行き来 代4: +いきぎれ 息切れ 代4: +いきぐるし 息苦し 形5: +いきご 意気込 マ五7: +いきさき 行き先 代1: +いきさつ いきさつ 代1: +いきしゅ 異機種 代1: +いきすぎ 行き過ぎ 一段3: +いきつき 生月 地名: +いきづま 息詰ま ラ五3: +いきとど 行き届 カ五1: +いきとど いきとど カ五1: +いきどお 憤 ラ五3: +いきな 生名 地名: +いきなり いきなり 副8: +いきぬき 息抜き 代4: +いきのこ 生き残 ラ五7: +いきもの 生き物 代1: +いきょう 異境 名1: +いきょく 医局 名1: +いきわた 行き渡 ラ五1: +いぎ 意義 名1: +いぎ 異議 名3: +いぎ 異義 名1: +いぎょう 偉業 名1: +いぎょう 遺業 名1: +いぎりす イギリス 地名: +いく 育 単漢: +いく 郁 単漢: +いく 幾 単漢: +いく 粥 単漢: +いくえ 幾重 名1: +いくえい 育英 名1: +いくお 育男 名前: +いくお 郁夫 苗字: +いくこ 郁子 名前: +いくさ 戦 代1: +いくさか 生坂 地名: +いくしゅ 育種 代1: +いくじ 育児 名6: +いくせい 育成 名6: +いくた 生田 苗字: +いくたはら 生田原 地名: +いくつ いくつ 名2: +いくつ 幾つ 代6: +いくど 幾度 代6: +いくにち 幾日 代6: +いくの 生野 地名: +いくぶん 幾分 代6: +いくよ 郁代 名前: +いくら いくら 名2: +いくら 幾ら 代6: +いくらか 幾らか 代6: +いぐ 伊具 地名: +いぐさ 井草 地名: +いぐち 井口 苗字: +いけ 池 名2: +いけい 畏敬 名6: +いけがき 生け垣 代1: +いけがみ 池上 苗字: +いけがみ 池上 地名: +いけがわ 池川 地名: +いけだ 池田 苗字: +いけだ 池田 地名: +いけど 生け捕 ラ五7: +いけばな 生け花 代1: +いけぶくろ 池袋 地名: +いけもと 池本 苗字: +いけん 意見 名7: +いけん 違憲 名1: +いげん 威厳 名1: +いこ 憩 ワ五3: +いこい 憩 代1: +いこう 移行 名6: +いこう 移項 名6: +いこう 以降 名1: +いこう 意向 名3: +いこく 異国 名1: +いこつ 遺骨 名1: +いこま 生駒 地名: +いこん 遺恨 名1: +いご 以後 名11:接尾1: +いご 囲碁 名1: +いごこち 居心地 代1: +いさ 伊佐 苗字: +いさ 伊佐 地名: +いさ 勇 マ五3: +いさい 委細 名1: +いさい 異彩 名1: +いさお 勲 名前: +いさお 功 名前: +いさお 勇夫 名前: +いさお 勇雄 名前: +いさか 伊坂 苗字: +いさぎよ 潔 形2: +いさく 遺作 名1: +いささか いささか 代6: +いさはや 諌早 地名: +いさまし 勇まし 形5: +いさむ 勇 名前: +いさめ 諌め 一段4: +いさわ 石和 地名: +いさわ 胆沢 地名: +いさん 遺産 名1: +いざ いざ 代1: +いざかや 居酒屋 代1: +いざき 井崎 苗字: +いざな 誘 ワ五7: +いざわ 伊沢 苗字: +いざわ 井沢 苗字: +いし 意志 名1: +いし 意思 名1: +いし 遺志 名1: +いし 医師 名1: +いし 石 名1: +いしい 石井 苗字: +いしおか 石岡 苗字: +いしおか 石岡 地名: +いしかり 石狩 地名: +いしかわ 石川 苗字: +いしかわ 石川 地名: +いしかわ 石河 苗字: +いしがき 石垣 名1: +いしがき 石垣 地名: +いしき 意識 名6: +いしくら 石倉 苗字: +いしぐろ 石黒 苗字: +いしげ 石下 地名: +いしげ 石毛 苗字: +いしこし 石越 地名: +いしざか 石坂 苗字: +いしざき 石崎 苗字: +いしざわ 石沢 苗字: +いしじま 石島 苗字: +いしずえ 礎 代1: +いしだ 石田 苗字: +いしだ 石田 地名: +いしつ 異質 名8: +いしつ 遺失 名6: +いしづか 石塚 苗字: +いしどう 石堂 苗字: +いしどりや 石鳥谷 地名: +いしなべ 石鍋 苗字: +いしの 石野 苗字: +いしのまき 石巻 地名: +いしはら 石原 苗字: +いしばし 石橋 名1:苗字: +いしぶみ 碑 代1: +いしべ 石部 苗字: +いしべ 石部 地名: +いしまる 石丸 苗字: +いしゃ 医者 名2: +いしゃ 慰謝 名6: +いしやま 石山 苗字: +いしやまでら 石山寺 地名: +いしゅ 異種 名1: +いしゅう 異臭 名1: +いしゅく 萎縮 名6: +いしゅつ 移出 名6: +いしょ 遺書 名1: +いしょう 衣装 名1: +いしょう 意匠 名1: +いしょく 移植 名6: +いしょく 委嘱 名6: +いしょく 異色 名8: +いしょくじゅう 衣食住 名1: +いしわたり 石渡 苗字: +いしん 維新 名1: +いじ いじ ラ五8: +いじ 意地 名1: +いじ 維持 名6: +いじ 遺児 名1: +いじめ 苛め 一段3: +いじゅう 移住 名6: +いじゅういん 伊集院 苗字: +いじょう 以上 名11:助数2: +いじょう 異常 名8: +いじょう 委譲 代4: +いじら 伊自良 地名: +いじわる 意地悪 代5:形1: +いじん 偉人 名1: +いじん 異人 名1: +いす 椅子 名1: +いすみ 夷隅 地名: +いすらえる イスラエル 地名: +いすらむ イスラム 名1: +いすわ 居座 ラ五7: +いず 伊豆 地名: +いずし 出石 地名: +いずながおか 伊豆長岡 地名: +いずみ 泉 名1: +いずみ 泉 地名: +いずみ 和泉 苗字: +いずみ 和泉 地名: +いずみ 出水 地名: +いずみおおつ 泉大津 地名: +いずみさの 泉佐野 地名: +いずみや 泉谷 苗字: +いずも 出雲 地名: +いずもざき 出雲崎 地名: +いずれ いずれ 代6: +いせ 伊勢 地名: +いせい 威勢 名1: +いせい 異性 名1: +いせいしゃ 為政者 名1: +いせき 移籍 名6: +いせき 遺跡 名1: +いせさき 伊勢崎 地名: +いせたん 伊勢丹 企業: +いせつ 異説 名1: +いせはら 伊勢原 苗字: +いせはら 伊勢原 地名: +いせん 伊仙 地名: +いぜな 伊是名 地名: +いぜん 以前 名1: +いぜん 依然 名1: +いそ 磯 代1: +いそ 急 ガ五8: +いそう 位相 名1: +いそう 移送 名6: +いそうろう 居候 代1: +いそがい 磯貝 苗字: +いそがし 忙し 形10: +いそご 磯子 地名: +いそざき 磯崎 苗字: +いそし 勤し マ五7: +いそだ 磯田 苗字: +いその 磯野 苗字: +いそべ 磯部 苗字: +いそや 磯谷 苗字: +いそや 磯谷 地名: +いそん 依存 名6: +いぞう 遺贈 名6: +いぞく 遺族 名3: +いぞん 依存 名6: +いぞん 異存 名1: +いた 板 代1: +いた 致 サ五7: +いた いた サ五5: +いた 痛 形5:マ五7: +いた 傷 マ五7: +いた 悼 マ五3: +いた 至 ラ五7: +いた 到 ラ五7: +いたい 遺体 名1: +いたい 異体 名1: +いたいたし 痛々し 形3: +いたがき 板垣 苗字: +いたく 依託 名7: +いたく 委託 名7: +いたくら 板倉 苗字: +いたこ 潮来 苗字: +いたこ 潮来 地名: +いたずら 悪戯 代4:形動1: +いたずら 徒 形動1: +いただ いただ カ五7: +いただ 戴 カ五7: +いただ 頂 カ五7: +いただき 頂 代1: +いたって いたって 副1: +いたで 痛手 代1: +いたどり 板取 地名: +いたの 板野 苗字: +いたの 板野 地名: +いたばし 板橋 苗字: +いたばし 板橋 地名: +いたまえ 板前 代2: +いたまし 痛まし 形9: +いたみ 伊丹 苗字: +いたみ 伊丹 地名: +いため 炒め 一段3: +いためつけ 痛めつけ 一段3: +いたやなぎ 板柳 地名: +いたりあ イタリア 地名: +いたわ いたわ ラ五8: +いたん 異端 名1: +いだ 井田 苗字: +いだ 抱 カ五7: +いだい 偉大 形動4: +いだい 医大 名1: +いち 位置 代4: +いち 一 一括: +いち 市 接尾1: +いちい 一意 名4: +いちいち 一々 代6: +いちいち いちいち 代6: +いちいん 一因 名1: +いちいん 一員 名1: +いちう 一宇 地名: +いちえん 一円 一括: +いちおう 一応 代6: +いちかい 市貝 地名: +いちかわ 市川 苗字: +いちかわ 市川 地名: +いちかわだいもん 市川大門 地名: +いちがや 市ヶ谷 地名: +いちがん 一丸 名1: +いちき 市来 苗字: +いちき 市来 地名: +いちげき 一撃 名6: +いちげん 一元 名4: +いちご 苺 代1: +いちし 一志 地名: +いちじ 一時 一括: +いちじ 一事 名1: +いちじま 市島 地名: +いちじょ 一助 名1: +いちじょう 一条 苗字: +いちじるし 著し 形2: +いちぞん 一存 名1: +いちたろう 一太郎 名1: +いちだん 一団 代1: +いちだんらく 一段落 名6: +いちづけ 位置付け 一段3: +いちどう 一同 名3: +いちどう 一堂 名1: +いちどく 一読 名7: +いちにん 一任 名6: +いちにんまえ 一人前 名1: +いちねん 一念 名1: +いちのせき 一関 地名: +いちのへ 一戸 苗字: +いちのへ 一戸 地名: +いちのみや 一の宮 地名: +いちのみや 一宮 苗字: +いちのみや 一宮 地名: +いちはさま 一迫 地名: +いちはやく いち早く 副1: +いちはら 市原 苗字: +いちはら 市原 地名: +いちば 市場 名1: +いちばん 一番 一括: +いちぶ 一部 一括: +いちぶぶん 一部分 名1: +いちむら 市村 苗字: +いちめい 一命 名1: +いちめん 一面 名1: +いちもくりょうぜん 一目瞭然 代5: +いちもん 一門 名1: +いちやく 一躍 代4:副1: +いちゅう 意中 名1: +いちょう 胃腸 名1: +いちょう 銀杏 名1: +いちよう 一様 形動4: +いちらん 一覧 名6: +いちり 一理 名1: +いちりつ 一律 代5: +いちれい 一例 一括: +いちれん 一連 名1: +いちろ 一路 代6: +いちろう 一朗 名前: +いちろう 一郎 名前: +いっ 逸 サ変:サ五1: +いっ 行っ カ五音便: +いっ 逝っ カ五音便: +いっか 一家 名3: +いっかい 一介 副7: +いっかく 一角 名1: +いっかせい 一過性 名1: +いっかつ 一括 名6: +いっかん 一環 名1: +いっかん 一貫 名6: +いっき 一揆 名1: +いっきょ 一挙 名1: +いっきょう 一興 名1: +いっけい 一計 名1: +いっけん 一見 代4:副1: +いっこう 一向 名11: +いっこう 一行 名3: +いっこく 一刻 名1: +いっさい 一切 代6: +いっさく 一昨 接頭1: +いっさくじつ 一昨日 代6: +いっさくねん 一昨年 代6: +いっさんかたんそ 一酸化炭素 名1: +いっしき 一式 一括: +いっしき 一色 苗字: +いっしき 一色 地名: +いっしゅう 一周 名6: +いっしゅん 一瞬 名1: +いっしょ いっしょ 名6: +いっしょ 一緒 名7: +いっしょう 一生 名1: +いっしょうけんめい 一生懸命 代6: +いっしょうけんめい 一所懸命 代6: +いっしょけんめい 一所懸命 代6: +いっしん 一心 名8: +いっしん 一新 名6: +いっすい 一睡 名6: +いっせい 一斉 名1: +いっせいに 一斉に 副1: +いっせきにちょう 一石二鳥 代1: +いっせつ 一説 代1: +いっせん 一線 代1: +いっそ いっそ 副1: +いっそう いっそう 副1: +いっそう 一層 一括: +いっそう 一掃 代4: +いったい いったい 副1: +いったい 一体 一括: +いったい 一帯 代1: +いったん 一旦 副1: +いったん 一端 名1: +いったん いったん 副1: +いったん 一たん 副1: +いっち 一致 名6: +いっちゅうや 一昼夜 代1: +いっちょういっせき 一朝一夕 代1: +いっちょういったん 一長一短 代1: +いってい 一定 名6: +いってん 一転 名6: +いってん 一点 一括: +いっと 一途 代1: +いっぱい いっぱい 代5: +いっぱい 一杯 一括: +いっぱく 一泊 代4: +いっぱつ 一発 一括: +いっぱん 一般 名4: +いっぴつ 一筆 名1: +いっぴん 逸品 名1: +いっぷく 一服 名6: +いっぺい 一平 名前: +いっぺん 一辺 名1: +いっぺん 一変 名6: +いっぺんとう 一辺倒 名1: +いっぽう 一方 名1: +いっぽう 一報 名7: +いっぽう いっぽう 名1: +いっぽんまつ 一本松 地名: +いつ いつ 代6: +いつ 何時 代6: +いつ 一 単漢: +いつ 壱 単漢: +いつ 溢 単漢: +いつ 逸 単漢: +いつう 胃痛 代1: +いつか 五日 代6: +いつかいち 五日市 地名: +いつき 五木 苗字: +いつくし 慈し マ五7: +いつざい 逸材 名1: +いつだつ 逸脱 名6: +いつつ 五つ 代6: +いつも いつも 代6: +いつわ 偽 ラ五7: +いつわ 逸話 名1: +いつわ 五輪 苗字: +いつわ 五和 地名: +いづはら 厳原 地名: +いてざ 射手座 代1: +いてつ 凍てつ カ五5: +いてん 移転 名7: +いで 井手 苗字: +いで 井出 苗字: +いでおろぎー イデオロギー 名1: +いでみつ 出光 苗字: +いでむら 出村 苗字: +いでん 遺伝 名6: +いでんし 遺伝子 名1: +いと 厭 ワ五1: +いと 意図 代4: +いと 糸 名1: +いと 伊都 地名: +いといがわ 糸魚川 地名: +いとう 伊東 苗字: +いとう 伊東 地名: +いとう 伊藤 苗字: +いとうちゅう 伊藤忠 企業: +いとおし いとおし 形5:マ五3: +いとぐち 糸口 代1: +いとこ いとこ 代1: +いとし 愛し 形5: +いとしま 糸島 地名: +いとだ 糸田 地名: +いとな 営 マ五8: +いとぬき 糸貫 地名: +いとま 暇 名2: +いとまん 糸満 地名: +いとめ 射止め 一段2: +いとも いとも 副1: +いど 緯度 名1: +いど 井戸 名1: +いど 挑 マ五7: +いどう 移動 名7: +いどう 異同 名1: +いどころ 居所 名1: +いどばた 井戸端 名1: +いな 否 代1:マ五7: +いな 伊那 苗字: +いな 伊那 地名: +いな 伊奈 苗字: +いな 伊奈 地名: +いな 伊南 地名: +いない 以内 接尾9:助数2: +いない 稲井 苗字: +いなお 居直 ラ五7: +いなおか 稲岡 苗字: +いなか 田舎 名1: +いなかだて 田舎館 地名: +いなかわ 稲川 地名: +いながき 稲垣 苗字: +いながわ 猪名川 地名: +いなぎ 稲城 地名: +いなさ 引佐 地名: +いなざわ 稲沢 苗字: +いなざわ 稲沢 地名: +いなしき 稲敷 地名: +いなだ 稲田 苗字: +いなつき 稲築 地名: +いなば 稲葉 苗字: +いなぶ 稲武 地名: +いなべ 員弁 地名: +いなみ 井波 苗字: +いなみ 井波 地名: +いなみ 稲美 名前: +いなみ 稲美 地名: +いなみ 印南 地名: +いなむら 稲村 苗字: +いなら 居並 バ五1: +いなり 稲荷 名2: +いなわしろ 猪苗代 地名: +いなん 以南 代1: +いにしえ いにしえ 代1: +いにしゃらいず イニシャライズ 名6: +いにしゃる イニシャル 名1: +いにゅう 移入 名6: +いにん 委任 名6: +いぬ 犬 代1: +いぬ 狗 代1: +いぬい 乾 苗字: +いぬかい 犬飼 苗字: +いぬかみ 犬上 地名: +いぬやま 犬山 地名: +いね 稲 名1: +いね 伊根 地名: +いね 禾 単漢: +いねかり 稲刈り 代4: +いねむり 居眠り 代4: +いの 祈 ラ五8: +いの 伊野 地名: +いのうえ 井上 苗字: +いのき 猪木 苗字: +いのくち 井口 地名: +いのこ 居残 ラ五3: +いのしし 猪 代1: +いのち 命 代1: +いのまた 猪股 苗字: +いはら 庵原 地名: +いはん 違反 名6: +いば 威張 ラ五8: +いばしょ 居場所 名1: +いばら 茨 代1: +いばら 井原 地名: +いばらき 茨城 地名: +いばらき 茨木 苗字: +いばらき 茨木 地名: +いひょう 意表 名1: +いひん 遺品 名1: +いび 揖斐 地名: +いびがわ 揖斐川 地名: +いびつ いびつ 代5: +いふ 畏怖 名6: +いふく 衣服 名1: +いぶき 伊吹 苗字: +いぶき 伊吹 地名: +いぶき 息吹 名1: +いぶすき 指宿 苗字: +いぶすき 指宿 地名: +いぶすき 揖宿 地名: +いぶつ 異物 名1: +いぶつ 遺物 名1: +いぶり 胆振 地名: +いへや 伊平屋 地名: +いへん 異変 名1: +いべんと イベント 名1: +いほう 違法 名8: +いぼ 揖保 地名: +いぼがわ 揖保川 地名: +いま 今 代6: +いま いま 代6: +いま 居間 代1: +いまい 今井 苗字: +いまいずみ 今泉 苗字: +いまいずみ 今泉 地名: +いまいち 今市 地名: +いまいまし 忌々し 形5: +いまがね 今金 地名: +いまがわ 今川 苗字: +いまごろ 今ごろ 代6: +いまさら 今さら 副8: +いまさら 今更 副8: +いまさら いまさら 副8: +いましめ 戒め 一段3: +いまじょう 今庄 地名: +いまぜき 今関 苗字: +いまだ いまだ 副5: +いまだ 未だ 副5: +いまだ 今田 苗字: +いまだて 今立 地名: +いまづ 今津 苗字: +いまづ 今津 地名: +いまでがわ 今出川 地名: +いまばり 今治 地名: +いまふく 今福 苗字: +いまべつ 今別 地名: +いまむら 今村 苗字: +いまり 伊万里 地名: +いまわし 忌まわし 形5: +いみ 意味 代4: +いみず 射水 地名: +いみん 移民 名6: +いむ 医務 名1: +いむら 井村 苗字: +いめーじ イメージ 名1: +いも 芋 名2: +いもうと 妹 代2: +いもの 鋳物 代1: +いもん 慰問 名6: +いや いや 感動:サ五7:形動1: +いや 嫌 形動6: +いや 厭 形動6: +いや 癒 サ五7: +いやおう 否応 名1: +いやく 医薬 名1: +いやく 意訳 名6: +いやく 違約 名6: +いやくきん 違約金 名1: +いやけ 嫌気 名1: +いやし 卑し 形3:マ五7: +いやに いやに 副1: +いやみ 嫌味 名8: +いやみ 厭味 名8: +いやらし いやらし 形7: +いよ 伊代 名前: +いよ 伊予 地名: +いよいよ いよいよ 副8: +いよう 異様 形動4: +いよく 意欲 名4: +いよみしま 伊予三島 地名: +いらい 以来 接尾1:副1: +いらい 依頼 名7: +いらいら イライラ 代4: +いらすと イラスト 名1: +いらだ 苛立 タ五8: +いらっしゃ いらっしゃ ラ五3: +いらぶ 伊良部 地名: +いりえ 入り江 名1: +いりえ 入江 苗字: +いりき 入来 地名: +いりく 入り組 マ五5: +いりぐち 入口 名1: +いりこ 入り込 マ五7: +いりの 入野 苗字: +いりひろせ 入広瀬 地名: +いりゅう 慰留 名6: +いりゅう 遺留 名6: +いりょう 医療 名1: +いりょう 衣料 名1: +いりょく 威力 名1: +いるい 衣類 名1: +いるか 海豚 代1: +いるか 鯆 単漢: +いるま 入間 地名: +いれ 入れ 接尾1:一段2: +いれい 異例 名1: +いれかえ 入れ換え 一段4: +いれかわ 入れ替わ ラ五7: +いろ 色 接尾1: +いろあい 色合い 代1: +いろあせ 色あせ 一段3: +いろあせ 色褪せ 一段3: +いろいろ いろいろ 代5: +いろいろ 色々 代5: +いろう 慰労 代4: +いろけ 色気 名2: +いろずり 色刷 代4: +いろづ 色づ カ五7: +いろど 彩 ラ五7: +いろは いろは 代1: +いろめ 色め カ五3: +いろわけ 色分け 代4: +いろん 異論 名1: +いろんな いろんな 連体: +いろんな 色んな 連体: +いわ 岩 代1: +いわ 祝 ワ五8: +いわ 磐 単漢: +いわい 岩井 苗字: +いわい 岩井 地名: +いわいずみ 岩泉 地名: +いわお 巌 名1:名前: +いわお 岩男 名前: +いわお 岩夫 苗字: +いわお 岩雄 名前: +いわかん 違和感 名1: +いわき いわき 地名: +いわき 岩城 苗字: +いわき 岩城 地名: +いわき 岩木 苗字: +いわき 磐城 地名: +いわぎ 岩城 地名: +いわく 曰く 代1: +いわくに 岩国 地名: +いわくら 岩倉 苗字: +いわくら 岩倉 地名: +いわさ 岩佐 苗字: +いわさき 岩崎 苗字: +いわさわ 岩沢 苗字: +いわし 鰯 代1: +いわし 鰮 単漢: +いわした 岩下 苗字: +いわしろ 岩代 地名: +いわせ 岩瀬 苗字: +いわせ 岩瀬 地名: +いわた 岩田 苗字: +いわた 磐田 地名: +いわたき 岩滝 地名: +いわつき 岩槻 苗字: +いわつき 岩槻 地名: +いわて 岩手 地名: +いわで 岩出 苗字: +いわで 岩出 地名: +いわでやま 岩出山 地名: +いわない 岩内 地名: +いわなみ 岩波 苗字: +いわぬま 岩沼 地名: +いわば いわば 副1: +いわば 言わば 副1: +いわば 岩場 代1: +いわふね 岩舟 地名: +いわふね 岩船 地名: +いわぶち 岩淵 苗字: +いわま 岩間 苗字: +いわみ 岩美 地名: +いわみ 石見 名1: +いわみざわ 岩見沢 地名: +いわむら 岩村 苗字: +いわむろ 岩室 地名: +いわもと 岩本 苗字: +いわもと 岩本 地名: +いわゆる いわゆる 連体: +いん 印 接尾1:サ変: +いん 員 接尾1: +いん 院 接尾1: +いん 陰 代1: +いん 韻 代1: +いん イン 代1: +いん 淫 代4: +いん 允 単漢: +いん 咽 単漢: +いん 因 単漢: +いん 姻 単漢: +いん 引 単漢: +いん 飲 単漢: +いん 胤 単漢: +いん 蔭 単漢: +いん 隠 単漢: +いん 音 単漢: +いんえい 陰影 名1: +いんか 引火 名6: +いんかん 印鑑 名1: +いんが 因果 名8: +いんき 陰気 名8: +いんきょ 隠居 名7: +いんきょく 陰極 名1: +いんく インク 名1: +いんくりめんと インクリメント 名6: +いんくるーど インクルード 名6: +いんけん 陰険 名8: +いんこう 咽喉 名1: +いんさーと インサート 名6: +いんさつ 印刷 名6: +いんさん 陰惨 代5: +いんざい 印西 地名: +いんし 因子 名1: +いんし 印紙 名1: +いんしつ 陰湿 名8: +いんしゅ 飲酒 名6: +いんしゅう 因習 名1: +いんしゅりん インシュリン 名1: +いんしょう 印象 名4: +いんしょう 印章 名1: +いんしょうづけ 印象づけ 一段3: +いんしょく 飲食 名6: +いんじ 印字 名6: +いんじぇくしょん インジェクション 名1: +いんじけーた インジケータ 名1: +いんすたんと インスタント 名8: +いんすとーる インストール 名6: +いんすとらくしょん インストラクション 代1: +いんせき 引責 名6: +いんぜい 印税 名1: +いんそつ 引率 名6: +いんたー インター 名1: +いんたーばる インターバル 名1: +いんたーぷりたー インタープリター 名1: +いんたーりーぶ インターリーブ 代4: +いんたい 引退 名7: +いんたびゅー インタビュー 名6: +いんたふぇーす インタフェース 代1: +いんたらくてぃぶ インタラクティブ 名8: +いんだすとり インダストリ 名1: +いんだすとりある インダストリアル 名8: +いんち インチ 助数2: +いんち 吋 助数2: +いんちょう 院長 名1: +いんてりあ インテリア 名1: +いんてる インテル 名1: +いんでぃあん インディアン 名1: +いんでっくす インデックス 名1: +いんでんと インデント 代4: +いんとねーしょん イントネーション 名1: +いんど インド 地名: +いんど 印度 地名: +いんどよう インド洋 代1: +いんない 院内 地名: +いんなみ 印南 苗字: +いんなみ 印南 地名: +いんねん 因縁 名1: +いんのう 陰嚢 代1: +いんのしま 因島 地名: +いんば 印旛 地名: +いんぱくと インパクト 名1: +いんふぉめーしょん インフォメーション 代1: +いんふるえんざ インフルエンザ 名1: +いんふれ インフレ 名1: +いんぷっと インプット 名6: +いんぷりめんと インプリメント 名6: +いんぺい 隠蔽 名6: +いんぼう 陰謀 名1: +いんよう 引用 名6: +いんよう 飲用 名6: +いんよう 陰陽 名1: +いんりょうすい 飲料水 名1: +いんりょく 引力 名1: +いんれき 陰暦 名1: +う 浮 カ五3: +う 打 タ五7: +う 討 タ五7: +う 撃 タ五7: +う 生 マ五4: +う 産 マ五4: +う 膿 マ五7: +う 売 ラ五8: +う 鵜 代1: +う 卯 代1: +う 芋 単漢: +う 右 単漢: +う 宇 単漢: +う 烏 単漢: +う 羽 単漢: +う 迂 単漢: +う 雨 単漢: +う 胡 単漢: +う 菟 単漢: +う 憂 単漢: +う 有 単漢: +うーまん ウーマン 名1: +うぃーく ウィーク 名1: +うぃるす ウィルス 代1: +うぃんど ウィンド 名1: +うぃんどう ウィンドウ 名1: +うい 初 単漢: +ういういし 初々し 形3: +ういざん 初産 代1: +ういすきー ウイスキー 名1: +ういるす ウイルス 名1: +ういんく ウインク 代4: +ういんどう ウインドウ 名1: +うぇいと ウェイト 名1: +うえ 上 代6: +うえ 植え 一段1: +うえ 飢え 一段3: +うえいと ウエイト 名1: +うえき 植木 名1: +うえした 上下 名1: +うえじに 餓死 代4: +うえすぎ 上杉 苗字: +うえだ 上田 苗字:地名: +うえだ 植田 苗字: +うえつけ 植え付け 一段3: +うえの 上野 苗字: +うえの 上野 地名: +うえのはら 上野原 地名: +うえはら 上原 苗字: +うえはら 上原 地名: +うえはら 植原 苗字: +うえまつ 植松 苗字: +うえむら 上村 苗字: +うえむら 植村 苗字: +うえもと 植本 苗字: +うえん 迂遠 形動4: +うぉーくまん ウォークマン 名1: +うぉーみんぐ ウォーミング 名1: +うお 魚 代1: +うおうさおう 右往左往 代4: +うおざ 魚座 代1: +うおしま 魚島 地名: +うおづ 魚津 地名: +うおぬま 魚沼 地名: +うか 羽化 代4: +うか 受か ラ五2: +うか 浮か バ五8: +うかい 迂回 名6: +うかうか うかうか 副3: +うかが 伺 ワ五6: +うかが うかが ワ五6: +うかが 窺 ワ五5: +うかつ うかつ 名8: +うかん 有漢 地名: +うがん 右岸 名1: +うき 右記 名1: +うき 雨期 名1: +うき 雨季 名1: +うきくさ 浮草 名1: +うきしずみ 浮き沈み 代4: +うきな 浮名 名1: +うきは 浮羽 地名: +うきぶくろ 浮袋 名1: +うきぼり 浮き彫り 代4: +うきょう 右京 地名: +うきよえ 浮世絵 名1: +うく 宇久 地名: +うぐいす 鴬 代1: +うぐいすざわ 鴬沢 地名: +うぐいすだに 鴬谷 地名: +うけ 受け 接尾1:一段2: +うけ 請け 一段4: +うけあ 請け合 ワ五5: +うけい 右傾 名6: +うけいれ 受け入れ 一段4: +うけお 請け負 ワ五7: +うけおい 請負 名1: +うけざら 受け皿 名1: +うけしょ 請書 名1: +うけたまわ 承 ラ五8: +うけつ 受け継 ガ五7: +うけつけ 受付 名1: +うけつけ 受け付け 一段3: +うけと 受け取 ラ五8: +うけとめ 受け止め 一段4: +うけとり 受取 名2: +うけなが 受け流 サ五7: +うけはらい 受払い 代4: +うけも 受け持 タ五7: +うけわたし 受渡し 名2: +うけん 宇検 地名: +うご 動 カ五7: +うご 羽後 地名: +うごか 動か サ五1: +うごきだ 動き出 サ五3: +うさ 宇佐 苗字: +うさ 宇佐 地名: +うさぎ 兎 代1: +うさぎ 菟 単漢: +うさみ 宇佐見 苗字: +うさみ 宇佐美 苗字: +うざわ 鵜沢 苗字: +うし 牛 代1: +うし 丑 単漢: +うしお 潮 代1: +うしく 牛久 地名: +うしじま 牛島 苗字: +うしづ 牛津 地名: +うしな 失 ワ五6: +うしぶか 牛深 地名: +うしぼり 牛堀 地名: +うしまど 牛窓 地名: +うしろ 後ろ 名1: +うしろあし 後ろ足 名1: +うしろすがた 後ろ姿 名1: +うしろだて 後ろだて 名1: +うしろむき 後向き 代5: +うしろめた 後ろめた 形5: +うじ 宇治 苗字: +うじ 宇治 地名: +うじ 蛆 代1: +うじ 氏 代1: +うじいえ 氏家 苗字: +うじたわら 宇治田原 地名: +うす 臼 代1: +うす 薄 接頭1:形3: +うす 有珠 地名: +うす 碓 単漢: +うすい 雨水 名1: +うすい 碓井 苗字: +うすい 臼井 苗字: +うすい 薄井 苗字: +うすい 碓氷 地名: +うすうす 薄々 代6: +うすがた 薄型 名1: +うすき 臼杵 苗字: +うすき 臼杵 地名: +うすぎ 薄着 代4: +うすぎり 薄切り 代4: +うすぐら 薄暗 形2: +うすじお 薄塩 名1: +うすだ 臼田 苗字: +うすだ 臼田 地名: +うすで 薄手 名8: +うすび 薄日 代1: +うすま 薄ま ラ五1: +うすめ 薄め 一段3: +うすら 薄ら ガ五1: +うすれ 薄れ 一段1: +うず 渦 代1: +うずくま 蹲 ラ五5: +うずま 渦巻 カ五7: +うずま 埋ま ラ五1: +うずまき 渦巻 名1: +うずめ 埋め 一段1: +うずめ うずめ 一段1: +うずもれ 埋もれ 一段1: +うせ 失せ 一段1: +うせつ 右折 名6: +うそ 嘘 代1: +うそ ウソ 代1: +うた 歌 名2: +うた 歌 ワ五8: +うた 唄 名2: +うた 唄 ワ五8: +うた 詠 ワ五5: +うた 謡 ワ五5: +うた 詩 代1: +うた 唱 単漢: +うたい 謡 単漢: +うたが 疑 ワ五8: +うたがわし 疑わし 形3: +うたぐ 疑 ラ五8: +うたげ 宴 代1: +うたごえ 歌声 名1: +うたしない 歌志内 地名: +うたつ 歌津 地名: +うたづ 宇多津 地名: +うたの 菟田野 地名: +うたのぼり 歌登 地名: +うたん 右端 名1: +うだ 宇陀 地名: +うだがわ 宇田川 苗字: +うだがわ 宇田川 地名: +うち うち 代6: +うち 家 名2: +うち 内 代6: +うちあ 撃ち合 ワ五7: +うちあけ 打ち明け 一段3: +うちあげ 打ち上げ 一段3: +うちあわせ 打合せ 名5: +うちあわせ 打ち合せ 名5: +うちいわい 内祝 代1: +うちうち 内々 名8: +うちうみ 内海 苗字: +うちうら 内浦 地名: +うちおと 撃ち落と サ五7: +うちか 打ち勝 タ五7: +うちかけ 打掛け 名1: +うちかんだ 内神田 地名: +うちがわ 内側 名1: +うちき 打ち切 ラ五7: +うちき 内気 名8: +うちきん 内金 名1: +うちくだ 打ち砕 カ五5: +うちけ 打ち消 サ五7: +うちこ 打ち込 マ五7: +うちこ 内子 地名: +うちた 打田 地名: +うちだ 打ち出 サ五7: +うちだ 内田 苗字: +うちでし 内弟子 代1: +うちとけ 打ち解け 一段1: +うちなだ 内灘 地名: +うちの 内野 苗字: +うちのうら 内之浦 地名: +うちのみ 内海 地名: +うちはら 内原 苗字: +うちはら 内原 地名: +うちぼり 内堀 苗字: +うちまく 内幕 名1: +うちみ 打ち身 名1: +うちみず 打ち水 代4: +うちやま 内山 苗字: +うちゅう 宇宙 名1: +うちょうてん 有頂天 名8: +うちわ 内輪 名1: +うちわけ 内訳 名1: +うっかり うっかり 代4:副1: +うっせき うっ積 名6: +うったえ 訴え 一段4: +うってつけ うってつけ 代5: +うっとうし うっとうし 形5: +うつ 移 サ五8:ラ五8: +うつ 写 サ五8:ラ五8: +うつ 映 サ五8:ラ五8: +うつ 鬱 代1: +うつ 欝 代1: +うつ 蔚 単漢: +うつくし 美し 形9: +うつしだ 映し出 サ五7: +うつしと 写し取 ラ五5: +うつのみや 宇都宮 地名: +うつぼ 靭 代1: +うつみ 内海 苗字: +うつむ うつむ カ五7: +うつりぎ 移り気 代5: +うつろ 虚ろ 代5: +うつわ 器 代1: +うてん 雨天 代1: +うで 腕 代1: +うできき 腕利き 名1: +うでどけい 腕時計 名1: +うでまえ 腕前 名1: +うと 疎 形2:マ五1: +うと 宇土 地名: +うとまし 疎まし 形5: +うとん 疎ん ザ変: +うどの 鵜殿 苗字: +うどの 鵜殿 地名: +うどん うどん 代1: +うな うな ラ五3: +うなかみ 海上 地名: +うなが 促 サ五7: +うなぎ 鰻 代1: +うなじ 項 代1: +うなず うなず カ五7: +うなづき 宇奈月 地名: +うなばら 海原 名1: +うね 畦 代1: +うね 畝 代1: +うの 宇野 苗字: +うの 宇野 地名: +うのけ 宇ノ気 地名: +うのみ 鵜呑み 代4: +うは 右派 名1: +うば 姥 代1: +うば 奪 ワ五6: +うば 乳母 代1: +うばいと 奪い取 ラ五5: +うぶ 初 代5: +うぶ 産 単漢: +うぶごえ 産声 代1: +うぶやま 産山 地名: +うへん 右辺 名1: +うべ 宇部 地名: +うま うま 形8: +うま 旨 形8: +うま 埋ま ラ五1: +うま 馬 名1: +うま 宇摩 地名: +うま 午 単漢: +うまじ 馬路 地名: +うまみ 旨味 名1: +うまや 厩 代1: +うまれ 生まれ 名2: +うまれ 産まれ 名2: +うまれかわ 生まれ変わ ラ五7: +うみ 海 名1: +うみ 膿 名1: +うみ 宇美 地名: +うみおと 産み落と サ五7: +うみせんやません 海千山千 代1: +うみだ 生み出 サ五7: +うみべ 海辺 名1: +うむ 有無 名1: +うめ 埋め 一段2: +うめ 梅 名1: +うめ 宇目 地名: +うめあわせ 埋め合わせ 代4: +うめあわせ 埋め合せ 代4: +うめこ 埋め込 マ五7: +うめざわ 梅沢 苗字: +うめぞの 梅園 苗字: +うめたて 埋め立て 一段1: +うめたて 埋立 名1: +うめたてち 埋立地 名1: +うめだ 梅田 苗字: +うめだ 梅田 地名: +うめづ 梅津 苗字: +うめはら 梅原 苗字: +うめぼし 梅干し 代1: +うもう 羽毛 名1: +うもれ 埋もれ 一段2: +うやうやし 恭し 形3: +うやま 宇山 苗字: +うやま 敬 ワ五6: +うやむや うやむや 形動9: +うよく 右翼 名1: +うら 裏 代1: +うら 浦 代1: +うら 恨 マ五8: +うら 怨 マ五8: +うら 裡 単漢: +うらうす 浦臼 地名: +うらおもて 裏表 代1: +うらかた 裏方 代2: +うらかわ 浦河 地名: +うらがえ 裏返 サ五7:ラ五7: +うらがき 裏書 代4: +うらがね 裏金 名1: +うらがわ 裏側 名1: +うらぎ 裏切 ラ五7: +うらぐち 裏口 名1: +うらさく 裏作 名6: +うらじ 裏地 名1: +うらそえ 浦添 地名: +うらづけ 裏付け 代4:一段1: +うらて 裏手 名1: +うらな 占 ワ五7: +うらにわ 裏庭 名1: +うらの 浦野 苗字: +うらはら 裏腹 名8: +うらべ 浦部 苗字: +うらほろ 浦幌 地名: +うらみち 裏道 名1: +うらめ 裏目 名1: +うらめし 恨めし 形5: +うらや 羨 マ五3: +うらやす 浦安 苗字: +うらやす 浦安 地名: +うらやま 裏山 名1: +うらやまし 羨まし 形9: +うららか うららか 形動4: +うらわ 浦和 地名: +うらん ウラン 名1: +うり 瓜 代1: +うりあげ 売り上げ 一段3: +うりあげ 売上 名1: +うりあげきん 売上金 名1: +うりあげだか 売上高 名1: +うりかい 売り買い 代4: +うりかけ 売り掛け 一段3: +うりかけきん 売掛金 名1: +うりきれ 売り切れ 一段3: +うりこ 売り込 マ五7: +うりこ 売子 代2: +うりだ 売り出 サ五8: +うりだし 売出 名1: +うりづら 瓜連 地名: +うりて 売り手 名1: +うりぬし 売り主 名1: +うりね 売値 名1: +うりはら 売り払 ワ五7: +うりば 売場 名1: +うりゅう 雨龍 地名: +うりょう 雨量 名1: +うりわた 売り渡 サ五7: +うるう 閏 代1: +うるうどし 閏年 代1: +うるお 潤 サ五5:ワ五7: +うるさ うるさ 形7: +うるさ 煩 形7: +うるわし 麗し 形3: +うれ 熟れ 一段2: +うれい 愁い 名1: +うれい 憂い 名1: +うれえ 愁え 一段2: +うれえ 憂え 一段2: +うれくち 売れ口 名1: +うれし うれし 形5: +うれし 嬉し 形5: +うれしの 嬉野 地名: +うれっこ 売れっ子 代1: +うれのこ 売れ残 ラ五7: +うれゆき 売行き 代1: +うろうろ うろうろ 副3: +うろおぼえ うろ覚え 名1: +うろこ 鱗 代1: +うわ 宇和 地名: +うわ 上 単漢: +うわがき 上書き 代4: +うわがわ 上側 代1: +うわき 浮気 名6:形動1: +うわぎ 上着 代1: +うわぐつ 上靴 名1: +うわさ 噂 代4: +うわじま 宇和島 地名: +うわすべり 上滑り 代5:サ変: +うわづみ 上積み 代4: +うわぬり 上塗り 代4: +うわのせ 上乗せ 代4: +うわばき 上履き 代1: +うわべ 上辺 名1: +うわまえ 上前 代1: +うわまわ 上回 ラ五5: +うわむ 上向 カ五7: +うわめ 上目 代1: +うわやく 上役 名1: +うん 運 代1: +うん 雲 代1: +うん 云 単漢: +うんえい 運営 名6: +うんかい 雲海 名1: +うんが 運河 名1: +うんきゅう 運休 名6: +うんこう 運行 名6: +うんこう 運航 名6: +うんざり うんざり 代4: +うんざん 運算 名6: +うんしん 運針 名1: +うんせい 運勢 名1: +うんぜん 雲仙 地名: +うんそう 運送 名6: +うんそうや 運送屋 代2: +うんちく 蘊蓄 名1: +うんちん 運賃 名1: +うんてん 運転 名6: +うんてんしゅ 運転手 代2: +うんでい 雲泥 代1: +うんと うんと 副1: +うんどう 運動 名6: +うんどうかい 運動会 名1: +うんどうじょう 運動場 名1: +うんぬん 云々 代4: +うんの 海野 苗字: +うんぱん 運搬 名6: +うんぴつ 運筆 名1: +うんめい 運命 名4: +うんゆ 運輸 名1: +うんゆしょう 運輸省 名1: +うんよう 運用 名6: +え 絵 代1: +え 柄 代1: +え 江 代1: +え 笑 マ五1: +え 得 一段1: +え 選 一段1: +え 獲 一段1: +え え 一段1: +え 荏 単漢: +え 画 単漢: +え 会 単漢: +え 恵 単漢: +え 枝 単漢: +え 慧 単漢: +え 重 単漢: +え 餌 単漢: +え 衛 単漢: +えーじぇんと エージェント 名1: +えーす エース 名1: +えーてる エーテル 名1: +えあ エア 名1: +えい 頴娃 地名: +えい 映 ザ変: +えい 詠 ザ変: +えい 栄 単漢: +えい 英 単漢: +えい 営 単漢: +えい 永 単漢: +えい 泳 単漢: +えい 衛 単漢: +えい 叡 単漢: +えい 鋭 単漢: +えい 嬰 単漢: +えい 影 単漢: +えい 曳 単漢: +えい 洩 単漢: +えい 瑛 単漢: +えい 盈 単漢: +えい 穎 単漢: +えい 頴 単漢: +えい 裔 単漢: +えいい 鋭意 副1: +えいいち 栄一 名前: +えいいち 英一 名前: +えいいちろう 栄一郎 名前: +えいえん 永遠 名8: +えいかく 鋭角 名1: +えいかん 栄冠 名1: +えいが 映画 名4: +えいがかん 映画館 名1: +えいきち 栄吉 名前: +えいきゅう 永久 名8: +えいきょう 影響 名6: +えいぎょう 営業 名6: +えいぎょうか 営業課 代1: +えいぎょうぶ 営業部 名1: +えいげんじ 永源寺 地名: +えいこ 栄子 名前: +えいこ 英子 名前: +えいこう 栄光 名1: +えいこう 曳航 代4: +えいこく 英国 名1: +えいご 英語 名4: +えいごう 永劫 名1: +えいさい 英才 名1: +えいさく 栄作 名前: +えいざぶろう 栄三郎 名前: +えいしゃ 映写 名6: +えいしゃき 映写機 名1: +えいしん 栄進 名7: +えいじ 英字 名1: +えいじ 嬰児 名1: +えいじ 栄治 名前: +えいじ 栄二 名前: +えいじ 英司 名前: +えいじ 英治 名前: +えいじ 英二 名前: +えいじゅう 永住 名6: +えいず エイズ 名1: +えいせい 衛生 名4: +えいせい 衛星 名1: +えいせい 永世 名1: +えいせい 永逝 名6: +えいせいし 衛生士 名1: +えいぜん 営繕 名6: +えいぞう 映像 名4: +えいぞう 営造 代4: +えいぞう 栄三 名前: +えいぞう 英三 名前: +えいぞく 永続 名6: +えいたつ 栄達 代4: +えいたろう 栄太郎 名前: +えいたん 詠嘆 代4: +えいだん 英断 名1: +えいだん 営団 名1: +えいち 英知 名1: +えいてん 栄転 名7: +えいねん 永年 名1: +えいびん 鋭敏 形動4: +えいふく 永福 地名: +えいふくちょう 永福町 地名: +えいぶん 英文 名1: +えいへいじ 永平寺 名1: +えいみん 永眠 名6: +えいやく 英訳 名6: +えいゆう 英雄 名1: +えいよう 栄養 名1: +えいようか 栄養価 名1: +えいようし 栄養士 名1: +えいようそ 栄養素 名1: +えいり 営利 名1: +えいりあん エイリアン 名1: +えいりん 営林 名1: +えいりん 映倫 名1: +えいりんしょ 営林署 代1: +えいわ 英和 名1: +ええ ええ 代1: +えが 描 カ五5: +えがお 笑顔 名1: +えがら 絵柄 名1: +えがわ 江川 苗字: +えき 駅 代1:接尾4: +えき 液 代1: +えき 益 代4: +えき 役 代4: +えき 易 代1: +えき 疫 単漢: +えきいん 駅員 代2: +えきか 液化 代4: +えきしゃ 易者 名1: +えきしょう 液晶 名1: +えきじょう 液状 名1: +えきすぱーと エキスパート 名1: +えきせんとりっく エキセントリック 代5: +えきたい 液体 名1: +えきちょう 駅長 代2: +えきでん 駅伝 名1: +えきまえ 駅前 名1: +えきむ 役務 名1: +えきめい 駅名 名1: +えきり 疫痢 名1: +えくあどる エクアドル 地名: +えくすてんしょん エクステンション 名1: +えぐち 江口 苗字:地名: +えこー エコー 名6: +えこだ 江古田 地名: +えこのみすと エコノミスト 名1: +えごいずむ エゴイズム 名1: +えさ 餌 代1: +えさき 江崎 苗字: +えさし 江差 地名: +えさし 江刺 苗字: +えさし 江刺 地名: +えさし 枝幸 地名: +えざわ 江沢 苗字: +えし 壊死 名6: +えしゃく 会釈 名6: +えじき 餌食 名1: +えじぷと エジプト 地名: +えすかれーと エスカレート 名6: +えすきもー エスキモー 名1: +えすけーぷ エスケープ 名6: +えすぺらんと エスペラント 名1: +えせ 似非 接頭1: +えそ 壊疽 名1: +えぞえ 江副 苗字: +えたい 得体 名1: +えたじま 江田島 地名: +えだ 枝 代1: +えだぶり 枝振り 名1: +えだまめ 枝豆 名1: +えち 愛知 地名: +えちがわ 愛知川 地名: +えちけっと エチケット 名1: +えちご 越後 地名: +えちぜん 越前 地名: +えっきょう 越境 名6: +えっけん 謁見 名6: +えっけん 越権 名1: +えっせい エッセイ 名1: +えっせいすと エッセイスト 名1: +えっちゅう 越中 地名: +えっとう 越冬 名6: +えつ 悦 単漢: +えつ 謁 単漢: +えつ 越 単漢: +えつ 閲 単漢: +えつお 悦夫 名前: +えつこ 悦子 名前: +えつねん 越年 名6: +えつらく 悦楽 名1: +えつらん 閲覧 名6: +えて 得手 代5: +えてして 得てして 副1: +えでぃた エディタ 名1: +えでぃっと エディット 名6: +えと 干支 代1: +えとう 江藤 苗字: +えとく 会得 名6: +えとろふ 択捉 地名: +えど 江戸 地名: +えどがわ 江戸川 苗字: +えどがわ 江戸川 地名: +えどさき 江戸崎 地名: +えな 恵那 地名: +えなじー エナジー 名1: +えにし 縁 代1: +えにわ 恵庭 地名: +えぬま 江沼 地名: +えねるぎー エネルギー 名1: +えのき 榎 代1: +えのきだ 榎田 苗字: +えのぐ 絵の具 名1: +えのしま 江ノ島 地名: +えのもと 榎本 苗字: +えはがき 絵はがき 名1: +えはた 江畑 苗字: +えはら 江原 苗字: +えばら 江原 苗字: +えひめ 愛媛 地名: +えび 海老 名1: +えび 蝦 名1: +えび 鰕 単漢: +えびさわ 海老沢 苗字: +えびす 恵比寿 地名: +えびす 夷 単漢: +えびす 胡 単漢: +えびな 海老名 地名: +えびの えびの 地名: +えびはら 海老原 苗字: +えぴそーど エピソード 名1: +えべつ 江別 地名: +えほん 絵本 名1: +えま 絵馬 名1: +えまき 絵巻 名1: +えみこ 恵美子 名前: +えみゅれーた エミュレータ 代1: +えみゅれーと エミュレート 名6: +えむかえ 江迎 地名: +えめらるど エメラルド 名1: +えもの 獲物 名1: +えら 偉 形9: +えら 選 バ五8: +えら 鰓 代1: +えら えら 代1:形9: +えらー エラー 名6: +えらびだ 選び出 サ五5: +えり 衿 代1: +えり 襟 代1: +えり 恵理 名前: +えりーと エリート 名1: +えりあ エリア 名1: +えりくび 襟首 名1: +えりも えりも 地名: +えりもと 襟元 名1: +えるさるばどる エルサルバドル 地名: +えれがんと エレガント 名8: +えれくとりっく エレクトリック 名1: +えれくとろにくす エレクトロニクス 名1: +えれべーたー エレベーター 名1: +えん 円 代1:助数2: +えん 縁 名3: +えん 園 接尾1: +えん 宴 接尾1: +えん 塩 接尾1: +えん 炎 接尾1: +えん 演 ザ変: +えん 宛 単漢: +えん 厭 単漢: +えん 堰 単漢: +えん 奄 単漢: +えん 延 単漢: +えん 怨 単漢: +えん 掩 単漢: +えん 援 単漢: +えん 沿 単漢: +えん 焔 単漢: +えん 煙 単漢: +えん 燕 単漢: +えん 猿 単漢: +えん 艶 単漢: +えん 苑 単漢: +えん 薗 単漢: +えん 遠 単漢: +えん 鉛 単漢: +えん 鴛 単漢: +えん 垣 単漢: +えん 鳶 単漢: +えん 媛 単漢: +えん 淵 単漢: +えんえい 遠泳 名6: +えんえき 演繹 名6: +えんえん 延々 形動2: +えんか 演歌 名1: +えんか 塩化 代4: +えんかい 宴会 名3: +えんかい 遠海 名1: +えんかい 沿海 名1: +えんかく 沿革 名1: +えんかく 遠隔 名1: +えんかくち 遠隔地 名1: +えんかつ 円滑 名8: +えんがる 遠軽 地名: +えんがわ 縁側 名1: +えんがん 沿岸 名1: +えんき 延期 名6: +えんき 塩基 名1: +えんきょり 遠距離 名1: +えんきん 遠近 名1: +えんぎ 演技 名6: +えんけい 円形 名1: +えんげい 園芸 名1: +えんげい 演芸 名1: +えんげき 演劇 名1: +えんこ 縁故 名1: +えんこ 円弧 名1: +えんこーだ エンコーダ 代1: +えんこーでぃんぐ エンコーディング 代1: +えんこーど エンコード 名6: +えんこん 怨恨 名1: +えんご 援護 名7: +えんさん 塩酸 名1: +えんざん 演算 名6: +えんざん 塩山 地名: +えんざんし 演算子 代1: +えんし 遠視 名1: +えんしゅう 演習 名6: +えんしゅう 円周 名1: +えんしゅつ 演出 名6: +えんしょう 延焼 名6: +えんしんりょく 遠心力 名1: +えんじ 園児 代1: +えんじにあ エンジニア 名1: +えんじゃ 縁者 名1: +えんじゅく 円熟 名6: +えんじょ 援助 名7: +えんじょい エンジョイ 代4: +えんじょう 炎上 名6: +えんじん エンジン 名1: +えんじん 円陣 名1: +えんすい 円錐 名1: +えんせい 遠征 名6: +えんせん 沿線 名1: +えんぜつ 演説 名6: +えんそう 演奏 名6: +えんそく 遠足 名6: +えんたー エンター 名1: +えんたーていめんと エンターテイメント 名1: +えんたーぷらいず エンタープライズ 名1: +えんたい 延滞 名6: +えんたく 円卓 名1: +えんだか 円高 名1: +えんだん 縁談 名1: +えんだん 演壇 名1: +えんちゃく 延着 名6: +えんちゅう 円柱 名1: +えんちょう 延長 名6: +えんちょう 園長 名1: +えんちょく 鉛直 名8: +えんてんか 炎天下 名1: +えんでぃんぐ エンディング 名1: +えんとう 円筒 名1: +えんとつ 煙突 名1: +えんとり エントリ 名1: +えんとりー エントリー 名6: +えんとろぴー エントロピー 名1: +えんど エンド 名1: +えんどう 沿道 名1: +えんどう 遠藤 苗字: +えんにち 縁日 名1: +えんばん 円盤 名1: +えんぴつ 鉛筆 名1: +えんぶん 塩分 名1: +えんべつ 遠別 地名: +えんぽう 遠方 名1: +えんまく 煙幕 名1: +えんまん 円満 名8: +えんむすび 縁結び 代4: +えんめい 延命 名1: +えんやす 円安 名1: +えんよう 遠洋 名1: +えんよう 援用 名6: +えんりょ 遠慮 名7: +えんろ 遠路 名1: +お 尾 代1: +お お 接頭1:カ五5:ラ五3: +お 御 接頭1: +お 置 カ五7: +お 押 サ五7: +お 推 サ五7: +お 追 ワ五5: +お 負 ワ五1: +お 居 ラ五3: +お 折 ラ五7: +お 織 ラ五7: +お 緒 代1: +お 悪 単漢: +お 苧 単漢: +お 於 単漢: +お 汚 単漢: +お 小 単漢: +お 男 単漢: +お 雄 単漢: +おーけすとら オーケストラ 名1: +おーすとらりあ オーストラリア 地名: +おーすとりあ オーストリア 地名: +おーだー オーダー 名6: +おーでぃお オーディオ 名1: +おーと オート 名1: +おーとばい オートバイ 名1: +おーとまとん オートマトン 名1: +おーとめーしょん オートメーション 名4: +おーなー オーナー 名1: +おーばー オーバー 名6: +おーばーらっぷ オーバーラップ 代4: +おーぷん オープン 名6: +おーる オール 名1: +おあしす オアシス 名1: +おい おい 感動: +おい 老い 一段3: +おい 甥 代1: +おい 笈 単漢: +おいかけ 追いかけ 一段3: +おいかわ 及川 苗字: +おいかわ 追川 苗字: +おいけ 御池 地名: +おいこ 追い越 サ五7: +おいこ 追い込 マ五7: +おいこ 追いこ サ五7: +おいこ 追いこ マ五7: +おいし おいし 形5: +おいし 美味し 形5: +おいしげ 生い茂 ラ五1: +おいたち 生い立ち 代1: +おいたて 追い立て 一段3: +おいたて 追いたて 一段3: +おいだ 追い出 サ五7: +おいつ 追い付 カ五7: +おいつめ 追い詰め 一段3: +おいて おいて 代6: +おいてきぼり おいてきぼり 名1: +おいで おいで 代1: +おいぬ 追い抜 カ五7: +おいはら 追い払 ワ五5: +おいもとめ 追い求め 一段1: +おいる オイル 名1: +おいわけ 追分 地名: +おう 王 代1: +おう 応 ザ変: +おう 凹 単漢: +おう 央 単漢: +おう 奥 単漢: +おう 往 単漢: +おう 押 単漢: +おう 旺 単漢: +おう 横 単漢: +おう 欧 単漢: +おう 殴 単漢: +おう 翁 単漢: +おう 襖 単漢: +おう 鴬 単漢: +おう 鴎 単漢: +おう 黄 単漢: +おう 鴨 単漢: +おう 皇 単漢: +おう 姶 単漢: +おう 桜 単漢: +おう 應 単漢: +おうい 王位 名1: +おういつ 横溢 名6: +おういん 押印 名7: +おうう 奥羽 地名: +おうえん 応援 名6: +おうおう 往々 副5: +おうか 欧化 代4: +おうか 押下 代4: +おうかくまく 横隔膜 名1: +おうかん 往還 名1: +おうかん 王冠 名1: +おうがい 鴎外 名前: +おうきゅう 応急 名1: +おうきゅう 王宮 名1: +おうぎ 扇 代1: +おうこう 横行 名6: +おうこく 王国 名1: +おうごん 黄金 名1: +おうさか 逢坂 地名: +おうさま 王様 代1: +おうしざ 牡牛座 代1: +おうしつ 王室 名1: +おうしゅう 応酬 名6: +おうしゅう 押収 名6: +おうしゅう 欧州 名1: +おうしょう 王将 名1: +おうしょく 黄色 名1: +おうしん 往信 名6: +おうしん 往診 名6: +おうじ 王子 代1: +おうじ 王寺 地名: +おうじゃ 王者 名1: +おうじょう 往生 名6: +おうせい 旺盛 形動4: +おうせつ 応接 名6: +おうたい 応対 名6: +おうだく 応諾 名6: +おうだん 横断 名6: +おうち 相知 地名: +おうちゃく 横着 代5: +おうちょう 王朝 名1: +おうて 王手 名1: +おうてん 横転 代4: +おうとう 応答 名6: +おうとう 大塔 地名: +おうとつ 凹凸 名1: +おうどう 王道 名1: +おうなつ 押捺 名6: +おうねん 往年 名1: +おうひ 王妃 名1: +おうふう 欧風 名1: +おうふく 往復 名6: +おうぶん 欧文 名1: +おうべい 欧米 名4: +おうぼ 応募 名6: +おうぼう 横暴 名8: +おうみ 近江 地名: +おうみ 青海 地名: +おうみはちまん 近江八幡 地名: +おうむ 鸚鵡 名1: +おうむ 雄武 地名: +おうむ 王蟲 名1: +おうめ 青梅 地名: +おうよう 応用 名6: +おうら 邑楽 地名: +おうらい 往来 名6: +おうりょう 横領 名6: +おうろ 往路 名1: +おえ 終え 一段1: +おえ 麻植 地名: +おお 大 接頭1: +おお 多 形6: +おお 被 ワ五3: +おお 覆 ワ五3: +おお おお 感動: +おおあさ 大朝 地名: +おおあざ 大字 名1: +おおあみしらさと 大網白里 地名: +おおあめ 大雨 名1: +おおあらい 大洗 地名: +おおい 大井 地名: +おおい 大飯 地名: +おおいがわ 大井川 地名: +おおいし 大石 苗字: +おおいしだ 大石田 地名: +おおいずみ 大泉 苗字: +おおいそ 大磯 地名: +おおいそぎ 大急ぎ 代5: +おおいた 大分 地名: +おおいなる 大いなる 連体: +おおいに 大いに 副1: +おおいり 大入 代1: +おおうだ 大宇陀 地名: +おおうち 大内 苗字: +おおうちやま 大内山 地名: +おおうら 大浦 地名: +おおうりだし 大売出し 名1: +おおえ 大江 苗字: +おおえ 大江 地名: +おおおか 大岡 苗字: +おおおかやま 大岡山 地名: +おおかぜ 大風 名1: +おおかた 大方 代6: +おおかみ 狼 代1: +おおかわ 大川 苗字: +おおかわ 大川 地名: +おおが 大賀 苗字: +おおがかり 大掛かり 代5: +おおがかり 大がかり 代5: +おおがき 大垣 苗字: +おおがき 大垣 地名: +おおがき 大柿 地名: +おおがた 大型 名4: +おおがた 大形 名4: +おおがた 大潟 地名: +おおがた 大方 地名: +おおがたき 大型機 名1: +おおがわら 大河原 苗字: +おおがわら 大河原 地名: +おおき 大き 形6: +おおき 大木 苗字: +おおきな 大きな 連体: +おおぎみ 大宜味 地名: +おおく 多く 代6: +おおくち 大口 地名: +おおくぼ 大久保 苗字: +おおくぼ 大久保 地名: +おおくま 大熊 苗字: +おおくま 大隈 苗字: +おおくら 大蔵 名1: +おおくら 大倉 苗字: +おおくらしょう 大蔵省 名1: +おおくらやま 大倉山 地名: +おおくわ 大桑 地名: +おおぐち 大口 名1: +おおげさ 大げさ 形動1: +おおこうち 大河内 苗字: +おおこうち 大河内 地名: +おおご 大胡 苗字: +おおご 大胡 地名: +おおごえ 大声 代1: +おおごえ 大越 地名: +おおさ 大佐 地名: +おおさか 大阪 地名: +おおさかふ 大阪府 県区: +おおさき 大崎 苗字: +おおさき 大崎 地名: +おおさと 大里 苗字: +おおさと 大里 地名: +おおさと 大郷 地名: +おおさわ 大沢 苗字: +おおさわ 大沢 地名: +おおさわぎ 大騒ぎ 代4: +おおさわの 大沢野 地名: +おおざっぱ 大雑把 形動1: +おおざっぱ おおざっぱ 形動1: +おおざと 大里 地名: +おおしか 大鹿 苗字: +おおしか 大鹿 地名: +おおしま 大島 苗字: +おおしま 大島 地名: +おおじ 王寺 地名: +おおすか 大須賀 地名: +おおすが 大須賀 苗字: +おおすじ 大筋 名1: +おおすみ 大角 苗字: +おおすみ 大隅 苗字: +おおすみ 大隅 地名: +おおず 大洲 地名: +おおせ 仰せ 代1: +おおせつか 仰せつか ラ五1: +おおせと 大瀬戸 地名: +おおぜい 大勢 名1: +おおぜき 大関 名1: +おおぞら 大空 名1: +おおた 太田 苗字: +おおた 太田 地名: +おおた 大田 苗字: +おおたき 王滝 地名: +おおたき 大多喜 地名: +おおたき 大滝 苗字: +おおたけ 大竹 苗字: +おおたけ 大竹 地名: +おおたに 大谷 苗字: +おおたま 大玉 地名: +おおたわら 大田原 地名: +おおだ 大田 地名: +おおだい 大台 名1: +おおだか 大高 苗字: +おおだて 大館 地名: +おおち 邑智 地名: +おおつ 大津 地名: +おおつか 大塚 苗字: +おおつき 大月 苗字: +おおつき 大月 地名: +おおつき 大槻 苗字: +おおつち 大槌 地名: +おおつぼ 大坪 苗字: +おおづ 大津 地名: +おおづめ 大詰め 名1: +おおて 大手 名1: +おおで 大手 名1: +おおとう 大塔 地名: +おおとう 大任 地名: +おおとね 大利根 地名: +おおとも 大友 苗字: +おおとよ 大豊 地名: +おおとり 鳳 苗字: +おおとり 鵬 苗字: +おおとり 鴻 単漢: +おおどおり 大通り 名1: +おおなみ 大波 名1: +おおにし 大西 苗字: +おおぬき 大貫 苗字: +おおぬま 大沼 苗字: +おおぬま 大沼 地名: +おおねじめ 大根占 地名: +おおの 大野 苗字: +おおの 大野 地名: +おおのじょう 大野城 地名: +おおのはら 大野原 地名: +おおのみ 大野見 地名: +おおはし 大橋 苗字: +おおはた 大畑 苗字: +おおはた 大畑 地名: +おおはば 大幅 名8: +おおはら 大原 苗字: +おおはら 大原 地名: +おおはる 大治 地名: +おおば 大場 苗字: +おおば 大庭 苗字: +おおばたけ 大畠 地名: +おおばやし 大林 苗字: +おおばん 大判 名1: +おおひと 大仁 地名: +おおひら 大衡 地名: +おおひら 大平 苗字: +おおびけ 大引け 名1: +おおふな 大船 苗字: +おおふな 大船 地名: +おおふなと 大船渡 地名: +おおぶ 大府 地名: +おおほ 大穂 地名: +おおま 大間 地名: +おおまか 大まか 形動4: +おおまがり 大曲 地名: +おおまち 大町 苗字: +おおまち 大町 地名: +おおまま 大間々 地名: +おおみしま 大三島 地名: +おおみず 大水 名1: +おおみそか 大晦日 名1: +おおみや 大宮 苗字: +おおみや 大宮 地名: +おおむかし 大昔 代1: +おおむた 大牟田 地名: +おおむね おおむね 代6: +おおむね 概ね 代6: +おおむら 大村 苗字: +おおむら 大村 地名: +おおめ 大目 名1: +おおもじ 大文字 名1: +おおもの 大物 名1: +おおもり 大森 苗字: +おおもり 大森 地名: +おおもり 大盛り 代1: +おおや 大家 代2: +おおや 大屋 苗字: +おおや 大谷 苗字: +おおや 大矢 苗字: +おおやけ 公 代1: +おおやの 大矢野 地名: +おおやま 大山 苗字: +おおやま 大山 地名: +おおやまざき 大山崎 地名: +おおやまだ 大山田 地名: +おおゆき 大雪 名1: +おおよそ おおよそ 代6: +おおよど 大淀 苗字: +おおよど 大淀 地名: +おおらか おおらか 形動4: +おおわだ 大和田 苗字: +おおわに 大鰐 地名: +おおわらい 大笑い 代4: +おか 岡 苗字: +おか 丘 苗字: +おか 侵 サ五1: +おか 犯 サ五3: +おか 冒 サ五3: +おか 阜 単漢: +おかあさま お母様 代1: +おかがき 岡垣 地名: +おかげ おかげ 代1: +おかざき 岡崎 苗字: +おかざき 岡崎 地名: +おかし おかし 形5: +おかしな おかしな 連体: +おかじま 岡島 苗字: +おかず おかず 代1: +おかだ 岡田 苗字: +おかちまち 御徒町 地名: +おかどちがい お門違い 代5: +おかの 岡野 苗字: +おかはる 岡原 地名: +おかべ 岡部 苗字: +おかむら 岡村 苗字: +おかもと 岡本 苗字: +おかや 岡谷 地名: +おかやす 岡安 苗字: +おかやま 岡山 苗字: +おかやま 岡山 地名: +おかりな オカリナ 名1: +おかん 悪寒 名1: +おが 男鹿 地名: +おが 拝 マ五8: +おがさ 小笠 苗字: +おがさ 小笠 地名: +おがさわら 小笠原 地名: +おがさわら 小笠原 苗字: +おがた 緒方 苗字: +おがた 尾形 苗字: +おがち 雄勝 地名: +おがつ 雄勝 地名: +おがの 小鹿野 地名: +おがわ 小川 苗字: +おがわ 小川 名1: +おがわ 小河 苗字: +おがわ 緒川 地名: +おがわな 小川名 苗字: +おき 沖 代1: +おき 起き 一段2: +おき 隠岐 地名: +おきあい 沖合い 名1: +おきあが 起き上が ラ五7: +おきかえ 置き換え 一段3: +おきかえ 置換え 一段3: +おきざり 置き去り 代1: +おきた 沖田 苗字: +おきな 翁 代1: +おきなわ 沖縄 地名: +おきみ 沖美 地名: +おきもの 置物 名1: +おきゃくさま お客様 代1: +おきわすれ 置き忘れ 一段3: +おぎ 小木 苗字: +おぎ 小木 地名: +おぎ 小城 地名: +おぎ 荻 単漢: +おぎくぼ 荻窪 苗字: +おぎくぼ 荻窪 地名: +おぎた 荻田 苗字: +おぎな 補 ワ五7: +おぎの 荻野 苗字: +おぎのめ 荻野目 苗字: +おぎはら 荻原 苗字: +おぎはら 荻原 地名: +おぎわら 荻原 苗字: +おく 奥 代1: +おく 億 数詞: +おく 送 ラ五8: +おく 贈 ラ五8: +おく 邑久 地名: +おく 臆 サ変:サ五1: +おく 屋 単漢: +おく 憶 単漢: +おくい 奥井 苗字: +おくがい 屋外 名1: +おくぎ 奥義 代1: +おくさま 奥様 代1: +おくさわ 奥沢 苗字: +おくしり 奥尻 地名: +おくじょう 屋上 名1: +おくそく 憶測 名6: +おくそこ 奥底 名1: +おくたま 奥多摩 地名: +おくだ 奥田 苗字: +おくち 奥地 名1: +おくつ 奥津 苗字: +おくつ 奥津 地名: +おくない 屋内 名1: +おくの 奥野 苗字: +おくば 奥歯 代1: +おくびょう 臆病 名8: +おくむら 奥村 苗字: +おくやま 奥山 苗字: +おくゆかし 奥ゆかし 形5: +おくゆき 奥行き 代1: +おくら 遅ら サ五5: +おくりこ 送り込 マ五7: +おくりさき 送り先 名1: +おくりじょう 送り状 名1: +おくりだ 送り出 サ五7: +おくりとどけ 送り届け 一段3: +おくりぬし 送り主 名1: +おくりむかえ 送り迎え 代4: +おくりもの 贈物 代3: +おくれ 遅れ 接尾1:一段2: +おくれ 後れ 一段3: +おくればせながら 遅ればせながら 副1: +おぐち 小口 苗字: +おぐに 小国 苗字: +おぐに 小国 地名: +おぐら 小倉 苗字: +おぐら 小倉 地名: +おぐら 小椋 苗字: +おぐり 小栗 苗字: +おぐろ 小黒 苗字: +おけ 桶 代1: +おけがわ 桶川 地名: +おけと 置戸 地名: +おこ 起こ サ五7:ラ五7: +おこ 怒 ラ五6: +おこ 興 サ五7:ラ五7: +おこがまし おこがまし 形2: +おこさま お子様 代1: +おこさん お子さん 代1: +おこた 怠 ラ五7: +おこっぺ 興部 地名: +おこな 行 ワ五7: +おこな 行な ワ五7: +おこのぎ 小此木 苗字: +おご おご ラ五7: +おごおり 小郡 地名: +おごせ 越生 地名: +おごそか 厳か 形動4: +おさ 長 代1: +おさえ 押さえ 一段3: +おさえ 抑え 一段3: +おさえ 押え 一段3: +おさか 小坂 苗字: +おさか 小坂 地名: +おさげ おさげ 代1: +おさだ 長田 苗字: +おさな 幼 形3: +おさなご 幼子 代1: +おさふね 長船 苗字: +おさふね 長船 地名: +おさま 治ま ラ五3: +おさま 収ま ラ五3: +おさま 修ま ラ五3: +おさま 納ま ラ五3: +おさむ 治 名前: +おさむ 修 名前: +おさむ 治虫 名前: +おさめ 収め 一段2: +おさめ 納め 接尾1:一段2: +おさめ 修め 一段2: +おさめ 治め 一段2: +おざき 尾崎 苗字: +おざく 小作 地名: +おざわ 小沢 苗字: +おし 唖 代1: +おし 惜し 形5:マ五1: +おしあげ 押し上げ 一段3: +おしい 押し入 ラ五1: +おしいれ 押入 名1: +おしうり 押売 名6: +おしえ 教え 一段4: +おしか 牡鹿 地名: +おしかえ 押し返 サ五7: +おしかけ 押しかけ 一段3: +おしき 押し切 ラ五7: +おしこ 押し込 マ五3: +おしこめ 押し込め 一段1: +おしだ 押し出 サ五7: +おしつけ 押し付け 一段3: +おしつけ 押しつけ 一段3: +おしつま 押し詰ま ラ五1: +おしとお 押し通 サ五7: +おしどり 鴛鴦 名1: +おしの 忍野 地名: +おしのけ 押し退け 一段1: +おしはか 推し量 ラ五1: +おしま 渡島 地名: +おしみず 押水 地名: +おしみな 惜しみな 形1: +おしゃべり おしゃべり 代4:形動1: +おしゃまんべ 長万部 地名: +おしゃれ おしゃれ 代4:形動1: +おしょう 和尚 代1: +おしよせ 押し寄せ 一段1: +おしろい 白粉 代1: +おしろすこーぷ オシロスコープ 名1: +おじ 叔父 代2: +おじ 伯父 代2: +おじ 小父 代2: +おじいさん おじいさん 代1: +おじか 小値賀 地名: +おじま 尾島 苗字: +おじょうさま お嬢様 代1: +おじょうさん お嬢さん 代1: +おじょく 汚辱 名1: +おす 雄 代1: +おす 雄 接頭1: +おす 牡 代1: +おす 牡 接頭1: +おす ♂ 単漢: +おすい 汚水 名1: +おせあにあ オセアニア 名1: +おせん 汚染 名6: +おぜ 尾瀬 地名: +おそ 遅 形6: +おそ 襲 ワ五5: +おそざき 遅咲き 代1: +おそらく 恐らく 副1: +おそらくは 恐らくは 副1: +おそれ 恐れ 一段3: +おそれ 虞 代1: +おそれい 恐れ入 ラ五1: +おそろし 恐ろし 形7: +おそわ 教わ ラ五2: +おそん 汚損 名6: +おた 織田 地名: +おたがい お互い 代1: +おたべ 小田部 苗字: +おたり 小谷 地名: +おたる 小樽 地名: +おだ 織田 苗字: +おだ 小田 苗字: +おだ 小田 地名: +おだか 小高 苗字: +おだきゅう 小田急 企業: +おだく 汚濁 名6: +おだじま 小田島 苗字: +おだて 煽て 一段3: +おだやか 穏やか 形動4: +おだわら 小田原 地名: +おち 落ち 接尾1:一段1: +おち 越智 苗字: +おち 越智 地名: +おち 越知 地名: +おちあ 落ち合 ワ五5: +おちあい 落合 苗字: +おちあい 落合 地名: +おちい 陥 ラ五5: +おちこ 落ち込 マ五3: +おちつ 落ち着 カ五7: +おちど 落度 代1: +おちば 落葉 名1: +おちぶれ 落ちぶれ 一段3: +おちゃのみず お茶の水 地名: +おちゃのみず 御茶ノ水 地名: +おぢや 小千谷 地名: +おっこち 落っこち 一段1: +おっしゃ おっしゃ ラ五7: +おって 追って 代6: +おって 追っ手 代1: +おって 追手 代1: +おっと 夫 代1: +おつ 乙 代5: +おてん 汚点 名1: +おでら 小寺 苗字: +おでん おでん 代1: +おと 音 名1: +おと 落と サ五7: +おと 劣 ラ五1: +おといねっぷ 音威子府 地名: +おとうと 弟 代2: +おとくに 乙訓 苗字: +おとくに 乙訓 地名: +おとこ 男 名1: +おとこで 男手 代1: +おとこのこ 男の子 代1: +おとさた 音沙汰 名1: +おとしいれ 陥れ 一段1: +おとしもの 落し物 代1: +おとずれ 訪れ 一段3: +おとづれ 訪れ 一段3: +おととい 一昨日 代6: +おととし 一昨年 代6: +おとな 大人 名8: +おとなげな 大人げな 形2: +おとなし おとなし 形6: +おとなし 大人し 形6: +おとふけ 音更 地名: +おとべ 乙部 苗字: +おとべ 乙部 地名: +おとめ 乙女 名1: +おとめざ 乙女座 代1: +おとろえ 衰え 一段3: +おとわ 音羽 苗字: +おとわ 音羽 地名: +おど 脅 サ五7: +おど 躍 ラ五5: +おど 踊 ラ五7: +おど おど ラ五7: +おどか 脅か サ五7: +おどろ 驚 カ五7: +おなか お腹 代1: +おながわ 女川 地名: +おなじ 同じ 代5:連体: +おなじく 同じく 副1: +おなじよう 同じよう 形動1: +おなにー オナニー 名1: +おなりもん 御成門 地名: +おに 鬼 代1: +おにし 鬼石 地名: +おにゆう 遠敷 地名: +おね 尾根 代1: +おの 斧 代1: +おの 小野 苗字: +おの 小野 地名: +おのえ 尾上 苗字: +おのおの 各々 代6: +おのがみ 小野上 地名: +おのざわ 小野沢 苗字: +おのずから 自ずから 副1: +おのずと 自ずと 副1: +おのだ 小野田 苗字: +おのだ 小野田 地名: +おのづか 小野塚 苗字: +おのでら 小野寺 苗字: +おのみち 尾道 地名: +おのれ 己 代1: +おはなし お話 代4: +おはよう おはよう 挨拶: +おはら 小原 苗字: +おば 叔母 代2: +おば 伯母 代2: +おば 小母 代2: +おばあさん おばあさん 代1: +おばけ お化け 代1: +おばた 小幡 苗字: +おばた 小幡 地名: +おばた 小畑 苗字: +おばた 小俣 地名: +おばなざわ 尾花沢 地名: +おばま 小浜 地名: +おばら 小原 苗字: +おひつじざ 牡羊座 代1: +おひとよし 御人好し 代5: +おび 帯び 一段1: +おび 帯 代1: +おびじょう 帯状 代1: +おびただし おびただし 形2: +おびひろ 帯広 地名: +おびやか 脅か サ五7: +おびら 小平 地名: +おふ オフ 代4: +おふぃす オフィス 名1: +おふせっと オフセット 名1: +おふれこ オフレコ 名1: +おぶじぇくと オブジェクト 名1: +おぶせ 小布施 地名: +おぶつ 汚物 名1: +おぷしょん オプション 名1: +おぷてぃまいず オプティマイズ 名1: +おぺら オペラ 名1: +おぺれーしょん オペレーション 名6: +おぺれーた オペレータ 名1: +おぺれーたー オペレーター 名1: +おぺれーてぃんぐ オペレーティング 名1: +おぼえ 覚え 一段3: +おぼえ 憶え 一段3: +おぼえ おぼえ 一段3: +おぼえがき 覚書 名1: +おぼし 思し 形1: +おぼつかな おぼつかな 形5: +おぼれ 溺れ 一段1: +おまえ お前 代2: +おまえざき 御前崎 地名: +おまけ おまけ 代4: +おまた 小俣 苗字: +おまわり お巡り 代2: +おみ 麻績 地名: +おみがわ 小見川 地名: +おむすび おむすび 代1: +おむにばす オムニバス 名1: +おむらいす オムライス 名1: +おめい 汚名 名1: +おめが Ω 代1: +おめでとう おめでとう 挨拶: +おめにかか お目にかか ラ五5: +おも 思 ワ五8: +おも 想 ワ五8: +おも 主 形動1: +おも 重 形8: +おも 面 単漢: +おもいあた 思い当た ラ五1: +おもいおこ 思い起こ サ五7: +おもいかえ 思い返 サ五7: +おもいき 思い切 ラ五7: +おもいこ 思い込 マ五7: +おもいし 思い知 ラ五7: +おもいた 思い立 タ五5: +おもいだ 思い出 サ五7: +おもいだ 思いだ サ五7: +おもいちがい 思い違い 代4: +おもいつ 思い付 カ五7: +おもいつ 思いつ カ五7: +おもいつめ 思い詰め 一段3: +おもいで 思い出 名1: +おもいで 想い出 名1: +おもいなお 思い直 サ五7: +おもいのこ 思い残 サ五7: +おもいや 思いや ラ五3: +おもおもし 重々し 形3: +おもかげ 面影 代1: +おもくるし 重苦し 形3: +おもご 面河 地名: +おもしろ おもしろ 形8: +おもしろ 面白 形8: +おもた 重た 形5: +おもて 表 代1: +おもて 面 代1: +おもてがき 表書き 代4: +おもてがわ 表側 名1: +おもてぐち 表口 名1: +おもてごう 表郷 地名: +おもてさんどう 表参道 地名: +おもてむき 表向き 名1: +おもに 重荷 代1: +おものがわ 雄物川 地名: +おもむ 赴 カ五3: +おもむき 趣 代1: +おもむろに おもむろに 副1: +おもや 母屋 代1: +おもわく 思惑 名1: +おもわし 思わし 形1: +おもわず 思わず 副1: +おもん 重ん ザ変: +おもんぱか 慮 ラ五1: +おや おや 感動: +おや 親 名1: +おやかた 親方 名1: +おやこ 親子 名1: +おやこうこう 親孝行 代5:サ変: +おやじ 親父 代2: +おやすみ おやすみ 代1: +おやだま 親玉 代1: +おやぶん 親分 名1: +おやべ 小矢部 地名: +おやま 小山 苗字: +おやま 小山 地名: +おやもと 親元 代1: +おやゆび 親指 代1: +おゆ お湯 代1: +およ 泳 ガ五8: +およ 及 バ五5: +およそ およそ 代6: +および および 接続: +および 及び 接続: +およぼ 及ぼ サ五5: +おらんうーたん オランウータン 名1: +おらんだ オランダ 地名: +おり 下り 一段2: +おり 降り 一段2: +おり 折 代1: +おり 澱 代1: +おりあ 折り合 ワ五7: +おりえんと オリエント 名1: +おりおり 折々 代6: +おりかえ 折り返 サ五7: +おりかさな 折り重な ラ五3: +おりがみ 折り紙 代1: +おりこ 折り込 マ五7: +おりこ 織り込 マ五7: +おりしも 折しも 副1: +おりじなる オリジナル 名8: +おりたた 折り畳 マ五7: +おりはら 折原 苗字: +おりめ 折り目 名1: +おりもの 織物 名1: +おりんぱす オリンパス 企業: +おりんぴっく オリンピック 名1: +おれ 俺 代1: +おれい お礼 代4: +おれい 御礼 代4: +おれせん 折れ線 名1: +おれまが 折れ曲が ラ五7: +おれんじ オレンジ 名1: +おろ 下ろ サ五7: +おろ 降ろ サ五7: +おろ 卸 サ五7: +おろか 愚か 形動4: +おろし 卸 代1: +おろしうり 卸売 名6: +おろしね 卸値 名1: +おろそか 疎か 形動1: +おわ 終わ ラ五7: +おわせ 尾鷲 地名: +おわり 終 代1: +おわり 尾張 地名: +おわりあさひ 尾張旭 地名: +おん 恩 代1: +おん 音 代1: +おん オン 代4: +おん 遠 単漢: +おん 温 単漢: +おん 穏 単漢: +おん 御 単漢: +おんいん 音韻 名1: +おんかい 音階 名1: +おんかん 音感 名1: +おんが 遠賀 地名: +おんがえし 恩返し 代4: +おんがく 音楽 名1: +おんきゅう 恩給 名1: +おんきょう 音響 名1: +おんけい 恩恵 名1: +おんけん 穏健 名8: +おんこ 恩顧 名1: +おんこう 温厚 名8: +おんし 恩師 名1: +おんしつ 温室 名1: +おんしつ 音質 名1: +おんしゃ 御社 名1: +おんしょう 温床 名1: +おんしん 音信 名1: +おんじゅく 御宿 苗字: +おんじゅく 御宿 地名: +おんじょう 温情 名1: +おんじん 恩人 名1: +おんすい 温水 名1: +おんせい 音声 名1: +おんせつ 音節 名1: +おんせん 温泉 名1: +おんぞうし 御曹司 名1: +おんぞん 温存 名6: +おんたい 温帯 名1: +おんだ 恩田 苗字: +おんだん 温暖 名8: +おんち 音痴 名1: +おんちゅう 御中 接尾1: +おんてい 音程 名1: +おんとう 穏当 形動1: +おんど 温度 名1: +おんど 音頭 名1: +おんど 音戸 地名: +おんどけい 温度計 名1: +おんな 女 名1: +おんな 恩納 地名: +おんなじ おんなじ 形動1:連体: +おんなのこ 女の子 代1: +おんねん 怨念 名1: +おんぱ 音波 名1: +おんびん 穏便 形動4: +おんびん 音便 名1: +おんぶ おんぶ 代4: +おんぷ 音符 名1: +おんべつ 音別 地名: +おんみつ 隠密 名8: +おんよみ 音読み 代4: +おんらいん オンライン 名1: +おんりー オンリー 名1: +おんりょう 音量 名1: +おんれい 御礼 名6: +おんわ 温和 名8: +おんわ 穏和 名8: +か 書 カ五8: +か 欠 カ五3: +か 掻 カ五7: +か 描 カ五8: +か 貸 サ五8: +か 買 ワ五8: +か 飼 ワ五6: +か 勝 タ五8: +か 噛 マ五7: +か 刈 ラ五7: +か 狩 ラ五7: +か 苅 ラ五7: +か 駆 ラ五3: +か 日 助数2: +か 課 助数:接尾1:サ五5:サ変: +か 蚊 代1: +か 香 代1: +か 可 代1: +か 火 代1: +か 家 接尾1: +か 価 接尾1: +か 下 接尾1: +か 化 接尾1:サ五1:サ変: +か 科 接尾1:サ五1:サ変: +か 架 サ変: +か 歌 代1: +か 渦 単漢: +か 果 単漢: +か 加 単漢: +か 嫁 単漢: +か 仮 単漢: +か 何 単漢: +か 伽 単漢: +か 佳 単漢: +か 嘉 単漢: +か 夏 単漢: +か 寡 単漢: +か 暇 単漢: +か 河 単漢: +か 珂 単漢: +か 禍 単漢: +か 禾 単漢: +か 稼 単漢: +か 箇 単漢: +か 花 単漢: +か 苛 単漢: +か 茄 単漢: +か 荷 単漢: +か 華 単漢: +か 菓 単漢: +か 蝦 単漢: +か 嘩 単漢: +か 貨 単漢: +か 迦 単漢: +か 過 単漢: +か 霞 単漢: +か 靴 単漢: +か 卦 単漢: +か 袈 単漢: +か 鹿 単漢: +か 彼 単漢: +か 掛 単漢: +かー カー 名1: +かーそる カーソル 名1: +かーとりっじ カートリッジ 名1: +かーど カード 名1: +かーにばる カーニバル 名1: +かーねる カーネル 名1: +かーぶ カーブ 代4: +かーる カール 代4: +かあさん 母さん 名2: +かあちゃん 母ちゃん 名2: +かい 貝 代1: +かい 下位 代1: +かい 甲斐 代1: +かい 回 代1:助数: +かい 階 代1: +かい 階 助数2: +かい 会 代3: +かい 会 サ変:サ五5: +かい 海 接尾1: +かい 界 接尾1: +かい 介 サ変:サ五5: +かい 怪 代1: +かい 解 代4: +かい 塊 代1: +かい 開 単漢: +かい 絵 単漢: +かい 壊 単漢: +かい 廻 単漢: +かい 快 単漢: +かい 悔 単漢: +かい 恢 単漢: +かい 懐 単漢: +かい 戒 単漢: +かい 拐 単漢: +かい 改 単漢: +かい 魁 単漢: +かい 晦 単漢: +かい 械 単漢: +かい 灰 単漢: +かい 皆 単漢: +かい 芥 単漢: +かい 潰 単漢: +かい 蟹 単漢: +かいあく 改悪 名6: +かいあげ 買い上げ 一段4: +かいいき 海域 名1: +かいいれ 買い入れ 一段4: +かいいん 会員 名1: +かいいん 改印 代4: +かいうん 開運 名7: +かいうん 海運 名1: +かいえん 開園 名6: +かいえん 開演 名7: +かいえん 開宴 名7: +かいおうせい 海王星 名1: +かいか 開化 名6: +かいか 階下 名1: +かいか 開花 名6: +かいかい 開会 名6: +かいかえ 買い替え 一段3: +かいかく 改革 名7: +かいかけ 買掛 名1: +かいかつ 快活 形動4: +かいかん 会館 名1: +かいかん 快感 名1: +かいかん 開館 代4: +かいかん 会舘 名1: +かいが 絵画 名1: +かいがい 海外 名1: +かいがら 貝殻 代1: +かいがん 海岸 名1: +かいがん 開眼 代4: +かいがんせん 海岸線 名1: +かいき 会期 名1: +かいき 皆既 名1: +かいき 回帰 名6: +かいき 快気 名6: +かいき 怪奇 名8: +かいき 回忌 助数2: +かいき 買い切 ラ五7: +かいきしょく 皆既食 名1: +かいきせん 回帰線 名1: +かいきゅう 階級 名1:助数2: +かいきゅう 懐旧 名6: +かいきょ 快挙 名1: +かいきょう 海峡 名1: +かいきょう 回教 名1: +かいきょく 開局 名7: +かいきん 解禁 名6: +かいきん 皆勤 名6: +かいぎ 会議 名6: +かいぎ 懐疑 名6: +かいぎゃく 諧謔 名1: +かいぎょう 開業 名7: +かいぎょう 改行 名6: +かいぎょうい 開業医 名1: +かいぐん 海軍 名1: +かいけい 会計 名2: +かいけつ 解決 名6: +かいけつさく 解決策 名1: +かいけん 会見 名6: +かいけん 改憲 名1: +かいげんれい 戒厳令 名1: +かいこ 解雇 名6: +かいこ 回顧 名6: +かいこ 懐古 名6: +かいこ 蚕 代1: +かいこ 買い込 マ五7: +かいこう 開口 名1: +かいこう 開校 名6: +かいこう 開港 名6: +かいこう 海港 名1: +かいこう 回航 名6: +かいこう 海溝 名1: +かいこう 邂逅 名6: +かいこん 悔恨 名6: +かいこん 開墾 名6: +かいご 介護 名7: +かいごう 会合 名6: +かいさい 開催 名7: +かいさく 改作 名6: +かいさつ 改札 名6: +かいさん 解散 名6: +かいさんぶつ 海産物 名1: +かいざい 介在 名6: +かいし 開始 名6: +かいし 会誌 名1: +かいしめ 買い占め 一段3: +かいしめ 買占め 名1: +かいしゃ 会社 名1: +かいしゃく 解釈 名6: +かいしゅう 回収 名6: +かいしゅう 改修 名6: +かいしょう 解消 名6: +かいしょう 甲斐性 名1: +かいしょう 改称 名6: +かいしょく 会食 名6: +かいしょく 解職 名6: +かいしん 会心 名1: +かいしん 改心 名7: +かいしん 改新 名6: +かいしん 回診 名6: +かいじ 開示 名6: +かいじゅう 怪獣 名1: +かいじょ 解除 名7: +かいじょう 会場 名1: +かいじょう 海上 名1:地名: +かいじょう 開場 名6: +かいじょう 階上 名1: +かいじょう 階乗 名1: +かいすい 海水 名1: +かいすいよく 海水浴 名1: +かいすう 回数 名1: +かいせ 貝瀬 苗字: +かいせい 改正 名6: +かいせい 改姓 名6: +かいせい 快晴 名1: +かいせい 開成 地名: +かいせい 回生 助数2: +かいせき 解析 名6: +かいせき 会席 名1: +かいせつ 解説 名7: +かいせつ 開設 名6: +かいせつ 回折 代4: +かいせん 回線 名1: +かいせん 改選 名6: +かいせん 回旋 名6: +かいせん 会戦 名6: +かいせん 開戦 名6: +かいせん 回戦 助数: +かいぜん 改善 名6: +かいそ 改組 名6: +かいそう 改装 名6: +かいそう 階層 名1: +かいそう 回想 名6: +かいそう 回送 名6: +かいそう 快走 名6: +かいそう 会葬 名6: +かいそう 海草 名1: +かいそう 海草 地名: +かいそう 海藻 名1: +かいそく 快速 名8: +かいそく 会則 名1: +かいぞう 改造 名6: +かいぞく 海賊 名1: +かいた 頴田 地名: +かいた 海田 地名: +かいたい 解体 名6: +かいたく 開拓 名6: +かいだ 開田 地名: +かいだい 改題 代4: +かいだい 解題 名1: +かいだく 快諾 名7: +かいだめ 買い貯め 代4: +かいだん 会談 名6: +かいだん 階段 名1: +かいだん 怪談 名1: +かいちく 改築 名6: +かいちゅう 懐中 名6: +かいちゅう 海中 名1: +かいちょう 会長 代2: +かいちょう 快調 名8: +かいつう 開通 名6: +かいつけ 買付け 一段3: +かいづ 海津 地名: +かいづか 貝塚 苗字: +かいづか 貝塚 地名: +かいて 買い手 名1: +かいてい 改定 名6: +かいてい 改訂 名6: +かいてい 海底 名1: +かいてい 開廷 名6: +かいてき 快適 名8: +かいてん 回転 名6: +かいてん 開店 名7: +かいと 買い取 ラ五7: +かいとう 解答 名7: +かいとう 回答 名7: +かいとう 解凍 名6: +かいとう 会頭 名1: +かいどう 街道 名1: +かいどう 会堂 名1: +かいどく 解読 名7: +かいどく 買い得 名9: +かいなら 飼い慣ら サ五7: +かいなん 海難 名1: +かいなん 海南 地名: +かいにゅう 介入 名6: +かいにん 解任 名6: +かいにん 懐妊 名7: +かいぬし 飼い主 名1: +かいね 買値 名1: +かいはい 改廃 名6: +かいはつ 開発 名6: +かいはん 改版 名6: +かいばつ 海抜 名1: +かいばら 柏原 地名: +かいひ 会費 名1: +かいひ 回避 名6: +かいひょう 開票 名6: +かいひん 海浜 名1: +かいふ 回付 名6: +かいふ 海部 苗字: +かいふ 海部 地名: +かいふう 開封 名7: +かいふく 回復 名7: +かいふく 快復 名6: +かいぶつ 怪物 名1: +かいぶんしょ 怪文書 名1: +かいへい 開閉 名6: +かいへん 改変 名6: +かいへん 改編 名6: +かいほう 開放 名6: +かいほう 解放 名6: +かいほう 介抱 名7: +かいほう 会報 名1: +かいほう 解法 代4: +かいほう 快方 名1: +かいぼう 解剖 名6: +かいまく 開幕 名6: +かいまみ かいま見 一段1: +かいみん 快眠 名1: +かいむ 皆無 名8: +かいめい 解明 名6: +かいめい 改名 名6: +かいめつ 壊滅 名6: +かいめん 海面 名1: +かいめん 界面 名1: +かいもど 買い戻 サ五7: +かいもの 買物 名5: +かいもの 買いもの 名5: +かいもん 開門 名6: +かいもん 開聞 地名: +かいもんだけ 開聞岳 地名: +かいやく 解約 名6: +かいゆう 回遊 名6: +かいよう 海洋 名1: +かいよう 潰瘍 名1: +かいらく 快楽 名1: +かいらん 回覧 名7: +かいり 海里 名1:助数2: +かいり 浬 助数2: +かいり 乖離 名6: +かいりく 海陸 名1: +かいりゅう 海流 名1: +かいりょう 改良 名6: +かいろ 回路 名1: +かいろ 海路 名1: +かいろう 回廊 名1: +かいわ 会話 名6: +かいわい 界隈 名1: +かいん 下院 名1: +かうんた カウンタ 名1: +かうんと カウント 名6:助数2: +かえ 返 サ五8:ラ五7: +かえ 帰 サ五7:ラ五8: +かえ 変え 一段4: +かえ 代え 一段4: +かえ 換え 一段4: +かえ 替え 一段4: +かえ かえ 一段2: +かえって かえって 副1: +かえって 却って 副1: +かえで 楓 代1: +かえりざ 返り咲 カ五7: +かえりみ 顧み 一段1: +かえりみ 省み 一段1: +かえる 蛙 代1: +かえん 火炎 名1: +かお 顔 代3: +かお 香 ラ五1: +かお 薫 ラ五1: +かおあわせ 顔合せ 代4: +かおいろ 顔色 名1: +かおう 花王 企業: +かおう 鹿央 地名: +かおく 家屋 名1: +かおだち 顔立ち 代1: +かおぶれ 顔ぶれ 代1: +かおみしり 顔見知り 代1: +かおむけ 顔向け 代4: +かおやく 顔役 名1: +かおり 香織 名前: +かおる かおる 名前: +かおる 馨 名前: +かおる 薫 名前: +かおる 香 名前: +かか かか ラ五5: +かか 架か ラ五5: +かか 掛か ラ五5: +かか 係 ラ五7: +かか 欠か サ五5: +かか 懸か ラ五5: +かかえ 抱え 一段2: +かかく 価格 名1: +かかげ 掲げ 一段2: +かかぢ 香々地 地名: +かかみがはら 各務原 地名: +かかり 係 代1: +かかりいん 係員 名1: +かかりかん 係官 名1: +かかりちょう 係長 代2: +かかわ かかわ ラ五7: +かかわ 関わ ラ五7: +かかわ 係わ ラ五7: +かが かが マ五1: +かが 屈 マ五1: +かが 加賀 地名: +かが 加賀 苗字: +かがい 加害 名1: +かがい 課外 名1: +かがく 科学 名4: +かがく 化学 名4: +かがみ 鏡 名2: +かがみ 香我美 地名: +かがみいし 鏡石 地名: +かがみの 鏡野 地名: +かがや 輝 カ五7: +かがやかし 輝かし 形3: +かがわ 香川 苗字: +かがわ 香川 地名: +かき 下記 名1: +かき 夏期 名1: +かき 夏季 名1: +かき 火気 名1: +かき 花器 名1: +かき 牡蛎 代1: +かき 柿 代1: +かき 垣 代1: +かき 堵 単漢: +かき 蛎 単漢: +かきあげ 書き上げ 一段3: +かきあげ かき揚げ 一段3: +かきあつめ かき集め 一段3: +かきあらわ 書き表 サ五5: +かきいれ 書き入れ 一段3: +かきお 書き置 カ五3: +かきおと 書き落と サ五7: +かきかえ 書き換え 一段3: +かきかえ 書換え 名1: +かきかた 書き方 代1: +かきくだ 書き下 サ五7: +かきけ かき消 サ五5: +かきこ 書き込 マ五8: +かきざき 柿崎 苗字: +かきそえ 書き添え 一段2: +かきぞめ 書初め 名1: +かきたて 書き立て 一段1: +かきだ 書き出 サ五7: +かきつけ 書付け 一段3: +かきと 書き取 ラ五7: +かきとめ 書き留め 一段3: +かきとめ 書留 名1: +かきぬ 書き抜 カ五3: +かきぬま 柿沼 苗字: +かきね 垣根 代1: +かきのき 柿木 地名: +かきのこ 書き残 サ五7: +かきまぜ かき混ぜ 一段4: +かきまわ かき回 サ五7: +かきみだ かき乱 サ五7: +かきゅう 下級 名1: +かきゅう 火急 代5: +かきょう 佳境 名1: +かきょう 架橋 名1: +かきょう 華僑 名1: +かきよせ かき寄せ 一段1: +かきわけ かき分け 一段3: +かぎ 鍵 代1: +かぎ 鈎 代1: +かぎ 限 ラ五7: +かぎゃく 可逆 名1: +かぎょう 家業 名1: +かぎょう 稼業 名1: +かぎりな 限りな 形1: +かく 各 接頭5: +かく かく 代6: +かく 隠 サ五8: +かく 画 代1:助数2:サ五1: +かく 格 代1: +かく 核 代1: +かく 角 代1: +かく 郭 代1: +かく 劃 単漢: +かく 嚇 単漢: +かく 廓 単漢: +かく 拡 単漢: +かく 撹 単漢: +かく 殻 単漢: +かく 獲 単漢: +かく 確 単漢: +かく 穫 単漢: +かく 覚 単漢: +かく 赫 単漢: +かく 較 単漢: +かく 閣 単漢: +かく 隔 単漢: +かく 革 単漢: +かく 掴 単漢: +かく 鶴 単漢: +かく 塙 単漢: +かくあげ 格上げ 代4: +かくい 各位 接尾1: +かくいん 各員 名1: +かくう 架空 名8: +かくえき 各駅 名1: +かくか 各課 代1: +かくかい 各階 名1: +かくぎ 閣議 名1: +かくけん 各県 名1: +かくげつ 隔月 名1: +かくげん 格言 名1: +かくげん 確言 名7: +かくこう 各項 名1: +かくこう 各校 名1: +かくご 覚悟 名7: +かくさ 格差 名1: +かくさく 画策 名6: +かくさげ 格下げ 代4: +かくさん 拡散 名6: +かくさん 核酸 名1: +かくし 各紙 代1: +かくし 各市 代1: +かくしき 格式 名1: +かくしつ 確執 代4: +かくしつ 角質 名4: +かくしつ 各室 名1: +かくして かくして 接続: +かくしゃ 各社 代1: +かくしゅ 各種 名1: +かくしゅう 各週 名1: +かくしゅう 隔週 名1: +かくしょ 各所 名1: +かくしょ 各署 名1: +かくしょう 確証 名3: +かくしょうちょう 各省庁 名1: +かくしん 確信 名7: +かくしん 革新 名6: +かくしん 核心 名1: +かくじ 各自 名1: +かくじっけん 核実験 代3: +かくじつ 確実 名8: +かくじつ 隔日 名1: +かくじゅう 拡充 名6: +かくじん 各人 名1: +かくすう 画数 名1: +かくせいざい 覚醒剤 名1: +かくせんそう 核戦争 代1: +かくぜつ 隔絶 名6: +かくぜん 画然 形動2: +かくた 角田 苗字: +かくだ 角田 地名: +かくだい 拡大 名6: +かくだん 格段 代5: +かくち 各地 名1: +かくちょう 拡張 名6: +かくちょう 格調 名1: +かくつき 各月 名1: +かくづけ 格付け 一段1: +かくてい 確定 名6: +かくてん 各店 代1: +かくとう 格闘 名6: +かくとう 確答 名6: +かくとく 獲得 名6: +かくど 角度 名1: +かくど 確度 名1: +かくない 閣内 名1: +かくにん 確認 名7: +かくねん 隔年 名1: +かくのう 格納 名6: +かくのだて 角館 地名: +かくは 各派 名1: +かくはん 撹拌 名6: +かくはん 各般 名1: +かくぶ 各部 名1: +かくぶんれつ 核分裂 名6: +かくへいき 核兵器 名1: +かくべつ 格別 代5: +かくほ 確保 名6: +かくほう 確報 名1: +かくまく 角膜 名1: +かくめい 革命 名6: +かくやく 確約 名6: +かくやす 格安 名8: +かくゆうごう 核融合 名6: +かくり 隔離 名6: +かくりつ 確率 名1: +かくりつ 確立 名6: +かくりょう 閣僚 名1: +かくれ 隠れ 一段2: +かくれんぼ かくれんぼ 代1: +かくろん 各論 名1: +かぐ 家具 名1: +かぐら 神楽 名1: +かけ かけ 一段2: +かけ 架け 一段2: +かけ 懸け 一段2: +かけ 欠け 一段3: +かけ 掛け 一段4: +かけ 賭け 一段4: +かけ 駆け 一段1: +かけ 加計 地名: +かけあ 掛け合 ワ五3: +かけあし 駆け足 代4: +かけい 家計 名1: +かけい 家系 名1: +かけい 筧 単漢: +かけいぼ 家計簿 名1: +かけおち 駆け落ち 代4: +かけがわ 掛川 地名: +かけがわ 掛川 苗字: +かけきん 掛金 名1: +かけこ 駆け込 マ五7: +かけごえ かけ声 名1: +かけごと 賭事 名1: +かけざん かけ算 名1: +かけじく 掛軸 名1: +かけず 掛図 名1: +かけずりまわ 駆けずり回 ラ五1: +かけずりまわ 駆けずりまわ ラ五1: +かけつ 可決 名6: +かけつけ 駆けつけ 一段4: +かけぬけ 駆け抜け 一段3: +かけはし 架け橋 名1: +かけはなれ かけ離れ 一段3: +かけひき 駆け引き 代1: +かけひき 駆引き 代1: +かけまわ 駆け回 ラ五5: +かけもち 掛持ち 代4: +かけや 掛合 地名: +かけよ 駆け寄 ラ五7: +かけら かけら 代1: +かける × 単漢: +かけん 科研 企業: +かげ 陰 名2:ラ五3: +かげ 蔭 名2: +かげ 影 代1: +かげ 鹿毛 苗字: +かげえ 影絵 名1: +かげき 過激 名8: +かげき 歌劇 名1: +かげぐち 陰口 名1: +かげつ ヶ月 助数2: +かげぼし 陰干し 代4: +かげやま 影山 苗字: +かげろう 陽炎 代1: +かげん 加減 名5: +かげん 下限 名1: +かげん 下弦 名1: +かげんじょうじょ 加減乗除 名5: +かこ 過去 名1: +かこ 囲 マ五8:ワ五8: +かこ 加古 地名: +かこう 加工 名6: +かこう 下降 名6: +かこう 河口 名1: +かこう 火口 名1: +かこうせん 下降線 名1: +かこがわ 加古川 地名: +かこく 苛酷 代5: +かこく 過酷 代5: +かこく ヶ国 助数2: +かご 籠 代1: +かご 篭 単漢: +かごう 化合 名6: +かごうぶつ 化合物 名1: +かごしま 鹿児島 地名: +かごたに 篭谷 苗字: +かごめ カゴメ 企業: +かごん 過言 名1: +かさ 傘 代1: +かさ 笠 代1: +かさ 嵩 代1:マ五1: +かさ 加佐 地名: +かさい 火災 名1: +かさい 家裁 名1: +かさい 葛西 苗字: +かさい 葛西 地名: +かさい 笠井 苗字: +かさい 加西 地名: +かさい 河西 苗字: +かさい 河西 地名: +かさおか 笠岡 苗字: +かさおか 笠岡 地名: +かさかけ 笠懸 地名: +かさぎ 笠置 苗字: +かさぎ 笠置 地名: +かさく 佳作 名1: +かささ 笠沙 地名: +かさな 重な ラ五3: +かさね 重ね 一段3: +かさはら 笠原 苗字: +かさま 笠間 苗字: +かさま 笠間 地名: +かさまつ 笠松 苗字: +かさり 笠利 地名: +かさん 加算 名6: +かざ 飾 ラ五8: +かざい 家財 名1: +かざかみ 風上 名1: +かざぐるま 風車 代1: +かざしも 風下 名1: +かざま 風間 苗字: +かざまうら 風間浦 地名: +かざみ 風見 苗字: +かざむき 風向き 代1: +かざりつけ 飾り付け 一段3:サ変: +かざん 火山 名1: +かし 菓子 名2: +かし 歌詞 名1: +かし 可視 名1: +かし 河岸 名1: +かし 瑕疵 名1: +かし 華氏 名1: +かし 仮死 名1: +かし 樫 名1: +かし 橿 単漢: +かしお カシオ 企業: +かしかた 貸方 代1: +かしきり 貸切り 名1: +かしきん 貸し金 名1: +かしげ 傾げ 一段2: +かしげ かしげ 一段2: +かしこ 賢 形3: +かしこ 貸し越 サ五1: +かしだ 貸し出 サ五8: +かしちん 貸賃 名1: +かしつ 過失 名1: +かしつけ 貸し付け 一段3: +かしはら 橿原 地名: +かしば 香芝 地名: +かしほん 貸本 代1: +かしま 貸間 名1: +かしま 嘉島 地名: +かしま 鹿島 地名: +かしま 鹿島 苗字: +かしまだい 鹿島台 地名: +かしも 加子母 地名: +かしゃ 貨車 名1: +かしや 貸家 名1: +かしゅ 歌手 名1: +かしゅう 歌集 名1: +かしょ 個所 名1: +かしょ 箇所 助数2: +かしょ ヶ所 助数2: +かしょう 仮称 名6: +かしょう 歌唱 名6: +かしょう 過小 名8: +かしょう 過少 名8: +かしょく 過食 名6: +かしら 頭 代1: +かしわ 柏 名1: +かしわ 柏 地名: +かしわ 栢 単漢: +かしわぎ 柏木 苗字: +かしわざき 柏崎 苗字: +かしわざき 柏崎 地名: +かしわばら 柏原 苗字: +かしわら 柏原 苗字: +かしわら 柏原 地名: +かしん 家臣 名1: +かしん 過信 名6: +かじ 火事 代1: +かじ 家事 代1: +かじ 鍛冶 代1: +かじ 舵 代1: +かじ 柁 代1: +かじ 梶 代1: +かじ かじ ラ五5: +かじい 梶井 苗字: +かじうら 梶浦 苗字: +かじか 鰍 代1: +かじか 鮖 単漢: +かじかざわ 鰍沢 地名: +かじき 加治木 地名: +かじたに 梶谷 苗字: +かじつ 果実 名1: +かじつ 佳日 名1: +かじつ 過日 代6: +かじはら 梶原 苗字: +かじま 鹿島 苗字: +かじもと 梶本 苗字: +かじゅ 果樹 名1: +かじゅう 加重 代4: +かじゅう 果汁 名1: +かじゅう 荷重 名1: +かじゅう 過重 代5: +かじょ 加除 名6: +かじょう 過剰 名8: +かじょう ヶ条 助数: +かじょう 箇条 名1: +かじょうがき 箇条書 代1: +かじわら 梶原 苗字: +かじん 歌人 名1: +かす 霞 マ五3: +かす 掠 ラ五3: +かす 糟 代1: +かす 粕 代1: +かすい 下垂 名6: +かすいぶんかい 加水分解 名6: +かすか かすか 形動1: +かすか 微か 形動1: +かすかべ 春日部 地名: +かすかわ 粕川 苗字: +かすかわ 粕川 地名: +かすが 春日 苗字: +かすが 春日 地名: +かすがい 春日井 苗字: +かすがい 春日井 地名: +かすがい 春日居 地名: +かすたまいず カスタマイズ 代4: +かすたむ カスタム 名1: +かすてら カステラ 名1: +かすみ 霞 代1: +かすみ 香住 地名: +かすみがうら 霞ヶ浦 地名: +かすみがせき 霞ヶ関 地名: +かすや 粕屋 地名: +かすや 粕谷 苗字: +かず 数 名1: +かず 下図 名1: +かず 和 単漢: +かずあき 和明 名前: +かずえ 和恵 名前: +かずえ 和枝 名前: +かずお 一男 名前: +かずお 一夫 名前: +かずお 一雄 名前: +かずお 和男 名前: +かずお 和夫 名前: +かずお 和雄 名前: +かずおお 数多 形2: +かずおおく 数多く 副7: +かずかず 数々 代6: +かずき 一樹 名前: +かずこ 和子 名前: +かずさ 上総 苗字: +かずさ 上総 地名: +かずしげ 和茂 名前: +かずすくな 数少な 形2: +かずのこ 鯑 代1: +かずのり 一憲 名前: +かずひこ 一彦 名前: +かずひこ 和彦 名前: +かずひさ 一久 名前: +かずひさ 和久 名前: +かずひで 和秀 名前: +かずひろ 一宏 名前: +かずひろ 一弘 名前: +かずひろ 一博 名前: +かずひろ 和弘 名前: +かずまさ 一正 名前: +かずまさ 和正 名前: +かずみ 一三 名前: +かずみ 一美 名前: +かずみ 和美 名前: +かずや 一也 名前: +かずや 和也 名前: +かずゆき 一行 名前: +かずゆき 和幸 名前: +かずよし 一義 名前: +かずよし 和義 名前: +かせ 加瀬 苗字: +かせ 稼 ガ五8: +かせ 枷 代1: +かせい 家政 名1: +かせい 火星 名1: +かせい 仮性 名1: +かせい 化成 代4: +かせい 加勢 代4: +かせき 化石 名1: +かせだ 加世田 地名: +かせっと カセット 名1: +かせつ 仮説 名1: +かせつ 仮設 名6: +かせつ 架設 名6: +かせん 下線 名1: +かせん 河川 名1: +かせん 化繊 名1: +かせん 寡占 名1: +かせん 架線 代4: +かぜ 風 名1: +かぜ 風邪 名2: +かぜい 課税 名6: +かぜいん カゼイン 名1: +かぜむき 風向き 代1: +かそ 過疎 名1: +かそう 仮想 名6: +かそう 仮装 名6: +かそう 火葬 名6: +かそう 下層 名1: +かそく 加速 名6: +かそくど 加速度 名1: +かぞ 加須 地名: +かぞえ 数え 一段4: +かぞく 家族 名3: +かた 語 ラ五7: +かた 固 形3: +かた 硬 形6: +かた 堅 形9: +かた 難 形2: +かた 方 名2:接尾1: +かた 肩 代1: +かた 型 代1: +かた 形 代1: +かた 潟 代1: +かた 片 代1: +かたあし 片足 名1: +かたいれ 肩入れ 代4: +かたうで 片腕 名1: +かたおか 片岡 苗字: +かたおもい 片思い 代1: +かたおもい 片想い 代1: +かたかな カタカナ 名1: +かたかな 片仮名 名1: +かたがき 肩書 名1: +かたがた 方々 代1: +かたがみ 型紙 代1: +かたがわ 片側 名1: +かたがわり 肩代り 代4: +かたぎ 気質 接尾1: +かたぎ 堅気 代5: +かたぎり 片桐 苗字: +かたく 仮託 代4: +かたく 家宅 代1: +かたくな かたくな 形動4: +かたくるし 堅苦し 形3: +かたこと 片言 名1: +かたこり 肩こり 代4: +かたしな 片品 地名: +かたすみ 片隅 名1: +かたち 形 代1: +かたちづく 形作 ラ五1: +かたづ 片付 カ五1: +かたづけ 片付け 一段4: +かたて 片手 名1: +かたとき 片時 名1: +かたど 型ど ラ五7: +かたどおり 型どおり 代5: +かたな 刀 代1: +かたの 交野 地名: +かたの 片野 苗字: +かたはし 片端 名1: +かたはば 肩幅 名1: +かたひがし 潟東 地名: +かたほう 片方 名1: +かたま 固ま ラ五3: +かたまち 片町 苗字: +かたまち 片町 地名: +かたまり 塊 代1: +かたみ 形見 名1: +かたみ 肩身 名1: +かたみち 片道 名1: +かたむ 傾 カ五3: +かため 固め 一段4: +かため 片目 名1: +かためん 片面 名1: +かたやぶり 型破り 代5: +かたやま 片山 苗字: +かたよ 偏 ラ五7: +かたら 語ら ワ五3: +かたりあ 語り合 ワ五7: +かたりつ 語り継 ガ五7: +かたろぐ カタログ 名1: +かたわら 傍ら 名1: +かたん 荷担 名6: +かたん 下端 名1: +かだい 課題 名1: +かだい 過大 名8: +かだん 花壇 名1: +かだん 歌壇 名1: +かち 価値 名1: +かちあ かち合 ワ五5: +かちかん 価値観 名1: +かちき 勝気 名8: +かちく 家畜 名1: +かちこ 勝越 サ五7: +かちすす 勝ち進 マ五7: +かちと かち取 ラ五5: +かちぬ 勝ち抜 カ五3: +かちぼし 勝ち星 代1: +かちまけ 勝ち負け 代1: +かちめ 勝ち目 代1: +かちゅう 渦中 名1: +かちょう 課長 代2: +かちょうきん 課徴金 名1: +かっか 閣下 接尾1: +かっかい 各界 名1: +かっき 活気 名1: +かっきてき 画期的 形動1: +かっきょう 活況 名1: +かっけつ 喀血 名6: +かっこ 各個 名1: +かっこ 括弧 代4: +かっこう 格好 名1: +かっこう 滑降 代4: +かっこく 各国 名1: +かっさい 喝采 代4: +かっしゃ 滑車 名1: +かっしょく 褐色 名1: +かっすい 渇水 名1: +かっせい 活性 名4: +かっせん 合戦 代1: +かっそう 滑走 名6: +かっそうろ 滑走路 名1: +かった 刈田 地名: +かったー カッター 名1: +かって かって 代6: +かって 勝手 名10: +かっと カット 代4: +かっとう 葛藤 代4: +かっぱ 河童 代1: +かっぱつ 活発 形動4: +かっぱん 活版 名1: +かっぷ 割賦 名1: +かっぷる カップル 名1: +かっぽう 割烹 名1: +かつ かつ 接続:ガ五7: +かつ 且つ 接続: +かつ 担 ガ五7: +かつ 活 代1: +かつ 割 単漢: +かつ 喝 単漢: +かつ 恰 単漢: +かつ 括 単漢: +かつ 渇 単漢: +かつ 滑 単漢: +かつ 葛 単漢: +かつ 褐 単漢: +かつ 轄 単漢: +かつ 克 単漢: +かつ 猾 単漢: +かつあい 割愛 名6: +かつあき 勝昭 名前: +かつうら 勝浦 地名: +かつお 勝男 名前: +かつお 勝夫 名前: +かつお 勝雄 名前: +かつお 鰹 代1: +かつぎこ かつぎ込 マ五7: +かつこ 克子 名前: +かつこ 勝子 名前: +かつしか 葛飾 地名: +かつじ 活字 名1: +かつじ 勝次 名前: +かつじ 勝治 名前: +かつじょう 割譲 名6: +かつぞう 勝三 名前: +かつた 勝田 苗字: +かつた 勝田 地名: +かつて かつて 副7: +かつとし 勝利 名前: +かつどう 活動 名6: +かつぬま 勝沼 地名: +かつひこ 克彦 名前: +かつひこ 勝彦 名前: +かつひさ 勝久 名前: +かつぼう 渇望 名6: +かつまた 勝又 苗字: +かつみ 克美 名前: +かつみ 克巳 名前: +かつみ 勝美 名前: +かつみ 勝巳 名前: +かつもと 勝本 苗字: +かつや 勝也 名前: +かつやく 活躍 名7: +かつやま 勝山 苗字: +かつやま 勝山 地名: +かつよう 活用 名7: +かつら 桂 代1:苗字: +かつらお 葛尾 地名: +かつらぎ かつらぎ 地名: +かつらぎ 葛城 苗字: +かつらぎ 葛城 地名: +かつりょく 活力 名1: +かつれん 勝連 地名: +かつろ 活路 名1: +かづけ 日付 助数2: +かづさ 加津佐 地名: +かづの 鹿角 地名: +かて 糧 代1: +かてい 家庭 名3: +かてい 仮定 名6: +かてい 課程 名1: +かてい 過程 名1: +かていか 家庭科 名1: +かてごり カテゴリ 名1: +かでな 嘉手納 地名: +かでん 家電 名1: +かでん 家伝 名1: +かと 過渡 名4: +かとう 下等 代5: +かとう 過当 代5: +かとう 果糖 代1: +かとう 加藤 苗字: +かとう 加東 地名: +かとう 河東 地名: +かとき 過渡期 名1: +かとく 家督 名1: +かとり 香取 苗字: +かとり 香取 地名: +かとりっく カトリック 名1: +かど 角 代1: +かど 門 代1: +かど 過度 形動9: +かどう 稼働 名6: +かどう 華道 名1: +かどかわ 角川 苗字: +かどがわ 門川 地名: +かどで 門出 代4: +かどま 門真 地名: +かどまつ 門松 名1: +かどみうむ カドミウム 名1: +かどわき 門脇 苗字: +かな 仮名 名1: +かな かな 名1:ワ五5: +かな 叶 ワ五5: +かな 金 単漢: +かな 哉 単漢: +かなあみ 金網 名1: +かない 家内 名1: +かない 金井 苗字: +かなえ 鼎 単漢: +かながわ 神奈川 地名: +かなぎ 金城 地名: +かなぎ 金木 地名: +かなぐ 金具 名1: +かなさき 金崎 地名: +かなさごう 金砂郷 地名: +かなざわ 金沢 地名: +かなざわ 金沢 苗字: +かなし 悲し 形9:マ五8: +かなし 哀し 形9:マ五8: +かなた 彼方 代1: +かなだ カナダ 地名: +かなだ 金田 苗字: +かなだ 金田 地名: +かなづ 金津 苗字: +かなづ 金津 地名: +かなで 奏で 一段2: +かなまる 金丸 苗字: +かなめ 要 代1: +かなもの 金物 名1: +かなもり 金森 苗字: +かなや 金屋 地名: +かなや 金谷 苗字: +かなやま 金山 苗字: +かならず 必ず 代6: +かならずしも 必ずしも 副1: +かなり かなり 代6: +かなん 河南 地名: +かに 蟹 代1: +かに 可児 地名: +かにえ 蟹江 苗字: +かにざ 蟹座 代1: +かにた 蟹田 地名: +かにゅう 加入 名7: +かぬま 鹿沼 地名: +かね 金 名2: +かね 鐘 代1: +かね かね 一段1: +かね 兼ね 一段1: +かねあい 兼ね合い 代1: +かねがさき 金ヶ崎 地名: +かねがね かねがね 副1: +かねこ 金子 苗字: +かねそなえ 兼ね備え 一段3: +かねだ 金田 苗字: +かねつ 加熱 名6: +かねつ 過熱 名6: +かねづかい 金遣い 代1: +かねまる 金丸 苗字: +かねまわり 金回り 代1: +かねみつ 金光 名前: +かねもうけ 金儲け 代4: +かねもち 金持ち 名2: +かねやま 金山 地名: +かねやま 兼山 地名: +かねん ヶ年 助数2: +かの 鹿野 苗字: +かのあし 鹿足 地名: +かのう 可能 名8: +かのう 化膿 名6: +かのう 加納 苗字: +かのうせい 可能性 名1: +かのじょ 彼女 代1: +かのせ 鹿瀬 地名: +かのや 鹿屋 地名: +かはん 過半 代1: +かはん 可搬 代1: +かはんしん 下半身 名1: +かはんすう 過半数 代1: +かば 庇 ワ五1: +かば 樺 代1: +かば 椛 単漢: +かばー カバー 代4: +かばと 樺戸 地名: +かばね 屍 代1: +かばん 鞄 代1: +かひ 可否 名1: +かひつ 加筆 名6: +かひょう 下表 名1: +かび 華美 代5: +かび カビ 代1: +かびん 花瓶 名1: +かびん 過敏 名8: +かふう 家風 名1: +かふぇいん カフェイン 名1: +かふぇてりあ カフェテリア 名1: +かふそく 過不足 名1: +かふん 花粉 名1: +かぶ 株 名2:助数2: +かぶ 蕪 名1: +かぶ 下部 名1: +かぶ 被 ラ五7: +かぶか 株価 名1: +かぶき 歌舞伎 名1: +かぶけん 株券 名1: +かぶしき 株式 名1: +かぶしきがいしゃ 株式会社 代1: +かぶせ かぶせ 一段2: +かぶと 兜 代1: +かぶと 甲 代1: +かぶぬし 株主 名1: +かぶら 鏑 代1: +かぶら 蕪 代1: +かぶん 寡聞 名1: +かぶん 過分 名8: +かぷせる カプセル 名1: +かへい 貨幣 名1: +かへん 可変 名1: +かべ 壁 名1: +かべん 花弁 名1: +かほ 嘉穂 地名: +かほう 家宝 名1: +かほう 加法 名1: +かほく 河北 地名: +かほく 香北 地名: +かほく 鹿北 地名: +かほご 過保護 名1: +かぼちゃ かぼちゃ 代1: +かま 釜 名2: +かま 鎌 代1: +かま 窯 代1: +かま かま ワ五1: +かま 構 ワ五1: +かま 竃 単漢: +かま 蒲 単漢: +かまいし 釜石 地名: +かまえ 蒲江 地名: +かまえ 構え 一段4: +かまがや 鎌ヶ谷 苗字: +かまがや 鎌ヶ谷 地名: +かまがり 蒲刈 地名: +かまくら 鎌倉 地名: +かまた 蒲田 苗字: +かまた 蒲田 地名: +かまた 鎌田 苗字: +かみ 紙 代1: +かみ 上 代1:接頭2: +かみ 神 代1: +かみ 髪 代1: +かみ 加味 代4: +かみ 加美 地名: +かみ 可美 地名: +かみ 香美 地名: +かみあがた 上県 地名: +かみいしづ 上石津 地名: +かみいずみ 神泉 地名: +かみいそ 上磯 地名: +かみいた 上板 地名: +かみいち 上市 地名: +かみいな 上伊那 地名: +かみうけな 上浮穴 地名: +かみうら 上浦 地名: +かみおか 神岡 苗字: +かみおか 神岡 地名: +かみかつ 上勝 地名: +かみかわ 上川 苗字: +かみかわ 上川 地名: +かみかわ 神川 地名: +かみかわち 上河内 地名: +かみがた 上方 代1: +かみがた 髪型 代1: +かみき 上期 名1: +かみきた 上北 地名: +かみきたやま 上北山 地名: +かみぎょう 上京 地名: +かみくいしき 上九一色 地名: +かみくだ 噛み砕 カ五5: +かみこあに 上小阿仁 地名: +かみこしき 上甑 地名: +かみごとう 上五島 地名: +かみさいばら 上斉原 地名: +かみさと 上郷 地名: +かみさと 上里 地名: +かみさま 神様 代1: +かみざ 上座 代1: +かみしひ 上志比 地名: +かみしほろ 上士幌 地名: +かみしめ 噛みしめ 一段1: +かみじょう 上条 苗字: +かみす 神栖 地名: +かみすながわ 上砂川 地名: +かみそり 剃刀 名1: +かみたいら 上平 地名: +かみたかい 上高井 地名: +かみたから 上宝 地名: +かみだな 神棚 代1: +かみつ 過密 名8: +かみつが 上都賀 地名: +かみつしま 上対馬 地名: +かみて 上手 代1: +かみとんだ 上富田 地名: +かみなか 上中 苗字: +かみなか 上中 地名: +かみなか 上那賀 地名: +かみなり 雷 代1: +かみにいかわ 上新川 地名: +かみのかわ 上三川 地名: +かみのくに 上ノ国 地名: +かみのせき 上関 地名: +かみのほ 上之保 地名: +かみのやま 上山 苗字: +かみのやま 上山 地名: +かみはやし 神林 地名: +かみはんき 上半期 名1: +かみふくおか 上福岡 地名: +かみふらの 上富良野 地名: +かみへい 上閉伊 地名: +かみましき 上益城 地名: +かみみね 上峰 地名: +かみみのち 上水内 地名: +かみむら 上村 苗字: +かみや 神谷 苗字: +かみやく 上屋久 地名: +かみやちょう 神谷町 地名: +かみやはぎ 上矢作 地名: +かみやま 神山 苗字: +かみやまだ 上山田 地名: +かみゆうべつ 上湧別 地名: +かみん 仮眠 名6: +かめ 亀 代1: +かめ 瓶 代1: +かめい 加盟 名7: +かめい 仮名 名1: +かめい 家名 名1: +かめい 亀井 苗字: +かめおか 亀岡 苗字: +かめおか 亀岡 地名: +かめだ 亀田 苗字: +かめだ 亀田 地名: +かめやま 亀山 苗字: +かめやま 亀山 地名: +かめら カメラ 名1: +かめん 仮面 名1: +かも 醸 サ五1: +かも 鴨 名1: +かも 加茂 苗字: +かも 加茂 地名: +かも 賀茂 地名: +かもう 蒲生 地名: +かもえない 神恵内 地名: +かもがた 鴨方 地名: +かもがわ 加茂川 地名: +かもがわ 鴨川 地名: +かもく 科目 名1: +かもく 課目 名1: +かもしだ 醸し出 サ五5: +かもじま 鴨島 地名: +かもつ 貨物 名1: +かもつせん 貨物船 名1: +かもと 鹿本 地名: +かもめ 鴎 代1: +かもん 家紋 名1: +かや 蚊帳 代1: +かや 萱 代1: +かや 加悦 地名: +かや 茅 単漢: +かやく 火薬 名1: +かやべ 茅部 地名: +かゆ かゆ 形8: +かゆ 痒 形8: +かゆ 粥 名2: +かよ 佳代 名前: +かよ 通 ワ五8: +かよう 歌謡 名1: +かよう 火曜 名1: +かよう 賀陽 地名: +かようきょく 歌謡曲 名1: +かようび 火曜日 名1: +から 枯ら サ五7: +から 絡 マ五7: +から 辛 形11:単漢: +から 殻 代1: +から 空 代1:接頭1: +から 〜 代1: +から 唐 単漢: +からー カラー 名4: +からおけ カラオケ 名1: +からくち 辛口 名1: +からくり からくり 代1: +からくわ 唐桑 地名: +からさわ 唐沢 苗字: +からす 烏 代1: +からす カラス 代1: +からす 香良洲 地名: +からす 鴉 単漢: +からすま 烏丸 苗字: +からすやま 烏山 地名: +からだ 身体 名2: +からだ 体 名2: +からだ 躯 単漢: +からつ 唐津 地名: +からて 空手 代1: +からふと 樺太 地名: +からま 絡ま ラ五7: +からまわり 空回り 代4: +からみあ 絡み合 ワ五7: +かり 仮 代1:接頭1: +かり 雁 代1: +かり 借り 一段4: +かり 狩り 代1: +かり 狩 単漢: +かり 猟 単漢: +かりあげ 刈り上げ 一段3: +かりあげ 借り上げ 一段3: +かりあつめ かり集め 一段1: +かりいれ 借入れ 名1: +かりいれ 借り入れ 一段3: +かりいれ 刈り入れ 一段3: +かりうけ 借り受け 一段3: +かりかた 借方 名1: +かりき 借り切 ラ五7: +かりこ 刈り込 マ五7: +かりしょぶん 仮処分 名1: +かりすま カリスマ 名1: +かりずまい 仮住い 名1: +かりたて 駆り立て 一段3: +かりだ 駆り出 サ五7: +かりちょういん 仮調印 名6: +かりて 借り手 代1: +かりと 刈り取 ラ五7: +かりぬい 仮縫い 代4: +かりばらいきん 仮払金 名1: +かりふぉるにあ カリフォルニア 地名: +かりめんきょ 仮免許 名1: +かりや 刈谷 苗字: +かりや 刈谷 地名: +かりゅう 下流 名1: +かりゅう 顆粒 名1: +かりょう 科料 名1: +かりょう 加療 代4: +かりょく 火力 名1: +かりわ 刈羽 地名: +かる 軽 形6: +かるいざわ 軽井沢 地名: +かるがりー カルガリー 地名: +かるがる 軽々 副8: +かるがるし 軽々し 形3: +かるはずみ 軽はずみ 名8: +かるぴす カルピス 企業: +かるふぉるにあ カルフォルニア 地名: +かるまい 軽米 地名: +かるわざ 軽業 名1: +かれ 彼 代1: +かれ 枯れ 一段1: +かれ 渇れ 一段1: +かれー カレー 名1: +かれい 華麗 形動4: +かれい 鰈 代1: +かれき 枯木 名1: +かれし 彼氏 代1: +かれつ 苛烈 代5: +かれら 彼ら 代1: +かれん 可憐 代5: +かれんだー カレンダー 名1: +かれんと カレント 名1: +かろうじて かろうじて 副1: +かろやか 軽やか 形動4: +かろりー カロリー 名1:助数2: +かわ 川 代1: +かわ 河 代1: +かわ 革 代1: +かわ 皮 代1: +かわ 乾 カ五4: +かわ 渇 カ五8: +かわ 変わ ラ五8: +かわ 代わ ラ五8: +かわ 換わ ラ五7: +かわ 替わ ラ五7: +かわ かわ サ五7:ラ五7: +かわ 交わ サ五7: +かわ 側 単漢: +かわい かわい 形9: +かわい 可愛 形9: +かわい 河井 苗字: +かわい 河合 苗字: +かわい 川井 苗字: +かわい 川合 苗字: +かわいそう 可哀想 形動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: +かん 巻 助数: +かん 貫 助数2: +かん 関 サ変: +かん 姦 サ変: +かん 冠 代4: +かん 環 代1: +かん 棺 代1: +かん 柑 代1: +かん 乾 単漢: +かん 侃 単漢: +かん 勧 単漢: +かん 喚 単漢: +かん 堪 単漢: +かん 完 単漢: +かん 寛 単漢: +かん 干 単漢: +かん 幹 単漢: +かん 患 単漢: +かん 慣 単漢: +かん 憾 単漢: +かん 換 単漢: +かん 敢 単漢: +かん 桓 単漢: +かん 款 単漢: +かん 汗 単漢: +かん 澗 単漢: +かん 潅 単漢: +かん 甘 単漢: +かん 監 単漢: +かん 看 単漢: +かん 竿 単漢: +かん 緩 単漢: +かん 翰 単漢: +かん 肝 単漢: +かん 莞 単漢: +かん 諌 単漢: +かん 還 単漢: +かん 鑑 単漢: +かん 閑 単漢: +かん 陥 単漢: +かん 韓 単漢: +かん 舘 単漢: +かん 甲 単漢: +かん 函 単漢: +かん 神 単漢: +かん 奸 単漢: +かん 瞰 単漢: +かんい 簡易 名8: +かんいち 貫一 名前: +かんいっぱつ 間一髪 名1: +かんえつ 関越 地名: +かんえん 肝炎 名1: +かんおけ 棺桶 名1: +かんおんじ 観音寺 地名: +かんか 感化 名6: +かんか 看過 名6: +かんかく 感覚 名4: +かんかく 間隔 名1: +かんかつ 管轄 名6: +かんがい 感慨 名1: +かんがい 干害 名1: +かんがえ 考え 一段4: +かんがえかた 考え方 代3: +かんがえこ 考え込 マ五3: +かんがえだ 考え出 サ五5: +かんがえつ 考え付 カ五7: +かんがえなお 考え直 サ五8: +かんがみ 鑑み 一段1: +かんき 喚起 名6: +かんき 歓喜 名6: +かんき 換気 名6: +かんき 乾期 名1: +かんき 寒気 名1: +かんきせん 換気扇 名1: +かんきつ 柑橘 名1: +かんきゃく 観客 名1: +かんきゅう 緩急 名1: +かんきょ 閑居 名6: +かんきょう 環境 名1: +かんきん 監禁 名6: +かんきん 換金 名6: +かんぎょう 勧業 名1: +かんぎょう 官業 名1: +かんく 管区 名1: +かんぐ 勘ぐ ラ五3: +かんけい 関係 名7: +かんけつ 簡潔 名8: +かんけつ 完結 名6: +かんけつ 間欠 名6: +かんげい 歓迎 名7: +かんげき 感激 名7: +かんげき 観劇 名6: +かんげき 間隙 名1: +かんげん 還元 名6: +かんげん 換言 名6: +かんげん 甘言 名6: +かんげんがく 管弦楽 名1: +かんこ 歓呼 代4: +かんこう 観光 名1: +かんこう 慣行 名1: +かんこう 刊行 名6: +かんこう 完工 名6: +かんこう 敢行 名6: +かんこう 感光 名6: +かんこうきゃく 観光客 名1: +かんこうちょう 官公庁 名1: +かんこうへん 肝硬変 名1: +かんこうれい 箝口令 名1: +かんこく 韓国 地名: +かんこく 勧告 代4: +かんこつだったい 換骨奪胎 代4: +かんこどり 閑古鳥 名1: +かんこんそうさい 冠婚葬祭 代1: +かんご 看護 名7: +かんご 漢語 名1: +かんごく 監獄 名1: +かんごふ 看護婦 代2: +かんさ 監査 名6: +かんさ 鑑査 名6: +かんさい 関西 名1: +かんさい 簡裁 名1: +かんさい 完済 名1: +かんさつ 観察 名7: +かんさつ 監察 名6: +かんさつ 鑑札 名1: +かんさん 換算 名6: +かんさん 閑散 名8: +かんざい 管財 名1: +かんざき 神崎 苗字: +かんざき 神崎 地名: +かんざき 神埼 苗字: +かんざき 神埼 地名: +かんし 監視 名6: +かんしき 鑑識 名1: +かんしつ 乾湿 名1: +かんしゃ 感謝 名6: +かんしゃ 官舎 名1: +かんしゅ 看守 代2: +かんしゅう 慣習 名1: +かんしゅう 監修 名6: +かんしゅう 観衆 名1: +かんしょう 感傷 名4: +かんしょう 観賞 名7: +かんしょう 鑑賞 名7: +かんしょう 干渉 代4: +かんしょう 緩衝 代4: +かんしょく 感触 名1: +かんしょく 閑職 名1: +かんしょく 間食 名6: +かんしん 関心 名3: +かんしん 感心 名6:形動1: +かんしん 歓心 名1: +かんしんじ 関心事 名1: +かんじ 漢字 名1: +かんじ 幹事 名1: +かんじ 監事 名1: +かんじ 感じ 名2: +かんじ 完治 名前: +かんじと 感じと ラ五5: +かんじゃ 患者 代2: +かんじゅ 甘受 名6: +かんじゅく 完熟 名6: +かんじょう 感情 名4: +かんじょう 勘定 名5: +かんじょう 環状 名1: +かんじん 肝心 名8: +かんすい 冠水 名6: +かんすい 完遂 名6: +かんすう 関数 名1: +かんせい 完成 名7: +かんせい 感性 名4: +かんせい 官製 名1: +かんせい 歓声 名1: +かんせい 喚声 名1: +かんせい 乾性 名1: +かんせい 管制 代4: +かんせい 閑静 名8: +かんせつ 間接 名4: +かんせつ 関節 名1: +かんせん 観戦 名7: +かんせん 感染 名6: +かんせん 幹線 名1: +かんぜい 関税 名1: +かんぜん 完全 名8: +かんぜん 敢然 形動2: +かんそ 簡素 名8: +かんそう 感想 名3: +かんそう 乾燥 名6: +かんそう 歓送 名6: +かんそう 完走 名6: +かんそく 観測 名7: +かんそん 寒村 名1: +かんぞう 肝臓 名1: +かんたい 歓待 名7: +かんたい 艦隊 名1: +かんたい 寒帯 名1: +かんたく 干拓 名6: +かんたん 簡単 名8: +かんたん 感嘆 名6: +かんだ 神田 苗字: +かんだ 神田 地名: +かんだ 苅田 地名: +かんだい 寛大 形動4: +かんだん 歓談 名7: +かんだん 寒暖 名1: +かんだん 間断 名1: +かんち 感知 名6: +かんち 関知 名6: +かんちがい 勘違い 代4: +かんちゅう 寒中 名1: +かんちょう 官庁 名1: +かんちょう 干潮 名1: +かんちょう 艦長 名1: +かんちょう 館長 名1: +かんちょう 浣腸 代4: +かんつう 貫通 名6: +かんづ 感づ カ五8: +かんづめ 缶詰 名1: +かんてい 官邸 名1: +かんてい 艦艇 名1: +かんてい 鑑定 名6: +かんてつ 貫徹 代4: +かんてん 観点 名1: +かんでん 感電 名6: +かんでんち 乾電池 名1: +かんとう 関東 名1: +かんとう 敢闘 名6: +かんとう 巻頭 名1: +かんとく 監督 名6: +かんとん 広東 地名: +かんど 感度 名1: +かんどう 感動 名7: +かんどう 勘当 代4: +かんない 管内 名1: +かんない 関内 苗字: +かんない 関内 地名: +かんない 館内 名1: +かんなづき 神無月 代1: +かんなな 環七 名1: +かんなべ 神辺 地名: +かんなみ 函南 地名: +かんなり 金成 地名: +かんにん 堪忍 代4: +かんぬし 神主 代1: +かんねん 観念 名6: +かんの 菅野 苗字: +かんのう 感応 名6: +かんのう 完納 名6: +かんのう 官能 名1: +かんのん 観音 名1: +かんばし 芳し 形2: +かんばつ 間伐 名6: +かんばやし 上林 苗字: +かんばやし 神林 苗字: +かんばら 蒲原 地名: +かんばん 看板 名1: +かんぱ カンパ 代4: +かんぱ 寒波 名1: +かんぱい 乾杯 代4: +かんぱい 完敗 代4: +かんぱく 関白 名1: +かんぱち 環八 名1: +かんぱん 甲板 名1: +かんび 完備 代4: +かんびょう 看病 名6: +かんぶ 幹部 名1: +かんぶ 患部 名1: +かんぶつ 乾物 名1: +かんぶん 漢文 名1: +かんぷ 還付 代4: +かんぷう 寒風 名1: +かんぷう 完封 名6: +かんぷく 感服 名6: +かんべ 神戸 苗字: +かんべつ 鑑別 名6: +かんべん 勘弁 名7: +かんべん 簡便 名8: +かんぺき 完璧 名8: +かんぼう 官房 名1: +かんぼう 感冒 名1: +かんぼつ 陥没 名6: +かんぽう 官報 名1: +かんぽう 漢方 名1: +かんぽうやく 漢方薬 名1: +かんま カンマ 名1: +かんまき 上牧 地名: +かんまつ 巻末 名1: +かんまん 干満 名1: +かんまん 緩慢 形動4: +かんみ 甘味 名1: +かんむり 冠 代1: +かんむりょう 感無量 形動1: +かんめい 感銘 名6: +かんめい 簡明 形動4: +かんもん 喚問 名6: +かんもん 関門 名1: +かんやく 完訳 名6: +かんやく 簡約 名8: +かんゆう 勧誘 名7: +かんよ 関与 名7: +かんよう 寛容 形動7: +かんよう 慣用 名6: +かんよう 肝要 名8: +かんら 甘楽 地名: +かんらく 歓楽 名1: +かんらく 陥落 名6: +かんらん 観覧 名7: +かんり 管理 名6: +かんり 官吏 名1: +かんりしょく 管理職 名1: +かんりにん 管理人 代2: +かんりゃく 簡略 名8: +かんりゅう 寒流 名1: +かんりょう 完了 名6: +かんりょう 官僚 名1: +かんるい 感涙 名1: +かんれい 慣例 名1: +かんれい 寒冷 名1: +かんれき 還暦 名1: +かんれん 関連 名6: +かんろ 甘露 名1: +かんろ 寒露 名1: +かんろく 貫禄 名1: +かんわ 緩和 名6: +かんわ 漢和 名1: +かんわきゅうだい 閑話休題 名1: +が 我 代1: +が 蛾 代1: +が 賀 代1:サ五1: +が 雅 代1: +が 画 接尾1: +が 俄 単漢: +が 峨 単漢: +が 牙 単漢: +が 臥 単漢: +が 芽 単漢: +が 餓 単漢: +が 駕 単漢: +がーぜ ガーゼ 名1: +がーたー ガーター 名1: +がーど ガード 名6: +がーりっく ガーリック 名1: +がい 害 代4: +がい 街 接尾3: +がい 外 接尾2: +がい 階 助数2: +がい 凱 単漢: +がい 劾 単漢: +がい 咳 単漢: +がい 崖 単漢: +がい 慨 単漢: +がい 概 単漢: +がい 涯 単漢: +がい 碍 単漢: +がい 蓋 単漢: +がい 該 単漢: +がい 鎧 単漢: +がい 骸 単漢: +がいあく 害悪 名1: +がいあつ 外圧 名1: +がいいん 外因 名1: +がいか 外貨 代1: +がいか 凱歌 代1: +がいかい 外界 名1: +がいかく 外郭 名1: +がいかつ 概括 名6: +がいかん 外観 名1: +がいかん 概観 名6: +がいき 外気 名1: +がいきょう 概況 名1: +がいきょく 外局 名1: +がいきん 外勤 名1: +がいけい 外形 名1: +がいけん 外見 名1: +がいこう 外交 名1: +がいこう 外向 名1: +がいこうかん 外交官 名1: +がいこく 外国 名1: +がいこつ 骸骨 名1: +がいご 外語 名1: +がいさい 外債 名1: +がいさん 概算 名6: +がいし 外紙 名1: +がいし 外資 名1: +がいしゃ 会社 接尾2: +がいしゃ 外車 名1: +がいしゅう 外周 名1: +がいしゅつ 外出 名6: +がいしょう 外傷 名1: +がいしょう 外相 名1: +がいしょく 外食 名6: +がいしん 外信 名1: +がいじ 外字 名1: +がいじゅ 外需 名1: +がいじん 外人 名1: +がいすう 概数 名1: +がいせつ 概説 名6: +がいせつ 外接 名6: +がいせん 外線 名1: +がいせん 凱旋 名7: +がいそう 外挿 名6: +がいちゅう 外注 名6: +がいちゅう 害虫 名1: +がいてき 外敵 名1: +がいてき 外的 形動1: +がいでん 外電 名1: +がいとう 該当 名6: +がいとう 街頭 名1: +がいとう 街灯 名1: +がいとう 外灯 名1: +がいど ガイド 名6: +がいどく 害毒 名1: +がいねん 概念 名4: +がいはく 外泊 名6: +がいひょう 概評 名6: +がいぶ 外部 名1: +がいぶん 外聞 名1: +がいへき 外壁 名1: +がいまい 外米 名1: +がいむ 外務 名1: +がいむしょう 外務省 名1: +がいめん 外面 名4: +がいや 外野 代1: +がいゆう 外遊 名6: +がいよう 概要 名1: +がいらい 外来 名1: +がいらん 外乱 代1: +がいりゃく 概略 名1: +がいろ 街路 名1: +がいろん 概論 名1: +がお 顔 接尾2: +がか 画家 代1: +がかり 係 接尾2: +ががく 雅楽 名1: +がき 書き 接尾2: +がく 学 接尾1: +がく 楽 代1: +がく 額 接尾1: +がく 岳 単漢: +がく 顎 単漢: +がく 鍔 単漢: +がく 鰐 単漢: +がくい 学位 名1: +がくいん 学院 名1: +がくえん 学園 名1: +がくぎょう 学業 名1: +がくげい 学芸 名1: +がくさい 学才 名1: +がくし 学士 名1: +がくし 学資 名1: +がくしき 学識 名1: +がくしゃ 学者 名1: +がくしゅう 学習 名6: +がくしょう 楽章 助数: +がくじゅつ 学術 名4: +がくせい 学生 名1:助数2: +がくせい 学制 名1: +がくせき 学籍 名1: +がくせつ 学説 名1: +がくそう 学窓 名1: +がくそく 学則 名1: +がくそつ 学卒 名1: +がくたい 楽隊 名1: +がくだん 楽団 名1: +がくちょう 学長 名1: +がくどう 学童 名1: +がくない 学内 名1: +がくねん 学年 名1: +がくばつ 学閥 名1: +がくひ 学費 名1: +がくふ 楽譜 代1: +がくぶ 学部 名1: +がくぶち 額縁 名1: +がくめい 学名 名1: +がくめん 額面 名1: +がくもん 学問 名6: +がくや 楽屋 名1: +がくゆう 学友 名3: +がくようひん 学用品 名1: +がくりょく 学力 名1: +がくれき 学歴 名1: +がくわり 学割 名1: +がけ がけ 接尾2: +がけ 崖 代1: +がざい 画材 名1: +がし 餓死 代4: +がしつ 画質 名1: +がしゅう 画集 名1: +がしょう 賀正 名1: +がしんしょうたん 臥薪嘗胆 代1: +がじょう 牙城 名1: +がじょう 賀状 名1: +がす ガス 名1: +がす 瓦斯 名1: +がぜん 俄然 代1: +がそりん ガソリン 名1: +がぞう 画像 名1: +がた 型 接尾3: +がた 難 接尾5: +がた 方 接尾2: +がち がち 接尾6: +がち 勝ち 接尾6: +がっか 学科 名1: +がっか 学課 名1: +がっかい 学会 名1: +がっかい 学界 名1: +がっかり がっかり 代4: +がっき 学期 名1:助数: +がっき 楽器 名1: +がっきゅう 学級 名1: +がっく 学区 名1: +がっくり がっくり 副9: +がっこう 学校 名1: +がっさく 合作 名6: +がっさん 合算 名6: +がっさん 月山 地名: +がっしゅうこく 合衆国 名1: +がっしゅく 合宿 名6: +がっしょう 合唱 名6: +がっしょう 合掌 名6: +がっそう 合奏 名6: +がったい 合体 名6: +がっち 合致 名6: +がっと ガット 名1: +がっぺい 合併 名6: +がつ 月 助数2: +がつごう 月号 助数2: +がつまつ 月末 助数2: +がね 金 接尾2: +がはく 画伯 名1: +がまごおり 蒲郡 地名: +がまし がまし 接尾5: +がまん 我慢 名6: +がめん 画面 名1: +がもう 蒲生 地名: +がよい 通い 接尾2: +がようし 画用紙 名1: +がら 柄 接尾1: +がらす ガラス 名1: +がらす 硝子 名1: +がらり がらり 副2: +がらん 伽藍 名1: +がりゅう 我流 名1: +がれーじ ガレージ 名1: +がれき 瓦礫 名1: +がろう 画廊 名1: +がわ 側 接尾3: +がわ 川 接尾4: +がん 癌 代1: +がん 岩 代1: +がん 贋 代1: +がん 雁 代1: +がん 願 代1: +がん ガン 代1: +がん 眼 接尾2: +がん 丸 代1: +がん 岸 代1: +がん 含 単漢: +がん 巌 単漢: +がん 玩 単漢: +がん 翫 単漢: +がん 頑 単漢: +がん 顔 単漢: +がん 元 単漢: +がんい 含意 名6: +がんか 眼下 名1: +がんか 眼科 名1: +がんきゅう 眼球 名1: +がんきょう 頑強 形動4: +がんきょう 眼鏡 名1: +がんきん 元金 名1: +がんぐ 玩具 名1: +がんこ 頑固 形動4: +がんこう 眼光 名1: +がんしょ 願書 名1: +がんじつ 元日 名1: +がんせき 岩石 名1: +がんそ 元祖 名1: +がんたん 元旦 名1: +がんちく 含蓄 名6: +がんちゅう 眼中 名1: +がんねん 元年 名1: +がんば 頑張 ラ五7: +がんぺき 岸壁 名1: +がんぼう 願望 名6: +がんぽん 元本 名1: +がんめん 顔面 名1: +がんゆう 含有 名6: +がんらい 元来 名1: +がんり 元利 名1: +がんりょう 顔料 名1: +き 聞 カ五6: +き 聴 カ五6: +き 利 カ五3: +き 効 カ五3: +き 着 一段1: +き 切 ラ五7: +き 斬 ラ五7: +き き ラ五7: +き 木 代1: +き 樹 代1: +き 黄 代1: +き 気 代1: +き 紀 代1: +き 奇 代1: +き 機 接尾1:助数: +き 記 サ五1:サ変: +き 記 接尾1: +き 帰 サ変:サ五1: +き 期 接尾1:助数:サ五1:サ変: +き 基 代1:助数2: +き 来 カ変用: +き 器 接尾1: +き 旗 接尾1: +き 貴 接頭1:代1: +き 鬼 接尾1: +き 忌 代1: +き 企 単漢: +き 伎 単漢: +き 危 単漢: +き 喜 単漢: +き 嬉 単漢: +き 寄 単漢: +き 岐 単漢: +き 希 単漢: +き 幾 単漢: +き 揮 単漢: +き 机 単漢: +き 既 単漢: +き 棋 単漢: +き 棄 単漢: +き 毅 単漢: +き 汽 単漢: +き 畿 単漢: +き 祈 単漢: +き 季 単漢: +き 稀 単漢: +き 徽 単漢: +き 規 単漢: +き 起 単漢: +き 軌 単漢: +き 輝 単漢: +き 飢 単漢: +き 騎 単漢: +き 亀 単漢: +き 祁 単漢: +き 己 単漢: +き 碕 単漢: +き 生 単漢: +き 其 単漢: +き 槻 単漢: +き 姫 単漢: +き 鰭 単漢: +き 箕 単漢: +き 肌 単漢: +き 綺 単漢: +き 騏 単漢: +き 麒 単漢: +きー キー 名1: +きあい 気合い 代1: +きあつ 気圧 名1: +きあん 起案 名6: +きい 奇異 形動1: +きい 紀伊 地名: +きい 貴意 名1: +きいち 喜一 名前: +きいちろう 喜一郎 名前: +きいと 生糸 名1: +きいながしま 紀伊長島 地名: +きいれ 喜入 地名: +きいろ 黄色 名1:形11: +きいん 起因 名6: +きうち 木内 苗字: +きえ 消え 一段2: +きえい 気鋭 名1: +きえい 消え入 ラ五1: +きえさ 消え去 ラ五1: +きえん 気炎 名1: +きお 気負 ワ五3: +きおう 既往 名1: +きおく 記憶 名7: +きおち 気落ち 代4: +きおん 気温 名1: +きか 帰化 代4: +きか 気化 代4: +きか 幾何 代1: +きか 貴下 代1: +きかい 機械 名4: +きかい 器械 名1: +きかい 機会 名1: +きかい 奇怪 形動1: +きかい 喜界 地名: +きかがく 幾何学 名1: +きかく 企画 名6: +きかく 規格 名6: +きかざ 着飾 ラ五5: +きかん 期間 名1: +きかん 機関 名1: +きかん 器官 名1: +きかん 基幹 名1: +きかん 既刊 名1: +きかん 気管 名1: +きかん 季刊 名1: +きかん 帰還 名7: +きが 飢餓 代1: +きがい 危害 名1: +きがえ 着替え 代4:一段1: +きがかり 気がかり 代5: +きがく 器楽 名1: +きがね 気兼ね 代4: +きがる 気軽 形動7: +きがん 祈願 名7: +きき 機器 名1: +きき 危機 名1: +ききい 聞き入 ラ五1: +ききいれ 聞き入れ 一段3: +ききかえ 聞き返 サ五7: +ききぐるし 聞き苦し 形9: +ききこ 聞き込 マ五7: +ききだ 聞き出 サ五7: +ききて 聞き手 代1: +ききと 聞き取 ラ五7: +ききなが 聞き流 サ五7: +ききめ 効き目 名1: +ききゃく 棄却 名6: +ききゅう 気球 名1: +ききゅう 希求 代4: +ききょ 起居 名7: +ききょう 帰郷 名7: +ききょう 帰京 名7: +ききょう 桔梗 名1: +ききわけ 聞き分け 一段3: +ききん 基金 名1: +ききんぞく 貴金属 名1: +きぎょう 企業 名4: +きく 菊 代1: +きく 掬 単漢: +きく 鞠 単漢: +きくお 喜久男 名前: +きくお 喜久雄 名前: +きくか 菊鹿 地名: +きくがわ 菊川 苗字: +きくすい 菊水 地名: +きくた 菊田 苗字: +きくち 菊地 苗字: +きくち 菊池 苗字: +きくち 菊池 地名: +きくばり 気配り 代4: +きくばり 気くばり 代4: +きくま 菊間 苗字: +きくま 菊間 地名: +きくよう 菊陽 地名: +きくん 貴君 代1: +きぐ 器具 名1: +きぐ 危惧 名6: +きぐう 奇遇 名1: +きぐらい 気位 名1: +きぐろう 気苦労 代4: +きけい 貴兄 代1: +きけい 奇形 代1: +きけつ 既決 名1: +きけつ 帰結 名6: +きけん 危険 名8: +きけん 棄権 名6: +きげき 喜劇 名1: +きげん 期限 名1: +きげん 機嫌 名1: +きげん 紀元 名1: +きげん 起源 名1: +きこう 気候 名1: +きこう 機構 名1: +きこう 帰港 名6: +きこう 起工 名6: +きこう 寄港 名6: +きこう 寄稿 名6: +きこう 気孔 名1: +きこう 紀行 名1: +きこうし 貴公子 名1: +きこえ 聞こえ 一段1: +きこく 帰国 名6: +きこな 着こな サ五7: +きこない 木古内 地名: +きこん 既婚 名1: +きご 季語 代1: +きごう 記号 名1: +きさ 吉舎 地名: +きさい 記載 名6: +きさい 起債 名6: +きさい 奇才 名1: +きさい 鬼才 名1: +きさい 騎西 地名: +きさい 既済 名6: +きさかた 象潟 地名: +きさき 妃 名2: +きさき 后 名2: +きさく 気さく 形動4: +きさぶろう 喜三郎 名前: +きさらぎ 如月 代1: +きさらづ 木更津 地名: +きさわ 木沢 地名: +きさん 起算 名6: +きざ きざ マ五7: +きざ 刻 マ五7: +きざ 兆 サ五3: +きざい 機材 名1: +きざみこ 刻み込 マ五7: +きざみつけ 刻みつけ 一段1: +きし 岸 名1: +きし 棋士 名1: +きし 貴志 苗字: +きし 貴志 地名: +きし 騎士 名1: +きしかいせい 起死回生 代1: +きしがわ 貴志川 地名: +きしだ 岸田 苗字: +きしつ 気質 名1: +きしべ 岸辺 苗字: +きしま 杵島 地名: +きしもと 岸本 苗字: +きしゃ 記者 名1: +きしゃ 汽車 名1: +きしゃ 貴社 名1: +きしゃ 帰社 名6: +きしゅ 機種 名1: +きしゅ 機首 名1: +きしゅ 旗手 名1: +きしゅ 期首 名1: +きしゅう 奇襲 名6: +きしゅく 寄宿 名6: +きしゅく 岐宿 地名: +きしょ 貴書 名1: +きしょう 気象 名1: +きしょう 記章 名1: +きしょう 起床 名7: +きしょう 気性 名3: +きしょう 希少 形動1: +きしょうだい 気象台 名1: +きしょうちょう 気象庁 名1: +きしょうてんけつ 起承転結 代1: +きしょく 気色 名1: +きしわだ 岸和田 地名: +きしん 寄進 名6: +きじ 記事 名1: +きじ 生地 名1: +きじ 雉 代1: +きじく 基軸 名1: +きじく 機軸 名1: +きじつ 期日 名1: +きじま 木島 苗字: +きじまだいら 木島平 地名: +きじゅ 喜寿 名1: +きじゅつ 記述 名6: +きじゅつ 奇術 名1: +きじゅん 基準 名1: +きじゅん 規準 名1: +きじょう 機上 名1: +きじょう 机上 名1: +きじょう 気丈 形動4: +きじょう 木城 地名: +きじん 奇人 名1: +きす キス 代4: +きす 鱚 代1: +きすう 奇数 名1: +きすき 木次 地名: +きず 築 カ五5: +きず 傷 代1: +きず 瑕 代1: +きずあと 傷跡 名1: +きずきあげ 築き上げ 一段1: +きずぐち 傷口 名1: +きずつ 傷つ カ五5: +きずな 絆 代1: +きせ 着せ 一段2: +きせい 規制 名6: +きせい 規正 名6: +きせい 帰省 名7: +きせい 寄生 代4: +きせい 既製 名1: +きせい 既成 名1: +きせい 気勢 名1: +きせい 奇声 名1: +きせい 期生 助数: +きせい 紀勢 名1: +きせき 奇跡 名4: +きせき 軌跡 名1: +きせつ 季節 名1: +きせつ 既設 名1: +きせのん キセノン 名1: +きせん 汽船 名1: +きぜつ 気絶 名6: +きぜん 毅然 形動2: +きそ 競 ワ五7: +きそ 基礎 名1: +きそ 起訴 名6: +きそ 木曽 苗字: +きそ 木曽 地名: +きそ 木曾 地名: +きそ 木祖 地名: +きそう 寄贈 名6: +きそう 起草 名6: +きそうてんがい 奇想天外 形動1: +きそく 規則 名4: +きそふくしま 木曾福島 地名: +きそん 既存 名6: +きそん 毀損 名6: +きぞう 寄贈 名6: +きぞく 貴族 名1: +きぞく 帰属 名6: +きぞん 既存 名1: +きた 北 代1: +きた 北 苗字: +きた 北 接頭2: +きた 喜多 苗字: +きた 木田 地名: +きた 来 ラ五1:サ五1: +きた 来た サ五1: +きたあいき 北相木 地名: +きたあいづ 北会津 地名: +きたあきた 北秋田 地名: +きたあずみ 北安曇 地名: +きたあだち 北足立 地名: +きたあまべ 北海部 地名: +きたありま 北有馬 地名: +きたい 期待 名7: +きたい 気体 名1: +きたい 機体 名1: +きたいばらき 北茨城 地名: +きたうおぬま 北魚沼 地名: +きたうら 北浦 苗字: +きたうら 北浦 地名: +きたうわ 北宇和 地名: +きたえ 鍛え 一段3: +きたえあげ 鍛え上げ 一段3: +きたかぜ 北風 代1: +きたかた 喜多方 地名: +きたかた 北方 苗字: +きたかた 北方 地名: +きたかつしか 北葛飾 地名: +きたかつらぎ 北葛城 地名: +きたかみ 北上 苗字: +きたかみ 北上 地名: +きたかわち 北河内 地名: +きたかわべ 北川辺 地名: +きたかんばら 北蒲原 地名: +きたがた 北方 地名: +きたがわ 北側 名1: +きたがわ 北川 苗字: +きたがわ 北川 地名: +きたきゅうしゅう 北九州 地名: +きたく 帰宅 名6: +きたく 寄託 名6: +きたくわだ 北桑田 地名: +きたぐち 北口 名1: +きたぐんま 北群馬 地名: +きたけ 着丈 名1: +きたこま 北巨摩 地名: +きたごう 北郷 苗字: +きたごう 北郷 地名: +きたさいたま 北埼玉 地名: +きたさく 北佐久 地名: +きたざわ 北沢 苗字: +きたしおばら 北塩原 地名: +きたしげやす 北茂安 地名: +きたしたら 北設楽 地名: +きたじま 北島 苗字: +きたそうま 北相馬 地名: +きたたかぎ 北高来 地名: +きたたちばな 北橘 地名: +きたたま 北多摩 地名: +きただいとう 北大東 地名: +きたつがる 北津軽 地名: +きたつる 北都留 地名: +きたな 汚 形5: +きたなかぐすく 北中城 地名: +きたならし 汚らし 形5: +きたにほん 北日本 名1: +きたの 北野 苗字: +きたの 北野 地名: +きたはた 北波多 地名: +きたはら 北原 苗字: +きたはんきゅう 北半球 名1: +きたひやま 北桧山 地名: +きたまつうら 北松浦 地名: +きたみ 北見 苗字: +きたみ 北見 地名: +きたみまき 北御牧 地名: +きたむら 北村 苗字: +きたむらやま 北村山 地名: +きたむろ 北牟婁 地名: +きたもと 北本 苗字: +きたもと 北本 地名: +きたもろかた 北諸県 地名: +きたやま 北山 苗字: +きたやま 北山 地名: +きたる 来る 連体: +きたろう 喜太郎 名前: +きたん 忌憚 名1: +きだ 木田 苗字: +きだ 木田 地名: +きだて 気だて 代1: +きだん 気団 名1: +きち 基地 名1: +きち 既知 名1: +きち 機知 名1: +きち 貴地 名1: +きち 吉 代1: +きちがい 気違い 名1: +きちじつ 吉日 名1: +きちじょうじ 吉祥寺 地名: +きちゃく 帰着 名6: +きちゅう 忌中 名1: +きちょう 基調 名1: +きちょう 機長 名1: +きちょう 記帳 名7: +きちょう 貴重 形動4: +きちんと きちんと 副4: +きっかけ きっかけ 代1: +きっかり きっかり 代6: +きっかわ 吉川 苗字: +きっきょう 吉凶 名1: +きっく キック 代4: +きっこう 拮抗 名6: +きっさ 喫茶 名1: +きっさてん 喫茶店 名1: +きっす キッス 代4: +きっすい 生粋 名1: +きっちょう 吉兆 名1: +きっちり きっちり 副9: +きっちん キッチン 名1: +きって 切手 名1: +きっと きっと 副1: +きっと キット 代1: +きっぱり きっぱり 副2: +きっぷ 切符 名1: +きっぽう 吉報 名1: +きつ きつ 形7: +きつ 吃 単漢: +きつ 喫 単漢: +きつ 桔 単漢: +きつ 橘 単漢: +きつ 詰 単漢: +きつえん 喫煙 名6: +きつかわ 橘川 苗字: +きつき 杵築 地名: +きつけ 着付け 名1: +きつね 狐 代1: +きつもん 詰問 名6: +きつれがわ 喜連川 地名: +きづ 気付 カ五8: +きづ 木津 苗字: +きづ 木津 地名: +きづか 気遣 ワ五7: +きづかれ 気疲れ 代4: +きづけ 気付 名1: +きてい 規定 名6: +きてい 規程 名1: +きてい 既定 名1: +きてい 基底 名1: +きてき 汽笛 代1: +きてん 基点 名1: +きてん 機転 名1: +きてん 貴店 名1: +きてん 起点 名1: +きでん 貴殿 代1: +きと 帰途 名1: +きと 企図 名6: +きとう 祈祷 名7: +きとう 木頭 地名: +きとく 危篤 名3: +きとく 奇特 名10: +きとく 既得 名1: +きど 気取 ラ五7: +きど 輝度 名1: +きど 木戸 苗字: +きど 気ど ラ五7: +きどう 軌道 名1: +きどう 機動 名1: +きどう 起動 名6: +きどうたい 機動隊 名1: +きどるい 希土類 名1: +きない 機内 名1: +きなが 気長 名8: +きなさ 鬼無里 地名: +きにい 気に入 ラ五2: +きにゅう 記入 名7: +きにん 帰任 名6: +きぬ 絹 代1: +きぬいと 絹糸 名1: +きぬた 砧 名1: +きぬた 砧 地名: +きね 杵 代1: +きねま キネマ 名1: +きねん 記念 名6: +きねん 祈念 名6: +きねんひん 記念品 名1: +きねんび 記念日 名1: +きのう 昨日 代6: +きのう 機能 名6: +きのう 帰納 名6: +きのえ 木江 地名: +きのくにや 紀伊国屋 名1: +きのさき 城崎 苗字: +きのさき 城崎 地名: +きのした 木下 苗字: +きのどく 気の毒 名9: +きのり 気乗り 代4: +きはく 希薄 名8: +きはく 気迫 名1: +きはつ 揮発 名6: +きはつゆ 揮発油 名1: +きはら 木原 苗字: +きはん 規範 名1: +きば 黄ば マ五3: +きば 牙 名1: +きば 気張 ラ五7: +きば 騎馬 名1: +きば 木場 苗字: +きば 木場 地名: +きばく 起爆 名1: +きばつ 奇抜 名8: +きばらし 気晴らし 代4: +きばん 基板 名1: +きばん 基盤 名1: +きひ 忌避 名6: +きひん 気品 名1: +きひん 貴賓 名1: +きび 機微 代1: +きび 黍 代1: +きび 吉備 地名: +きびきび きびきび 副3: +きびし 厳し 形7: +きびょう 奇病 名1: +きびん 機敏 名8: +きふ 寄付 名7: +きふう 気風 名1: +きふく 起伏 名6: +きぶん 気分 名4: +きへい 騎兵 名1: +きほう 紀宝 地名: +きほう 貴方 名1: +きほく 輝北 地名: +きほん 基本 名4: +きぼ 規模 名1: +きぼう 希望 名7: +きぼり 木彫り 代1: +きま 決ま ラ五4: +きまえ 気前 名1: +きまぐれ 気まぐれ 名8: +きまず 気まず 形3: +きまつ 期末 名1: +きまま 気まま 名8: +きみ 君 代1: +きみ 気味 代1: +きみ 黄身 代1: +きみ 公 単漢: +きみお 公男 名前: +きみこ 喜美子 名前: +きみこ 君子 名前: +きみこ 公子 名前: +きみしま 君島 苗字: +きみじか 気短 代5: +きみじま 君島 苗字: +きみた 君田 地名: +きみたち 君達 代1: +きみつ 機密 名1: +きみつ 君津 地名: +きみひこ 公彦 名前: +きみょう 奇妙 形動4: +きむち キムチ 代1: +きむづかし 気難し 形3: +きむら 木村 苗字: +きめ 決め 一段4: +きめい 記名 名7: +きめこ 決め込 マ五7: +きめつけ 決めつけ 一段3: +きめて 決め手 名1: +きも 肝 代1: +きもち 気持ち 名2: +きもつき 肝属 地名: +きもと 木本 苗字: +きもの 着物 名2: +きもべつ 喜茂別 地名: +きもん 鬼門 名1: +きゃ 伽 単漢: +きゃく 客 名2: +きゃく 客 助数2: +きゃく 脚 助数2: +きゃく 却 単漢: +きゃくあし 客足 名1: +きゃくしつ 客室 名1: +きゃくしゃ 客車 名1: +きゃくしょく 脚色 名6: +きゃくせき 客席 名1: +きゃくせん 客船 名1: +きゃくちゅう 脚注 名1: +きゃくほん 脚本 名1: +きゃくま 客間 名1: +きゃしゃ 華奢 代5: +きゃしゃ きゃしゃ 代5: +きゃすと キャスト 代4: +きゃたつ 脚立 名1: +きゃっか 却下 名6: +きゃっかん 客観 名4: +きゃっこう 脚光 名1: +きゃっしゅ キャッシュ 名1: +きゃっしんぐ キャッシング 名1: +きゃっち キャッチ 代4: +きゃのん キャノン 企業: +きゃばれー キャバレー 名1: +きゃびねっと キャビネット 名1: +きゃぷてん キャプテン 名1: +きゃらくた キャラクタ 名1: +きゃりあ キャリア 名1: +きゃんせる キャンセル 名6: +きゃんでぃ キャンディ 名1: +きゃんでぃー キャンディー 名1: +きゃんばす キャンバス 名1: +きゃんぱす キャンパス 名1: +きゃんぷ キャンプ 名6: +きゃんぺーん キャンペーン 名6: +きやく 規約 名1: +きやす 気安 形6: +きやすめ 気休め 名1: +きやま 基山 地名: +きゅー キュー 名1: +きゅう 急 代5: +きゅう 灸 代1: +きゅう 球 代1:助数: +きゅう 給 接尾1: +きゅう 旧 接頭1: +きゅう 級 接尾1:助数: +きゅう 丘 単漢: +きゅう 久 単漢: +きゅう 仇 単漢: +きゅう 休 単漢: +きゅう 及 単漢: +きゅう 吸 単漢: +きゅう 宮 単漢: +きゅう 弓 単漢: +きゅう 救 単漢: +きゅう 朽 単漢: +きゅう 求 単漢: +きゅう 汲 単漢: +きゅう 泣 単漢: +きゅう 究 単漢: +きゅう 窮 単漢: +きゅう 笈 単漢: +きゅう 糾 単漢: +きゅう 鳩 単漢: +きゅう 嗅 単漢: +きゅうあい 求愛 名6: +きゅういん 吸引 名6: +きゅうえん 救援 名6: +きゅうえん 休演 名6: +きゅうか 休暇 名1: +きゅうか 旧家 名1: +きゅうかい 休会 代4: +きゅうかく 嗅覚 名1: +きゅうかん 休刊 名6: +きゅうかん 休館 名6: +きゅうかん 急患 名1: +きゅうかん 旧館 名1: +きゅうかんちょう 九官鳥 名1: +きゅうがく 休学 名6: +きゅうきゅう 救急 名1: +きゅうきゅうしゃ 救急車 名1: +きゅうきょ 急きょ 副1: +きゅうきょく 究極 名4: +きゅうきん 給金 名1: +きゅうぎ 球技 名1: +きゅうぎょう 休業 名6: +きゅうくつ 窮屈 名8: +きゅうけい 休憩 名7: +きゅうけい 求刑 名6: +きゅうけい 球形 名1: +きゅうけい 急啓 名1: +きゅうけつ 吸血 名6: +きゅうけつき 吸血鬼 名1: +きゅうげき 急激 形動4: +きゅうげん 急減 名6: +きゅうこう 急行 名6: +きゅうこう 休校 名6: +きゅうこう 休講 名6: +きゅうこうか 急降下 代4: +きゅうこく 急告 名6: +きゅうこん 求婚 名6: +きゅうこん 球根 名1: +きゅうご 救護 名6: +きゅうさい 救済 名6: +きゅうさい 休載 名6: +きゅうし 休止 名6: +きゅうし 急死 名6: +きゅうしき 旧式 名8: +きゅうしふ 休止符 名1: +きゅうしゅう 吸収 名6: +きゅうしゅう 九州 名1: +きゅうしゅつ 救出 名6: +きゅうしょ 急所 名1: +きゅうしょく 休職 名6: +きゅうしょく 求職 名6: +きゅうしょく 給食 名6: +きゅうしん 急進 名6: +きゅうしん 休診 名6: +きゅうじつ 休日 名1: +きゅうじょ 救助 名6: +きゅうじょう 休場 名6: +きゅうじょう 球場 名1: +きゅうじょう 球状 名1: +きゅうじょう 窮状 名3: +きゅうじょうしょう 急上昇 名6: +きゅうじょたい 救助隊 名1: +きゅうじん 求人 名1: +きゅうす 急須 名1: +きゅうすい 給水 名6: +きゅうすう 級数 名1: +きゅうせい 急性 名1: +きゅうせい 急逝 名7: +きゅうせい 旧制 名1: +きゅうせい 旧姓 名1: +きゅうせいしゅ 救世主 名1: +きゅうせいちょう 急成長 名6: +きゅうせき 旧跡 名1: +きゅうせん 休戦 名6: +きゅうそう 急送 名6: +きゅうそく 休息 名7: +きゅうそく 急速 名8: +きゅうぞう 急増 名6: +きゅうだい 及第 名6: +きゅうだい 九大 名1: +きゅうだん 糾弾 名6: +きゅうだん 球団 名1: +きゅうち 窮地 名1: +きゅうち 旧知 名1: +きゅうちゃく 吸着 名6: +きゅうちゅう 宮中 名1: +きゅうちょう 級長 名1: +きゅうてい 宮廷 名1: +きゅうていしゃ 急停車 名6: +きゅうてん 急転 名6: +きゅうでん 宮殿 名1: +きゅうとう 急騰 名6: +きゅうとう 給湯 名1: +きゅうにゅう 吸入 名6: +きゅうねん 旧年 名1: +きゅうは 急派 名6: +きゅうはく 急迫 名6: +きゅうば 急場 名1: +きゅうばん 吸盤 名1: +きゅうびょう 急病 名1: +きゅうふ 給付 名6: +きゅうふきん 給付金 名1: +きゅうへん 急変 名7: +きゅうほう 急報 名6: +きゅうほうじ 久宝寺 地名: +きゅうぼ 急募 名6: +きゅうむ 急務 名1: +きゅうめい 救命 名1: +きゅうめい 究明 名6: +きゅうめい 糾明 名6: +きゅうめん 球面 名1: +きゅうゆ 給油 名6: +きゅうゆう 級友 名1: +きゅうゆう 旧友 名1: +きゅうよ 給与 名6: +きゅうよう 休養 名7: +きゅうよう 急用 名1: +きゅうらい 旧来 名1: +きゅうらぎ 厳木 地名: +きゅうらく 急落 名6: +きゅうりゅう 急流 名1: +きゅうりょう 給料 名2: +きゅうりょう 丘陵 名1: +きゅうれき 旧暦 名1: +きゅりー キュリー 名1: +きゆう 杞憂 名1: +きょ 虚 代1: +きょ 居 代1: +きょ 挙 代1: +きょ 嘘 単漢: +きょ 去 単漢: +きょ 巨 単漢: +きょ 拒 単漢: +きょ 拠 単漢: +きょ 渠 単漢: +きょ 許 単漢: +きょ 距 単漢: +きょ 鋸 単漢: +きょう 今日 代6: +きょう 凶 代1: +きょう 興 代1:ザ変: +きょう 郷 代1: +きょう 京 代1: +きょう 共 代1: +きょう 卿 代1: +きょう 境 代1: +きょう 経 代1: +きょう 強 接尾1: +きょう 教 接尾1: +きょう 橋 接尾1: +きょう 鏡 接尾1: +きょう 協 接尾1: +きょう 供 サ変: +きょう 狂 サ変:接尾1: +きょう 饗 サ変: +きょう 杏 単漢: +きょう 叶 単漢: +きょう 亨 単漢: +きょう 享 単漢: +きょう 侠 単漢: +きょう 僑 単漢: +きょう 兇 単漢: +きょう 競 単漢: +きょう 匡 単漢: +きょう 叫 単漢: +きょう 喬 単漢: +きょう 峡 単漢: +きょう 彊 単漢: +きょう 怯 単漢: +きょう 恐 単漢: +きょう 恭 単漢: +きょう 挟 単漢: +きょう 況 単漢: +きょう 狭 単漢: +きょう 矯 単漢: +きょう 胸 単漢: +きょう 脅 単漢: +きょう 蕎 単漢: +きょう 響 単漢: +きょう 驚 単漢: +きょう 兄 単漢: +きょう 梗 単漢: +きょう 劫 単漢: +きょうい 驚異 名4: +きょうい 脅威 名1: +きょうい 胸囲 名1: +きょういく 教育 名6: +きょういち 恭一 名前: +きょういん 教員 名1: +きょうえい 共栄 名6: +きょうえい 競泳 名6: +きょうえき 共益 名1: +きょうえん 競演 名6: +きょうえん 共演 名6: +きょうか 強化 名6: +きょうか 教科 名1: +きょうか 教化 名6: +きょうかい 協会 名1: +きょうかい 境界 名1: +きょうかい 教会 名1: +きょうかく 胸郭 名1: +きょうかしょ 教科書 名1: +きょうかつ 恐喝 名6: +きょうかん 共感 名6: +きょうかん 教官 名1: +きょうがせ 京ヶ瀬 地名: +きょうき 凶器 名1: +きょうき 狂喜 名6: +きょうき 狂気 名1: +きょうき 驚喜 名6: +きょうきゃく 橋脚 名1: +きょうきゅう 供給 名6: +きょうぎ 競技 名6: +きょうぎ 協議 名6: +きょうぎ 狭義 名1: +きょうくん 教訓 名6: +きょうぐう 境遇 名1: +きょうけん 強健 名8: +きょうけん 強権 名1: +きょうけんびょう 狂犬病 名1: +きょうげん 狂言 名1: +きょうこ 京子 名前: +きょうこ 響子 名前: +きょうこ 恭子 名前: +きょうこ 今日子 名前: +きょうこ 強固 形動4: +きょうこう 強硬 形動4: +きょうこう 強行 名6: +きょうこう 恐慌 名1: +きょうこう 凶行 名1: +きょうこく 峡谷 名1: +きょうこく 強国 名1: +きょうこつ 胸骨 代1: +きょうごう 競合 名6: +きょうごう 強豪 名1: +きょうごく 京極 地名: +きょうさい 共催 名7: +きょうさい 共済 名1: +きょうさい 恐妻 名1: +きょうさく 競作 名6: +きょうさく 凶作 名1: +きょうさん 共産 名1: +きょうさん 協賛 名7: +きょうさんとう 共産党 名1: +きょうざい 教材 名1: +きょうざめ 興ざめ 代4:一段1:形動1: +きょうし 教師 名1: +きょうしつ 教室 名2: +きょうしゅう 郷愁 名1: +きょうしゅうじょ 教習所 名1: +きょうしゅく 恐縮 名6: +きょうしゅつ 供出 名6: +きょうしょ 教書 名1: +きょうしょう 狭小 形動4: +きょうしょく 教職 名1: +きょうしん 強震 名1: +きょうしん 共振 名6: +きょうしんしょう 狭心症 名1: +きょうじ 教示 名7: +きょうじゃく 強弱 名1: +きょうじゅ 教授 名7: +きょうじゅ 享受 名7: +きょうじゅつ 供述 名6: +きょうじん 強靭 代5: +きょうじん 狂人 名1: +きょうせい 強制 名6: +きょうせい 矯正 名6: +きょうせい 強請 名6: +きょうせら 京セラ 企業: +きょうそ 教祖 名1: +きょうそう 競争 名6: +きょうそう 競走 名6: +きょうそう 強壮 名8: +きょうそうきょく 協奏曲 名1: +きょうそく 教則 名1: +きょうそん 共存 名6: +きょうぞう 胸像 名1: +きょうぞん 共存 名6: +きょうたく 供託 名6: +きょうたん 驚嘆 名6: +きょうだ 強打 名6: +きょうだい 兄弟 名3: +きょうだい 鏡台 名1: +きょうだい 京大 名1: +きょうだん 教壇 名1: +きょうだん 凶弾 名1: +きょうだん 教団 名1: +きょうち 境地 名1: +きょうちゅう 胸中 名3: +きょうちょう 強調 名6: +きょうちょう 協調 名6: +きょうつう 共通 名8:サ変: +きょうてい 協定 名6: +きょうてい 教程 名1: +きょうてい 競艇 名1: +きょうてき 強敵 名1: +きょうと 京都 地名: +きょうと 教徒 代1: +きょうとう 共闘 名6: +きょうとう 教頭 名1: +きょうとふ 京都府 県区: +きょうど 強度 名8: +きょうど 郷土 名1: +きょうどう 共同 名6: +きょうどう 協同 名6: +きょうどう 経堂 名1: +きょうどう 経堂 地名: +きょうねん 享年 名1: +きょうはく 強迫 名6: +きょうはく 脅迫 名6: +きょうはん 共犯 名1: +きょうばい 競売 名6: +きょうふ 恐怖 名6: +きょうふう 強風 名1: +きょうぶ 胸部 名1: +きょうべん 教鞭 名1: +きょうべん 強弁 代4: +きょうほん 狂奔 名6: +きょうぼう 共謀 名6: +きょうぼう 凶暴 名8: +きょうぼう 狂暴 名8: +きょうみ 興味 名3: +きょうむ 教務 名1: +きょうめい 共鳴 名6: +きょうやく 協約 名6: +きょうゆ 教諭 名1: +きょうゆう 享有 名6: +きょうゆう 共有 名6: +きょうよ 供与 名6: +きょうよう 教養 名1: +きょうよう 強要 名6: +きょうよう 共用 名6: +きょうらく 享楽 名6: +きょうらん 狂乱 名6: +きょうらん 供覧 名6: +きょうり 郷里 名1: +きょうりつ 共立 名1: +きょうりゅう 恐竜 代1: +きょうりょう 橋梁 名1: +きょうりょう 狭量 名8: +きょうりょく 協力 名7: +きょうりょく 強力 名8: +きょうれつ 強烈 名8: +きょうれん 教練 名6: +きょうわ 共和 名1: +きょうわ 協和 名1: +きょうわこく 共和国 名1: +きょえい 虚栄 名1: +きょか 許可 名6: +きょがく 巨額 代5: +きょきょじつじつ 虚々実々 代5: +きょぎ 虚偽 名1: +きょく 曲 代1:助数: +きょく 極 代1: +きょく 局 接尾1: +きょくいん 局員 名1: +きょくぎ 曲技 名1: +きょくげい 曲芸 名1: +きょくげん 極限 名1: +きょくげん 極言 名6: +きょくげん 局限 名6: +きょくし 旭志 地名: +きょくしょ 局所 名1: +きょくしょう 極小 名8: +きょくせい 極性 名1: +きょくせつ 曲折 名6: +きょくせん 曲線 名1: +きょくたん 極端 名8: +きょくだい 極大 名8: +きょくち 極致 名1: +きょくち 局地 名4: +きょくち 極地 名1: +きょくちょう 局長 名1: +きょくてん 極点 名1: +きょくど 極度 名1: +きょくない 局内 名1: +きょくばん 局番 名1: +きょくぶ 局部 名4: +きょくめん 局面 名1: +きょくめん 曲面 名1: +きょくもく 曲目 名1: +きょくりょく 極力 副1: +きょくろん 極論 名6: +きょこう 虚構 名1: +きょこう 挙行 名6: +きょしき 挙式 名6: +きょしつ 居室 名1: +きょしゅ 挙手 名6: +きょしゅう 去就 名1: +きょしゅつ 拠出 名6: +きょしょ 居所 名1: +きょしょう 巨匠 名1: +きょしょく 虚飾 名1: +きょしんたんかい 虚心坦懐 名8: +きょじつ 虚実 名1: +きょじゃく 虚弱 名8: +きょじゅう 居住 名6: +きょじん 巨人 名1: +きょすう 虚数 名1: +きょせい 去勢 名6: +きょせい 虚勢 名1: +きょぜつ 拒絶 名6: +きょたく 居宅 名1: +きょだい 巨大 名8: +きょだく 許諾 名6: +きょだつ 虚脱 名6: +きょっかい 曲解 名6: +きょっけい 極刑 名1: +きょてん 拠点 名1: +きょとう 巨頭 名1: +きょとう 挙党 名1: +きょどう 挙動 名1: +きょなん 鋸南 地名: +きょねん 去年 名1: +きょひ 拒否 名6: +きょひ 巨費 名1: +きょむ 虚無 名1: +きょよう 許容 名6: +きょらい 去来 名6: +きょり 距離 名4: +きょり 巨利 名1: +きょりゅう 居留 名6: +きょれい 虚礼 名1: +きょろきょろ きょろきょろ 副3: +きよ 寄与 名6: +きよ 清 形3: +きよう 器用 形動4: +きよう 起用 名6: +きよかわ 清川 苗字: +きよこ 喜代子 名前: +きよこ 清子 名前: +きよさと 清里 地名: +きよし 潔 名前: +きよし 清 名前: +きよし 清志 名前: +きよし 喜代志 名前: +きよす 清洲 地名: +きよせ 清瀬 苗字: +きよせ 清瀬 地名: +きよたか 清隆 名前: +きよたけ 清武 地名: +きよと 清人 名前: +きよね 清音 地名: +きよはら 清原 苗字: +きよみ 清見 苗字: +きよみ 清見 地名: +きよみ 清美 名前: +きよみず 清水 苗字: +きよみず 清水 地名: +きよめ 清め 一段4: +きよらか 清らか 形動4: +きよわ 気弱 名8: +きら 嫌 ワ五2: +きら 吉良 苗字: +きらい 嫌い 形動7: +きらく 気楽 形動7: +きらめ きらめ カ五3: +きり 霧 代1: +きり 桐 代1: +きりあげ 切り上げ 一段3: +きりあげ 切上げ 名1: +きりおと 切り落と サ五7: +きりかえ 切り替え 一段3:サ変: +きりかえ 切替え 名1: +きりかえ 切替 一段3:サ変: +きりかぶ 切株 名1: +きりかわ 切り替わ ラ五7: +きりきざ 切り刻 マ五5: +きりきず 切傷 名1: +きりぎりす キリギリス 代1: +きりくず 切り崩 サ五7: +きりくち 切口 名1: +きりこ 切り込 マ五7: +きりさげ 切り下げ 一段3: +きりさげ 切下げ 名1: +きりさめ 霧雨 名1: +きりしま 霧島 地名: +きりすて 切捨て 名1: +きりすと キリスト 名1: +きりた 切り立 タ五1: +きりたに 桐谷 苗字: +きりだ 切り出 サ五7: +きりつ 規律 名1: +きりつ 起立 名7: +きりつめ 切り詰め 一段3: +きりと 切り取 ラ五7: +きりとり 切取り 名1: +きりぬ 切り抜 カ五3: +きりぬ 切りぬ カ五3: +きりはな 切り放 サ五7: +きりはな 切り離 サ五7: +きりはり 切り貼り 代4: +きりひら 切り開 カ五7: +きりふだ 切札 名1: +きりまわ 切り回 サ五7: +きりもり 切盛り 代4: +きりゅう 気流 名1: +きりゅう 桐生 地名: +きりゅう 桐生 苗字: +きりょう 器量 名1: +きりょく 気力 名1: +きりん キリン 企業: +きりん 麒麟 代1: +きれい きれい 名9: +きれい 綺麗 名9: +きれい 奇麗 名9: +きれこ 切れ込 マ五7: +きれつ 亀裂 名1: +きれはし 切れ端 代1: +きれま 切れ間 代1: +きれめ 切れ目 名1: +きろ キロ 助数2: +きろ 岐路 名1: +きろ 帰路 名1: +きろく 記録 名6: +きろめーとる 粁 単漢: +きわ 紀和 地名: +きわ 際 代1: +きわだ 際だ タ五5: +きわど きわど 形2: +きわま 極ま ラ五3: +きわま 窮ま ラ五3: +きわみ 極み 名1: +きわめ 極め 一段4: +きわめ 究め 一段2: +きわめて きわめて 副1: +きん 金 代1:接尾1: +きん 筋 接尾1: +きん 菌 代1: +きん 禁 代1:ザ変: +きん 斤 助数2: +きん 勤 代1: +きん 巾 代1: +きん 琴 代1: +きん 金武 地名: +きん 僅 単漢: +きん 均 単漢: +きん 錦 単漢: +きん 欣 単漢: +きん 欽 単漢: +きん 禽 単漢: +きん 緊 単漢: +きん 芹 単漢: +きん 衿 単漢: +きん 襟 単漢: +きん 謹 単漢: +きん 近 単漢: +きん 今 単漢: +きんいち 金一 名前: +きんいつ 均一 名8: +きんいろ 金色 代1: +きんいん 近因 名1: +きんえい 近影 名1: +きんえん 禁煙 名6: +きんか 金貨 名1: +きんか 近火 名1: +きんかい 近海 名1: +きんかい 金塊 名1: +きんかい 琴海 地名: +きんかくじ 金閣寺 名1: +きんかん 近刊 名1: +きんが 謹賀 名1: +きんがく 金額 名1: +きんがん 近眼 名1: +きんき 近畿 地名: +きんきゅう 緊急 名8: +きんきょう 近況 名3: +きんきょり 近距離 名1: +きんきん 近々 副5: +きんぎょ 金魚 名1: +きんく 禁句 名1: +きんぐ キング 名1: +きんけい 謹啓 名1: +きんけん 近県 名1: +きんけん 金権 名1: +きんけん 金券 名1: +きんげん 謹厳 名8: +きんこ 金庫 名1: +きんこ 禁固 名1: +きんこう 近郊 名1: +きんこう 均衡 名6: +きんこつ 筋骨 名1: +きんこんしき 金婚式 名1: +きんさ 僅差 名1: +きんさく 金策 代4: +きんざい 近在 名1: +きんし 禁止 名6: +きんし 近視 名1: +きんしつ 均質 名8: +きんしゅ 禁酒 名6: +きんしゅく 緊縮 名6: +きんしょう 僅少 形動4: +きんしん 謹慎 名6: +きんしん 近親 名1: +きんじ 近似 名6: +きんじ 金治 名前: +きんじち 近似値 名1: +きんじつ 近日 代6: +きんじとう 金字塔 名1: +きんじょ 近所 名3: +きんじろう 金次郎 名前: +きんせい 均整 名1: +きんせい 近世 名1: +きんせい 金星 名1: +きんせい 禁制 代4: +きんせい 謹製 代4: +きんせつ 近接 名6: +きんせん 金銭 名4: +きんそく 禁則 名1: +きんぞう 金蔵 名前: +きんぞく 勤続 名6: +きんぞく 金属 名1: +きんたい 勤怠 名1: +きんたろう 金太郎 名前: +きんだい 近代 名4: +きんだいち 金田一 苗字: +きんだん 禁断 名1: +きんちょう 緊張 名6: +きんてい 謹呈 名6: +きんてつ 近鉄 名1: +きんとう 均等 名8: +きんにく 筋肉 名1: +きんねん 近年 代6: +きんぱく 緊迫 名6: +きんぱく 金箔 名1: +きんぱつ 金髪 名1: +きんぴん 金品 名1: +きんぶん 均分 名6: +きんべん 勤勉 名8: +きんぺん 近辺 名1: +きんぼう 近傍 名1: +きんぼし 金星 名1: +きんぽう 金峰 地名: +きんみつ 緊密 名8: +きんみゃく 金脈 名1: +きんむ 勤務 名6: +きんむさき 勤務先 名1: +きんもつ 禁物 名1: +きんや 欽也 名前: +きんゆ 禁輸 名1: +きんゆう 金融 名1: +きんゆうぎょう 金融業 名1: +きんよう 金曜 名1: +きんようび 金曜日 名1: +きんらい 近来 代6: +きんり 金利 名1: +きんりょう 禁漁 名1: +きんりょう 禁猟 名1: +きんりょく 筋力 名1: +きんりょく 金力 名1: +きんりん 近隣 名1: +きんろう 勤労 名6: +ぎ 儀 代1: +ぎ 妓 代1: +ぎ 技 代1: +ぎ 義 代1: +ぎ 議 代1: +ぎ 着 接尾2: +ぎ 伎 単漢: +ぎ 偽 単漢: +ぎ 宜 単漢: +ぎ 戯 単漢: +ぎ 擬 単漢: +ぎ 欺 単漢: +ぎ 犠 単漢: +ぎ 疑 単漢: +ぎ 祇 単漢: +ぎ 蟻 単漢: +ぎ 誼 単漢: +ぎ 祁 単漢: +ぎあ ギア 名1: +ぎあく 偽悪 名1: +ぎあん 議案 名1: +ぎいち 義一 名前: +ぎいん 議員 名1: +ぎいん 議院 名1: +ぎえんきん 義援金 名1: +ぎおん 擬音 名1: +ぎおん 祇園 地名: +ぎかい 議会 名1: +ぎかん 技官 名1: +ぎきょく 戯曲 名1: +ぎぎ 疑義 名1: +ぎけつ 議決 名6: +ぎけん 技研 名1: +ぎこう 技巧 名4: +ぎごく 疑獄 名1: +ぎごちな ぎごちな 形3: +ぎざぎざ ギザギザ 代5:サ変: +ぎし 技師 名1: +ぎし 義肢 名1: +ぎしき 儀式 名1: +ぎしゅ 義手 名1: +ぎしょう 偽証 名6: +ぎしょう 偽称 名6: +ぎしん 疑心 名1: +ぎしんあんき 疑心暗鬼 名1: +ぎじ 疑似 名1: +ぎじ 議事 名1: +ぎじどう 議事堂 名1: +ぎじゅく 義塾 名1: +ぎじゅつ 技術 名4: +ぎじょう 議場 名1: +ぎじろく 議事録 名1: +ぎじん 擬人 名1: +ぎすぎす ぎすぎす 副9: +ぎせい 犠牲 名4: +ぎせき 議席 名1: +ぎぜん 偽善 名1: +ぎそう 偽装 名6: +ぎそく 義足 名1: +ぎぞう 偽造 名6: +ぎたー ギター 名1: +ぎだい 議題 名1: +ぎちょう 議長 代2: +ぎっしり ぎっしり 代6: +ぎなん 岐南 地名: +ぎねん 疑念 名1: +ぎのう 技能 名1: +ぎのざ 宜野座 地名: +ぎのわん 宜野湾 地名: +ぎふ 岐阜 地名: +ぎふ 義父 名1: +ぎふと ギフト 名1: +ぎふん 義憤 名1: +ぎぶす ギブス 名1: +ぎほう 技法 名1: +ぎぼ 義母 名1: +ぎまん 欺瞞 名6: +ぎみ 気味 接尾6: +ぎむ 義務 名4: +ぎむづけ 義務づけ 一段3: +ぎめい 偽名 名1: +ぎもん 疑問 名1: +ぎゃく 逆 代5:接頭5: +ぎゃく 虐 単漢: +ぎゃくさつ 虐殺 名6: +ぎゃくさん 逆算 名6: +ぎゃくしゅう 逆襲 名6: +ぎゃくじゅん 逆順 名1: +ぎゃくじょう 逆上 名6: +ぎゃくすう 逆数 名1: +ぎゃくせつ 逆説 名1: +ぎゃくたい 虐待 名6: +ぎゃくてん 逆転 名6: +ぎゃくふう 逆風 名1: +ぎゃくもどり 逆戻り 代4: +ぎゃくりゅう 逆流 名6: +ぎゃぐ ギャグ 名1: +ぎゃっきょう 逆境 名1: +ぎゃっこう 逆行 名6: +ぎゃっぷ ギャップ 名1: +ぎゃんぶる ギャンブル 名6: +ぎゅう 牛 代1: +ぎゅうにく 牛肉 名1: +ぎゅうにゅう 牛乳 名1: +ぎょ 魚 接尾1: +ぎょ 御 サ変: +ぎょ 漁 単漢: +ぎょ 禦 単漢: +ぎょい 御意 名1: +ぎょう 行 代1:助数: +ぎょう 業 接尾1: +ぎょう 仰 単漢: +ぎょう 凝 単漢: +ぎょう 尭 単漢: +ぎょう 暁 単漢: +ぎょう 形 単漢: +ぎょうかい 業界 名1: +ぎょうかく 行革 名1: +ぎょうかん 行間 名1: +ぎょうぎ 行儀 名2: +ぎょうぎょうし 仰々し 形3: +ぎょうけつ 凝結 名6: +ぎょうけつ 凝血 名6: +ぎょうこ 凝固 名6: +ぎょうざ 餃子 代1: +ぎょうし 凝視 名6: +ぎょうしゃ 業者 名1: +ぎょうしゅ 業種 名1: +ぎょうしゅう 凝集 名6: +ぎょうしゅく 凝縮 サ変: +ぎょうしょ 行書 代1: +ぎょうしょう 行商 名6: +ぎょうじ 行事 名1: +ぎょうじ 行司 名1: +ぎょうずい 行水 名1: +ぎょうせい 行政 名1: +ぎょうせき 業績 名1: +ぎょうそう 形相 名1: +ぎょうだ 行田 地名: +ぎょうてん 仰天 名6: +ぎょうとう 行頭 名1: +ぎょうまつ 行末 代1: +ぎょうむ 業務 名1: +ぎょうれつ 行列 名6: +ぎょかい 魚介 名1: +ぎょきょう 漁協 名1: +ぎょぎょう 漁業 名1: +ぎょく 玉 代1: +ぎょくさい 玉砕 名6: +ぎょくせきこんこう 玉石混淆 名1: +ぎょくとう 玉東 地名: +ぎょこう 漁港 名1: +ぎょしょう 漁礁 名1: +ぎょじょう 漁場 名1: +ぎょせん 漁船 名1: +ぎょそん 漁村 名1: +ぎょにく 魚肉 名1: +ぎょふ 漁夫 名1: +ぎょみん 漁民 名1: +ぎょらい 魚雷 名1: +ぎょるい 魚類 名1: +ぎょろぎょろ ぎょろぎょろ 副3: +ぎり 義理 名1: +ぎりぎり ぎりぎり 代5: +ぎりしゃ ギリシャ 地名: +ぎりょう 技量 名1: +ぎれい 儀礼 名4: +ぎろん 議論 名6: +ぎわ 際 接尾2: +ぎわく 疑惑 名1: +ぎん 吟 ザ変: +ぎん 銀 代1: +ぎんいろ 銀色 代1: +ぎんか 銀貨 名1: +ぎんかくじ 銀閣寺 名1: +ぎんが 銀河 名1: +ぎんこう 銀行 名1: +ぎんこんしき 銀婚式 名1: +ぎんざ 銀座 名1: +ぎんざ 銀座 地名: +ぎんざん 銀山 名1: +ぎんしょう 吟唱 名6: +ぎんぞう 銀蔵 名前: +ぎんばん 銀盤 名1: +ぎんぱく 銀箔 名1: +ぎんみ 吟味 名6: +く 句 代1: +く 区 代1:接尾4:助数: +く 苦 接尾1: +く 組 マ五7: +く 酌 マ五5: +く 汲 マ五5: +く 食 ワ五5: +く 繰 ラ五3: +く 来 単漢: +く 久 単漢: +く 供 単漢: +く 倶 単漢: +く 狗 単漢: +く 玖 単漢: +く 矩 単漢: +く 躯 単漢: +く 駆 単漢: +く 駈 単漢: +く 駒 単漢: +く 孔 単漢: +く 工 単漢: +く 貢 単漢: +く 口 単漢: +くーぽん クーポン 名1: +くーらー クーラー 名1: +くーる クール 名8: +くい 杭 代1: +くい 悔い 一段3: +くい 久井 地名: +くいーん クイーン 名1: +くいあ 食い合 ワ五7: +くいい 食い入 ラ五1: +くいき 区域 名1: +くいこ 食い込 マ五7: +くいさが 食い下が ラ五1: +くいず クイズ 名1: +くいちが 食い違 ワ五3: +くいつ 食いつ カ五7: +くいとめ 食い止め 一段1: +くう 空 代1: +くういき 空域 名1: +くうかん 空間 名1: +くうき 空気 名1: +くうきょ 空虚 代5: +くうぐん 空軍 名1: +くうこう 空港 名1: +くうしゃ 空車 名1: +くうしゅう 空襲 名6: +くうせき 空席 名1: +くうぜん 空前 名1: +くうそ 空疎 代5: +くうそう 空想 名6: +くうちゅう 空中 名1: +くうちょう 空調 名1: +くうてん 空転 名6: +くうどう 空洞 名1: +くうはく 空白 名8: +くうふく 空腹 名1: +くうほう 空砲 名1: +くうぼ 空母 名1: +くうゆ 空輸 名6: +くうれい 空冷 名1: +くうろ 空路 名1: +くうろん 空論 名1: +くぇすちょん クェスチョン 名1: +くえい 区営 名1: +くぉーつ クォーツ 名1: +くぉりてぃー クォリティー 名1: +くか 久賀 地名: +くかく 区画 名6:助数: +くかん 区間 名1: +くが 玖珂 地名: +くがく 苦学 名6: +くき 久喜 地名: +くき 茎 代1: +くきざき 茎崎 地名: +くきょう 苦境 名3: +くぎ 釘 名1: +くぎ 区切 ラ五7: +くぎづけ 釘付け 代4: +くぎの 久木野 地名: +くく 括 ラ五5: +くぐ 潜 ラ五1: +くぐい 鵠 単漢: +くぐの 久々野 地名: +くけい 矩形 名1: +くさ 臭 形8: +くさ 草 代1: +くさ 腐 ラ五5: +くさか 日下 苗字: +くさかべ 日下部 苗字: +くさつ 草津 地名: +くさの 草野 苗字: +くさばな 草花 名1: +くさり 鎖 代1: +くさわけ 草分け 名1: +くし 駆使 代4: +くし 串 代1: +くし 櫛 代1: +くし 釧 単漢: +くしがた 櫛形 地名: +くしきの 串木野 苗字: +くしきの 串木野 地名: +くしくも 奇しくも 副1: +くしだ 串田 苗字: +くしはら 串原 地名: +くしびき 櫛引 地名: +くしま 串間 地名: +くしもと 串本 地名: +くしゃみ くしゃみ 代1: +くしょう 苦笑 代4: +くしら 串良 地名: +くしろ 釧路 地名: +くしん 苦心 名6: +くじ 久慈 地名: +くじびき くじ引き 代4: +くじゃく 孔雀 代1: +くじゅう 久住 地名: +くじゅう 苦渋 名1: +くじゅうくり 九十九里 地名: +くじょ 駆除 名6: +くじょう 苦情 名1: +くじら 鯨 代1: +くす 玖珠 地名: +くす 樟 代1: +くす 楠 地名: +くすくす くすくす 副2: +くすぐ くすぐ ラ五3: +くすのき 楠 代1: +くすのき 樟 単漢: +くすもと 楠本 苗字: +くすり 薬 名2: +くず 屑 代1: +くず 葛 代1: +くず 崩 サ五7: +くずう 葛生 地名: +くずまき 葛巻 地名: +くずれ 崩れ 一段4: +くずれおち 崩れ落ち 一段3: +くせ 癖 代1: +くせ 久世 地名: +くせつ 苦節 名1: +くせもの 曲者 名1: +くせん 苦戦 名6: +くぜ 久瀬 地名: +くそ 糞 代1: +くだ 下 サ五7:ラ五7: +くだ 管 代1: +くだ 砕 カ五1: +くだけ 砕け 一段3: +くださ 下さ ラ五7: +くだまつ 下松 地名: +くだもの 果物 名1: +くだらな 下らな 形2: +くだん 九段 地名: +くだん 件 代1: +くだんした 九段下 地名: +くち 朽ち 一段1: +くち 口 名2: +くち 口 助数2: +くちあたり 口当り 代1: +くちえ 口絵 名1: +くちかず 口数 名1: +くちがね 口金 名1: +くちく 駆逐 名6: +くちぐせ 口癖 名1: +くちぐせ 口ぐせ 名1: +くちぐるま 口車 名1: +くちずさ 口ずさ マ五7: +くちづけ 口づけ 代4: +くちのつ 口之津 地名: +くちばし 口走 ラ五3: +くちび 口火 名1: +くちびる 唇 代1: +くちべに 口紅 名1: +くちもと 口元 代1: +くちゅう 駆虫 名6: +くちょう 口調 名1: +くちょう 区長 名1: +くちわ 口和 地名: +くっきょう 屈強 形動4: +くっきょく 屈曲 名6: +くっきり くっきり 副9: +くっさく 掘削 名6: +くっし 屈指 名1: +くっしゃろこ 屈斜路湖 地名: +くっしょん クッション 名1: +くっしん 屈伸 代4: +くっせつ 屈折 代4: +くったく 屈託 代4: +くっちゃん 倶知安 地名: +くっつ くっつ カ五5: +くっつけ くっつけ 一段1: +くっぷく 屈伏 名6: +くっぷく 屈服 名6: +くつ 靴 名2: +くつ 屈 単漢: +くつ 掘 単漢: +くつ 窟 単漢: +くつ 沓 単漢: +くつ 堀 単漢: +くつう 苦痛 名1: +くつがえ 覆 サ五5:ラ五1: +くつき 朽木 地名: +くつした 靴下 名1: +くつじゅう 屈従 名6: +くつじょく 屈辱 名1: +くつろ 寛 ガ五8: +くつわ 轡 代1: +くてん 句点 名1: +くてん 区点 名1: +くとう 苦闘 名6: +くとうてん 句読点 名1: +くど くど 形2: +くど 口説 カ五7: +くどう 駆動 名6: +くどう 工藤 苗字: +くどう 久遠 地名: +くどやま 九度山 地名: +くない 区内 名1: +くないちょう 宮内庁 名1: +くなしり 国後 地名: +くなん 苦難 名1: +くに 国 名2: +くに 六合 地名: +くに 邦 単漢: +くに 國 単漢: +くにい 国井 苗字: +くにえだ 国枝 苗字: +くにお 国男 名前: +くにお 国夫 名前: +くにお 国雄 名前: +くにお 邦男 名前: +くにお 邦夫 名前: +くにお 邦雄 名前: +くにがみ 国頭 地名: +くにく 苦肉 名1: +くにぐに 国々 代1: +くにこ 邦子 名前: +くにさき 国東 地名: +くにたち 国立 地名: +くにとみ 国富 地名: +くにひこ 国彦 名前: +くにひこ 邦彦 名前: +くにみ 国見 苗字: +くにみ 国見 地名: +くの 久野 苗字: +くのう 苦悩 名6: +くのへ 九戸 地名: +くば 配 ラ五7: +くび 首 代1: +くび 頚 代1: +くびき 頚城 地名: +くびすじ 首筋 代1: +くふう 工夫 名6: +くぶくりん 九分九厘 代6: +くぶん 区分 名6: +くべ くべ 一段1: +くべつ 区別 名6: +くほんぶつ 九品仏 地名: +くぼ 久保 苗字: +くぼかわ 窪川 苗字: +くぼた 久保田 苗字: +くぼた 窪田 苗字: +くま 久万 地名: +くま 球磨 地名: +くま 熊 代1: +くま 隈 代1: +くまいし 熊石 地名: +くまがい 熊谷 苗字: +くまがや 熊谷 苗字: +くまがや 熊谷 地名: +くまくら 熊倉 苗字: +くまげ 熊毛 地名: +くまざわ 熊沢 苗字: +くまだ 熊田 苗字: +くまとり 熊取 地名: +くまの 熊野 苗字: +くまの 熊野 地名: +くまのがわ 熊野川 地名: +くまもと 熊本 苗字: +くまもと 熊本 地名: +くまやま 熊山 地名: +くみ 組 代1:助数: +くみ 久美 名前: +くみあ 組み合 ワ五7: +くみあい 組合 名1: +くみあげ 汲み上げ 一段1: +くみあげ 組み上げ 一段1: +くみあわ 組み合わ サ五1: +くみあわせ 組合せ 名1: +くみあわせ 組み合わせ 名1: +くみいれ 組み入れ 一段3: +くみこ 久美子 名前: +くみこ 組み込 マ五7: +くみたて 組み立て 一段3: +くみつ 組み付 カ五3: +くみと 汲み取 ラ五7: +くみと くみ取 ラ五7: +くみはま 久美浜 地名: +くみはん 組版 名1: +くみやま 久御山 地名: +くみん 区民 名1: +くめ 久米 苗字: +くめ 久米 地名: +くめ 粂 単漢: +くめなん 久米南 地名: +くめん 工面 名6: +くも 雲 代1: +くも 蜘蛛 代1: +くも 曇 ラ五7: +くもつ 供物 名2: +くもん 苦悶 名6: +くや 悔や マ五8: +くやくしょ 区役所 名1: +くやし 悔し 形5: +くよう 供養 名7: +くら 蔵 名2: +くら 倉 名2: +くら 鞍 代1: +くら 暗 形6: +くら 暮ら サ五8: +くら くら マ五7: +くら 食ら ワ五1: +くらい くらい 接尾1:助数2: +くらい 位 接尾1: +くらい 位 助数2: +くらいあんと クライアント 代1: +くらいし 倉石 苗字: +くらいし 倉石 地名: +くらいまっくす クライマックス 名8: +くらく 苦楽 名1: +くらくしょん クラクション 名1: +くらさわ 倉沢 苗字: +くらしき 倉敷 地名: +くらしっく クラシック 名8: +くらす クラス 名1: +くらすた クラスタ 名1: +くらた 倉田 苗字: +くらたけ 倉岳 地名: +くらっしゅ クラッシュ 名6: +くらっち クラッチ 名1: +くらて 鞍手 地名: +くらはし 倉橋 苗字: +くらふと クラフト 名1: +くらぶ クラブ 名1: +くらぶ 倶楽部 名1: +くらぶち 倉淵 地名: +くらべ 比べ 接尾1:一段2: +くらべ 較べ 一段2: +くらま 鞍馬 地名: +くらもち 倉持 苗字: +くらもと 倉本 苗字: +くらやみ 暗闇 名1: +くらよし 倉吉 地名: +くらよし 倉吉 苗字: +くり 栗 名1: +くりーにんぐ クリーニング 名6: +くりーむ クリーム 名1: +くりーん クリーン 名1: +くりあ クリア 代5:サ変: +くりあげ 繰り上げ 一段3: +くりいれ 繰り入れ 一段3: +くりかえ 繰り返 サ五7: +くりこ 繰り越 サ五7: +くりこ 繰り込 マ五7: +くりこし 繰越 名1: +くりこま 栗駒 地名: +くりさげ 繰り下げ 一段3: +くりさわ 栗沢 地名: +くりすたる クリスタル 名1: +くりすます クリスマス 名1: +くりた 栗太 地名: +くりた 栗田 苗字: +くりだ 繰り出 サ五7: +くりっく クリック 代4: +くりっぴんぐ クリッピング 代1: +くりっぷ クリップ 名1: +くりつ 区立 名1: +くりにっく クリニック 名1: +くりの 栗野 苗字: +くりのべ 繰り延べ 一段3: +くりのべ 繰延 名1: +くりはし 栗橋 苗字: +くりはら 栗原 苗字: +くりはら 栗原 地名: +くりばやし 栗林 苗字: +くりひろげ 繰り広げ 一段3: +くりもと 栗源 地名: +くりもと 栗本 苗字: +くりやま 栗山 苗字: +くりょ 苦慮 名6: +くる 狂 ワ五8: +くる くる マ五7: +くる 来る カ変終体: +くるー クルー 名1: +くるくる くるくる 副3: +くるし 苦し 形9:マ五8: +くるま くるま ラ五5: +くるま 車 名2: +くるま クルマ 名1: +くるまだい 車代 名2: +くるみ 胡桃 代1: +くるみ くるみ 代1: +くるめ 久留米 地名: +くれ くれ 一段1: +くれ 呉 地名: +くれ 暮れ 一段3: +くれ 来れ カ変仮: +くれーたー クレーター 名1: +くれーむ クレーム 名1: +くれーん クレーン 名1: +くれおぱとら クレオパトラ 代1: +くれぐれ くれぐれ 副6: +くれじっと クレジット 名6: +くれない 紅 代1: +くろ 黒 名1:形11: +くろーく クローク 名1: +くろーず クローズ 代4: +くろいし 黒石 苗字: +くろいし 黒石 地名: +くろいそ 黒磯 地名: +くろいわ 黒岩 苗字: +くろう 苦労 名7:形動8: +くろうと 玄人 代2: +くろかわ 黒川 苗字: +くろかわ 黒川 地名: +くろき 黒木 苗字: +くろさき 黒崎 苗字: +くろさわ 黒沢 苗字: +くろしお 黒潮 名1: +くろじ 黒字 名1: +くろす クロス 名6: +くろせ 黒瀬 苗字: +くろたき 黒滝 苗字: +くろたき 黒滝 地名: +くろだ 黒田 苗字: +くろだしょう 黒田庄 地名: +くろっく クロック 名1: +くろばね 黒羽 地名: +くろべ 黒部 地名: +くろほね 黒保根 地名: +くろぼし 黒星 名1: +くろまく 黒幕 名1: +くろまつない 黒松内 地名: +くろやなぎ 黒柳 苗字: +くろやま 黒山 名8: +くわ 桑 代1: +くわ 鍬 代1: +くわえ 加え 一段2: +くわけ 区分け 代4: +くわし 詳し 形9: +くわた 桑田 苗字: +くわだて 企て 一段4: +くわな 桑名 苗字: +くわな 桑名 地名: +くわはら 桑原 苗字: +くわばら 桑原 苗字: +くわり 区割り 代4: +くわわ 加わ ラ五7: +くん 訓 代1: +くん 君 接尾1: +くん 薫 ザ変:代1: +くん 勲 代1: +くんいく 訓育 名6: +くんかい 訓戒 名6: +くんこく 訓告 名6: +くんしゅ 君主 名1: +くんしょう 勲章 名1: +くんじ 訓示 名6: +くんとう 薫陶 名7: +くんねっぷ 訓子府 地名: +くんぷう 薫風 名1: +くんよみ 訓読み 代4: +くんりん 君臨 名6: +くんれい 訓令 名6: +くんれん 訓練 名7: +くんわ 訓話 名6: +ぐ 具 代1: +ぐ 愚 代1: +ぐ 倶 単漢: +ぐ 虞 単漢: +ぐ 惧 単漢: +ぐあい 具合 名1: +ぐあてまら グアテマラ 地名: +ぐう 遇 サ変: +ぐう 偶 代1: +ぐう 宮 代1: +ぐう 隅 単漢: +ぐう 寓 単漢: +ぐうじ 宮司 名1: +ぐうすう 偶数 名1: +ぐうぜん 偶然 代5: +ぐうぞう 偶像 名1: +ぐうはつ 偶発 名6: +ぐきょ 愚挙 名1: +ぐしかみ 具志頭 地名: +ぐしかわ 具志川 地名: +ぐしょう 具象 名6: +ぐしん 具申 名6: +ぐじょう 郡上 地名: +ぐすくべ 城辺 地名: +ぐたい 具体 名4: +ぐち 愚痴 名1: +ぐち 口 接尾2: +ぐちょく 愚直 名8: +ぐっしょり ぐっしょり 副8: +ぐっと ぐっと 副1: +ぐどん 愚鈍 代5: +ぐび 具備 名6: +ぐみ 組 接尾2: +ぐらいだー グライダー 名1: +ぐらうんど グラウンド 名1: +ぐらす グラス 名1: +ぐらふ グラフ 名1: +ぐらふぃっく グラフィック 名1: +ぐらまー グラマー 名8: +ぐらむ グラム 助数2: +ぐらんど グランド 名1: +ぐりーん グリーン 名1: +ぐりこーげん グリコーゲン 名1: +ぐりせりん グリセリン 名1: +ぐりっど グリッド 名1: +ぐりる グリル 名1: +ぐるーぴんぐ グルーピング 名6: +ぐるーぷ グループ 名1: +ぐるい 狂い 接尾6: +ぐるぐる ぐるぐる 副2: +ぐるめ グルメ 名1: +ぐるり ぐるり 副2: +ぐれー グレー 名1: +ぐれーぷ グレープ 名1: +ぐれい グレイ 名1: +ぐろーばる グローバル 名8: +ぐん 群 接尾1:助数: +ぐん 軍 接尾1:助数: +ぐん 郡 代1:接尾4: +ぐんか 軍歌 名1: +ぐんかく 軍拡 名1: +ぐんかん 軍艦 名1: +ぐんきょ 群居 名6: +ぐんぐん ぐんぐん 副2: +ぐんこく 軍国 名1: +ぐんしきん 軍資金 名1: +ぐんしゅう 群衆 名1: +ぐんしゅう 群集 名6: +ぐんしゅく 軍縮 名1: +ぐんじ 軍事 名1: +ぐんじ 郡司 名前: +ぐんじゅ 軍需 名1: +ぐんじん 軍人 名1: +ぐんせい 群生 名6: +ぐんそう 軍曹 名1: +ぐんぞう 群像 名1: +ぐんたい 軍隊 名1: +ぐんだん 軍団 名1: +ぐんと ぐんと 副1: +ぐんとう 群島 名1: +ぐんばい 軍配 名1: +ぐんび 軍備 名1: +ぐんぶ 郡部 名1: +ぐんぶ 群舞 名6: +ぐんま 群馬 地名: +ぐんよう 軍用 名1: +ぐんらく 群落 名1: +け 蹴 ラ五7: +け 消 サ五7: +け 毛 代1: +け 気 接尾1: +け 家 接尾1: +け 化 単漢: +け 仮 単漢: +け 華 単漢: +け 卦 単漢: +け 袈 単漢: +け 祁 単漢: +け 懸 単漢: +けーき ケーキ 名1: +けーす ケース 名1: +けーぶる ケーブル 名1: +けい 計 接尾1:接頭4: +けい 軽 接頭1: +けい 系 接尾3:助数: +けい 形 接尾1: +けい 刑 接尾1: +けい 啓 代4: +けい 契 代1: +けい 径 代1: +けい 敬 代4: +けい 景 代1: +けい 桂 代1: +けい 経 代1: +けい 京 代1: +けい 罫 代1: +けい 兄 代1: +けい 慶 代4: +けい 卿 代1: +けい 茎 代1: +けい 渓 代1: +けい 型 代1: +けい 馨 単漢: +けい 競 単漢: +けい 境 単漢: +けい 係 単漢: +けい 傾 単漢: +けい 圭 単漢: +けい 珪 単漢: +けい 恵 単漢: +けい 慧 単漢: +けい 憩 単漢: +けい 掲 単漢: +けい 携 単漢: +けい 畦 単漢: +けい 稽 単漢: +けい 継 単漢: +けい 繋 単漢: +けい 荊 単漢: +けい 蛍 単漢: +けい 詣 単漢: +けい 警 単漢: +けい 頚 単漢: +けい 鶏 単漢: +けい 勁 単漢: +けいあい 敬愛 名7: +けいい 敬意 名1: +けいい 経緯 名1: +けいいち 啓一 名前: +けいいち 圭一 名前: +けいいち 恵一 名前: +けいいち 慶一 名前: +けいいち 敬一 名前: +けいいん 契印 名6: +けいえい 経営 名6: +けいえん 敬遠 名6: +けいおう 京王 企業: +けいおう 慶応 名1: +けいおう 慶應 名1: +けいか 経過 名7: +けいかい 警戒 名6: +けいかい 軽快 名8: +けいかく 計画 名7: +けいかん 警官 名1: +けいかん 景観 名1: +けいが 慶賀 名1: +けいがい 形骸 名4: +けいがん 慧眼 名1: +けいき 景気 名1: +けいき 契機 名1: +けいき 計器 名1: +けいき 刑期 名1: +けいぐ 敬具 名1: +けいけん 経験 名7: +けいげん 軽減 名6: +けいこ 稽古 名5: +けいこ 恵子 名前: +けいこ 慶子 名前: +けいこ 圭子 名前: +けいこ 景子 名前: +けいこ 啓子 名前: +けいこ 桂子 名前: +けいこ 敬子 名前: +けいこう 傾向 名1: +けいこう 携行 名6: +けいこう 蛍光 名1: +けいこうぎょう 軽工業 名1: +けいこうとう 蛍光灯 名1: +けいこく 渓谷 名1: +けいこく 警告 名6: +けいご 敬語 名1: +けいご 警護 名6: +けいさい 掲載 名6: +けいさつ 警察 名1: +けいさつかん 警察官 名1: +けいさつしょ 警察署 名1: +けいさつちょう 警察庁 名1: +けいさん 計算 名6: +けいさんき 計算機 名1: +けいさんしょ 計算書 名1: +けいざい 経済 名4: +けいざいかい 経済界 名1: +けいし 警視 名1: +けいし 軽視 名6: +けいしき 形式 名4: +けいしちょう 警視庁 名1: +けいしつ 形質 名1: +けいしゃ 傾斜 名6: +けいしゅつ 掲出 名6: +けいしょう 敬称 名1: +けいしょう 景勝 名1: +けいしょう 継承 名6: +けいしょう 警鐘 名1: +けいしょう 軽傷 名1: +けいしょう 軽症 名1: +けいしょく 軽食 名1: +けいしん 軽震 名1: +けいじ 刑事 名1: +けいじ 掲示 名6: +けいじ 啓司 名前: +けいじ 啓二 名前: +けいじ 圭二 名前: +けいじ 慶治 名前: +けいじ 敬二 名前: +けいじじょう 形而上 代1: +けいじょう 経常 名1: +けいじょう 形状 名1: +けいじょう 計上 名6: +けいじょう 啓上 名6: +けいすう 係数 名1: +けいすう 計数 名1: +けいすけ 佳佑 名前: +けいすけ 佳祐 名前: +けいすけ 啓介 名前: +けいず 系図 名1: +けいせい 形勢 名1: +けいせい 形成 名6: +けいせき 形跡 名1: +けいせつ 蛍雪 名1: +けいせん 罫線 名1: +けいせん 経線 名1: +けいせん 桂川 地名: +けいそう 軽装 名6: +けいそう 係争 名6: +けいそく 計測 名6: +けいそつ 軽率 名8: +けいぞう 啓三 名前: +けいぞう 恵三 名前: +けいぞう 敬三 名前: +けいぞう 恵贈 名7: +けいぞく 継続 名6: +けいた 慶太 名前: +けいたい 形態 名1: +けいたい 携帯 名6: +けいたいそ 形態素 代1: +けいだい 境内 名1: +けいだんれん 経団連 名1: +けいちつ 啓蟄 名1: +けいちゅう 傾注 代4: +けいちょう 傾聴 代4: +けいちょう 慶弔 名1: +けいてい 兄弟 名1: +けいてき 警笛 名1: +けいと 毛糸 名1: +けいとう 系統 名4: +けいとう 傾倒 代4: +けいど 軽度 名1: +けいど 経度 名1: +けいねん 経年 名1: +けいはく 軽薄 名8: +けいはつ 啓発 名6: +けいはん 京阪 企業: +けいはんしん 京阪神 地名: +けいば 競馬 名1: +けいばつ 刑罰 名1: +けいひ 経費 名1: +けいひん 景品 名1: +けいひん 京浜 地名: +けいび 警備 名6: +けいふ 系譜 名1: +けいふく 敬服 名6: +けいふく 京福 企業: +けいぶ 警部 名1: +けいべつ 軽蔑 名6: +けいほう 警報 名1: +けいほう 刑法 名1: +けいほく 京北 地名: +けいみょう 軽妙 形動4: +けいむしょ 刑務所 名1: +けいもう 啓蒙 名6: +けいやく 契約 名7: +けいやくしょ 契約書 名1: +けいゆ 経由 名6: +けいゆ 軽油 名1: +けいよう 形容 名6: +けいよう 掲揚 名6: +けいようし 形容詞 名1: +けいらん 鶏卵 名1: +けいり 経理 代4: +けいりゃく 計略 名1: +けいりゅう 渓流 名1: +けいりょう 計量 名6: +けいりん 競輪 名1: +けいるい 係累 名1: +けいれい 敬礼 代4: +けいれき 経歴 名1: +けいれつ 系列 名1: +けいれん 痙攣 代4: +けいろ 経路 名1: +けいろう 敬老 名1: +けおと け落と サ五5: +けおりもの 毛織物 名1: +けが 怪我 代4: +けが 汚 サ五7: +けがらわし 汚らわし 形2: +けがれ 汚れ 一段4: +けがわ 毛皮 名1: +けさ 今朝 代6: +けさ 袈裟 代1: +けしいん 消印 名1: +けしき 景色 名1: +けしとめ 消し止め 一段3: +けしょう 化粧 名5: +けしょうひん 化粧品 代1: +けしん 化身 名1: +けず 削 ラ五8: +けずりと 削り取 ラ五5: +けせん 気仙 地名: +けせんぬま 気仙沼 地名: +けた 桁 代1:助数: +けたか 気高 地名: +けたたまし けたたまし 形3: +けたちがい 桁違い 代5: +けだか 気高 形2: +けっか 結果 名3: +けっかい 決壊 名6: +けっかく 結核 名1: +けっかく 欠格 名1: +けっかん 欠陥 名1: +けっかん 血管 名1: +けっき 決起 名6: +けっきゅう 血球 名1: +けっきょく 結局 代6: +けっきん 欠勤 名6: +けっこう 結構 代5: +けっこう 決行 名6: +けっこう 欠航 名6: +けっこう 血行 名1: +けっこん 結婚 名7: +けっこん 血痕 名1: +けっこんしき 結婚式 名1: +けっさい 決裁 名7: +けっさい 決済 名7: +けっさく 傑作 名8: +けっさん 決算 名6: +けっし 決死 名1: +けっしゃ 結社 名1: +けっしゅう 結集 名6: +けっしゅつ 傑出 名6: +けっしょう 決勝 名1: +けっしょう 血漿 名1: +けっしょう 結晶 代4: +けっしょうせん 決勝戦 名1: +けっしょく 欠食 名6: +けっしょく 血色 名1: +けっしん 決心 名7: +けっしん 結審 名6: +けっせい 結成 名6: +けっせい 血清 名1: +けっせき 欠席 名7: +けっせき 結石 名1: +けっせん 決戦 名1: +けっせん 血栓 名1: +けっそう 血相 名1: +けっそく 結束 名6: +けっそん 欠損 名6: +けったく 結託 名6: +けっちゃく 決着 名6: +けっちん 血沈 名1: +けってい 決定 名7: +けってん 欠点 名1: +けっとう 決闘 名6: +けっとう 結党 名6: +けっとう 血糖 名1: +けっとう 血統 名1: +けっぱく 潔白 名8: +けっぺき 潔癖 名8: +けつ 欠 代1: +けつ 決 代1: +けつ 穴 代1: +けつ 桔 単漢: +けつ 傑 単漢: +けつ 潔 単漢: +けつ 結 単漢: +けつ 血 単漢: +けつ 訣 単漢: +けつ 蕨 単漢: +けつあつ 血圧 名1: +けつい 決意 代4: +けついん 欠員 名1: +けつえき 血液 名1: +けつえきがた 血液型 代1: +けつえん 血縁 名1: +けつぎ 決議 名6: +けつごう 結合 名6: +けつじつ 結実 名6: +けつじょ 欠如 名6: +けつじょう 欠場 名6: +けつぞく 血族 名1: +けつだん 決断 名7: +けつだん 結団 名6: +けつばん 欠番 名1: +けつべつ 決別 名6: +けつぼう 欠乏 名6: +けつまくえん 結膜炎 名1: +けつまつ 結末 名1: +けつらく 欠落 名6: +けつれい 欠礼 名6: +けつれつ 決裂 名6: +けつろ 結露 代4: +けつろん 結論 名6: +けどういん 祁答院 地名: +けな けな サ五7: +けなげ 健気 形動4: +けなみ 毛並 名1: +けねん 懸念 名6: +けはい 気配 名1: +けびょう 仮病 名1: +けぶか 毛深 形2: +けむ 煙 形4:ラ五3: +けむし 毛虫 代1: +けむた 煙た 形5: +けむり 煙 代1: +けもの 獣 代1: +けらい 家来 名1: +けり けり 代1: +けれど けれど 接続: +けれども けれども 接続: +けわし 険し 形2: +けん 券 接尾1: +けん 権 接尾1: +けん 犬 接尾1: +けん 圏 接尾1: +けん 軒 助数2: +けん 件 代1:助数2: +けん 間 代1:助数2: +けん 剣 代1: +けん 県 代1: +けん 見 代1: +けん 鍵 代1: +けん 兼 代1: +けん 険 代1: +けん 拳 代1: +けん 堅 代1: +けん 験 代4: +けん 研 代1: +けん 肩 代1: +けん 絹 代1: +けん 建 代1: +けん 繭 代1: +けん 憲 代1: +けん 健 名前: +けん 硯 代1: +けん 検 サ変: +けん 献 ザ変: +けん 嫌 単漢: +けん 絢 単漢: +けん 喧 単漢: +けん 鰹 単漢: +けん 倹 単漢: +けん 倦 単漢: +けん 懸 単漢: +けん 捲 単漢: +けん 牽 単漢: +けん 謙 単漢: +けん 賢 単漢: +けん 遣 単漢: +けん 顕 単漢: +けん 鹸 単漢: +けんあく 険悪 形動4: +けんあん 懸案 名3: +けんい 権威 名1: +けんいち 健一 名前: +けんいち 憲一 名前: +けんいち 研一 名前: +けんいち 謙一 名前: +けんいち 賢一 名前: +けんいん 検印 名1: +けんいん 牽引 名6: +けんえい 兼営 名6: +けんえい 県営 名1: +けんえき 検疫 名6: +けんえつ 検閲 名6: +けんえん 嫌煙 名1: +けんえん 犬猿 名1: +けんお 嫌悪 名6: +けんおん 検温 名6: +けんか 県下 名1: +けんか 喧嘩 名6: +けんかい 見解 名1: +けんかい 県会 名1: +けんがい 圏外 名1: +けんがい 県外 名1: +けんがく 見学 名7: +けんがん 検眼 名6: +けんきち 健吉 名前: +けんきゃく 健脚 名10: +けんきゅう 研究 名7: +けんきゅうかい 研究会 名1: +けんきゅうしつ 研究室 名1: +けんきゅうしょ 研究所 名1: +けんきゅうじょ 研究所 名1: +けんきょ 検挙 名6: +けんきょ 謙虚 形動4: +けんきん 献金 名6: +けんぎ 嫌疑 名1: +けんぎ 建議 名6: +けんぎ 県議 名1: +けんぎょう 兼業 名6: +けんけい 県警 名1: +けんけつ 献血 名6: +けんげん 権限 名1: +けんげん 顕現 名6: +けんこう 健康 名10: +けんこうほけん 健康保険 名1: +けんこく 建国 名1: +けんご 堅固 名8: +けんさ 検査 名6: +けんさく 検索 名6: +けんさつ 検察 名6: +けんさつ 検札 名6: +けんさつ 賢察 名7: +けんさつかん 検察官 名1: +けんさつちょう 検察庁 名1: +けんざい 顕在 名7: +けんざい 健在 名10: +けんざい 建材 名1: +けんざぶろう 健三郎 名前: +けんざん 検算 名6: +けんし 検視 名6: +けんしき 見識 名1: +けんしゅう 研修 名6: +けんしゅう 検収 名6: +けんしゅつ 検出 名6: +けんしょう 健勝 名10: +けんしょう 検証 名6: +けんしょう 懸賞 名1: +けんしょう 憲章 名1: +けんしょく 兼職 名6: +けんしん 検診 名6: +けんしん 検針 名6: +けんしん 献身 名6: +けんじ 検事 名1: +けんじ 堅持 名6: +けんじ 顕示 名6: +けんじ 健司 名前: +けんじ 健次 名前: +けんじ 健二 名前: +けんじ 建司 名前: +けんじ 憲司 名前: +けんじ 憲治 名前: +けんじ 憲二 名前: +けんじ 謙治 名前: +けんじ 謙二 名前: +けんじ 賢治 名前: +けんじ 賢二 名前: +けんじつ 堅実 名8: +けんじゃ 賢者 名1: +けんじゅう 拳銃 名1: +けんじょう 献上 名7: +けんじょう 謙譲 名8: +けんじろう 健次郎 名前: +けんじん 県人 名1: +けんじん 賢人 名1: +けんすい 懸垂 名6: +けんすう 件数 名1: +けんすう 軒数 名1: +けんすけ 健介 名前: +けんせい 牽制 名6: +けんせい 権勢 名1: +けんせい 県政 名1: +けんせつ 建設 名6: +けんせつしょう 建設省 名1: +けんぜん 健全 名10: +けんそ 険阻 代5: +けんそう 喧騒 名1: +けんそん 謙遜 名7:形動1: +けんぞう 建造 名6: +けんぞう 健三 名前: +けんぞう 賢三 名前: +けんぞうぶつ 建造物 名1: +けんたい 倦怠 名6: +けんたっきー ケンタッキー 地名: +けんたろう 健太郎 名前: +けんち 検知 名6: +けんち 見地 名1: +けんちく 建築 名6: +けんちくし 建築士 名1: +けんちょ 顕著 形動4: +けんちょう 県庁 名1: +けんてい 検定 名6: +けんてい 献呈 名6: +けんでん 喧伝 名6: +けんとう 検討 名7: +けんとう 健闘 名7: +けんとう 見当 名1: +けんどう 剣道 名1: +けんどう 県道 名1: +けんない 県内 名1: +けんない 圏内 名1: +けんにょう 検尿 名6: +けんにん 兼任 名6: +けんのう 献納 名6: +けんばん 鍵盤 名1: +けんび 兼備 名6: +けんびきょう 顕微鏡 名1: +けんぶち 剣淵 地名: +けんぶつ 見物 名6: +けんぶりっじ ケンブリッジ 代1: +けんぶん 見聞 名6: +けんぶん 検分 名7: +けんべん 検便 名6: +けんぺいりつ 建蔽率 名1: +けんぽ 健保 名1: +けんぽう 憲法 名1: +けんぽう 拳法 名1: +けんみん 県民 名1: +けんむ 兼務 名6: +けんめい 懸命 形動9: +けんめい 賢明 形動4: +けんめい 件名 名1: +けんもん 検問 名6: +けんやく 倹約 名8:サ変: +けんよう 兼用 名6: +けんり 権利 名1: +けんりつ 県立 名1:接尾4: +けんりょく 権力 名1: +けんろう 堅牢 名8: +げ 下 代1: +げ 解 単漢: +げ 外 単漢: +げーと ゲート 名1: +げーとあれい ゲートアレイ 名1: +げーむ ゲーム 代3: +げい 芸 接尾1: +げい 迎 単漢: +げい 鯨 単漢: +げい 睨 単漢: +げい 藝 単漢: +げいげき 迎撃 名6: +げいごう 迎合 名6: +げいごと 芸事 名1: +げいしゃ 芸者 代2: +げいしゃ 迎車 代1: +げいしゅん 迎春 名1: +げいじゅつ 芸術 名4: +げいせい 芸西 地名: +げいとう 芸当 名1: +げいにん 芸人 名1: +げいのう 芸能 名1: +げいのう 芸濃 地名: +げいのうじん 芸能人 名1: +げいひんかん 迎賓館 名1: +げいほく 芸北 地名: +げいめい 芸名 名1: +げか 外科 名1: +げかい 下界 名1: +げき 劇 代1:接尾1: +げき 隙 代1: +げき 激 サ変: +げき 逆 単漢: +げき 戟 単漢: +げき 撃 単漢: +げきか 激化 代4: +げきが 劇画 名1: +げきげん 激減 名6: +げきしん 激震 名1: +げきじょう 劇場 名1: +げきじょう 激情 名1: +げきせん 激戦 名6: +げきぞう 激増 名6: +げきたい 撃退 名6: +げきだん 劇団 名1: +げきつい 撃墜 名6: +げきつう 激痛 名1: +げきてき 劇的 形動1: +げきとう 激闘 名6: +げきとつ 激突 名6: +げきど 激怒 名6: +げきどう 激動 名6: +げきは 撃破 名6: +げきはつ 激発 名6: +げきへん 激変 名6: +げきむ 激務 名1: +げきめつ 撃滅 名6: +げきやく 劇薬 名1: +げきりゅう 激流 名1: +げきれい 激励 名6: +げきれつ 激烈 名8: +げきろん 激論 名6: +げこ 下戸 名1: +げこう 下校 名6: +げざい 下剤 名1: +げざん 下山 名6: +げし 夏至 名1: +げしゃ 下車 名6: +げしゅく 下宿 名6: +げじゅん 下旬 名1: +げすい 下水 名1: +げすいどう 下水道 名1: +げすと ゲスト 名1: +げせん 下船 名6: +げた 下駄 名1: +げだん 下段 名1: +げっか 月下 代1: +げっかん 月刊 名1: +げっかん 月間 名1: +げっきゅう 月給 名1: +げっけい 月経 名1: +げっけいじゅ 月桂樹 名1: +げっさん 月産 名1: +げっしゃ 月謝 名2: +げっしゅう 月収 名1: +げっしょく 月食 名1: +げっぷ 月賦 名1: +げっぺい 月餅 代1: +げっぽう 月俸 名1: +げっぽう 月報 名1: +げつ 月 代1: +げつがく 月額 名1: +げつじ 月次 名1: +げつまつ 月末 名1: +げつよう 月曜 名1: +げつようび 月曜日 名1: +げつり 月利 名1: +げつれい 月例 名1: +げどく 解毒 名6: +げねつ 解熱 名6: +げねつざい 解熱剤 名1: +げひん 下品 名8: +げらく 下落 名6: +げりら ゲリラ 名1: +げれつ 下劣 名8: +げれんで ゲレンデ 名1: +げろ 下呂 地名: +げん 元 代1:助数2: +げん 弦 代1:助数2: +げん 減 代1:ザ変: +げん 源 接尾1: +げん 玄 代1: +げん 現 代1:接頭1:ザ変: +げん 舷 代1: +げん 言 代1: +げん 限 助数2: +げん 厳 代1: +げん 原 代1: +げん 絃 単漢: +げん 諺 単漢: +げん 幻 単漢: +げんあつ 減圧 名6: +げんあん 原案 名1: +げんいん 原因 名6: +げんえい 幻影 名1: +げんえき 現役 名1: +げんえき 減益 名1: +げんえき 原液 名1: +げんか 原価 名1: +げんか 減価 名1: +げんか 現下 名1: +げんか 言下 名1: +げんか 喧嘩 接尾2: +げんかい 限界 名1: +げんかい 厳戒 名6: +げんかく 厳格 形動4: +げんかく 幻覚 名1: +げんかん 玄関 名1: +げんかん 厳寒 名1: +げんが 原画 名1: +げんがい 言外 名1: +げんがく 弦楽 名1: +げんがく 減額 名6: +げんき 元気 名9: +げんきゃく 減却 名6: +げんきゅう 言及 名6: +げんきゅう 減給 名6: +げんきょう 現況 名1: +げんきん 現金 名8: +げんきん 厳禁 名6: +げんぎょう 現業 名1: +げんけい 原型 名1: +げんけい 原形 名1: +げんけい 減刑 名6: +げんこう 原稿 名1: +げんこう 現行 名6: +げんこう 言行 名1: +げんこく 原告 名1: +げんご 言語 名1: +げんご 原語 名1: +げんごう 元号 名1: +げんさい 減殺 名6: +げんさく 原作 名1: +げんさん 原産 名1: +げんさん 減産 名6: +げんさんち 原産地 名1: +げんざい 現在 名1: +げんざいりょう 原材料 名1: +げんざん 減算 名6: +げんし 原始 名4: +げんし 原子 名1: +げんし 減資 代4: +げんしかく 原子核 名1: +げんしゅ 厳守 名6: +げんしゅ 元首 名1: +げんしゅ 原種 名1: +げんしゅ 原酒 名1: +げんしゅう 減収 名6: +げんしゅく 厳粛 形動4: +げんしょ 原書 名1: +げんしょう 現象 名1: +げんしょう 減少 名6: +げんしょく 現職 名1: +げんしょく 原色 名1: +げんしょく 減食 名6: +げんしりょく 原子力 名1: +げんしろ 原子炉 名1: +げんじ 源氏 名1: +げんじ 源治 苗字: +げんじつ 現実 名4: +げんじつみ 現実味 名1: +げんじゅう 厳重 代5: +げんじゅうしょ 現住所 名1: +げんじゅうみん 原住民 名1: +げんじょう 現状 名1: +げんじょう 原状 名1: +げんすい 元帥 名1: +げんすい 減水 名6: +げんすい 減衰 名6: +げんすいばく 原水爆 名1: +げんすん 原寸 名1: +げんず 原図 名1: +げんせい 厳正 名8: +げんせき 原石 名1: +げんせつ 言説 名1: +げんせん 厳選 名6: +げんせん 源泉 名1: +げんぜい 減税 名6: +げんぜん 厳然 形動2: +げんそ 元素 名1: +げんそう 幻想 名4: +げんそう 現送 代4: +げんそく 原則 名4: +げんそく 減速 名6: +げんそん 減損 名1: +げんそん 現存 名6: +げんぞう 現像 名6: +げんぞん 現存 名6: +げんたい 減退 名6: +げんたん 減反 名6: +げんだい 現代 名4: +げんち 現地 代1: +げんち 言質 代1: +げんつき 原付 名1: +げんてい 限定 名6: +げんていばん 限定版 名1: +げんてん 原点 名1: +げんてん 原典 名1: +げんてん 減点 名6: +げんとう 厳冬 名1: +げんど 限度 名1: +げんどう 言動 名1: +げんどうき 原動機 名1: +げんどうりょく 原動力 名1: +げんに 現に 副1: +げんにん 現任 名1: +げんば 現場 名1: +げんばく 原爆 名1: +げんばつ 厳罰 名6: +げんぱい 減配 名6: +げんぱつ 原発 名1: +げんぴ 厳秘 名1: +げんぴん 現品 名1: +げんぶつ 現物 名1: +げんぶん 原文 名1: +げんぷ 厳父 名1: +げんぷう 厳封 名6: +げんぼ 原簿 名1: +げんぼく 原木 名1: +げんぽう 減俸 名6: +げんぽう 減法 名1: +げんぽん 原本 名1: +げんまい 玄米 名1: +げんみつ 厳密 名8: +げんめい 厳命 名6: +げんめい 言明 名6: +げんめつ 幻滅 名6: +げんめん 減免 名1: +げんや 原野 名1: +げんゆ 原油 名1: +げんゆう 現有 名6: +げんり 原理 名1: +げんりゅう 源流 名1: +げんりょう 原料 名1: +げんりょう 減量 名6: +げんろく 元禄 代1: +げんろん 言論 名1: +こ こ ガ五7: +こ 漕 ガ五7: +こ 超 サ五5: +こ 越 サ五8: +こ 漉 サ五7: +こ 乞 ワ五3: +こ 込 マ五7: +こ 混 マ五3: +こ 恋 ワ五3: +こ 請 ワ五3: +こ 凝 ラ五7: +こ 濃 形2: +こ 来 カ変未: +こ 子 代1: +こ 弧 代1: +こ 粉 代1: +こ 小 接頭1: +こ 故 接頭3: +こ 庫 接尾1: +こ 湖 接尾4: +こ 個 助数2: +こ 戸 助数2: +こ 去 単漢: +こ 拠 単漢: +こ 虚 単漢: +こ 乎 単漢: +こ 古 単漢: +こ 呼 単漢: +こ 固 単漢: +こ 姑 単漢: +こ 孤 単漢: +こ 己 単漢: +こ 狐 単漢: +こ 枯 単漢: +こ 糊 単漢: +こ 袴 単漢: +こ 股 単漢: +こ 菰 単漢: +こ 虎 単漢: +こ 誇 単漢: +こ 跨 単漢: +こ 鈷 単漢: +こ 雇 単漢: +こ 顧 単漢: +こ 鼓 単漢: +こ 瑚 単漢: +こ 呱 単漢: +こ 胡 単漢: +こ 壷 単漢: +こ 箇 単漢: +こーす コース 名1: +こーち コーチ 名6: +こーでぃねーしょん コーディネーション 名1: +こーでぃんぐ コーディング 名6: +こーと コート 名1: +こーど コード 名4: +こーなー コーナー 名1: +こーひー コーヒー 名1: +こーひー 珈琲 名1: +こーぽ コーポ 名1: +こーらす コーラス 名1: +こーる コール 名6: +こーるど コールド 名1: +こーん コーン 代1: +こあ コア 名1: +こあら コアラ 名1: +こい 恋 代4: +こい 故意 代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:助数2: +こう 港 接尾4: +こう 公 代1: +こう 功 代1: +こう 効 代1: +こう こう 特殊副: +こう 侯 代1: +こう 候 代1: +こう 交 代1: +こう 孔 代1: +こう 光 代1: +こう 袷 単漢: +こう 黄 単漢: +こう 恰 単漢: +こう 興 単漢: +こう 仰 単漢: +こう 後 単漢: +こう 佼 単漢: +こう 倖 単漢: +こう 勾 単漢: +こう 厚 単漢: +こう 口 単漢: +こう 向 単漢: +こう 后 単漢: +こう 喉 単漢: +こう 垢 単漢: +こう 好 単漢: +こう 孝 単漢: +こう 宏 単漢: +こう 巧 単漢: +こう 巷 単漢: +こう 広 単漢: +こう 康 単漢: +こう 弘 単漢: +こう 恒 単漢: +こう 慌 単漢: +こう 拘 単漢: +こう 控 単漢: +こう 鈎 単漢: +こう 攻 単漢: +こう 昂 単漢: +こう 晃 単漢: +こう 杭 単漢: +こう 梗 単漢: +こう 構 単漢: +こう 江 単漢: +こう 洪 単漢: +こう 浩 単漢: +こう 溝 単漢: +こう 皇 単漢: +こう 糠 単漢: +こう 紅 単漢: +こう 紘 単漢: +こう 絞 単漢: +こう 耕 単漢: +こう 肯 単漢: +こう 肱 単漢: +こう 腔 単漢: +こう 膏 単漢: +こう 航 単漢: +こう 荒 単漢: +こう 貢 単漢: +こう 購 単漢: +こう 郊 単漢: +こう 酵 単漢: +こう 砿 単漢: +こう 閤 単漢: +こう 鴻 単漢: +こう 肴 単漢: +こう 皐 単漢: +こう 縞 単漢: +こう 塙 単漢: +こう 廣 単漢: +こう 敲 単漢: +こう 滉 単漢: +こうあつ 高圧 名1: +こうあん 考案 名6: +こうあん 公安 名1: +こうい 好意 名3: +こうい 厚意 名3: +こうい 行為 名1: +こうい 校医 名1: +こうい 更衣 名1: +こうい 高位 名1: +こういき 広域 名1: +こういしょう 後遺症 名1: +こういち 孝一 名前: +こういち 幸一 名前: +こういち 公一 名前: +こういち 功一 名前: +こういち 光一 名前: +こういち 弘一 名前: +こういち 晃一 名前: +こういち 浩一 名前: +こういち 耕一 名前: +こういちろう 幸一郎 名前: +こういん 工員 名1: +こういん 行員 名1: +こういん 拘引 名6: +こうう 降雨 名1: +こううん 幸運 名10: +こううん 好運 名10: +こうえい 光栄 名8: +こうえい 公営 名1: +こうえき 公益 名1: +こうえき 交易 名6: +こうえつ 校閲 名6: +こうえん 公園 名1: +こうえん 講演 名7: +こうえん 後援 名7: +こうえん 好演 名7: +こうえん 公演 名6: +こうおつ 甲乙 名1: +こうおん 高温 名1: +こうおん 高音 名1: +こうか 効果 名4: +こうか 校歌 名1: +こうか 硬貨 名1: +こうか 高架 名1: +こうか 工科 名1: +こうか 考課 名1: +こうか 硬化 代4: +こうか 降下 代4: +こうか 高価 代5: +こうか 甲賀 地名: +こうかい 公開 名6: +こうかい 後悔 名6: +こうかい 更改 名6: +こうかい 航海 名6: +こうかい 公海 名1: +こうかいどう 公会堂 名1: +こうかがく 光化学 名1: +こうかく 広角 名1: +こうかく 甲殻 名1: +こうかつ 狡猾 名8: +こうかん 交換 名6: +こうかん 交歓 名6: +こうかん 好感 名1: +こうかん 鋼管 名1: +こうかん 高官 名1: +こうかん 交感 名1: +こうかんき 交換器 名1: +こうかんき 交換機 名1: +こうが 甲賀 地名: +こうがい 公害 名1: +こうがい 郊外 名1: +こうがい 校外 名1: +こうがい 構外 名1: +こうがい 口外 名6: +こうがく 工学 名1: +こうがく 高額 名1: +こうがく 向学 名1: +こうがく 光学 名1: +こうがく 後学 名1: +こうがくか 工学科 名1: +こうがくねん 高学年 名1: +こうがくぶ 工学部 名1: +こうがんむち 厚顔無恥 代5: +こうき 後期 名1: +こうき 好奇 名1: +こうき 好機 名1: +こうき 工期 名1: +こうき 広軌 名1: +こうき 後記 代4: +こうき 高貴 代5: +こうきしん 好奇心 名1: +こうきゅう 高級 名8: +こうきゅう 公休 名1: +こうきゅう 高給 名1: +こうきゅう 硬球 名1: +こうきゅう 恒久 名4: +こうきょ 皇居 名1: +こうきょう 公共 名1: +こうきょう 好況 名1: +こうきょう 広狭 名1: +こうきょうきょく 交響曲 名1: +こうきょうぶつ 公共物 名1: +こうきん 公金 名1: +こうきん 拘禁 名6: +こうきんり 高金利 名1: +こうぎ 講義 名6: +こうぎ 抗議 名6: +こうぎ 広義 名1: +こうぎょう 工業 名4: +こうぎょう 興業 名1: +こうぎょう 鉱業 名1: +こうぎょう 興行 名6: +こうくう 航空 名1: +こうくう 高空 名1: +こうくう 口腔 名1: +こうくうき 航空機 名1: +こうくうけん 航空券 名1: +こうぐ 工具 名1: +こうけい 光景 名1: +こうけい 後継 名1: +こうけい 口径 名1: +こうけつ 高潔 名8: +こうけつあつ 高血圧 名1: +こうけん 貢献 名6: +こうけん 後見 名6: +こうげい 工芸 名1: +こうげき 攻撃 名6: +こうげん 高原 名1: +こうげん 公言 名6: +こうげん 光源 名1: +こうげん 抗原 名1: +こうこ 公庫 名1: +こうこ 考古 名1: +こうこう 高校 名1: +こうこう 孝行 名1: +こうこう 航行 代4: +こうこうせい 高校生 名1: +こうこく 広告 名6: +こうこく 公告 名6: +こうこつ 硬骨 名1: +こうご 交互 名1: +こうご 口語 名1: +こうごう 皇后 名1: +こうさ 交差 名6: +こうさ 考査 名6: +こうさ 較差 名1: +こうさ 甲佐 地名: +こうさい 交際 名6: +こうさい 公債 名1: +こうさい 高裁 名1: +こうさい 甲西 地名: +こうさいかい 弘済会 名1: +こうさく 工作 名6: +こうさく 耕作 名6: +こうさく 交錯 名6: +こうさく 幸作 名前: +こうさつ 考察 名6: +こうさつ 高察 名3: +こうさん 公算 名1: +こうさん 降参 名6: +こうざ 講座 名1: +こうざ 口座 名1: +こうざ 高座 地名: +こうざい 鋼材 名1: +こうざき 神崎 地名: +こうざぶろう 幸三郎 名前: +こうざん 鉱山 名1: +こうざん 高山 名1: +こうざん 甲山 地名: +こうし 行使 名6: +こうし 講師 名1: +こうし 格子 名1: +こうし 公使 名1: +こうし 公司 名1: +こうし 公私 名1: +こうし 厚志 名3: +こうし 合志 地名: +こうしえん 甲子園 名1: +こうしき 公式 名4: +こうしき 硬式 名1: +こうしつ 皇室 名1: +こうしつ 硬質 名1: +こうしど 格子戸 名1: +こうしゃ 後者 名1: +こうしゃ 公社 名1: +こうしゃ 校舎 名1: +こうしゃ 降車 名6: +こうしゃく 講釈 名6: +こうしゃく 公爵 名1: +こうしゅ 攻守 名1: +こうしゅう 講習 名6: +こうしゅう 公衆 名1: +こうしゅう 口臭 名1: +こうしゅう 甲州 地名: +こうしょ 高所 名1: +こうしょ 向暑 名1: +こうしょう 交渉 名6: +こうしょう 校章 名1: +こうしょう 公称 代4: +こうしょう 公証 代4: +こうしょう 考証 代4: +こうしょく 公職 名1: +こうしょく 更埴 地名: +こうしん 更新 名6: +こうしん 交信 名6: +こうしん 後進 代4: +こうしん 行進 名6: +こうしんじょ 興信所 名1: +こうしんりょう 香辛料 名1: +こうじ 工事 名6: +こうじ 公示 名6: +こうじ 高次 名1: +こうじ 麹 名1: +こうじ 小路 名1: +こうじ 浩司 名前: +こうじ 浩二 名前: +こうじ 孝治 名前: +こうじ 孝二 名前: +こうじ 幸司 名前: +こうじ 幸治 名前: +こうじ 幸二 名前: +こうじ 康治 名前: +こうじ 糀 単漢: +こうじえん 広辞苑 名1: +こうじつ 口実 名1: +こうじまち 麹町 地名: +こうじゅつ 後述 名6: +こうじゅつ 口述 名6: +こうじゅん 降順 名1: +こうじょ 控除 名6: +こうじょ 公序 名1: +こうじょう 工場 名1: +こうじょう 口上 名1: +こうじょう 恒常 名4: +こうじょう 向上 名6: +こうじょう 厚情 名3: +こうじょうせん 甲状腺 名1: +こうじろう 幸次郎 名前: +こうすい 硬水 名1: +こうすい 降水 名1: +こうすい 香水 名1: +こうすいじゅん 高水準 名1: +こうすう 工数 名1: +こうず 構図 名1: +こうず 神津 苗字: +こうずい 洪水 名1: +こうせい 構成 名6: +こうせい 更正 名6: +こうせい 更生 名6: +こうせい 校正 名6: +こうせい 厚生 名1: +こうせい 攻勢 名1: +こうせい 後世 名1: +こうせい 後生 名1: +こうせい 恒星 名1: +こうせい 抗生 名1: +こうせい 公正 名8: +こうせい 甲西 地名: +こうせいしょう 厚生省 名1: +こうせいせき 好成績 名1: +こうせいのう 高性能 名8: +こうせき 功績 名3: +こうせき 鉱石 名1: +こうせつ 巧拙 名1: +こうせつ 降雪 名1: +こうせん 交戦 代4: +こうせん 公選 代4: +こうせん 光線 名1: +こうせん 高専 名1: +こうぜん 公然 名1:形動2: +こうそ 公訴 名6: +こうそ 控訴 名6: +こうそ 酵素 名1: +こうそう 構想 名6: +こうそう 高層 名4: +こうそう 抗争 名6: +こうそう 広壮 形動4: +こうそく 高速 名4: +こうそく 拘束 代4: +こうそく 校則 名1: +こうそく 梗塞 名1: +こうそく 光速 名1: +こうそつ 高卒 名1: +こうぞう 構造 名4: +こうぞう 孝三 名前: +こうぞう 幸三 名前: +こうぞうたい 構造体 代1: +こうぞく 後続 名6: +こうぞく 皇族 名1: +こうた 幸田 地名: +こうたい 交替 名6: +こうたい 交代 名6: +こうたい 後退 名6: +こうたい 抗体 名1: +こうたいごう 皇太后 名1: +こうたいし 皇太子 名1: +こうたく 光沢 名1: +こうたろう 孝太郎 名前: +こうたろう 幸太郎 名前: +こうだ 幸田 苗字: +こうだ 幸田 地名: +こうだ 甲田 苗字: +こうだ 甲田 地名: +こうだい 広大 形動4: +こうだん 公団 名1: +こうだん 講壇 名1: +こうだん 講談 名1: +こうだんしゃ 講談社 企業: +こうち 高知 地名: +こうち 拘置 名6: +こうち 耕地 名1: +こうち 河内 苗字: +こうちく 構築 名6: +こうちゃ 紅茶 名1: +こうちゃく 膠着 名6: +こうちょう 好調 名8: +こうちょう 校長 名1: +こうちょう 紅潮 名6: +こうちょう 高潮 名6: +こうちょうかい 公聴会 名1: +こうちょく 硬直 名6: +こうちん 工賃 名1: +こうつう 交通 名6: +こうつうもう 交通網 名1: +こうつごう 好都合 名8: +こうづき 上月 地名: +こうづけ 上野 地名: +こうづしま 神津島 地名: +こうてい 校庭 名1: +こうてい 行程 名1: +こうてい 工程 名1: +こうてい 皇帝 名1: +こうてい 高低 名1: +こうてい 公邸 名1: +こうてい 肯定 名6: +こうてい 公定 代4: +こうてい 校訂 代4: +こうてき 好適 形動4: +こうてき 公的 形動1: +こうてきしゅ 好敵手 名1: +こうてつ 更迭 名6: +こうてつ 鋼鉄 名1: +こうてん 好転 名6: +こうてん 公転 名6: +こうてん 交点 名1: +こうてん 好天 名1: +こうてん 後天 名1: +こうでら 香寺 地名: +こうでん 香典 名2: +こうとう 高等 名8: +こうとう 高騰 名6: +こうとう 口頭 名1: +こうとう 喉頭 名1: +こうとう 恒等 名4: +こうとう 江東 地名: +こうとうぶ 後頭部 名1: +こうど 高度 名8: +こうどう 行動 名6: +こうどう 講堂 名1: +こうどう 公道 名1: +こうどう 坑道 名1: +こうどう 黄道 名1: +こうどく 購読 名6: +こうない 校内 名1: +こうない 構内 名1: +こうない 港内 名1: +こうないえん 口内炎 名1: +こうなん 江南 地名: +こうなん 港南 地名: +こうなん 甲南 地名: +こうなん 硬軟 名1: +こうなん 香南 地名: +こうにゅう 購入 名7: +こうにん 後任 名3: +こうにん 公認 名7: +こうぬ 甲奴 地名: +こうねつ 高熱 名1: +こうねつ 光熱 名1: +こうねん 後年 名1: +こうねん 光年 名1:助数2: +こうねん 高年 名1: +こうねんき 更年期 名1: +こうの 河野 苗字: +こうのう 効能 名1: +こうのす 鴻巣 地名: +こうは 硬派 名1: +こうはい 後輩 名1: +こうはい 荒廃 名6: +こうはい 高配 名3: +こうはく 紅白 名1: +こうはん 後半 名11: +こうはん 公判 名1: +こうはん 広範 形動1: +こうはんい 広範囲 名8: +こうば 工場 名1: +こうばい 購買 代4: +こうばい 勾配 名1: +こうばし 香ばし 形3: +こうばん 交番 名1: +こうひ 公費 名1: +こうひ 工費 名1: +こうひつ 硬筆 名1: +こうひょう 好評 名3: +こうひょう 公表 名7: +こうひょう 講評 名6: +こうひん 公賓 名1: +こうび 後尾 名1: +こうび 交尾 名6: +こうふ 交付 名6: +こうふ 公布 名6: +こうふ 甲府 地名: +こうふ 江府 地名: +こうふう 校風 名1: +こうふく 幸福 名10: +こうふく 降伏 名6: +こうふん 興奮 名6: +こうぶ 後部 名1: +こうぶつ 好物 名1: +こうぶつ 鉱物 名1: +こうぶん 構文 名1: +こうぶんしょ 公文書 名1: +こうへい 公平 名8: +こうへい 幸平 名前: +こうへん 後編 名1: +こうべ 神戸 地名: +こうほ 候補 名1: +こうほう 広報 名1: +こうほう 公報 名1: +こうほう 工法 名1: +こうほう 後方 名1: +こうほく 江北 地名: +こうほく 港北 地名: +こうぼ 公募 名6: +こうぼ 酵母 名1: +こうぼう 興亡 名1: +こうぼう 攻防 名1: +こうぼう 工房 名1: +こうまん 高慢 名8: +こうみ 小海 地名: +こうみゃく 鉱脈 名1: +こうみょう 巧妙 形動4: +こうみん 公民 名1: +こうみんかん 公民館 名1: +こうむ 公務 名1: +こうむ 被 ラ五5: +こうむいん 公務員 代2: +こうむてん 工務店 名1: +こうめい 公明 名8: +こうめい 高名 名8: +こうめいとう 公明党 名1: +こうもく 項目 名1:助数: +こうもん 校門 名1: +こうもん 肛門 名1: +こうや 広野 名1: +こうや 荒野 名1: +こうや 高野 地名: +こうやぎ 香焼 地名: +こうやく 公約 名6: +こうやく 口約 名6: +こうやぐち 高野口 地名: +こうやま 高山 地名: +こうゆう 交遊 代4: +こうゆう 公有 代4: +こうゆう 交友 名1: +こうよう 効用 名1: +こうよう 公用 名1: +こうよう 紅葉 代4: +こうよう 高揚 代4: +こうら 甲良 地名: +こうらくえん 後楽園 地名: +こうらん 高覧 名3: +こうり 公理 名1: +こうり 功利 名1: +こうり 高利 名1: +こうりつ 効率 名4: +こうりつ 公立 名1: +こうりつ 高率 名1: +こうりゃく 攻略 名6: +こうりゃく 後略 名6: +こうりゅう 交流 名6: +こうりゅう 拘留 名6: +こうりょ 考慮 名6: +こうりょう 香料 名1: +こうりょう 荒涼 形動2: +こうりょう 広陵 地名: +こうりょく 効力 名1: +こうれい 高齢 名3: +こうれい 恒例 名3: +こうれい 好例 名1: +こうれつ 後列 名1: +こうろ 航路 名1: +こうろ 高炉 名1: +こうろう 功労 名1: +こうろん 公論 名1: +こうろん 口論 名6: +こうわ 講和 名6: +こうわ 講話 名7: +こうわん 港湾 名1: +こえ 声 名2: +こえ 越え 一段4: +こえ 超え 一段3: +こえ 肥え 一段3: +こえ 肥 単漢: +こお 凍 ラ五7: +こおう 呼応 名6: +こおげ 郡家 地名: +こおり 氷 名1: +こおり 桑折 地名: +こおり 郡 単漢: +こおりつ 凍り付 カ五7: +こおりやま 郡山 地名: +こかげ 木陰 代1: +こかつ 枯渇 名6: +こかわ 粉河 地名: +こが 古河 地名: +こが 古賀 苗字: +こが 焦が サ五7: +こがい 戸外 名1: +こがいしゃ 子会社 名1: +こがた 小型 名4: +こがた 小形 名1: +こがたき 小型機 名1: +こがね 黄金 代1: +こがねい 小金井 地名: +こがら 小柄 代5: +こがらし 木枯し 代1: +こき 呼気 名1: +こき 古希 名1: +こきざみ 小刻み 名1: +こきつか こき使 ワ五5: +こきゃく 顧客 名1: +こきゅう 呼吸 名6: +こきょう 故郷 名1: +こきんしゅう 古今集 名1: +こぎって 小切手 名1: +こく 刻 代1: +こく 穀 代1: +こく 国 接尾1:助数2: +こく 石 助数2: +こく 酷 形動4: +こく 克 単漢: +こく 告 単漢: +こく 鵠 単漢: +こく 黒 単漢: +こく 谷 単漢: +こく 哭 単漢: +こくい 国威 名1: +こくいん 刻印 名1: +こくう 穀雨 名1: +こくえい 国営 名1: +こくえき 国益 名1: +こくおう 国王 名1: +こくがい 国外 名1: +こくぎ 国技 名1: +こくご 国語 名4: +こくさい 国際 名4: +こくさい 国債 名1: +こくさいせん 国際線 名1: +こくさく 国策 名1: +こくさん 国産 名4: +こくさんしゃ 国産車 名1: +こくし 酷使 名6: +こくしむそう 国士無双 代1: +こくしょ 酷暑 名1: +こくしょう 国生 苗字: +こくじ 告示 名6: +こくじ 国事 名1: +こくじ 酷似 名6: +こくじょう 国情 名1: +こくじん 黒人 名1: +こくせい 国勢 名1: +こくせい 国政 名1: +こくせき 国籍 名1: +こくせん 国選 名6: +こくぜい 国税 名1: +こくぜいきょく 国税局 名1: +こくぜいちょう 国税庁 名1: +こくそ 告訴 名6: +こくたい 国体 名1: +こくち 告知 名6: +こくてい 国定 名1: +こくてつ 国鉄 名1: +こくでん 国電 名1: +こくど 国土 名1: +こくどう 国道 名1: +こくどちょう 国土庁 名1: +こくない 国内 名1: +こくないせん 国内線 名1: +こくはく 告白 名6: +こくはつ 告発 名6: +こくばん 黒板 名1: +こくひ 国費 名1: +こくひん 国賓 名1: +こくふ 国府 名1: +こくふく 克服 名6: +こくぶ 国分 苗字: +こくぶんじ 国分寺 地名: +こくべつ 告別 名6: +こくほ 国保 名1: +こくほう 国宝 名1: +こくぼ 小久保 苗字: +こくぼう 国防 名1: +こくみん 国民 名1: +こくむ 国務 名1: +こくむしょう 国務省 名1: +こくもつ 穀物 名1: +こくゆう 国有 名1: +こくら 小倉 苗字: +こくら 小倉 地名: +こくらきた 小倉北 地名: +こくらみなみ 小倉南 地名: +こくりつ 国立 名1: +こくるい 穀類 名1: +こくれん 国連 名1: +こくろう 国労 名1: +こぐち 小口 名1: +こぐれ 小暮 苗字: +こけ こけ 一段3: +こけ 苔 代1: +こけい 固形 名1: +こげ 焦げ 一段3: +こげつ 焦げ付 カ五7: +ここ ここ 代1: +ここ 個々 代1: +ここあ ココア 名1: +ここいら ここいら 代1: +ここく 故国 名1: +ここち 心地 名1: +ここちよ 心地よ 形3: +ここのえ 九重 名1: +ここのつ 九つ 代6: +こころ 心 代1: +こころある 心ある 連体: +こころえ 心得 一段4: +こころがけ 心がけ 一段4: +こころがまえ 心構え 代1: +こころざ 志 サ五8: +こころづけ 心付け 代4: +こころづよ 心強 形2: +こころない 心ない 連体: +こころのこり 心残り 代5: +こころぼそ 心細 形5: +こころみ 試み 一段4: +こころもとな 心許な 形3: +こころゆ 心行 カ五3: +こころよ 快 形3: +ここん 古今 代6: +こご 古語 名1: +こごえ 凍え 一段3: +こごた 小牛田 地名: +こごと 小言 名1: +こさい 湖西 地名: +こさか 小坂 苗字: +こさざ 小佐々 地名: +こさめ 小雨 代1: +こさん 古参 名1: +こざ 古座 地名: +こざいく 小細工 代4: +こざかい 小坂井 地名: +こざがわ 古座川 地名: +こし 腰 名2: +こし 輿 代1: +こし 枯死 代4: +こし 古志 地名: +こしかけ 腰掛け 一段3: +こしかけ 腰かけ 一段3: +こしかわ 越川 苗字: +こしがや 越谷 地名: +こしき 甑 単漢: +こしじ 越路 苗字: +こしじ 越路 地名: +こしたんたん 虎視眈々 名8: +こしつ 個室 名1: +こしつ 固執 名6: +こしの 越廼 地名: +こしば 小柴 苗字: +こしみず 小清水 苗字: +こしみず 小清水 地名: +こしゅ 固守 名6: +こしゅ 戸主 名1: +こしゅう 固執 名6: +こしょ 古書 名1: +こしょう 故障 名6: +こしょう 呼称 名6: +こじ 孤児 名1: +こじ 故事 名1: +こじ 誇示 代4: +こじ 固持 代4: +こじ 固辞 代4: +こじあけ こじ開け 一段1: +こじき 乞食 名1: +こじき 古事記 代1: +こじま 児島 苗字: +こじま 小島 苗字: +こじん 個人 名4: +こじん 故人 名1: +こすい 湖水 名1: +こすう 個数 名1: +こすう 戸数 名1: +こすぎ 小杉 苗字: +こすぎ 小杉 地名: +こすげ 小菅 苗字: +こすげ 小菅 地名: +こすたりか コスタリカ 地名: +こすと コスト 名1: +こすど 小須戸 地名: +こすも コスモ 企業: +こずえ 梢 名1: +こずえ 梢 名前: +こせい 個性 名4: +こせき 古跡 名1: +こせき 戸籍 名1: +こせき 小関 苗字: +こそく 姑息 形動4: +こそだて 子育て 代1: +こぞう 小僧 代1: +こぞって こぞって 副1: +こたい 個体 名1: +こたい 固体 名1: +こたえ 答 名2: +こたえ 答え 一段4: +こたえ 応え 一段2: +こたけ 小竹 苗字: +こたに 小谷 苗字: +こだい 古代 名1: +こだいら 小平 苗字: +こだいら 小平 地名: +こだか 小高 形1: +こだち 木立 代1: +こだま 児玉 苗字: +こだま 児玉 地名: +こだま 小玉 苗字: +こだわ こだわ ラ五3: +こち 故知 代1: +こち 鯒 単漢: +こちこち こちこち 形動9: +こちこち コチコチ 形動9: +こちゃく 固着 名6: +こちょう 誇張 名6: +こちら こちら 代1: +こちんだ 東風平 地名: +こっか 国家 名4: +こっか 国歌 名1: +こっかい 国会 名1: +こっかく 骨格 名1: +こっかん 酷寒 名1: +こっき 国旗 名1: +こっきょう 国境 名1: +こっけい 滑稽 代5: +こっけん 国権 名1: +こっこ 国庫 名1: +こっこう 国交 名1: +こっこく 刻々 副2: +こっし 骨子 名1: +こっせつ 骨折 名6: +こっそり こっそり 副2: +こっち こっち 代1: +こっとう 骨董 名1: +こっぷ コップ 名1: +こつ 骨 代1: +こつ こつ 代1: +こつ 忽 単漢: +こつ 乞 単漢: +こつ 惚 単漢: +こつこつ コツコツ 副2: +こつばん 骨盤 名1: +こづかい 小遣い 名2: +こづつみ 小包 名1: +こて 小手 名1: +こてい 固定 名6: +こてき 鼓笛 名1: +こてん 古典 名4: +こてん 個展 名1: +こと こと 代1: +こと 琴 名2: +こと 言 代1: +こと 古都 代1: +こと 事 接尾1: +こと 異 単漢: +こと 殊 単漢: +ことう 孤島 名1: +ことう 湖東 地名: +ことおか 琴丘 地名: +ことか 事欠 カ五3: +ことがら 事柄 名1: +ことこまか 事細か 形動4: +ことさら ことさら 副5: +ことさら 殊更 副5: +ことし 今年 代6: +ことたり 事足り 一段1: +ことづけ 言付け 一段4:サ変: +ことな 異な ラ五3: +ことなみ 琴南 地名: +ことに 異に サ変: +ことば 言葉 名2: +ことば 詞 代1: +ことひら 琴平 地名: +ことぶき 寿 代1: +こともなげ こともなげ 形動9: +ことり 小鳥 名1: +ことわ 断わ ラ五4: +ことわ 断 ラ五4: +ことわざ 諺 代1: +こどう 鼓動 名6: +こどうぐ 小道具 名1: +こどく 孤独 名8: +こどまり 小泊 地名: +こども 子供 代2: +こな こな サ五7: +こな 粉 代1: +こなか 小中 苗字: +こながい 小長井 苗字: +こながい 小長井 地名: +こなごな 粉々 代5: +こにくらし 小憎らし 形3: +こにし 小西 苗字: +こぬま 小沼 苗字: +こね コネ 代1: +こねくしょん コネクション 名1: +こねくた コネクタ 代1: +こねくと コネクト 名6: +この この 連体: +この 好 マ五8: +このあいだ この間 代6: +このうら 金浦 地名: +このこと このこと 代1: +このごろ この頃 代6: +このほど このほど 副1: +このまし 好まし 形3: +このまま このまま 代6: +このみ 木の実 代1: +このんで 好んで 副1: +こはら 小原 苗字: +こはる 小春 名前: +こはん 湖畔 名1: +こば 拒 マ五7: +こばやかわ 小早川 苗字: +こばやし 小林 苗字: +こばやし 小林 地名: +こばやし 古林 苗字: +こばり 小針 苗字: +こばると コバルト 名1: +こばん 小判 代1: +こび 媚び 一段3: +こぴー コピー 名6: +こぴーらいと コピーライト 名1: +こふう 古風 代5: +こふん 古墳 名1: +こぶし 拳 代1: +こぶちざわ 小淵沢 地名: +こぶり 小降り 代1: +こぶん 古文 名1: +こべつ 個別 名1: +こべつ 戸別 名1: +こほく 湖北 地名: +こぼ こぼ サ五5: +こぼり 小堀 苗字: +こぼれ こぼれ 一段2: +こま 駒 代1: +こま コマ 代1: +こま 困 ラ五4: +こま 狛 単漢: +こまーしゃる コマーシャル 名1: +こまえ 狛江 名前: +こまえ 狛江 地名: +こまか 細か 形2:形動1: +こまがね 駒ヶ根 地名: +こまき 小牧 苗字: +こまき 小牧 地名: +こまぎれ 細切れ 代5: +こまく 鼓膜 名1: +こまごま こまごま 副3: +こまごめ 駒込 地名: +こまつ 小松 苗字: +こまつ 小松 地名: +こまつざき 小松崎 苗字: +こまつしま 小松島 苗字: +こまつしま 小松島 地名: +こまば 駒場 地名: +こまめ こまめ 形動1: +こまやか 細やか 形動4: +こまりはて 困り果て 一段1: +こまわり 小回り 代1: +こまんど コマンド 名1: +こみあ 込み合 ワ五5: +こみあげ こみ上げ 一段1: +こみい 込み入 ラ五3: +こみち 小道 名1: +こみっく コミック 名1: +こみや 小宮 苗字: +こみやま 小宮山 苗字: +こみゅにけーしょん コミュニケーション 代4: +こむぎ 小麦 名1: +こむぎこ 小麦粉 名1: +こむろ 小室 苗字: +こめ 米 名2: +こめ 込め 一段2: +こめじるし ※ 代1: +こめでぃー コメディー 名1: +こめでぃあん コメディアン 名1: +こめんと コメント 名1: +こも 薦 代1: +こも 篭 ラ五7: +こもじ 小文字 名1: +こもち 子持 地名: +こもの 菰野 地名: +こもの 小物 名1: +こもり 子守 名6: +こもり 小森 苗字: +こもろ 小諸 地名: +こもん 顧問 名1: +こもんじょ 古文書 名1: +こや 小屋 代1: +こや 肥 サ五7: +こやなぎ 小柳 苗字: +こやま 小山 苗字: +こゆ 児湯 地名: +こゆう 固有 名1: +こゆび 小指 代1: +こよい 今宵 代6: +こよう 雇用 名6: +こよみ 暦 代1: +こら こら 感動: +こら 懲ら サ五5: +こらい 古来 代1: +こらえ 堪え 一段1: +こらしめ 懲らしめ 一段3: +こらむ コラム 名1: +こり 懲り 一段1: +こりつ 孤立 名6: +こりょう 湖陵 地名: +こりょうり 小料理 名1: +こるちこいど コルチコイド 代1: +これ これ 代1: +これ 此 単漢: +これ 是 単漢: +これ 之 単漢: +これくしょん コレクション 代4: +これくたー コレクター 名1: +これほど これほど 代6: +これら これら 代1: +これら コレラ 代1: +ころ ころ 代1: +ころ 頃 代1: +ころ 殺 サ五7: +ころ 転 バ五8: +ころが 転が サ五7:ラ五7: +ころがりこ 転がり込 マ五7: +ころげこ 転げ込 マ五7: +ころな コロナ 名1: +ころにー コロニー 名1: +ころも 衣 代1: +ころもがえ 衣更え 代4: +ころらど コロラド 地名: +こわ 壊 サ五7: +こわ 怖 形7: +こわ 恐 形7: +こわごわ こわごわ 副2: +こわば こわば ラ五7: +こわれ 壊れ 一段1: +こん 今 接頭1: +こん 紺 代1: +こん 根 代1: +こん 混 ザ変: +こん 近 単漢: +こん 献 単漢: +こん 困 単漢: +こん 坤 単漢: +こん 墾 単漢: +こん 婚 単漢: +こん 恨 単漢: +こん 懇 単漢: +こん 昏 単漢: +こん 昆 単漢: +こん 梱 単漢: +こん 痕 単漢: +こん 艮 単漢: +こん 魂 単漢: +こん 金 単漢: +こんい 懇意 名10: +こんいん 婚姻 名6: +こんか 今夏 名1: +こんかい 今回 代6: +こんかん 根幹 名1: +こんがり こんがり 形動1: +こんがん 懇願 名6: +こんき 今期 名1: +こんき 根気 名1: +こんきゃく 困却 名6: +こんきゅう 困窮 名6: +こんきょ 根拠 名1: +こんぎ 婚儀 名3: +こんく 困苦 名1: +こんくーる コンクール 名1: +こんくりーと コンクリート 名1: +こんけつ 混血 名1: +こんげつ 今月 名1: +こんげん 根源 名1: +こんこう 金光 苗字: +こんこう 金光 地名: +こんこう 混交 名6: +こんご 今後 代6: +こんごう 混合 名6: +こんさーと コンサート 名1: +こんさるたんと コンサルタント 名1: +こんさるてぃんぐ コンサルティング 名1: +こんざい 混在 名6: +こんざつ 混雑 名6: +こんしゅう 今週 名1: +こんしゅう 今秋 名1: +こんしゅん 今春 名1: +こんしん 懇親 名1: +こんしん 混信 名6: +こんじゃく 今昔 名1: +こんじょう 根性 名1: +こんじょう 懇情 名3: +こんじょう 今生 名1: +こんすい 昏睡 名6: +こんすたんと コンスタント 名8: +こんせい 懇請 名6: +こんせい 混成 名6: +こんせき 痕跡 名1: +こんせき 今夕 名1: +こんせつ 懇切 名8: +こんせぷと コンセプト 名1: +こんせん 混戦 名1: +こんせんさす コンセンサス 名1: +こんせんと コンセント 名1: +こんぜつ 根絶 名6: +こんそーる コンソール 名1: +こんそしあむ コンソシアム 名1: +こんたくと コンタクト 名6: +こんたん 魂胆 名1: +こんだ 今田 地名: +こんだて 献立 名2: +こんだん 懇談 名6: +こんちゅう 昆虫 名1: +こんてい 根底 名1: +こんてすと コンテスト 名6: +こんてな コンテナ 名1: +こんでぃしょん コンディション 名1: +こんでんさ コンデンサ 名1: +こんとらすと コントラスト 名1: +こんとろーら コントローラ 代1: +こんとろーる コントロール 名6: +こんとん 混沌 名6: +こんど 今度 代6: +こんどう 近藤 苗字: +こんどう 金堂 名1: +こんどう 混同 名6: +こんな こんな 連体: +こんなん 困難 名8:サ変: +こんにち 今日 代6: +こんにちは こんにちは 感動: +こんにちわ こんにちわ 感動: +こんにゅう 混入 名6: +こんねん 今年 代6: +こんねんど 今年度 代6: +こんの 今野 苗字: +こんの 紺野 苗字: +こんばーじょん コンバージョン 代1: +こんばーた コンバータ 名1: +こんばーと コンバート 名6: +こんばん 今晩 名11: +こんぱ コンパ 代3: +こんぱいら コンパイラ 代1: +こんぱいらー コンパイラー 代1: +こんぱいる コンパイル 名6: +こんぱくと コンパクト 名8: +こんぱす コンパス 名1: +こんぱち コンパチ 名1: +こんぱちびりてぃ コンパチビリティ 名1: +こんぱちぶる コンパチブル 名1: +こんぱにおん コンパニオン 名1: +こんぱん 今般 名11: +こんび コンビ 名1: +こんびなーと コンビナート 名1: +こんびにえんす コンビニエンス 名8: +こんびねーしょん コンビネーション 名1: +こんぴゅーた コンピュータ 名1: +こんぴゅーたー コンピューター 名1: +こんぶ 昆布 代1: +こんぷれっくす コンプレックス 名1: +こんべんしょん コンベンション 名1: +こんぺき 紺碧 名1: +こんぼう 懇望 名6: +こんぼう 混紡 名6: +こんぽーねんと コンポーネント 代1: +こんぽう 梱包 名6: +こんぽん 根本 名1: +こんま コンマ 名1: +こんめい 混迷 名6: +こんもう 懇望 名6: +こんもり こんもり 副8: +こんや 今夜 代6: +こんやく 婚約 名7: +こんよう 混用 名6: +こんらん 混乱 名6: +こんりゅう 建立 名6: +こんりんざい 金輪際 代6: +こんれい 婚礼 名3: +こんろ コンロ 名1: +こんわ 懇話 名1: +こんわ 混和 名6: +こんわく 困惑 名6: +ご ご 接頭1: +ご 御 接頭1: +ご 後 接尾1: +ご 語 接尾1:助数2: +ご 碁 代1: +ご 胡 単漢: +ご 互 単漢: +ご 伍 単漢: +ご 午 単漢: +ご 呉 単漢: +ご 吾 単漢: +ご 娯 単漢: +ご 悟 単漢: +ご 梧 単漢: +ご 檎 単漢: +ご 瑚 単漢: +ご 誤 単漢: +ご 護 単漢: +ご 醐 単漢: +ご 冴 単漢: +ごーじゃす ゴージャス 代5: +ごーすと ゴースト 名1: +ごーる ゴール 代4: +ごーるでん ゴールデン 名1: +ごーるど ゴールド 名1: +ごい 語意 名1: +ごい 語彙 名1: +ごう 郷 代1: +ごう 業 代1: +ごう 号 接尾1:助数: +ごう 合 助数2: +ごう 豪 代1: +ごう 強 単漢: +ごう 剛 単漢: +ごう 劫 単漢: +ごう 壕 単漢: +ごう 拷 単漢: +ごう 濠 単漢: +ごう 轟 単漢: +ごうい 合意 名6: +ごういん 強引 形動4: +ごうう 豪雨 名1: +ごうか 豪華 形動4: +ごうかい 豪快 形動4: +ごうかく 合格 名6: +ごうかん 号館 助数2: +ごうかん 強姦 名6: +ごうがい 号外 名1: +ごうきゅう 号泣 名6: +ごうきん 合金 名1: +ごうぎ 合議 名6: +ごうけい 合計 名6: +ごうけつ 豪傑 名1: +ごうごう 轟々 形動2: +ごうし 合資 代4: +ごうしつ 号室 助数2: +ごうじょう 強情 名8: +ごうせい 合成 名6: +ごうせつ 豪雪 名1: +ごうだ 郷田 苗字: +ごうだつ 強奪 名6: +ごうつ 江津 地名: +ごうとう 強盗 名1: +ごうど 神戸 地名: +ごうどう 合同 名6: +ごうのうら 郷ノ浦 地名: +ごうはん 合板 名1: +ごうひ 合否 名1: +ごうべん 合弁 名1: +ごうほう 合法 名8: +ごうほう 号砲 代1: +ごうほうらいらく 豪放磊落 名8: +ごうまん ごう慢 名8: +ごうめい 合名 名1: +ごうもん 拷問 名6: +ごうよく 強欲 名1: +ごうり 合理 名4: +ごうりき 強力 代5: +ごうりゅう 合流 名6: +ごうれい 号令 名6: +ごえい 護衛 名6: +ごか 五箇 地名: +ごか 五霞 地名: +ごかい 誤解 名6: +ごかしょう 五個荘 地名: +ごかせ 五ヶ瀬 地名: +ごかん 語感 名1: +ごかん 語幹 名1: +ごかん 互換 代4: +ごがく 語学 名1: +ごがん 護岸 名1: +ごき 語気 名1: +ごきぶり ゴキブリ 代1: +ごく ごく 副1: +ごく 語句 代1: +ごく 獄 代1: +ごく 極 単漢: +ごくあく 極悪 名8: +ごくい 極意 名1: +ごくひ 極秘 名8: +ごくらく 極楽 名1: +ごけい 互恵 名1: +ごけん 護憲 名1: +ごげん 語源 名1: +ごこう 後光 名1: +ごこち 心地 接尾2: +ごころ 心 接尾2: +ごご 午後 名11: +ごさ 誤差 名1: +ごさい 後妻 名1: +ござ ござ 代1: +ごしき 五色 地名: +ごしっく ゴシック 名1: +ごしょ 御所 名1: +ごしょう 後生 名1: +ごしょがわら 五所川原 地名: +ごしょく 誤植 名6: +ごしょのうら 御所浦 地名: +ごしん 誤診 名6: +ごしん 護身 名1: +ごじ 誤字 名1: +ごじ 護持 代4: +ごじつ 後日 代6: +ごじゅうおん 五十音 代1: +ごじょ 互助 名1: +ごじょう 五条 苗字: +ごじょう 五条 地名: +ごじょう 五條 地名: +ごじょう 互譲 名1: +ごじょうめ 五城目 地名: +ごすう 語数 名1: +ごせ 御所 地名: +ごせん 五泉 地名: +ごせん 互選 名6: +ごせんふ 五線譜 代1: +ごぜん 午前 名11: +ごぜんやま 御前山 地名: +ごそう 護送 名6: +ごそうさ 誤操作 名6: +ごたく 御託 名1: +ごたんだ 五反田 地名: +ごちゃごちゃ ごちゃごちゃ 副9: +ごちょう 語調 名1: +ごっそり ごっそり 副2: +ごてん 御殿 名1: +ごてんば 御殿場 地名: +ごと ごと 接尾9: +ごと 毎 接尾9: +ごと 事 接尾2: +ごとう 五島 苗字: +ごとう 後藤 苗字: +ごにん 誤認 名6: +ごのへ 五戸 地名: +ごはん ご飯 代1: +ごはん 御飯 代1: +ごばん 碁盤 名1: +ごび 語尾 名1: +ごふく 呉服 名1: +ごぶさた 御無沙汰 代4: +ごへい 語弊 名1: +ごほう 誤報 名6: +ごほく 吾北 地名: +ごぼう 御坊 地名: +ごま 胡麻 名1: +ごまか 誤魔化 サ五7: +ごみ ゴミ 名1: +ごみ 五味 苗字: +ごみばこ ゴミ箱 名1: +ごむ ゴム 名1: +ごめん ごめん 名1: +ごめん 御免 名1: +ごやく 誤訳 名6: +ごよう 誤用 名6: +ごようおさめ 御用納め 代1: +ごようはじめ 御用始め 代1: +ごらいこう 御来光 代1: +ごらく 娯楽 名1: +ごらん ご覧 代1: +ごらん 御覧 代1: +ごりん 五輪 一括: +ごるばちょふ ゴルバチョフ 代1: +ごるふ ゴルフ 代3: +ごろ 語呂 代1: +ごろ ごろ 接尾2: +ごろ 頃 接尾2: +ごろう 五郎 名前: +ごろく 語録 代1: +ごろごろ ゴロゴロ 副3: +ごろね ごろ寝 代4: +ごん 権 単漢: +ごん 厳 単漢: +ごん 言 単漢: +ごん 魂 単漢: +ごんげ 権化 名1: +ごんどう 権藤 苗字: +さ さ サ変未1:サ五5: +さ 咲 カ五5: +さ 裂 カ五5: +さ 割 カ五5: +さ 刺 サ五8: +さ 指 サ五8: +さ 挿 サ五6: +さ 鎖 サ五5: +さ 射 サ五5: +さ 去 ラ五2: +さ 差 代1:接尾1:サ五1: +さ 些 単漢: +さ 佐 単漢: +さ 叉 単漢: +さ 唆 単漢: +さ 嵯 単漢: +さ 左 単漢: +さ 査 単漢: +さ 沙 単漢: +さ 瑳 単漢: +さ 砂 単漢: +さ 詐 単漢: +さ 裟 単漢: +さ 作 単漢: +さ 紗 単漢: +さ 茶 単漢: +さ 蓑 単漢: +さーきっと サーキット 名1: +さーくる サークル 名1: +さーち サーチ 名6: +さーばー サーバー 名1: +さーびす サービス 名6: +さーふぃん サーフィン 代4: +さーぶ サーブ 代4: +さーべい サーベイ 代4: +さあ さあ 接続: +さい 際 代4: +さい 再 接頭5: +さい 最 接頭1: +さい 歳 助数2: +さい 才 代1:助数2: +さい 菜 代1: +さい 債 代1: +さい 妻 代1: +さい 犀 代1: +さい 差異 代1: +さい 祭 接尾1: +さい 佐井 地名: +さい 採 単漢: +さい 済 単漢: +さい 災 単漢: +さい 催 単漢: +さい 栽 単漢: +さい 斎 単漢: +さい 細 単漢: +さい 西 単漢: +さい 斉 単漢: +さい 切 単漢: +さい 裁 単漢: +さい 載 単漢: +さい 財 単漢: +さい 哉 単漢: +さい 塞 単漢: +さい 宰 単漢: +さい 彩 単漢: +さい 采 単漢: +さい 砕 単漢: +さい 砦 単漢: +さい 殺 単漢: +さい 晒 単漢: +さい 偲 単漢: +さい 齋 単漢: +さいあい 最愛 名1: +さいあく 最悪 名8: +さいえん 再演 名6: +さいえん 才媛 名1: +さいえん 菜園 名1: +さいえんす サイエンス 名1: +さいか 最下 名1: +さいか 裁可 名3: +さいかい 再会 名6: +さいかい 再開 名6: +さいかい 西海 苗字: +さいかい 西海 地名: +さいかく 才覚 代4: +さいがい 災害 名1: +さいがわ 犀川 地名: +さいき 佐伯 苗字: +さいき 佐伯 地名: +さいき 再帰 名1: +さいき 再起 代4: +さいき 才気 名1: +さいき 斎木 苗字: +さいきょう 最強 名1: +さいきん 最近 代6: +さいきん 細菌 代1: +さいぎ 猜疑 代4: +さいく 細工 名6: +さいくつ 採掘 名6: +さいくりんぐ サイクリング 名1: +さいくる サイクル 名1: +さいぐさ 三枝 苗字: +さいけつ 採決 名6: +さいけつ 採血 名6: +さいけつ 裁決 名6: +さいけん 債券 名1: +さいけん 債権 名1: +さいけん 再建 名6: +さいげつ 歳月 名1: +さいげん 再現 名6: +さいげん 際限 名1: +さいこ 最古 名1: +さいこう 最高 名8: +さいこう 再興 名6: +さいこう 再考 名6: +さいこうさい 最高裁 名1: +さいこうちょう 最高潮 名1: +さいこく 催告 名6: +さいこん 再婚 名6: +さいご 最後 名1: +さいご 最期 名1: +さいごう 西郷 苗字: +さいごく 西国 地名: +さいさん 採算 名4: +さいさん 再三 代6: +さいし 妻子 名1: +さいしゅ 採取 名7: +さいしゅう 最終 名4: +さいしゅう 採集 名6: +さいしゅつ 歳出 名1: +さいしょ 最初 名1: +さいしょう 最小 名4: +さいしょう 最少 名4: +さいしょうげん 最小限 名1: +さいしょうち 最小値 名1: +さいしょく 才色 名1: +さいしょく 菜食 代4: +さいしん 最新 名4: +さいしん 再審 名6: +さいしん 細心 名8: +さいじつ 祭日 名1: +さいじょ 才女 名1: +さいじょう 最上 名1: +さいじょう 西城 苗字: +さいじょう 西条 苗字: +さいじょう 西条 地名: +さいず サイズ 名1: +さいせい 再生 名6: +さいせい 再製 名6: +さいせいき 最盛期 名1: +さいせき 採石 名6: +さいせん 再選 名6: +さいぜん 最前 名1: +さいぜん 最善 名1: +さいぜんせん 最前線 名8: +さいそう 再送 名6: +さいそく 催促 名6: +さいた 最多 名1: +さいた 財田 地名: +さいたい 妻帯 代4: +さいたく 採択 名6: +さいたま 埼玉 地名: +さいたん 最短 名4: +さいだ 斎田 苗字: +さいだい 最大 名4: +さいだいげん 最大限 名1: +さいだいじ 西大寺 地名: +さいだいち 最大値 名1: +さいだん 祭壇 名1: +さいだん 裁断 名6: +さいち 才知 名1: +さいちゅう 最中 名1: +さいちょう 最長 名1: +さいてい 最低 名8: +さいてい 裁定 名6: +さいていげん 最低限 代1: +さいてき 最適 名8: +さいてん 採点 名6: +さいてん 祭典 名1: +さいと 西都 地名: +さいと サイト 名1: +さいとう 斉藤 苗字: +さいとう 斎藤 苗字: +さいど 再度 名11: +さいど サイド 名1: +さいなん 災難 名3: +さいなんたん 最南端 代1: +さいにゅう 歳入 代4: +さいにん 再任 名6: +さいねん 再燃 名6: +さいねんしょう 最年少 代5: +さいのう 才能 名1: +さいはい 采配 名3: +さいはく 西伯 地名: +さいはつ 再発 名6: +さいばい 栽培 名6: +さいばし 才走 ラ五3: +さいばん 裁判 名6: +さいばんかん 裁判官 名1: +さいばんしょ 裁判所 名1: +さいひ 採否 名1: +さいひ 歳費 名1: +さいふ 財布 名2: +さいぶ 細部 名1: +さいぶん 細分 名6: +さいへん 再編 名6: +さいほう 裁縫 名5: +さいほくたん 最北端 代1: +さいぼう 細胞 名1: +さいまつ 歳末 名1: +さいみつ 細密 名8: +さいみん 催眠 名1: +さいむ 債務 名1: +さいもく 細目 名1: +さいよう 採用 名6: +さいらい 再来 名6: +さいりょう 最良 名8: +さいりょう 裁量 名6: +さいれい 祭礼 名1: +さいろく 採録 名6: +さいろく 載録 名6: +さいわい 幸い 代5:副4: +さいん サイン 代4: +さうんど サウンド 名1: +さえ 冴え 一段3: +さえき 佐伯 苗字: +さえき 佐伯 地名: +さえき 差益 名1: +さえぎ 遮 ラ五7: +さえぐさ 三枝 苗字: +さえこ 小枝子 名前: +さお 竿 名1: +さお 棹 名1: +さおり 佐織 地名: +さか 盛 ラ五7: +さか 坂 名1: +さか 阪 単漢: +さかい 境 名1: +さかい 坂井 苗字: +さかい 坂井 地名: +さかい 阪井 苗字: +さかい 堺 苗字: +さかい 堺 地名: +さかい 酒井 苗字: +さかいがわ 境川 地名: +さかいで 坂出 苗字: +さかいで 坂出 地名: +さかいみなと 境港 地名: +さかうえ 坂上 苗字: +さかうち 坂内 苗字: +さかえ 栄え 一段3: +さかえ 栄 名前: +さかがみ 坂上 苗字: +さかき 坂城 地名: +さかき 榊 名1: +さかきた 坂北 地名: +さかきばら 榊原 苗字: +さかぐち 坂口 苗字: +さかぐち 阪口 苗字: +さかさ 逆さ 代1: +さかさい 逆井 苗字: +さかさい 逆井 地名: +さかした 坂下 苗字: +さかずき 杯 代1: +さかた 坂田 苗字: +さかた 坂田 地名: +さかた 酒田 苗字: +さかた 酒田 地名: +さかづき 杯 代1: +さかど 坂戸 苗字: +さかど 坂戸 地名: +さかな 魚 名2: +さかな 肴 代1: +さかの 坂野 苗字: +さかのぼ 遡 ラ五5: +さかば 酒場 代1: +さかべ 坂部 苗字: +さかべ 坂部 地名: +さかほぎ 坂祝 地名: +さかみち 坂道 代1: +さかもと 坂本 苗字: +さかもと 坂本 地名: +さかや 酒屋 代1: +さから 逆ら ワ五5: +さかわ 佐川 地名: +さかん 盛ん 形動6: +さかん 左官 代1: +さが 下が ラ五8: +さが 探 サ五8: +さが 捜 サ五8: +さが 佐賀 苗字: +さが 佐賀 地名: +さが 嵯峨 苗字: +さが 性 代1: +さがえ 寒河江 地名: +さがく 差額 名1: +さがしあて 捜し当て 一段1: +さがしだ 捜し出 サ五7: +さがの 嵯峨野 地名: +さがのせき 佐賀関 地名: +さがみ 相模 地名: +さがみこ 相模湖 地名: +さがみはら 相模原 地名: +さがら 相良 苗字: +さがわ 佐川 苗字: +さき 先 代1:接尾1: +さき 崎 代1: +さき 左記 代1: +さき 咲 単漢: +さき 埼 単漢: +さき 碕 単漢: +さき 前 単漢: +さきがけ 先駆け 一段3: +さきごろ 先頃 代6: +さきさま 先様 名1: +さきざき 先々 代6: +さきだ 先立 タ五5: +さきだて 先立て 一段1: +さきと 崎戸 地名: +さきどり 先取り 代4: +さきばし 先走 ラ五3: +さきまわり 先回り 代4: +さきもの 先物 名1: +さきゅう 砂丘 名1: +さきゆき 先行き 代1: +さきょう 左京 名前: +さきょう 左京 地名: +さきん 先ん ザ変: +さぎ 詐欺 名1: +さぎ 鷺 代1: +さぎょう 作業 名6: +さく 柵 代1: +さく 作 代1:接尾1:助数: +さく 策 接尾1:サ変: +さく 佐久 地名: +さく 昨 代1: +さく 索 代1: +さく 削 単漢: +さく 咋 単漢: +さく 搾 単漢: +さく 朔 単漢: +さく 窄 単漢: +さく 錯 単漢: +さく 酢 単漢: +さく 乍 単漢: +さく 炸 単漢: +さくい 作意 名1: +さくい 作為 名4: +さくいん 索引 名1: +さくがら 作柄 名1: +さくげん 削減 名6: +さくご 錯誤 名1: +さくし 作詞 名6: +さくし 策士 名1: +さくしゃ 作者 名1: +さくしゅ 搾取 名6: +さくじつ 昨日 代6: +さくじょ 削除 名6: +さくず 作図 名6: +さくせい 作成 名6: +さくせい 作製 名6: +さくせん 作戦 名1: +さくそう 錯綜 名6: +さくつけ 作付 名6: +さくてい 策定 名6: +さくとう 作東 地名: +さくとう 昨冬 代6: +さくどう 策動 名6: +さくにゅう 搾乳 名6: +さくねん 昨年 代6: +さくねんど 昨年度 代6: +さくひょう 作表 名6: +さくひん 作品 名1:助数2: +さくふう 作風 名1: +さくぶん 作文 名6: +さくま 佐久間 苗字: +さくま 佐久間 地名: +さくもつ 作物 名1: +さくや 昨夜 代6: +さくら 桜 名1: +さくら 櫻 名1: +さくら 佐倉 苗字: +さくら 佐倉 地名: +さくらい 桜井 苗字: +さくらい 桜井 地名: +さくらえ 桜江 地名: +さくらがわ 桜川 苗字: +さくらがわ 桜川 地名: +さくらしんまち 桜新町 地名: +さくらじま 桜島 地名: +さくらだ 桜田 苗字: +さくらだい 桜台 地名: +さくらん 錯乱 名6: +さくりゃく 策略 名1: +さくれい 作例 名1: +さくれつ 炸裂 名6: +さぐ 探 ラ五8: +さぐりあて 探り当て 一段1: +さぐりだ 探り出 サ五7: +さけ 酒 名2: +さけ 鮭 名1: +さけ 叫 バ五8: +さけ 避け 一段2: +さけい 左傾 名6: +さけかわ 鮭川 地名: +さげ 下げ 接尾1:一段2: +さげ 提げ 一段3: +さこく 鎖国 名1: +ささ 笹 代1: +ささ 刺さ ラ五5: +ささい 些細 形動4: +ささえ 支え 一段3: +ささお 笹尾 苗字: +ささおか 笹岡 苗字: +ささかみ 笹神 地名: +ささがわ 笹川 苗字: +ささがわ 笹川 地名: +ささき 佐々木 苗字: +ささくら 笹倉 苗字: +ささぐり 篠栗 地名: +ささげ 捧げ 一段2: +ささつ 査察 名6: +ささはら 笹原 苗字: +ささもと 笹本 苗字: +ささや ささや カ五7: +ささや 囁 カ五7: +ささや 囁や カ五7: +ささやか ささやか 代5: +ささやま 篠山 地名: +さざ 佐々 地名: +さざなみ 漣 代1: +さざなみ さざ波 代1: +さざんか 山茶花 代1: +さしあげ 差し上げ 一段1: +さしあた 差し当た ラ五3: +さしいれ 差し入れ 一段3: +さしえ 挿絵 名1: +さしおさえ 差し押さえ 一段3: +さしかえ 差し替え 一段3: +さしがね 差し金 名1: +さしき 佐敷 地名: +さしき 挿し木 代1: +さしこ 差し込 マ五7: +さしさわ 差し障 ラ五3: +さししめ 指し示 サ五5: +さしず 指図 名6: +さしずめ さしずめ 副1: +さしせま 差し迫 ラ五1: +さしたる さしたる 連体: +さしだ 差し出 サ五7: +さしだしにん 差出人 名1: +さしつかえ 差し支え 一段3: +さしづめ さしづめ 副1: +さしとめ 差し止め 一段3: +さしひ 差し引 カ五7: +さしひかえ 差し控え 一段3: +さしま 猿島 地名: +さしみ 刺身 名2: +さしむか 差し向か ワ五3: +さしむけ 差し向け 一段3: +さしもど 差し戻 サ五7: +さしもどし 差戻し 名1: +さしゅ 詐取 名6: +さしゅう 査収 名7: +さしょう 些少 名8: +さしょう 査証 名6: +さしわた 差し渡 サ五7: +さしんしつ 左心室 代1: +さじ 匙 名2: +さじ 些事 名1: +さじき 桟敷 名1: +さす さす ラ五8: +さすが さすが 代6: +さすが 流石 代6: +さすぺんど サスペンド 名1: +さずか 授か ラ五4: +さずけ 授け 一段2: +させつ 左折 名6: +させぼ 佐世保 地名: +させん 左遷 名6: +さそ 誘 ワ五8: +さそいかけ 誘いかけ 一段3: +さそいこ 誘い込 マ五7: +さそいだ 誘い出 サ五7: +さそく 左側 名1: +さそり 蠍 代1: +さそん 差損 名1: +さた 沙汰 代4: +さた 佐多 地名: +さたけ 佐竹 苗字: +さたん 左端 名1: +さだ 佐田 苗字: +さだ 定 名前: +さだ 禎 単漢: +さだお 貞男 名前: +さだお 貞夫 名前: +さだお 貞雄 名前: +さだお 定男 名前: +さだお 定夫 名前: +さだお 定雄 名前: +さだか 定か 形動1: +さだこ 貞子 名前: +さだま 定ま ラ五4: +さだみつ 貞光 名前: +さだめ 定め 一段4: +さだゆき 貞行 名前: +さち 幸 代1: +さちお 幸雄 名前: +さちこ 幸子 名前: +さっ 察 サ変: +さっか 作家 名1: +さっかー サッカー 代3: +さっかく 錯覚 名6: +さっき さっき 代6: +さっき 殺気 名1: +さっきゅう 早急 代5: +さっきょく 作曲 名6: +さっきん 殺菌 名6: +さっこん 昨今 代6: +さっさと さっさと 副4: +さっし 冊子 名1: +さっしん 刷新 名6: +さっそう さっそう 形動2: +さっそく さっそく 代6: +さっそく 早速 代6: +さっち 察知 名7: +さって 幸手 地名: +さっと さっと 副1: +さっとう 殺到 名6: +さっぱり さっぱり 副9: +さっぽろ 札幌 地名: +さつ 冊 助数2: +さつ 札 名2: +さつ 刷 単漢: +さつ 察 単漢: +さつ 拶 単漢: +さつ 撮 単漢: +さつ 擦 単漢: +さつ 殺 単漢: +さつ 薩 単漢: +さつ 撒 単漢: +さつい 殺意 名1: +さつえい 撮影 名6: +さつがい 殺害 名6: +さつき 五月 代1: +さつじん 殺人 名1: +さつばつ 殺伐 代5:形動2: +さつま 薩摩 地名: +さて さて 接続: +さてい 査定 名6: +さと 里 名2: +さと 悟 ラ五7: +さと 諭 サ五3: +さと 郷 単漢: +さとう 佐藤 苗字: +さとう 砂糖 名2: +さとし 聡 名前: +さとし 智 名前: +さとし 諭 名前: +さとしょう 里庄 地名: +さとみ 聡美 名前: +さとみ 智美 名前: +さとみ 里美 名前: +さとみ 恵規 名前: +さとる 悟 名前: +さど 佐渡 苗字: +さど 佐渡 地名: +さどう 作動 名6: +さどう 茶道 名1: +さどわら 佐土原 地名: +さなえ 早苗 苗字: +さなぎ 蛹 代1: +さなごうち 佐那河内 地名: +さなだ 真田 苗字: +さぬき 讃岐 地名: +さねとう 實藤 苗字: +さの 佐野 苗字: +さの 佐野 地名: +さは 左派 名1: +さはら 佐原 苗字: +さはら 砂原 地名: +さはんじ 茶飯事 名1: +さば 裁 カ五8: +さば 捌 カ五8: +さば 鯖 代1: +さば 佐波 地名: +さば 鯆 単漢: +さばえ 鯖江 地名: +さばく 砂漠 名4: +さび 錆 代1: +さび 錆び 一段1: +さびし 寂し 形9: +さびし 淋し 形9: +さびし さびし 形5: +さぶ サブ 名1: +さぶじぇくと サブジェクト 名1: +さぶろう 三郎 名前: +さぷらい サプライ 代4: +さへん 左辺 名1: +さべつ 差別 名6: +さほう 作法 名1: +さほど さほど 副5: +さぼ さぼ ラ五7: +さぼ サボ ラ五7: +さぼう 砂防 名1: +さぽーと サポート 名6: +さま 冷ま サ五8: +さま 覚ま サ五8: +さま 様 代1: +さま さま 代1: +さまざま 様々 形動9: +さまたげ 妨げ 一段2: +さまに 様似 地名: +さまよ さまよ ワ五5: +さまよ さ迷 ワ五5: +さまりー サマリー 名1: +さみし 寂し 形9: +さみし 淋し 形9: +さみず 三水 地名: +さむ 寒 形9: +さむ サム 代1: +さむかわ 寒川 苗字: +さむかわ 寒川 地名: +さむけ 寒気 名1: +さむらい 侍 代1: +さめ 覚め 一段2: +さめ 醒め 一段2: +さめ 冷め 一段2: +さめ 鮫 代1: +さめかわ 鮫川 地名: +さめしま 鮫島 苗字: +さも さも 副1: +さもなければ さもなければ 接続: +さもん 査問 名6: +さや 鞘 代1: +さやま 狭山 地名: +さやま 佐山 苗字: +さゆう 左右 名6: +さゆり 早百合 名前: +さよう 作用 名6: +さよう 佐用 地名: +さようなら さようなら 代1: +さよく 左翼 名1: +さよなら さよなら 代1: +さら さら サ五5:ワ五5: +さら 晒 サ五7: +さら 曝 サ五7: +さら 皿 名2:助数2: +さら 更 単漢: +さらいげつ 再来月 代6: +さらいしゅう 再来週 代6: +さらいねん 再来年 代6: +さらうんど サラウンド 名1: +さらけだ さらけだ サ五5: +さらさら 更々 副1: +さらしな 更級 地名: +さらだ サラダ 名1: +さらに 更に 副1: +さらば さらば 代1: +さらべつ 更別 地名: +さらりーまん サラリーマン 名1: +さりげな さりげな 形2: +さる さる 連体: +さる 猿 代1: +さる 沙流 地名: +さるすべり 百日紅 代1: +さるふつ 猿払 地名: +されど されど 接続: +さろま 佐呂間 地名: +さわ 触 ラ五8: +さわ 障 ラ五7: +さわ 騒 ガ五8: +さわ 沢 代1: +さわ 佐波 地名: +さわ 澤 単漢: +さわい 沢井 苗字: +さわうち 沢内 苗字: +さわうち 沢内 地名: +さわがし 騒がし 形3: +さわぐち 沢口 苗字: +さわた 佐和田 地名: +さわたり 沢渡 地名: +さわだ 沢田 苗字: +さわだ 澤田 苗字: +さわむら 沢村 苗字: +さわやか さわやか 形動4: +さわやか 爽やか 形動4: +さわら 佐原 地名: +さわら 早良 地名: +さわら 鰆 代1: +さわん 左腕 名1: +さん さん 接尾1: +さん 山 接尾4: +さん 酸 接尾1: +さん 桟 代1: +さん 算 サ変: +さん 賛 サ変: +さん 散 ザ変: +さん 参 サ変:ザ変: +さん 産 接尾1:サ変: +さん 讃 代1: +さん 傘 単漢: +さん 纂 単漢: +さん 燦 単漢: +さん 珊 単漢: +さん 蚕 単漢: +さん 惨 単漢: +さん 撒 単漢: +さん 餐 単漢: +さん 蒜 単漢: +さんい 賛意 名1: +さんいつ 散逸 名6: +さんいん 参院 名1: +さんいん 山陰 名1: +さんいん 産院 名1: +さんか 参加 名7: +さんか 酸化 名6: +さんか 賛歌 名1: +さんか 傘下 名1: +さんかい 散会 代4: +さんかい 参会 代4: +さんかく 三角 名8: +さんかん 参観 名7: +さんかん 山間 名1: +さんかんしおん 三寒四温 代1: +さんが 参賀 代4: +さんが 山河 名1: +さんがい 惨害 名1: +さんがく 山岳 名1: +さんがく 産額 名1: +さんがにち 三が日 名1: +さんがわ 寒川 地名: +さんきゅう 産休 名1: +さんきょう 山峡 名1: +さんぎいん 参議院 名1: +さんぎょう 産業 名4: +さんぐう 参宮 地名: +さんぐらす サングラス 名1: +さんけん 散見 名6: +さんげき 惨劇 名1: +さんこう 参考 名3: +さんこう 三光 地名: +さんこうしょ 参考書 名1: +さんご 珊瑚 名1: +さんご 産後 名1: +さんごう 三郷 地名: +さんさい 山菜 名1: +さんさく 散策 名7: +さんざい 散在 名6: +さんざい 散財 名6: +さんざん 散々 形動9: +さんしゅう 参集 名7: +さんしゅつ 産出 名6: +さんしゅつ 算出 名6: +さんしょう 参照 名7: +さんしょう 三唱 名6: +さんじ 参事 名1: +さんじ 惨事 名1: +さんじ 産児 名1: +さんじ 賛辞 名1: +さんじゅつ 算術 名1: +さんじょ 賛助 名6: +さんじょう 参上 名6: +さんじょう 山上 名1: +さんじょう 惨状 名1: +さんすい 散水 名6: +さんすう 算数 名1: +さんせい 賛成 名6: +さんせい 酸性 名1: +さんせい 参政 名1: +さんせいどう 三省堂 企業: +さんせき 山積 名6: +さんせん 参戦 名6: +さんぜん 燦然 形動2: +さんそ 酸素 名1: +さんそう 山荘 名1: +さんそん 山村 名1: +さんぞく 山賊 名1: +さんたくろーす サンタクロース 名1: +さんたん 賛嘆 代4: +さんだ 三田 地名: +さんだん 散弾 名1: +さんだん 算段 名6: +さんち 産地 名1: +さんち 山地 名1: +さんちゅう 山中 名1: +さんちょう 山頂 名1: +さんてい 算定 名6: +さんでぃえご サンディエゴ 地名: +さんとう 三島 地名: +さんとう 山東 地名: +さんとりー サントリー 企業: +さんどう 参道 名1: +さんどう 賛同 名7: +さんない 山内 地名: +さんなん 山南 地名: +さんにゅう 参入 名6: +さんにゅう 算入 名6: +さんのう 山王 地名: +さんのへ 三戸 苗字: +さんのへ 三戸 地名: +さんば 産婆 名2: +さんばし 桟橋 名1: +さんぱい 参拝 名6: +さんぱつ 散発 名6: +さんぱつ 散髪 名6: +さんび 賛美 名6: +さんぴ 賛否 名1: +さんふじんか 産婦人科 名1: +さんふらんしすこ サンフランシスコ 地名: +さんぶ 山武 地名: +さんぶつ 産物 名1: +さんぶん 散文 名4: +さんぷ 散布 名6: +さんぷく 山腹 名1: +さんぷりんぐ サンプリング 名1: +さんぷる サンプル 名1: +さんぼう 参謀 名1: +さんぼんぎ 三本木 地名: +さんぽ 散歩 名5: +さんぽう 算法 名1: +さんみ 酸味 名1: +さんみゃく 山脈 名1: +さんゆ 産油 名6: +さんよ 参与 名6: +さんよう 山陽 名1: +さんよう 三洋 企業: +さんよう 算用 代1: +さんらん 散乱 名6: +さんらん 産卵 名6: +さんりく 三陸 地名: +さんりん 山林 名1: +さんれつ 参列 名7: +さんろく 山麓 名1: +さんわ 三和 企業: +ざ 座 代1: +ざ 坐 単漢: +ざ 挫 単漢: +ざい 剤 接尾3: +ざい 材 接尾1: +ざい 罪 接尾1: +ざい 財 接尾1: +ざい 在 単漢: +ざいあく 罪悪 名1: +ざいい 在位 名7: +ざいか 財貨 名1: +ざいかい 財界 名1: +ざいがい 在外 名1: +ざいがく 在学 名6: +ざいきょう 在京 名6: +ざいきん 在勤 名6: +ざいけい 財形 名1: +ざいげん 財源 名1: +ざいこ 在庫 名1: +ざいこう 在校 名6: +ざいさん 財産 名1: +ざいしつ 材質 名1: +ざいしょ 在所 名3: +ざいしょく 在職 名6: +ざいじゅう 在住 名6: +ざいじょう 罪状 名1: +ざいせい 財政 名1: +ざいせき 在籍 名6: +ざいたく 在宅 名6: +ざいだん 財団 名1: +ざいにち 在日 名6: +ざいにん 在任 名6: +ざいにん 罪人 名1: +ざいばつ 財閥 名1: +ざいほう 財宝 名1: +ざいむ 財務 名1: +ざいもく 材木 名1: +ざいらい 在来 名1: +ざいりゅう 在留 名6: +ざいりょう 材料 名1: +ざいりょく 財力 名1: +ざおう 蔵王 地名: +ざか 坂 接尾2: +ざこう 座高 名1: +ざしき 座敷 名2: +ざしょう 座礁 名6: +ざしょう 挫傷 名6: +ざせき 座席 名1: +ざせつ 挫折 名6: +ざぜん 座禅 名1: +ざだん 座談 名6: +ざちょう 座長 名1: +ざっか 雑貨 名1: +ざっき 雑記 名6: +ざっきょ 雑居 名6: +ざっくばらん ざっくばらん 形動4: +ざっし 雑誌 名1: +ざっしゅ 雑種 名1: +ざっそう 雑草 名1: +ざった 雑多 形動4: +ざっと ざっと 副1: +ざっとう 雑踏 名6: +ざっぱく 雑駁 名8: +ざっぴ 雑費 名1: +ざつ 雑 代5: +ざつえき 雑益 名1: +ざつおん 雑音 名1: +ざつがく 雑学 名1: +ざつじ 雑事 名1: +ざつぜん 雑然 形動2: +ざつだん 雑談 名6: +ざつねん 雑念 名1: +ざつむ 雑務 名1: +ざつよう 雑用 名5: +ざひょう 座標 名1: +ざま 座間 苗字: +ざま 座間 地名: +ざま 様 代1: +ざゆう 座右 名1: +ざわめ ざわめ カ五3: +ざん 山 接尾2: +ざん 残 接尾2: +ざん 算 接尾2: +ざん 惨 単漢: +ざん 斬 単漢: +ざん 暫 単漢: +ざんがい 残骸 名1: +ざんがく 残額 名1: +ざんきん 残金 名1: +ざんぎゃく 残虐 名8: +ざんぎょう 残業 名6: +ざんこく 残酷 名8: +ざんさつ 惨殺 名6: +ざんしょ 残暑 名1: +ざんしん 斬新 名8: +ざんじ 暫時 代6: +ざんせつ 残雪 名1: +ざんそん 残存 名6: +ざんぞう 残像 名1: +ざんぞん 残存 名6: +ざんだか 残高 名1: +ざんてい 暫定 名4: +ざんにん 残忍 代5: +ざんねん 残念 名8: +ざんぱん 残飯 名1: +ざんぴん 残品 名1: +ざんむ 残務 名1: +ざんよ 残余 名1: +ざんりゅう 残留 名6: +し 知 ラ五6: +し し サ変未用:ラ五5: +し 資 サ変: +し 敷 カ五7: +し 詩 代1: +し 死 代1:ナ五:サ変:サ五1: +し 詞 代1: +し 子 代1: +し 志 代1: +し 視 接尾7: +し 紙 接尾1:助数2: +し 誌 接尾1:助数2: +し 史 接尾1: +し 士 接尾1: +し 市 接尾4: +し 師 接尾1: +し 氏 接尾1: +し 祇 単漢: +し 此 単漢: +し 仕 単漢: +し 仔 単漢: +し 伺 単漢: +し 使 単漢: +し 刺 単漢: +し 司 単漢: +し 嗣 単漢: +し 始 単漢: +し 姉 単漢: +し 姿 単漢: +し 屍 単漢: +し 思 単漢: +し 指 単漢: +し 支 単漢: +し 孜 単漢: +し 斯 単漢: +し 施 単漢: +し 旨 単漢: +し 枝 単漢: +し 止 単漢: +し 獅 単漢: +し 祉 単漢: +し 私 単漢: +し 糸 単漢: +し 紫 単漢: +し 肢 単漢: +し 脂 単漢: +し 至 単漢: +し 試 単漢: +し 諮 単漢: +し 賜 単漢: +し 雌 単漢: +し 飼 単漢: +し 歯 単漢: +し 次 単漢: +し 示 単漢: +し 自 単漢: +し 偲 単漢: +し 芝 単漢: +し 笥 単漢: +し 弛 単漢: +し 砥 単漢: +し 之 単漢: +し 覗 単漢: +し 髭 単漢: +し 巳 単漢: +し 矢 単漢: +し 匙 単漢: +しーく シーク 名6: +しーけんしゃる シーケンシャル 代5: +しーけんす シーケンス 名1: +しーずん シーズン 名1: +しーと シート 名1: +しーど シード 名6: +しーま シーマ 名1: +しーるど シールド 名6: +しーん シーン 名1: +しあい 試合 名6: +しあが 仕上が ラ五8: +しあげ 仕上げ 一段3: +しあたー シアター 名1: +しあわせ 幸せ 名9: +しあん 思案 名6: +しあん 私案 名1: +しあん シアン 名1: +しい 強い 一段1: +しい 椎 代1: +しい 私意 名1: +しい 恣意 名1: +しいか 詩歌 名1: +しいく 飼育 名6: +しいたけ 椎茸 名1: +しいだ 椎田 地名: +しいな 椎名 苗字: +しいな 椎名 地名: +しいの 椎野 苗字: +しいば 椎葉 地名: +しいれ 仕入れ 一段3: +しいん 子音 名1: +しいん 死因 名1: +しいん 試飲 名6: +しうち 仕打 代1: +しうら 市浦 地名: +しうんじ 紫雲寺 地名: +しうんてん 試運転 名6: +しぇあ シェア 名1: +しぇぱーど シェパード 名1: +しぇる シェル 名1: +しえい 市営 名1: +しえい 私営 名1: +しえき 使役 名6: +しえき 私益 名1: +しえん 支援 名7: +しお 塩 名2: +しお 汐 名1: +しお 潮 名1: +しお 志雄 地名: +しおかわ 塩川 苗字: +しおかわ 塩川 地名: +しおがま 塩釜 地名: +しおくり 仕送り 代4: +しおけ 塩気 名1: +しおざわ 塩沢 苗字: +しおざわ 塩沢 地名: +しおじり 塩尻 地名: +しおた 塩田 地名: +しおだ 塩田 苗字: +しおづけ 塩漬け 代4: +しおどめ 汐留 地名: +しおの 塩野 苗字: +しおのえ 塩江 地名: +しおはま 塩浜 地名: +しおばら 塩原 苗字: +しおばら 塩原 地名: +しおひがり 潮干狩 代1: +しおみ 塩見 苗字: +しおみず 塩水 名1: +しおや 塩屋 地名: +しおや 塩谷 苗字: +しおや 塩谷 地名: +しおやき 塩焼 名1: +しおり 栞 代1: +しおん 紫苑 名1: +しか しか ラ五8: +しか 叱 ラ五8: +しか 鹿 名1: +しか 歯科 名1: +しか 市価 名1: +しか 志賀 地名: +しかい 司会 名6: +しかい 視界 名1: +しかえし 仕返し 代4: +しかおい 鹿追 地名: +しかく 資格 名1: +しかく 視覚 名8: +しかく 死角 名1: +しかく 四角 名8:形1: +しかけ 仕掛け 一段3: +しかし しかし 接続: +しかしながら しかしながら 接続: +しかた 仕方 名1: +しかつ 師勝 地名: +しかの 鹿野 苗字: +しかの 鹿野 地名: +しかばね 屍 代1: +しかべ 鹿部 地名: +しかま 飾磨 地名: +しかま 色麻 地名: +しかまち 鹿町 地名: +しかも しかも 接続: +しかりつけ 叱りつけ 一段1: +しかるべき 然るべき 連体: +しかん 仕官 名1: +しかん 弛緩 代4: +しが 志賀 苗字: +しが 志賀 地名: +しが 滋賀 地名: +しが 四賀 地名: +しがい 市外 名1: +しがい 市街 名1: +しがい 死骸 名1: +しがいせん 紫外線 名1: +しがく 史学 名1: +しがく 私学 名1: +しがこうげん 志賀高原 地名: +しがらき 信楽 地名: +しがらみ しがらみ 名1: +しがん 志願 名6: +しき 式 名2:助数: +しき 四季 名1: +しき 死期 名1: +しき 始期 名1: +しき 指揮 代4: +しき 色 代1: +しき 織 代1: +しき 敷 代1: +しき 仕切 ラ五7: +しき 志木 地名: +しき 磯城 地名: +しき 識 単漢: +しきい 敷居 名1: +しききん 敷金 名1: +しきさい 色彩 名1: +しきし 色紙 名1: +しきしま 敷島 苗字: +しきしゃ 識者 名1: +しきじ 式辞 名1: +しきじょう 式場 名1: +しきそ 色素 名1: +しきそう 色相 名1: +しきち 敷地 名1: +しきちょう 色調 名1: +しきつめ 敷き詰め 一段1: +しきてん 式典 名1: +しきふ 敷布 名1: +しきべつ 識別 名6: +しきもう 色盲 名1: +しきゅう 支給 名6: +しきゅう 至急 代6: +しきゅう 子宮 名1: +しきょ 死去 名7: +しきょう 市況 名1: +しきょく 支局 名1: +しきり 仕切り 名1: +しきりに しきりに 副1: +しきん 資金 名4: +しきん 至近 名1: +しきんぐり 資金繰り 代4: +しぎ 仕儀 名1: +しぎ 市議 名1: +しぎ 鴫 代1: +しぎょう 始業 名6: +しぎん 詩吟 名1: +しく 仕組 マ五7: +しく 市区 名1: +しくしく しくしく 副3: +しくはっく 四苦八苦 代4: +しぐさ しぐさ 代1: +しぐさ 仕草 代1: +しぐなる シグナル 名1: +しぐれ 時雨 名1: +しけい 死刑 名6: +しけつ 止血 名6: +しけん 試験 名6: +しけん 私見 名1: +しけんじょう 試験場 代1: +しげ 繁 ラ五7:単漢: +しげ 茂 ラ五7:単漢: +しげ 重 単漢: +しげお 重男 名前: +しげお 重夫 名前: +しげお 重雄 名前: +しげお 繁男 名前: +しげお 繁夫 名前: +しげお 繁雄 名前: +しげお 茂男 名前: +しげお 茂夫 名前: +しげお 茂雄 名前: +しげき 刺激 名6: +しげき 重樹 名前: +しげき 茂樹 名前: +しげこ 茂子 名前: +しげた 重田 苗字: +しげのぶ 重信 苗字:名前: +しげはる 重治 名前: +しげひこ 重彦 名前: +しげまつ 重松 苗字: +しげみつ 重光 苗字:名前: +しげゆき 重行 名前: +しげよし 重義 名前: +しげる 滋 名前: +しげる 繁 名前: +しげる 茂 名前: +しげん 資源 名1: +しげん 至言 名1: +しこ 仕込 マ五7: +しこう 思考 名6: +しこう 志向 名6: +しこう 指向 名6: +しこう 施行 名6: +しこう 至高 名1: +しこう 試行 名6: +しこう 嗜好 名6: +しこく 四国 一括: +しこたん 色丹 地名: +しご しご カ五3: +しご 死後 名1: +しご 私語 代4: +しごく 至極 形動4: +しごと 仕事 名5: +しさ 示唆 名6: +しさい 司祭 名1: +しさい 子細 名8: +しさく 思索 名6: +しさく 施策 名6: +しさく 試作 名6: +しさつ 視察 名6: +しさつ 刺殺 名6: +しさん 資産 名1: +しさん 試算 名6: +しざい 私財 名1: +しざい 資材 名1: +しし 獅子 名1: +しし 宍 単漢: +ししくい 宍喰 地名: +ししつ 資質 名1: +ししど 宍戸 苗字: +ししゃ 使者 名1: +ししゃ 支社 名1: +ししゃ 死者 名1: +ししゃ 試写 名6: +ししゃく 子爵 名1: +ししゃごにゅう 四捨五入 代4: +ししゃちょう 支社長 名1: +ししゅ 死守 名6: +ししゅう 詩集 名1: +ししゅう 刺繍 代4: +ししゅつ 支出 名6: +ししゅんき 思春期 名1: +ししょ 司書 名1: +ししょ 支所 名1: +ししょ 支署 名1: +ししょう 支障 名1: +ししょう 師匠 名1: +ししょう 死傷 名6: +ししょう 刺傷 名6: +ししょく 試食 名6: +ししょばこ 私書箱 名1: +ししん 指針 名1: +ししん 私信 名1: +ししん 私心 名1: +しじ 指示 名7: +しじ 支持 名6: +しじ 師事 名6: +しじ 私事 名1: +しじみ 蜆 代1: +しじゅう 始終 名1: +しじゅく 私塾 名1: +しじょ 子女 名1: +しじょう 市場 名1: +しじょう 私情 名1: +しじょう 紙上 名1: +しじょう 至上 名1: +しじょう 史上 名1: +しじょう 誌上 名1: +しじょう 試乗 名6: +しじょう 四条 地名: +しじょうなわて 四条畷 地名: +しじん 詩人 名1: +しすい 酒々井 地名: +しすい 泗水 地名: +しすう 指数 名1: +しすてむ システム 名4: +しず 沈 マ五8: +しず 静 単漢: +しずえ 静江 名前: +しずえ 静枝 名前: +しずお 静男 名前: +しずお 静夫 名前: +しずお 静雄 名前: +しずおか 静岡 地名: +しずか 静か 形動7: +しずか 静 名前: +しずか 静香 名前: +しずく 雫 代1: +しずく 滴 代1: +しずくいし 雫石 地名: +しずけさ 静けさ 代1: +しずこ 静子 名前: +しずない 静内 地名: +しずま 静ま ラ五5: +しずま 鎮ま ラ五5: +しずまりかえ 静まり返 ラ五1: +しずめ 静め 一段2: +しずめ 鎮め 一段2: +しせい 姿勢 名1: +しせい 市制 名1: +しせい 市政 名1: +しせい 施政 名1: +しせい 私製 名1: +しせいかつ 私生活 名1: +しせいじ 私生児 名1: +しせき 史跡 名1: +しせつ 施設 名6: +しせつ 使節 名1: +しせつ 私設 名1: +しせん 視線 名1: +しせん 支線 名1: +しせん 四川 名1: +しせん 死線 名1: +しぜん 自然 名8: +しそーらす シソーラス 代1: +しそう 思想 名4: +しそう 宍粟 地名: +しそうか 思想家 名1: +しそく 子息 名3: +しそん 子孫 名1: +しぞう 死蔵 名6: +しぞく 氏族 名1: +した 下 代1: +した 舌 代1: +した 慕 ワ五2: +したい 姿態 名1: +したい 死体 名1: +したい 肢体 名1: +したうけ 下請け 名6: +したえ 下絵 名1: +したが 従 ワ五1: +したがき 下書き 代4: +したぎ 下着 名1: +したく 支度 名5: +したざわり 舌触り 代1: +したし 親し 形9:マ五8: +したしらべ 下調べ 代4: +したじ 下地 名1: +したじき 下敷 代1: +したた 滴 ラ五3: +したたか 強か 形動4: +したため 認め 一段1: +しただ 下田 地名: +したづみ 下積み 代1: +したて 下手 名1: +したて 仕立て 一段4: +したどり 下取り 代4: +したね 下値 名1: +したび 下火 名1: +したまち 下町 名1: +したまわ 下回 ラ五7: +したみ 下見 名6: +したむき 下向き 名1: +したら 設楽 地名: +したわし 慕わし 形3: +しだ 志太 地名: +しだ 志田 地名: +しだい 次第 名1:接尾9: +しだい 私大 名1: +しだし 仕出し 名1: +しだれ 垂れ 一段1: +しだん 師団 名1: +しち 質 代1: +しちがはま 七ヶ浜 地名: +しちじょう 七城 地名: +しちずん シチズン 企業: +しちてんばっとう 七転八倒 代4: +しちなん 七難 名1: +しちのへ 七戸 地名: +しちや 質屋 名1: +しちゅー シチュー 名1: +しちゅう 市中 名1: +しちゅう 支柱 名1: +しちょう 市長 代2: +しちょう 思潮 名1: +しちょう 支庁 名1: +しちょう 視聴 名6: +しちょう 試聴 名6: +しちょうそん 市町村 名1: +しちろう 七郎 名前: +しっかく 失格 名6: +しっかり しっかり 副3: +しっかん 疾患 名1: +しっき 漆器 名1: +しっきゃく 失脚 名6: +しっくり しっくり 副3: +しっけい 失敬 名8:サ変: +しっこう 執行 名6: +しっこう 失効 名6: +しっさく 失策 名6: +しっしょう 失笑 名6: +しっしょく 失職 名6: +しっしん 失神 名6: +しっしん 湿疹 名1: +しっせき 叱責 名6: +しっそ 質素 名8: +しっそう 失踪 名6: +しっそう 疾走 名6: +しっそく 失速 名6: +しった 叱咤 名7: +しったい 失態 名1: +しっち 湿地 名1: +しっちょう 失調 名1: +しっつい 失墜 名6: +しってん 失点 名1: +しっと 嫉妬 名6: +しっとう 執刀 名6: +しっとり しっとり 副9: +しっぱい 失敗 名6: +しっぴつ 執筆 名6: +しっぷ 湿布 名6: +しっぷう 疾風 名1: +しっぺい 疾病 名1: +しっぽ 尻尾 代1: +しっぽう 七宝 名1: +しつ 質 代1: +しつ 室 接尾1:助数2: +しつ 湿 単漢: +しつ 失 単漢: +しつ 叱 単漢: +しつ 執 単漢: +しつ 嫉 単漢: +しつ 悉 単漢: +しつ 漆 単漢: +しつ 疾 単漢: +しつ 膝 単漢: +しつい 失意 名1: +しつおん 室温 名1: +しつかん 質感 名1: +しつき 後月 地名: +しつぎ 質疑 名6: +しつぎょう 失業 名6: +しつけ しつけ 一段3: +しつけ 仕付 一段3: +しつげん 失言 名6: +しつげん 湿原 名1: +しつこ しつこ 形2: +しつじ 執事 名1: +しつじつ 質実 名8: +しつじゅん 湿潤 名8: +しつちょう 室長 名1: +しつてき 質的 形動1: +しつでん 湿田 名1: +しつど 湿度 名1: +しつない 室内 名1: +しつねん 失念 名6: +しつぼう 失望 名6: +しつむ 執務 名6: +しつめい 失明 名6: +しつもん 質問 名7: +しつよう 執拗 名8: +しつりょう 質量 名1: +しつれい 失礼 名8:サ変: +しつれん 失恋 名6: +してぃ シティ 名1: +してい 指定 名6: +してい 師弟 名1: +してい 私邸 名1: +していせき 指定席 名1: +してき 指摘 名7: +してき 私的 形動1: +してき 史的 形動1: +してつ 私鉄 名1: +してん 支店 名1:接尾4: +してん 支点 名1: +してん 始点 名1: +してん 視点 名1: +してんちょう 支店長 名1: +してんのう 四天王 代1: +しでん 市電 名1: +しと 使徒 名1: +しと 使途 名1: +しとう 死闘 名6: +しとみ 蔀 単漢: +しど 志度 地名: +しどう 指導 名7: +しどう 始動 名6: +しどう 私道 名1: +しな しな ワ五1: +しな 品 名2: +しな 科 単漢: +しない 市内 名1: +しない 竹刀 名1: +しなかず 品数 名2: +しながわ 品川 地名: +しなぎれ 品切れ 代4: +しなさだめ 品定め 代4: +しなじな 品々 代1: +しなの 信濃 地名: +しなび 萎び 一段2: +しなもの 品物 名2: +しなりお シナリオ 名1: +しなん 至難 名8: +しなん 指南 名7: +しにあ シニア 名1: +しにせ 老舗 名4: +しにたえ 死に絶え 一段1: +しにょう し尿 名1: +しにん 死人 名1: +しね 死ね 一段1: +しねま シネマ 名1: +しねん 思念 名6: +しの しの ガ五7: +しの 凌 ガ五7: +しの 偲 バ五8: +しの 忍 バ五8: +しの 篠 単漢: +しのざき 篠崎 苗字: +しのだ 篠田 苗字: +しのづか 篠塚 苗字: +しのはら 篠原 苗字: +しのびこ 忍び込 マ五7: +しのびよ 忍び寄 ラ五5: +しのぶ 忍 名前: +しはい 支配 名6: +しはい 賜杯 名1: +しはいにん 支配人 名1: +しはつ 始発 名1: +しはら 支払 ワ五6: +しはらい 支払 名5: +しはらいにん 支払人 名1: +しはん 市販 名6: +しはん 師範 名1: +しはん 紫斑 名1: +しば 柴 名1: +しば 芝 名1: +しば 芝 地名: +しば 縛 ラ五8: +しばい 芝居 名5: +しばうら 芝浦 苗字: +しばうら 芝浦 地名: +しばかわ 芝川 地名: +しばさき 柴崎 苗字: +しばさき 柴崎 地名: +しばざき 柴崎 苗字: +しばし しばし 代6: +しばしば しばしば 副8: +しばた 柴田 苗字: +しばた 柴田 地名: +しばた 新発田 地名: +しばはら 芝原 苗字: +しばふ 芝生 名1: +しばやま 柴山 苗字: +しばやま 芝山 苗字: +しばらく しばらく 代4: +しばらく 暫く 代4: +しばりつけ 縛り付け 一段1: +しひ 市費 名1: +しひょう 指標 名1: +しびあ シビア 名8: +しびっく シビック 名1: +しびれ 痺れ 一段3: +しふく 私服 名1: +しふく 私腹 名1: +しふく 至福 名1: +しふく 雌伏 名6: +しふと シフト 名6: +しぶ 市部 名1: +しぶ 支部 名1: +しぶ 渋 形8:ラ五1:代1: +しぶかわ 渋川 苗字: +しぶかわ 渋川 地名: +しぶし 志布志 地名: +しぶしぶ 渋々 副8: +しぶつ 私物 名1: +しぶと しぶと 形2: +しぶや 渋谷 苗字: +しぶや 渋谷 地名: +しぶん 詩文 名1: +しへい 紙幣 名1: +しべ 蕊 代1: +しべちゃ 標茶 地名: +しべつ 士別 地名: +しべつ 死別 名6: +しべつ 標津 地名: +しべとろ 蕊取 地名: +しべりあ シベリア 地名: +しべん 思弁 名6: +しべん 至便 形動4: +しほう 司法 名1: +しほう 四方 名1: +しほうしょし 司法書士 名1: +しほろ 士幌 地名: +しほん 資本 名1: +しほんか 資本家 名1: +しほんきん 資本金 名1: +しぼ しぼ マ五7:ラ五7: +しぼ 萎 マ五7: +しぼ 絞 ラ五8: +しぼ 搾 ラ五8: +しぼ 思慕 名6: +しぼう 志望 名6: +しぼう 死亡 名6: +しぼう 脂肪 名1: +しぼうこう 志望校 名1: +しぼつ 死没 名6: +しぼりあげ 絞り上げ 一段1: +しぼりあげ 搾り上げ 一段1: +しぼりだ 絞り出 サ五7: +しま 島 苗字:接尾4: +しま 閉ま ラ五3: +しま 締ま ラ五3: +しま しま ワ五8: +しま 仕舞 ワ五8: +しま 志摩 苗字: +しま 志摩 地名: +しま 縞 代1: +しま 嶋 単漢: +しまい 姉妹 名1: +しまうま シマウマ 代1: +しまかげ 島陰 名1: +しまがはら 島ヶ原 地名: +しまぐに 島国 名1: +しまざき 島崎 苗字: +しまじり 島尻 地名: +しまだ 島田 苗字: +しまだ 島田 地名: +しまだ 嶋田 苗字: +しまつ 始末 名6: +しまづ 島津 苗字: +しまづ 島津 地名: +しまね 島根 苗字: +しまね 島根 地名: +しまの 島野 苗字: +しまばら 島原 苗字: +しまばら 島原 地名: +しままき 島牧 地名: +しまむら 島村 苗字: +しみ 染み 一段3: +しみこ 染み込 マ五7: +しみじみ しみじみ 副2: +しみず 清水 苗字: +しみず 清水 地名: +しみつ 染み着 カ五3: +しみぬき 染み抜き 名6: +しみゅれーしょん シミュレーション 名1: +しみゅれーた シミュレータ 名1: +しみゅれーと シミュレート 名6: +しみん 市民 名1: +しみんぜい 市民税 名1: +しむかっぷ 占冠 地名: +しむけ 仕向 名1: +しむけ 仕向け 一段3: +しむら 志村 苗字: +しめ 志免 地名: +しめ 閉め 一段4: +しめ 占め 一段2: +しめ 締め 一段4: +しめ 絞め 一段4: +しめ 示 サ五8: +しめ 湿 サ五7:ラ五8: +しめい 指名 名6: +しめい 指命 名6: +しめい 氏名 名1: +しめい 使命 名1: +しめき 締め切 ラ五7: +しめきり 〆切り 名1: +しめきり 締切り 名1: +しめきりび 締切日 名1: +しめくく 締めくく ラ五7: +しめだ 締め出 サ五7: +しめっぽ 湿っぽ 形2: +しめつ 死滅 名6: +しめつけ 締め付け 一段3: +しめび 締日 名1: +しめやか しめやか 形動4: +しめん 紙面 名1: +しめんそか 四面楚歌 名1: +しも 下 代1:接頭1: +しも 霜 代1: +しもあがた 下県 地名: +しもいち 下市 地名: +しもいな 下伊那 地名: +しもうさ 下総 地名: +しもかまがり 下蒲刈 地名: +しもかわ 下川 苗字: +しもかわ 下川 地名: +しもがれ 霜枯れ 代4: +しもき 下期 名1: +しもきた 下北 地名: +しもきたざわ 下北沢 地名: +しもきたやま 下北山 地名: +しもぎょう 下京 地名: +しもげ 下毛 地名: +しもこしき 下甑 地名: +しもごう 下郷 地名: +しもざ 下座 名1: +しもじ 下地 地名: +しもじょう 下条 苗字: +しもじょう 下条 地名: +しもすわ 下諏訪 地名: +しもたかい 下高井 地名: +しもだ 下田 苗字: +しもだ 下田 地名: +しもだて 下館 地名: +しもつ 下津 苗字: +しもつ 下津 地名: +しもつが 下都賀 地名: +しもつけ 下野 地名: +しもつま 下妻 地名: +しもて 下手 名1: +しもにいかわ 下新川 地名: +しもにた 下仁田 地名: +しものせき 下関 地名: +しもはんき 下半期 名1: +しもばしら 霜柱 代1: +しもふさ 下総 地名: +しもへい 下閉伊 地名: +しもべ 下部 地名: +しもましき 下益城 地名: +しもみのち 下水内 地名: +しもむら 下村 苗字: +しもやけ 霜焼け 名1: +しもやま 下山 苗字: +しもん 諮問 名6: +しもん 試問 名6: +しもん 指紋 名1: +しゃ 社 接尾1:助数2: +しゃ 者 接尾3:助数2: +しゃ 車 接尾1: +しゃ 舎 代1: +しゃ 射 代1: +しゃ 斜 代1: +しゃ 紗 代1: +しゃ 謝 サ変: +しゃ 沙 単漢: +しゃ 砂 単漢: +しゃ 写 単漢: +しゃ 捨 単漢: +しゃ 赦 単漢: +しゃ 煮 単漢: +しゃ 遮 単漢: +しゃーぷ シャープ 代5:企業: +しゃい 謝意 名1: +しゃいん 社員 名1: +しゃうん 社運 名1: +しゃえい 射影 名6: +しゃおく 社屋 名1: +しゃおん 謝恩 名6: +しゃか 釈迦 代1: +しゃかい 社会 名4: +しゃかいとう 社会党 名1: +しゃがい 社外 名1: +しゃぎょう 社業 名1: +しゃく 酌 代1: +しゃく 尺 代1:助数2: +しゃく 爵 代1: +しゃく 釈 代1: +しゃく 錫 代1: +しゃく 勺 代1: +しゃく 杓 代1: +しゃく 昔 単漢: +しゃく 石 単漢: +しゃく 赤 単漢: +しゃく 借 単漢: +しゃく 灼 単漢: +しゃくい 爵位 名1: +しゃくざい 借財 代4: +しゃくし 杓子 名1: +しゃくぜん 釈然 形動2: +しゃくど 尺度 名1: +しゃくねつ 灼熱 名1: +しゃくほう 釈放 名6: +しゃくめい 釈明 名6: +しゃくよう 借用 名6: +しゃくりょう 酌量 名6: +しゃけん 車検 名1: +しゃげき 射撃 名6: +しゃこ 車庫 名1: +しゃこう 社交 名4: +しゃこう 遮光 代4: +しゃこたん 積丹 地名: +しゃさい 社債 名1: +しゃさつ 射殺 名6: +しゃざい 謝罪 名6: +しゃし 斜視 名1: +しゃしゅ 車種 名1: +しゃしゅつ 射出 代4: +しゃしょう 車掌 代2: +しゃしょう 捨象 代4: +しゃしょく 写植 名1: +しゃしん 写真 名2: +しゃじ 謝辞 名1: +しゃじ 社寺 名1: +しゃじく 車軸 名1: +しゃじつ 写実 名4: +しゃせい 写生 名6: +しゃせつ 社説 名1: +しゃせん 斜線 名1: +しゃせん 車線 名1: +しゃぜつ 謝絶 名6: +しゃそう 車窓 名1: +しゃそう 社葬 名1: +しゃぞう 写像 名1: +しゃたい 車体 名1: +しゃたい 斜体 名1: +しゃたく 社宅 名1: +しゃだん 社団 名1: +しゃだん 遮断 名6: +しゃち 鯱 代1: +しゃちゅう 社中 名1: +しゃちゅう 車中 名1: +しゃちょう 社長 代2: +しゃっかん 借款 名1: +しゃっきん 借金 名6: +しゃったー シャッター 名1: +しゃつ シャツ 名1: +しゃてい 射程 名1: +しゃどう 車道 名1: +しゃな 紗那 地名: +しゃない 社内 名1: +しゃない 車内 名1: +しゃにくさい 謝肉祭 名1: +しゃにむに 遮二無二に 副1: +しゃひ 社費 名1: +しゃふう 社風 名1: +しゃふつ 煮沸 名6: +しゃべ 喋 ラ五8: +しゃみせん 三味線 名1: +しゃめい 社名 名1: +しゃめん 斜面 名1: +しゃよう 社用 名1: +しゃり 斜里 地名: +しゃりき 車力 地名: +しゃりょう 車両 名1: +しゃりん 車輪 名1: +しゃれ しゃれ 一段3: +しゃれ 洒落 名2: +しゃれい 謝礼 名6: +しゃれき 社歴 名1: +しゃわー シャワー 名1: +しゃんはい 上海 地名: +しゃんぷー シャンプー 代4: +しや 視野 名1: +しやく 試薬 名1: +しやくしょ 市役所 名1: +しゅ 種 接尾1:助数: +しゅ 主 代5:接頭1: +しゅ 酒 接尾1: +しゅ 首 代1:助数2: +しゅ 手 接尾1: +しゅ 朱 代1: +しゅ 取 単漢: +しゅ 守 単漢: +しゅ 殊 単漢: +しゅ 狩 単漢: +しゅ 珠 単漢: +しゅ 腫 単漢: +しゅ 趣 単漢: +しゅ 諏 単漢: +しゅーず シューズ 名1: +しゅい 趣意 名1: +しゅい 首位 名1: +しゅい 主意 名1: +しゅいん 主因 名1: +しゅう 州 接尾4:助数2: +しゅう 週 代1:助数: +しゅう 周 代1:助数2: +しゅう 囚 代1: +しゅう 宗 代1: +しゅう 醜 代1: +しゅう 衆 代1: +しゅう 秀 代1: +しゅう 集 接尾1: +しゅう 臭 代1: +しゅう 鰍 単漢: +しゅう 執 単漢: +しゅう 収 単漢: +しゅう 就 単漢: +しゅう 修 単漢: +しゅう 愁 単漢: +しゅう 拾 単漢: +しゅう 洲 単漢: +しゅう 秋 単漢: +しゅう 終 単漢: +しゅう 繍 単漢: +しゅう 習 単漢: +しゅう 舟 単漢: +しゅう 蒐 単漢: +しゅう 襲 単漢: +しゅう 讐 単漢: +しゅう 蹴 単漢: +しゅう 輯 単漢: +しゅう 酋 単漢: +しゅう 酬 単漢: +しゅう 摺 単漢: +しゅう 鍬 単漢: +しゅうい 周囲 名1: +しゅういち 修一 名前: +しゅういち 秀一 名前: +しゅういつ 秀逸 名8: +しゅういん 衆院 名1: +しゅうえいしゃ 集英社 企業: +しゅうえき 収益 名1: +しゅうえき 就役 名6: +しゅうか 集荷 名6: +しゅうかい 集会 名6: +しゅうかい 周回 名6: +しゅうかく 収穫 名6: +しゅうかん 習慣 名1: +しゅうかん 週刊 名1: +しゅうかん 週間 名1:助数2: +しゅうかんし 週刊誌 名1: +しゅうがく 就学 名6: +しゅうがく 修学 名6: +しゅうき 周期 名4:助数2: +しゅうき 周忌 名1:助数2: +しゅうき 終期 名1: +しゅうきゅう 週休 名1: +しゅうきゅう 週給 名1: +しゅうきょう 宗教 名4: +しゅうきょく 終局 名1: +しゅうきん 集金 名6: +しゅうぎ 祝儀 名3: +しゅうぎいん 衆議院 名1: +しゅうぎょう 就業 名6: +しゅうぎょう 修業 名6: +しゅうぎょう 終業 名6: +しゅうけい 集計 名6: +しゅうけつ 終結 名6: +しゅうけつ 集結 名6: +しゅうけん 集権 名4: +しゅうげき 襲撃 名6: +しゅうげん 祝言 名3: +しゅうこう 周航 名6: +しゅうこう 就航 名6: +しゅうこう 修好 名6: +しゅうごう 集合 名6: +しゅうさい 秀才 名1: +しゅうさく 秀作 名1: +しゅうさん 集散 名6: +しゅうし 終始 名6: +しゅうし 終止 名6: +しゅうし 収支 名1: +しゅうし 修士 名1: +しゅうしゅう 収集 名6: +しゅうしゅう 収拾 名6: +しゅうしゅく 収縮 名6: +しゅうしょう 愁傷 名3: +しゅうしょく 就職 名7: +しゅうしょく 修飾 名6: +しゅうしん 就寝 名7: +しゅうしん 執心 名7: +しゅうしん 終身 名1: +しゅうじ 習字 名1: +しゅうじ 修辞 名1: +しゅうじ 周二 名前: +しゅうじ 修司 名前: +しゅうじ 修二 名前: +しゅうじつ 終日 代6: +しゅうじゅく 習熟 名6: +しゅうじん 囚人 名1: +しゅうせい 修正 名6: +しゅうせい 集成 名6: +しゅうせい 修整 名6: +しゅうせい 習性 名1: +しゅうせき 集積 名6: +しゅうせん 終戦 名1: +しゅうせん 周旋 代4: +しゅうぜん 修繕 名6: +しゅうそう 周桑 地名: +しゅうそく 収束 名6: +しゅうそく 終息 名6: +しゅうたい 醜態 名1: +しゅうたん 愁嘆 名7: +しゅうたん 終端 代4: +しゅうだん 集団 名1: +しゅうち 周知 名6: +しゅうち 周智 地名: +しゅうち 羞恥 名6: +しゅうちく 修築 名6: +しゅうちゃく 執着 名6: +しゅうちゃく 終着 名1: +しゅうちゅう 集中 名6: +しゅうてん 終点 名1: +しゅうでん 終電 名1: +しゅうと 姑 名2: +しゅうとう 周東 地名: +しゅうとう 周到 名8: +しゅうとく 収得 名6: +しゅうとく 修得 名6: +しゅうとく 拾得 名6: +しゅうとく 習得 名6: +しゅうとめ 姑 名2: +しゅうにゅう 収入 名1: +しゅうにん 就任 名7: +しゅうねん 執念 名1: +しゅうねん 周年 助数2: +しゅうのう 収納 名6: +しゅうは 周波 名1: +しゅうは 宗派 名1: +しゅうはい 集配 名6: +しゅうはすう 周波数 名1: +しゅうばつ 秀抜 名8: +しゅうばん 終盤 名1: +しゅうふく 修復 名6: +しゅうぶん 秋分 名1: +しゅうへき 習癖 名1: +しゅうへん 周辺 名1: +しゅうほう 週報 名1: +しゅうほう 秋芳 地名: +しゅうぼう 衆望 名1: +しゅうまく 終幕 名1: +しゅうまつ 週末 名1: +しゅうまつ 終末 名1: +しゅうみん 就眠 名6: +しゅうもく 衆目 名1: +しゅうや 終夜 代6: +しゅうやく 集約 名6: +しゅうゆう 周遊 名6: +しゅうよう 収容 名6: +しゅうよう 収用 名6: +しゅうらい 襲来 名6: +しゅうらく 集落 名1: +しゅうり 修理 名6: +しゅうりょう 終了 名6: +しゅうりょう 修了 名6: +しゅうりょう 収量 名1: +しゅうれい 秋冷 名1: +しゅうれん 修練 名6: +しゅうろう 就労 名6: +しゅうろく 収録 名6: +しゅうろく 集録 名6: +しゅうろん 修論 名1: +しゅうわい 収賄 名6: +しゅえい 守衛 代2: +しゅえん 主演 名6: +しゅかく 主格 名1: +しゅかん 主観 名4: +しゅかん 主幹 名1: +しゅがー シュガー 名1: +しゅがん 主眼 名1: +しゅき 手記 代4: +しゅぎ 主義 名1: +しゅぎょう 修行 名6: +しゅく 祝 接頭1:サ変:サ五1: +しゅく 宿 代4:サ五1: +しゅく 叔 単漢: +しゅく 夙 単漢: +しゅく 淑 単漢: +しゅく 縮 単漢: +しゅく 粛 単漢: +しゅくい 祝意 名1: +しゅくえん 祝宴 名1: +しゅくが 祝賀 名7: +しゅくがん 宿願 名1: +しゅくさつ 縮刷 名6: +しゅくしゃ 宿舎 名1: +しゅくしゃ 縮写 名6: +しゅくしゃく 縮尺 名6: +しゅくしょう 縮小 名6: +しゅくじ 祝辞 名3: +しゅくじつ 祝日 名1: +しゅくじょ 淑女 名1: +しゅくず 縮図 名1: +しゅくせい 粛正 名6: +しゅくだい 宿題 代3: +しゅくちょく 宿直 名6: +しゅくてき 宿敵 名1: +しゅくてん 祝典 名1: +しゅくでん 祝電 名1: +しゅくはい 祝杯 名1: +しゅくはく 宿泊 名7: +しゅくば 宿場 名1: +しゅくふく 祝福 名6: +しゅくめい 宿命 名4: +しゅくん 殊勲 名1: +しゅくん 主君 名3: +しゅけん 主権 名1: +しゅげい 手芸 名1: +しゅこう 趣向 名1: +しゅご 主語 名1: +しゅさ 主査 名1: +しゅさい 主催 名6: +しゅさい 主宰 名6: +しゅざい 取材 名6: +しゅざん 珠算 名1: +しゅし 主旨 名1: +しゅし 種子 名1: +しゅし 趣旨 名1: +しゅしゃ 取捨 名6: +しゅしゅ 種々 名8: +しゅしょう 首相 名1: +しゅしょう 主将 名1: +しゅしょう 主唱 名6: +しゅしょう 殊勝 形動4: +しゅしょく 主食 名1: +しゅしん 主審 名1: +しゅじ 主事 名1: +しゅじい 主治医 名1: +しゅじく 主軸 名1: +しゅじゅ 種々 名8: +しゅじゅう 主従 名1: +しゅじゅつ 手術 名6: +しゅじん 主人 名3: +しゅじんこう 主人公 名1: +しゅせい 守勢 名1: +しゅせき 主席 名1: +しゅせき 首席 名1: +しゅぜんじ 修善寺 地名: +しゅぞう 酒造 名1: +しゅぞく 種族 名1: +しゅたい 主体 名4: +しゅだい 主題 名1: +しゅだん 手段 名1: +しゅちにくりん 酒池肉林 名1: +しゅちゅう 手中 名1: +しゅちょう 主張 名6: +しゅちょう 首長 名1: +しゅっか 出火 名6: +しゅっか 出荷 名6: +しゅっきん 出勤 名6: +しゅっきん 出金 名6: +しゅっけつ 出欠 名3: +しゅっけつ 出血 名6: +しゅっこ 出庫 名6: +しゅっこう 出向 名7: +しゅっこう 出航 名6: +しゅっこく 出国 名6: +しゅっさん 出産 名7: +しゅっし 出資 名7: +しゅっしゃ 出社 名7: +しゅっしょ 出所 代4: +しゅっしょ 出処 代4: +しゅっしょう 出生 代4: +しゅっしん 出身 名3: +しゅっすい 出水 名6: +しゅっせ 出世 名7: +しゅっせい 出生 名7: +しゅっせき 出席 名7: +しゅっそう 出走 名6: +しゅっちょう 出張 名6: +しゅっちょう 出超 名1: +しゅってん 出典 名1: +しゅってん 出展 名6: +しゅっとう 出頭 名6: +しゅっぱつ 出発 名7: +しゅっぱん 出版 名7: +しゅっぱん 出帆 名6: +しゅっぴ 出費 名6: +しゅっぴん 出品 名7: +しゅつ 出 代1: +しゅつえん 出演 名7: +しゅつがん 出願 名7: +しゅつげん 出現 名7: +しゅつごく 出獄 名7: +しゅつじょう 出場 名7: +しゅつじん 出陣 名7: +しゅつだい 出題 名7: +しゅつどう 出動 名7: +しゅつにゅう 出入 代4: +しゅつば 出馬 名6: +しゅつぼつ 出没 名6: +しゅつりょう 出漁 名6: +しゅつりょく 出力 名7: +しゅと 首都 名1: +しゅとう 種痘 名1: +しゅとく 取得 名7: +しゅとけん 首都圏 名1: +しゅとして 主として 副1: +しゅどう 主導 名6: +しゅどう 手動 名1: +しゅにん 主任 代2: +しゅのう 首脳 名1: +しゅはん 主犯 名1: +しゅひつ 主筆 名1: +しゅひん 主賓 名1: +しゅび 守備 名6: +しゅび 首尾 名3: +しゅふ 主婦 名1: +しゅふ 首府 名1: +しゅぶん 主文 名1: +しゅぷーる シュプール 名1: +しゅべつ 種別 名6: +しゅほう 手法 名1: +しゅぼう 首謀 名1: +しゅみ 趣味 名3: +しゅむ 主務 名1: +しゅもく 種目 名1: +しゅやく 主役 名1: +しゅよう 主要 名8: +しゅよく 主翼 名1: +しゅら 修羅 名1: +しゅらん 酒乱 名1: +しゅりゅう 主流 名1: +しゅりょう 狩猟 名6: +しゅりょう 首領 名1: +しゅりょく 主力 名1: +しゅるい 種類 名1:助数2: +しゅわ 手話 名1: +しゅん 旬 代1: +しゅん 俊 単漢: +しゅん 峻 単漢: +しゅん 春 単漢: +しゅん 瞬 単漢: +しゅん 竣 単漢: +しゅん 舜 単漢: +しゅん 駿 単漢: +しゅんいち 俊一 名前: +しゅんかん 瞬間 名1: +しゅんき 春季 名1: +しゅんこう 竣工 名7: +しゅんさい 俊才 名1: +しゅんじ 瞬時 代6: +しゅんじ 俊二 名前: +しゅんじゅう 春秋 名1: +しゅんだん 春暖 名1: +しゅんとう 春闘 名1: +しゅんびん 俊敏 名8: +しゅんぶん 春分 名1: +しゆう 私有 名6: +しゆう 雌雄 名1: +しゆうち 私有地 名1: +しょ 書 接尾1:サ変:サ五1: +しょ 署 接尾1:サ変: +しょ 所 接尾1: +しょ 初 接頭1: +しょ 諸 接頭1: +しょ 処 サ変:サ五1: +しょ 暑 単漢: +しょ 黍 単漢: +しょ 曙 単漢: +しょ 渚 単漢: +しょ 庶 単漢: +しょ 緒 単漢: +しょ 薯 単漢: +しょ 藷 単漢: +しょ 岨 単漢: +しょー ショー 名1: +しょーと ショート 名6: +しょあく 諸悪 名1: +しょい 所為 名1: +しょいん 所員 名1: +しょいん 署員 名1: +しょいん 書院 名1: +しょう 勝 代1:助数2: +しょう 妾 代1: +しょう 将 代1: +しょう 症 接尾1: +しょう 省 接尾1: +しょう 称 代4: +しょう 章 代1:助数: +しょう 衝 代1: +しょう 性 代1: +しょう 賞 接尾1:サ変: +しょう 証 接尾1:サ変: +しょう 生 代1:ザ変: +しょう 招 ザ変: +しょう 鉦 代1: +しょう 小 代1:接頭1: +しょう 少 代1: +しょう 升 代1:助数2: +しょう 抄 代1: +しょう 商 接尾1: +しょう 床 代1: +しょう ショウ 接尾1: +しょう 鍬 単漢: +しょう 錆 単漢: +しょう 篠 単漢: +しょう 傷 単漢: +しょう 償 単漢: +しょう 匠 単漢: +しょう 召 単漢: +しょう 哨 単漢: +しょう 唱 単漢: +しょう 嘗 単漢: +しょう 奨 単漢: +しょう 娼 単漢: +しょう 宵 単漢: +しょう 尚 単漢: +しょう 庄 単漢: +しょう 廠 単漢: +しょう 彰 単漢: +しょう 承 単漢: +しょう 掌 単漢: +しょう 捷 単漢: +しょう 昇 単漢: +しょう 昌 単漢: +しょう 昭 単漢: +しょう 晶 単漢: +しょう 松 単漢: +しょう 梢 単漢: +しょう 樟 単漢: +しょう 樵 単漢: +しょう 沼 単漢: +しょう 消 単漢: +しょう 渉 単漢: +しょう 湘 単漢: +しょう 焼 単漢: +しょう 焦 単漢: +しょう 照 単漢: +しょう 硝 単漢: +しょう 礁 単漢: +しょう 祥 単漢: +しょう 笑 単漢: +しょう 粧 単漢: +しょう 紹 単漢: +しょう 肖 単漢: +しょう 菖 単漢: +しょう 蒋 単漢: +しょう 蕉 単漢: +しょう 裳 単漢: +しょう 訟 単漢: +しょう 鍾 単漢: +しょう 醤 単漢: +しょう 鐘 単漢: +しょう 障 単漢: +しょう 鞘 単漢: +しょう 詔 単漢: +しょう 詳 単漢: +しょう 象 単漢: +しょう 姓 単漢: +しょう 政 単漢: +しょう 正 単漢: +しょう 精 単漢: +しょう 相 単漢: +しょう 装 単漢: +しょう 蛸 単漢: +しょう 憧 単漢: +しょう 橡 単漢: +しょう 憔 単漢: +しょう 翔 単漢: +しょう 誦 単漢: +しょうあく 掌握 名6: +しょうい 小異 代1: +しょういち 庄一 名前: +しょういち 昇一 名前: +しょういち 昭一 名前: +しょういち 章一 名前: +しょういち 正一 名前: +しょういちろう 正一郎 名前: +しょういん 勝因 名1: +しょうえん 小宴 名1: +しょうえん 招宴 名1: +しょうおう 勝央 地名: +しょうおう 照応 名6: +しょうか 消火 名6: +しょうか 消化 名6: +しょうかい 紹介 名7: +しょうかい 照会 名6: +しょうかい 詳解 名6: +しょうかい 商会 名1: +しょうかく 昇格 名6: +しょうかわ 荘川 地名: +しょうかん 償還 名6: +しょうかん 召喚 名6: +しょうかん 小寒 名1: +しょうがい 生涯 名1: +しょうがい 障害 名1: +しょうがい 傷害 名1: +しょうがい 渉外 名1: +しょうがく 奨学 名1: +しょうがく 小学 名1: +しょうがく 小額 名1: +しょうがく 少額 名1: +しょうがくかん 小学館 企業: +しょうがくせい 小学生 名1: +しょうがっこう 小学校 名1: +しょうがつ 正月 名2: +しょうがな しょうがな 形1: +しょうがわ 庄川 地名: +しょうき 正気 名1: +しょうきち 昭吉 名前: +しょうきち 正吉 名前: +しょうきぼ 小規模 名8: +しょうきゃく 償却 名6: +しょうきゃく 消却 名6: +しょうきゃく 焼却 名6: +しょうきゅう 昇級 名6: +しょうきゅう 昇給 名6: +しょうきょ 消去 名6: +しょうきょく 消極 名4: +しょうきん 償金 名1: +しょうきん 賞金 名1: +しょうぎ 将棋 名1: +しょうぎょう 商業 名4: +しょうぐん 将軍 名1: +しょうけい 小計 名6: +しょうけい 象形 名1: +しょうけん 証券 名1: +しょうけん 證券 名1: +しょうげき 衝撃 名4: +しょうげん 証言 名6: +しょうこ 証拠 名1: +しょうこう 症候 名1: +しょうこう 将校 名1: +しょうこう 小康 名1: +しょうこう 商工 名1: +しょうこう 昇降 名6: +しょうこう 焼香 名7: +しょうこく 小国 名1: +しょうこん 商魂 名1: +しょうご 正午 名1: +しょうご 省吾 名前: +しょうご 昭吾 名前: +しょうご 正吾 名前: +しょうごう 照合 名6: +しょうごう 称号 名1: +しょうごう 商号 名1: +しょうさ 照査 名6: +しょうさ 小差 名1: +しょうさい 詳細 名8: +しょうさい 商才 名1: +しょうさん 称賛 名6: +しょうさん 賞賛 名6: +しょうさん 勝算 名1: +しょうさん 硝酸 名1: +しょうし 焼死 名6: +しょうし 証紙 名1: +しょうしつ 消失 名6: +しょうしつ 焼失 名6: +しょうしゃ 商社 名1: +しょうしゃ 勝者 名1: +しょうしゃ 照射 名6: +しょうしゅう 召集 名6: +しょうしゅう 招集 名6: +しょうしょ 証書 名1: +しょうしょ 小暑 名1: +しょうしょう 少々 代6: +しょうしん 昇進 名7: +しょうしん 焦心 名6: +しょうしん 正真 名1: +しょうしん 焼身 名1: +しょうしん 傷心 名3: +しょうしん 小心 名8: +しょうじ 商事 名1: +しょうじ 小路 地名: +しょうじ 庄司 苗字: +しょうじ 昭司 名前: +しょうじ 昭次 名前: +しょうじ 昭二 名前: +しょうじ 章二 名前: +しょうじ 障子 名1: +しょうじ 正次 名前: +しょうじ 正二 名前: +しょうじ 東海林 苗字: +しょうじき 正直 名8: +しょうじゃく 正雀 地名: +しょうじゅう 小銃 名1: +しょうじゅつ 詳述 名6: +しょうじゅん 照準 名1: +しょうじゅん 昇順 名1: +しょうじょ 少女 名1: +しょうじょう 症状 名1: +しょうじょう 賞状 名1: +しょうじろう 正次郎 名前: +しょうじん 精進 名7: +しょうすい 憔悴 名6: +しょうすう 小数 名1: +しょうすう 少数 名1: +しょうず 小豆 地名: +しょうせい 小生 名1: +しょうせい 招請 名6: +しょうせつ 小説 名1: +しょうせつ 小雪 名1: +しょうせつ 小節 助数: +しょうせつ 詳説 代4: +しょうせつか 小説家 名1: +しょうせん 商船 名1: +しょうそ 勝訴 名6: +しょうそう 尚早 代5: +しょうそう 焦燥 名6: +しょうそく 消息 名3: +しょうぞう 肖像 名1: +しょうぞう 昭三 名前: +しょうぞう 正三 名前: +しょうぞう 省三 名前: +しょうぞく 装束 名1: +しょうたい 招待 名7: +しょうたい 正体 名1: +しょうたろう 正太郎 名前: +しょうだく 承諾 名7: +しょうだん 商談 名6: +しょうち 承知 名7: +しょうち 招致 名6: +しょうちく 松竹 名1: +しょうちゅう 掌中 名1: +しょうちゅう 焼酎 名1: +しょうちょう 象徴 名6: +しょうちょう 省庁 名1: +しょうちょう 小腸 名1: +しょうちん 消沈 名6: +しょうてん 商店 名1: +しょうてん 昇天 名6: +しょうてん 焦点 名1: +しょうてん 衝天 名1: +しょうとう 消灯 名6: +しょうとくたいし 聖徳太子 名1: +しょうとつ 衝突 名6: +しょうど 焦土 名1: +しょうど 照度 名1: +しょうどう 衝動 名4: +しょうどく 消毒 名6: +しょうない 庄内 地名: +しょうなん 湘南 地名: +しょうなん 沼南 地名: +しょうに 小児 名1: +しょうにゅうどう 鍾乳洞 名1: +しょうにん 商人 名1: +しょうにん 承認 名7: +しょうにん 昇任 名6: +しょうにん 証人 名1: +しょうね 性根 名1: +しょうねん 少年 名1: +しょうねんば 正念場 名1: +しょうのう 笑納 名7: +しょうは 小破 サ変: +しょうはい 勝敗 名1: +しょうはい 賞杯 名1: +しょうばい 商売 名7: +しょうばつ 賞罰 名1: +しょうばら 庄原 地名: +しょうばん 相伴 名7: +しょうひ 消費 名6: +しょうひしゃ 消費者 名1: +しょうひぜい 消費税 名1: +しょうひょう 商標 名1: +しょうひん 商品 名4: +しょうひん 賞品 名1: +しょうび 賞美 名6: +しょうび 焦眉 名1: +しょうふ 娼婦 名1: +しょうふだ 正札 名1: +しょうぶ 勝負 名6: +しょうぶ 菖蒲 名1: +しょうぶん 性分 名1: +しょうへい 招聘 名6: +しょうへい 正平 名前: +しょうへき 障壁 名1: +しょうほう 商法 名1: +しょうほん 抄本 名1: +しょうぼう 消防 名1: +しょうぼうしょ 消防署 名1: +しょうまん 小満 名1: +しょうみ 賞味 名7: +しょうみ 正味 名1: +しょうめい 証明 名6: +しょうめい 照明 名6: +しょうめい 正銘 名1: +しょうめつ 消滅 名6: +しょうめん 正面 名1: +しょうもう 消耗 名6: +しょうもん 証文 名1: +しょうや 庄屋 名1: +しょうやく 抄訳 名6: +しょうゆ 醤油 名2: +しょうよ 賞与 名1: +しょうよう 商用 名1: +しょうらい 将来 名4: +しょうらん 照覧 名6: +しょうらん 笑覧 名7: +しょうり 勝利 名6: +しょうりゃく 省略 名6: +しょうりょ 焦慮 名6: +しょうりょう 小量 名8: +しょうりょう 少量 名8: +しょうりょく 省力 名4: +しょうれい 奨励 名6: +しょうれい 省令 名1: +しょうろく 抄録 名6: +しょうろん 詳論 名6: +しょうわ 昭和 名1: +しょうわ 唱和 名7: +しょうわ 庄和 地名: +しょえん 初演 名6: +しょか 初夏 名1: +しょか 書架 名1: +しょかい 初回 名1: +しょかつ 所轄 名6: +しょかん 所感 名1: +しょかん 所管 名6: +しょかん 書簡 名1: +しょが 書画 代1: +しょき 初期 名4: +しょき 書記 名1: +しょきち 初期値 名1: +しょきちょう 書記長 名1: +しょきゅう 初級 名1: +しょく 職 代1: +しょく 食 接尾1:助数2:サ変:サ五1: +しょく 色 接尾1:助数2: +しょく 嘱 サ変:サ五1: +しょく 埴 単漢: +しょく 飾 単漢: +しょく 拭 単漢: +しょく 植 単漢: +しょく 殖 単漢: +しょく 燭 単漢: +しょく 織 単漢: +しょく 触 単漢: +しょく 蝕 単漢: +しょく 喰 単漢: +しょくあん 職安 名1: +しょくいん 職員 名1: +しょくえん 食塩 名1: +しょくぎょう 職業 名3: +しょくご 食後 名1: +しょくし 食指 名1: +しょくしゅ 職種 名1: +しょくしょう 職掌 名1: +しょくしょう 食傷 名6: +しょくじ 食事 名5: +しょくじゅ 植樹 名6: +しょくせい 職制 名1: +しょくせい 植生 名1: +しょくせいかつ 食生活 名1: +しょくせき 職責 名1: +しょくぜん 食前 名1: +しょくぜん 食膳 名1: +しょくたく 食卓 名1: +しょくたく 嘱託 名6: +しょくだい 燭台 名1: +しょくち 諸口 名1: +しょくちゅうどく 食中毒 名1: +しょくつう 食通 名1: +しょくどう 食堂 名1: +しょくどう 食道 名1: +しょくにん 職人 代2: +しょくのう 職能 名1: +しょくはつ 触発 名6: +しょくば 職場 名1: +しょくばい 触媒 名1: +しょくひ 食費 名1: +しょくひん 食品 名1: +しょくぶつ 植物 名4: +しょくぶん 職分 名1: +しょくぼう 嘱望 名6: +しょくみんち 植民地 名1: +しょくむ 職務 名1: +しょくもく 属目 名6: +しょくもつ 食物 名1: +しょくよう 食用 名1: +しょくよく 食欲 名1: +しょくりょう 食料 名1: +しょくりょう 食糧 名1: +しょくりょうひん 食料品 名1: +しょくりん 植林 名6: +しょくれき 職歴 名1: +しょくん 諸君 代1: +しょけい 処刑 名6: +しょけん 所見 名1: +しょこ 書庫 名1: +しょこく 諸国 名1: +しょこん 初婚 名1: +しょさい 書斎 名1: +しょさい 所載 名1: +しょさん 所産 名1: +しょさんべつ 初山別 地名: +しょざい 所在 名1: +しょざいち 所在地 名1: +しょし 初志 名1: +しょし 諸氏 名1: +しょしき 書式 名1: +しょしゅう 初秋 名1: +しょしゅん 初春 名1: +しょしょ 処暑 名1: +しょしん 初心 名8: +しょしん 初診 名1: +しょしん 所信 名1: +しょしん 書信 名1: +しょしん 初審 名1: +しょしんしゃ 初心者 名1: +しょじ 所持 名6: +しょじ 諸事 名1: +しょじゅん 初旬 名1: +しょじょ 処女 名1: +しょじょう 書状 名1: +しょせい 処世 名1: +しょせい 書生 名1: +しょせき 書籍 名1: +しょせつ 諸説 名1: +しょせん 所詮 代6: +しょぞう 所蔵 名6: +しょぞく 所属 名6: +しょぞん 所存 名1: +しょたい 所帯 名1: +しょたい 書体 名1: +しょたいめん 初対面 名1: +しょだい 初代 名1: +しょだな 書棚 名1: +しょだん 初段 名1: +しょち 処置 名6: +しょちゅう 書中 名1: +しょちゅう 暑中 名1: +しょちょう 所長 名1: +しょちょう 署長 名1: +しょっかく 触覚 名1: +しょっかん 触感 名1: +しょっき 食器 名1: +しょっく ショック 名8: +しょっけん 職権 名1: +しょっけん 食券 名1: +しょっこう 職工 名1: +しょっちゅう しょっちゅう 副8: +しょっと ショット 代4: +しょっぴんぐ ショッピング 名6: +しょっぷ ショップ 名1: +しょてい 所定 名1: +しょてん 書店 名1: +しょとう 初頭 名1: +しょとう 諸島 名1: +しょとう 初等 名1: +しょとう 初冬 名1: +しょとく 所得 名1: +しょどう 書道 名1: +しょない 所内 名1: +しょにち 初日 名1: +しょにんきゅう 初任給 名1: +しょはん 初版 名1: +しょはん 初犯 名1: +しょはん 諸般 名1: +しょばつ 処罰 名6: +しょひょう 書評 名1: +しょぶん 処分 名6: +しょほ 初歩 名1: +しょほう 処方 名6: +しょぼう 書房 名1: +しょみん 庶民 名4: +しょむ 庶務 代2: +しょめい 署名 名6: +しょめい 書名 名1: +しょめん 書面 名3: +しょもう 所望 名6: +しょもつ 書物 名1: +しょゆう 所有 名6: +しょよう 所用 名1: +しょよう 所要 名1: +しょり 処理 名6: +しょるい 書類 名1: +しょろう 初老 名1: +しょんぼり しょんぼり 副3: +しよう 使用 名7: +しよう 仕様 名1: +しよう 私用 名1: +しよう 試用 名6: +しようしょ 仕様書 代1: +しよく 私欲 名1: +しら 白 代1:マ五1: +しらい 白井 苗字: +しらいし 白石 苗字: +しらおい 白老 地名: +しらおか 白岡 地名: +しらかば 白樺 代1: +しらかわ 白川 苗字: +しらかわ 白河 地名: +しらかわ 白川 地名: +しらが 白髪 代1: +しらき 白木 代1: +しらけ 白け 一段3: +しらこ 白子 名1:苗字: +しらさぎ 白鷺 名1: +しらさわ 白沢 苗字: +しらじらし 白々し 形2: +しらたか 白鷹 地名: +しらたき 白滝 苗字: +しらたき 白滝 地名: +しらとり 白鳥 苗字: +しらぬか 白糠 地名: +しらぬひ 不知火 地名: +しらね 白根 苗字: +しらね 白根 地名: +しらは 白羽 名1: +しらはま 白浜 苗字: +しらはま 白浜 地名: +しらべ 調べ 一段4: +しらみね 白峰 地名: +しり 私利 名1: +しり 尻 名2: +しりーず シリーズ 名1: +しりあ 知り合 ワ五8: +しりあす シリアス 名8: +しりある シリアル 名1: +しりうち 知内 地名: +しりきしない 尻岸内 地名: +しりこん シリコン 名1: +しりごみ 後込み 代4: +しりごみ 尻込み 代4: +しりぞ 退 カ五1: +しりぞけ 退け 一段1: +しりつ 市立 名1:接尾4: +しりつ 私立 名1: +しりぬ 知り抜 カ五1: +しりべし 後志 地名: +しりめ 後目 名1: +しりめつれつ 支離滅裂 代5: +しりゅう 支流 名1: +しりょ 思慮 名6: +しりょう 資料 名1: +しりょう 史料 名1: +しりょう 飼料 名1: +しりょう 死霊 名1: +しりょく 視力 名1: +しりょく 資力 名1: +しりょく 死力 名1: +しる 記 サ五7: +しる 汁 代1: +しるえっと シルエット 名1: +しるく シルク 名1: +しるし 印 代1: +しるばー シルバー 名1: +しれい 指令 名6: +しれい 司令 名6: +しれとこ 知床 地名: +しれん 試練 名1: +しろ 白 名1:接頭1:形11: +しろ 城 名2: +しろ 代 代1: +しろ しろ サ変命1: +しろい 白井 地名: +しろいし 白石 地名: +しろう 司郎 名前: +しろう 史郎 名前: +しろう 四郎 名前: +しろう 志郎 名前: +しろうと 素人 代2: +しろうま 白馬 地名: +しろかわ 城川 苗字: +しろかわ 城川 地名: +しろがね 白金 地名: +しろくじちゅう 四六時中 副8: +しろくま 白熊 名1: +しろくろ 白黒 名6: +しろじ 白地 名1: +しろた 白田 苗字: +しろとり 白鳥 地名: +しろね 白根 地名: +しろぼし 白星 名1: +しろみ 白身 代1: +しろもの 代物 名1: +しろやま 城山 苗字: +しろん 史論 名1: +しろん 私論 名1: +しわ しわ 名1: +しわ 紫波 地名: +しわけ 仕訳 名6: +しわけ 仕分け 一段1: +しわざ 仕業 名1: +しわす 師走 名1: +しわひめ 志波姫 地名: +しわよせ しわ寄せ 代4: +しん 新 代1:接頭5: +しん 心 接尾1: +しん 審 接尾1:助数: +しん 真 代1: +しん 芯 代1: +しん 信 代1:ザ変: +しん 臣 代1: +しん 親 代1: +しん 辛 代1: +しん 進 ザ変: +しん 森 単漢: +しん 浸 単漢: +しん 寝 単漢: +しん 深 単漢: +しん 慎 単漢: +しん 振 単漢: +しん 紳 単漢: +しん 身 単漢: +しん 針 単漢: +しん 震 単漢: +しん 伸 単漢: +しん 侵 単漢: +しん 唇 単漢: +しん 娠 単漢: +しん 榛 単漢: +しん 申 単漢: +しん 晋 単漢: +しん 疹 単漢: +しん 神 単漢: +しん 秦 単漢: +しん 薪 単漢: +しん 診 単漢: +しん 辰 単漢: +しん 津 単漢: +しん 賑 単漢: +しん 槙 単漢: +しん 矧 単漢: +しん 沁 単漢: +しん 眞 単漢: +しんあい 親愛 名8:サ変: +しんあさひ 新旭 地名: +しんあん 新案 名1: +しんい 真意 名1: +しんいち 伸一 名前: +しんいち 信一 名前: +しんいち 慎一 名前: +しんいち 新一 名前: +しんいち 新市 地名: +しんいち 真一 名前: +しんいち 進一 名前: +しんいちろう 新一郎 名前: +しんいり 新入り 代4: +しんうおのめ 新魚目 地名: +しんうち 真打ち 名1: +しんえい 新鋭 名8: +しんえい 親衛 名1: +しんえん 深遠 代5: +しんおおさか 新大阪 地名: +しんおん 心音 名1: +しんか 進化 代4: +しんか 深化 代4: +しんか 真価 代1: +しんかい 深海 名1: +しんかいち 新開地 名1: +しんかぶ 新株 名1: +しんかわ 新川 苗字: +しんかわ 新川 地名: +しんかん 新刊 名1: +しんかん 新館 名1: +しんかんせん 新幹線 名1: +しんがー シンガー 名1: +しんがい 侵害 名6: +しんがい 心外 形動4: +しんがお 新顔 名1: +しんがく 進学 名7: +しんがた 新型 名1: +しんがぽーる シンガポール 地名: +しんき 新規 名8: +しんき 新奇 名8: +しんき 心機 名1: +しんきち 信吉 名前: +しんきち 新吉 名前: +しんきゅう 新旧 名1: +しんきゅう 進級 名7: +しんきょ 新居 名3: +しんきょう 心境 名1: +しんきょく 新曲 名1: +しんきろう 蜃気楼 名1: +しんきろく 新記録 名1: +しんきん 信金 名1: +しんきん 親近 名6: +しんぎ 審議 名6: +しんぎ 真偽 名1: +しんぎかい 審議会 名1: +しんく 真紅 名1: +しんく 辛苦 代4: +しんくう 真空 名1: +しんくうかん 真空管 名1: +しんぐ 寝具 名1: +しんぐう 新宮 地名: +しんぐる シングル 名1: +しんけい 神経 名1: +しんけいしつ 神経質 名8: +しんけん 真剣 名8: +しんけん 親権 名1: +しんげき 進撃 名6: +しんげん 信玄 名前: +しんげんち 震源地 名1: +しんこう 進行 名6: +しんこう 信仰 名6: +しんこう 振興 名6: +しんこう 侵攻 名6: +しんこう 親交 名1: +しんこう 新興 名1: +しんこきゅう 深呼吸 名6: +しんこく 申告 名7: +しんこく 深刻 名8: +しんこく 親告 名6: +しんこっちょう 真骨頂 名1: +しんこん 新婚 名1: +しんごう 信号 名6: +しんごう 新郷 地名: +しんごう 神郷 地名: +しんさ 審査 名6: +しんさい 震災 名1: +しんさく 新作 名6: +しんさつ 診察 名6: +しんさん 辛酸 名1: +しんざん 新参 名1: +しんし 紳士 名4: +しんしき 新式 名8: +しんしつ 寝室 名1: +しんしのつ 新篠津 地名: +しんしゃ 新車 名1: +しんしゃ 深謝 名6: +しんしゅ 新種 名1: +しんしゅう 信州 地名: +しんしゅうしん 信州新 地名: +しんしゅく 伸縮 名6: +しんしゅつ 進出 名6: +しんしゅつ 浸出 名6: +しんしゅん 新春 名1: +しんしょ 新書 名1: +しんしょう 辛勝 名6: +しんしょうしゃ 身障者 名1: +しんしょく 寝食 名1: +しんしょく 浸食 名6: +しんしょく 侵食 名6: +しんしろ 新城 地名: +しんしん 心身 名1: +しんしん 新進 名1: +しんじ 信次 名前: +しんじ 信治 名前: +しんじ 信二 名前: +しんじ 新治 名前: +しんじ 宍道 地名: +しんじけーと シンジケート 名1: +しんじつ 真実 代5: +しんじゃ 信者 名1: +しんじゅ 真珠 名1: +しんじゅう 心中 名6: +しんじゅく 新宿 地名: +しんじょう 心情 名3: +しんじょう 信条 名1: +しんじょう 身上 名1: +しんじょう 新庄 苗字: +しんじょう 新庄 地名: +しんじろう 新次郎 名前: +しんじん 新人 代2: +しんじん 信心 代4: +しんすい 浸水 名6: +しんすい 進水 名6: +しんすい 心酔 名6: +しんすう 進数 助数2: +しんずい 真髄 名1: +しんずい 神髄 名1: +しんせい 申請 名6: +しんせい 新生 名6: +しんせい 新制 名1: +しんせい 真性 名1: +しんせい 新星 名1: +しんせい 神聖 形動4: +しんせい 真正 地名:形動1: +しんせいじ 新生児 名1: +しんせいひん 新製品 名1: +しんせき 親戚 名3: +しんせつ 親切 名10: +しんせつ 新設 名6: +しんせつ 新説 名1: +しんせつ 新雪 名1: +しんせん 新鮮 名8: +しんぜん 親善 名1: +しんぜん 神前 名1: +しんそう 深層 名1: +しんそう 真相 名1: +しんそこ 心底 名1: +しんそつ 新卒 名1: +しんぞう 心臓 名8: +しんぞく 親族 名3: +しんたい 身体 名1: +しんたい 進退 名6: +しんたいせい 新体制 名1: +しんたく 信託 名6: +しんたろう 信太郎 名前: +しんたろう 新太郎 名前: +しんだい 寝台 名1: +しんだん 診断 名6: +しんち 新地 苗字: +しんち 新地 地名: +しんちく 新築 名6: +しんちゅう 心中 名1: +しんちゅう 進駐 名6: +しんちょう 慎重 名8: +しんちょう 新調 名6: +しんちょう 伸長 名6: +しんちょう 身長 名1: +しんちょう 新潮 企業: +しんちょう 深長 形動4: +しんちょく 進捗 名6: +しんちんたいしゃ 新陳代謝 名1: +しんつう 心痛 名6: +しんてい 進呈 名6: +しんてき 心的 形動4: +しんてん 進展 名6: +しんてん 親展 名1: +しんでれら シンデレラ 代1: +しんでん 新田 名1: +しんでん 神殿 名1: +しんでんず 心電図 名1: +しんとう 浸透 名6: +しんとう 新党 名1: +しんとう 親等 名1:助数2: +しんとう 榛東 地名: +しんとう 真藤 苗字: +しんとく 新得 地名: +しんとつかわ 新十津川 地名: +しんとね 新利根 地名: +しんとみ 新富 地名: +しんど 進度 名1: +しんど 震度 名1: +しんどう 振動 名6: +しんどう 震動 名6: +しんどう 神童 名1: +しんどう 進藤 苗字: +しんなー シンナー 名1: +しんなんよう 新南陽 地名: +しんにってつ 新日鉄 企業: +しんにほん 新日本 名1: +しんにゅう 新入 名1: +しんにゅう 進入 名6: +しんにゅう 侵入 名6: +しんにゅう 浸入 名6: +しんにゅうがく 新入学 名1: +しんにゅうせい 新入生 名1: +しんにん 信任 名6: +しんにん 新任 名6: +しんねん 新年 名1: +しんねん 信念 名1: +しんねんかい 新年会 名1: +しんはつばい 新発売 代4: +しんばし 新橋 苗字: +しんばし 新橋 地名: +しんばん 新盤 名1: +しんぱ 新派 名1: +しんぱい 心配 名7:形動8: +しんぱん 審判 名6: +しんぱん 侵犯 名6: +しんび 審美 名1: +しんぴ 神秘 名8: +しんぴ 真否 名1: +しんぴん 新品 名1: +しんふぜん 心不全 名1: +しんぶつ 神仏 名1: +しんぶん 新聞 名1: +しんぷ 新婦 名1: +しんぷ 新譜 名1: +しんぷ 神父 代2: +しんぷう 新風 名1: +しんぷく 振幅 名1: +しんぷる シンプル 代5: +しんぺい 新平 名前: +しんぺん 身辺 名1: +しんぼ 新保 苗字: +しんぼう 辛抱 名6: +しんぼう 信望 名1: +しんぼう 心棒 名1: +しんぼく 親睦 名6: +しんぼりっく シンボリック 代1: +しんぼる シンボル 名1: +しんぽ 進歩 名6: +しんぽう 新法 名1: +しんぽじうむ シンポジウム 名1: +しんぽん 新本 名1: +しんまい 新米 名1: +しんまち 新町 地名: +しんみ 親身 名8: +しんみつ 親密 名8: +しんみなと 新湊 地名: +しんみり しんみり 副3: +しんめ 新芽 名1: +しんもつ 進物 名3: +しんもん 審問 名6: +しんや 深夜 名1: +しんや 伸也 名前: +しんや 信也 名前: +しんゆう 親友 名1: +しんよう 信用 名6: +しんよしとみ 新吉富 地名: +しんらい 信頼 名7: +しんらつ 辛辣 名8: +しんらばんしょう 森羅万象 代1: +しんらん 親鸞 名前: +しんり 心理 名4: +しんり 真理 名1: +しんり 審理 代4: +しんりゃく 侵略 名6: +しんりょ 深慮 名1: +しんりょう 診療 名6: +しんりょく 新緑 名1: +しんりん 森林 名1: +しんるい 親類 名3: +しんれい 心霊 名1: +しんろ 進路 名1: +しんろう 新郎 名1: +しんろう 心労 代4: +しんわ 新和 地名: +しんわ 神話 名1: +しんわ 親和 代4: +じ 時 接尾1:助数2: +じ 次 接頭1:助数: +じ 字 代1:助数2: +じ 児 接尾1:助数2: +じ 事 接尾1: +じ 寺 接尾1: +じ 痔 代1: +じ 辞 代4:サ五5: +じ 地 代1: +じ 持 代4: +じ 侍 サ変: +じ 滋 単漢: +じ 治 単漢: +じ 爾 単漢: +じ 餌 単漢: +じ 慈 単漢: +じ 似 単漢: +じ 璽 単漢: +じ 磁 単漢: +じ 示 単漢: +じ 而 単漢: +じ 耳 単漢: +じ 自 単漢: +じ 蒔 単漢: +じ 迩 単漢: +じ 路 単漢: +じ 峙 単漢: +じあい 慈愛 代1: +じあい 自愛 名7: +じい 辞意 名1: +じい 自慰 名1: +じい 爺 名2: +じいしき 自意識 名1: +じいん 寺院 名1: +じぇっと ジェット 名1: +じぇっとき ジェット機 名1: +じぇねれーしょん ジェネレーション 名1: +じぇらしー ジェラシー 名1: +じえい 自営 名6: +じえい 自衛 名6: +じえいたい 自衛隊 名1: +じえん 自演 代4: +じか 時下 名1: +じか 時価 名1: +じか 自家 名1: +じかい 次回 名1: +じかく 自覚 名6: +じかく 字画 名1: +じかけ 仕掛け 接尾2: +じかせい 自家製 名1: +じかつ 自活 名6: +じかよう 自家用 名1: +じかん 時間 名2:助数2: +じかん 次官 名1: +じかんがい 時間外 名1: +じかんたい 時間帯 名1: +じが 自我 名1: +じがぞう 自画像 名1: +じがため 地固め 代4: +じき 時期 名1: +じき 時機 名1: +じき 次期 名1: +じき 磁気 名1: +じき 磁器 名1: +じき 自棄 名6: +じきそ 直訴 名6: +じきひつ 直筆 名1: +じきゅう 自給 名6: +じきゅう 時給 名1: +じきゅう 持久 代4: +じきょ 辞去 名6: +じきょう 自供 名6: +じきょく 時局 名1: +じぎ 辞儀 名5: +じぎゃく 自虐 代4: +じぎょう 事業 名4: +じぎょうしょ 事業所 代1: +じく 字句 名1: +じく 軸 名1: +じく 竺 単漢: +じぐざぐ ジグザグ 代5: +じけい 次兄 名1: +じけいれつ 時系列 名1: +じけつ 自決 名6: +じけん 事件 名1: +じげん 時限 名1: +じげん 次元 名1: +じこ 事故 名1:ラ五8: +じこ 自己 名1: +じこう 事項 名1: +じこう 時候 名1: +じこう 時効 名1: +じこく 時刻 名1: +じこく 自国 名1: +じご 事後 名1: +じごう 次号 名1: +じごうじとく 自業自得 代1: +じごく 地獄 名1: +じさ 時差 名1: +じさく 自作 名6: +じさつ 自殺 名6: +じさん 持参 名7: +じさん 自賛 名6: +じざい 自在 名8: +じざけ 地酒 名1: +じしつ 自室 名1: +じしつ 自失 名6: +じしゃ 自社 名1: +じしゃく 磁石 名1: +じしゅ 自主 名4: +じしゅ 自首 代4: +じしゅう 自習 名6: +じしゅく 自粛 名6: +じしょ 辞書 名1: +じしょ 地所 名1: +じしょ 自署 代4: +じしょう 事象 名1: +じしょう 自称 名6: +じしょく 辞職 名6: +じしん 自信 名1: +じしん 地震 名1: +じしん 自身 名3: +じじ 時事 名1: +じじ 爺 単漢: +じじこくこく 時々刻々 副2: +じじつ 事実 代6: +じじつじょう 事実上 名1: +じじゅう 侍従 名1: +じじょ 次女 名1: +じじょう 事情 名3: +じじょう 自乗 代4: +じすい 自炊 名6: +じすぎ 時過ぎ 助数2: +じせい 時世 名3: +じせい 時勢 名1: +じせい 時制 名1: +じせい 自制 代4: +じせき 次席 名1: +じせき 自席 名1: +じせき 自責 名6: +じせつ 時節 名1: +じせつ 自説 名1: +じせん 自薦 名6: +じせん 自選 名6: +じぜん 事前 名1: +じぜん 慈善 名1: +じぜん 次善 名1: +じそく 時速 名1: +じそん 自存 名6: +じそん 自尊 名1: +じぞう 地蔵 名2: +じぞく 持続 名6: +じた 自他 代1: +じたい 事態 名1: +じたい 字体 名1: +じたい 自体 名11: +じたい 辞退 名7: +じたく 自宅 名1: +じたばた じたばた 副3: +じだい 時代 名1: +じだい 次代 名1: +じだい 地代 名1: +じだん 示談 名1: +じち 自治 名1: +じちかい 自治会 名1: +じちしょう 自治省 名1: +じちたい 自治体 名1: +じちょう 次長 代2: +じちょう 自重 名7: +じっか 実家 名3: +じっかん 実感 名6: +じっき 実機 名1: +じっきょう 実況 名6: +じっくり じっくり 副2: +じっけい 実刑 名1: +じっけい 実兄 名1: +じっけん 実験 名6: +じっけん 実権 名1: +じっこう 実行 名6: +じっこう 実効 名1: +じっさい 実際 名4: +じっし 実施 名6: +じっし 実子 名1: +じっしつ 実質 名4: +じっしゃ 実写 名6: +じっしゅう 実習 名6: +じっしゅう 実収 名1: +じっしょう 実証 名6: +じっすう 実数 名1: +じっせき 実績 名1: +じっせん 実戦 名1: +じっせん 実線 名1: +じっせん 実践 名6: +じっそう 実装 名6: +じっそく 実測 名6: +じったい 実体 名1: +じったい 実態 名1: +じっち 実地 名1: +じっちょく 実直 名8: +じっと じっと 副4: +じっぴ 実費 名1: +じっぷ 実父 名1: +じつ 実 代1: +じつ 日 単漢: +じつ 實 単漢: +じついん 実印 名1: +じつえき 実益 名1: +じつえん 実演 名6: +じつがい 実害 名1: +じつぎ 実技 名1: +じつぎょう 実業 名1: +じつぎょうか 実業家 名1: +じつげん 実現 名6: +じつざい 実在 名6: +じつじょう 実情 名1: +じつぞう 実像 名1: +じつぞん 実存 名6: +じつだん 実弾 名1: +じつどう 実働 名6: +じつぶつ 実物 名1: +じつぼ 実母 名1: +じつむ 実務 名1: +じつめい 実名 名1: +じつよう 実用 名4: +じつり 実利 名1: +じつりょく 実力 名1: +じつれい 実例 名1: +じつろく 実録 名1: +じつわ 実話 名1: +じづら 字面 名1: +じてき 自適 名8:サ変: +じてん 辞典 名1: +じてん 事典 名1: +じてん 時点 名1: +じてん 次点 名1: +じてん 自転 代4: +じてんしゃ 自転車 名1: +じでん 自伝 名4: +じとく 自得 代4: +じどう 自動 名4: +じどう 児童 名1: +じどうし 自動詞 名1: +じどうしゃ 自動車 名1: +じなり 地鳴り 代4: +じなん 次男 名1: +じにん 辞任 名6: +じにん 自認 名6: +じにん 自任 名6: +じぬし 地主 名1: +じねつ 地熱 名1: +じはく 自白 名6: +じはだ 地肌 名1: +じはつ 自発 名4: +じば 地場 名1: +じばく 自爆 名6: +じばん 地盤 名1: +じひ 慈悲 名2: +じひ 自費 名1: +じひつ 自筆 名1: +じひょう 辞表 名1: +じびか 耳鼻科 名1: +じびき 字引 名1: +じびょう 持病 名1: +じふ 自負 代4: +じぶつ 事物 名1: +じぶん 自分 名3: +じぶん 時分 代1: +じへいしょう 自閉症 名1: +じへん 事変 名1: +じほう 時報 名1: +じぼう 自暴 名1: +じまえ 自前 名1: +じまく 字幕 名1: +じまん 自慢 名7: +じみ 地味 名8: +じみち 地道 名8: +じみん 自民 名1: +じみんとう 自民党 名1: +じむ 事務 名4: +じむ ジム 名1: +じむき 事務機 代1: +じむきょく 事務局 代1: +じむしょ 事務所 代1: +じめい 自明 名8: +じめつ 自滅 名6: +じめん 地面 名1: +じもくじ 甚目寺 地名: +じもと 地元 名1: +じゃ 蛇 代1: +じゃ 邪 代1: +じゃーなりすと ジャーナリスト 名1: +じゃーなる ジャーナル 名1: +じゃあ じゃあ 感動: +じゃあく 邪悪 形動4: +じゃいあんと ジャイアント 名8: +じゃがいも じゃがいも 名1: +じゃき 邪気 名1: +じゃく 寂 サ変: +じゃく 弱 代1:接頭1: +じゃく 若 単漢: +じゃく 惹 単漢: +じゃく 雀 単漢: +じゃくし 弱視 名1: +じゃくしゃ 弱者 名1: +じゃくしょう 弱小 名8: +じゃくしん 弱震 名1: +じゃくてん 弱点 名1: +じゃくねん 若年 名1: +じゃくはい 若輩 名1: +じゃぐち 蛇口 名1: +じゃけっと ジャケット 名1: +じゃしん 邪心 名1: +じゃすい 邪推 名6: +じゃすと ジャスト 名1: +じゃすみん ジャスミン 名1: +じゃず ジャズ 名1: +じゃっかん 若干 代6: +じゃどう 邪道 名1: +じゃぱん ジャパン 地名: +じゃま 邪魔 名5:形動6: +じゃむ ジャム 名1: +じゃり 砂利 名1: +じゃんぐる ジャングル 名1: +じゃんぱー ジャンパー 名1: +じゃんぷ ジャンプ 名6: +じゃんぼ ジャンボ 名8: +じゃんる ジャンル 名1: +じゅ 寿 代1: +じゅ 樹 接尾1: +じゅ 綬 代1: +じゅ 儒 代1: +じゅ 授 単漢: +じゅ 受 単漢: +じゅ 呪 単漢: +じゅ 需 単漢: +じゅ 嬬 単漢: +じゅーくぼっくす ジュークボックス 名1: +じゅーす ジュース 名1: +じゅう 中 接尾2: +じゅう 重 接頭1:助数2: +じゅう 銃 接尾1: +じゅう 住 代1: +じゅう 従 代1: +じゅう 柔 代1: +じゅう 汁 単漢: +じゅう 渋 単漢: +じゅう 戎 単漢: +じゅう 充 単漢: +じゅう 什 単漢: +じゅう 獣 単漢: +じゅう 縦 単漢: +じゅうあつ 重圧 名1: +じゅうい 獣医 代2: +じゅうおう 縦横 名1: +じゅうおう 十王 地名: +じゅうかん 縦貫 名6: +じゅうき 什器 名1: +じゅうきち 重吉 名前: +じゅうきょ 住居 名3: +じゅうぎょういん 従業員 名1: +じゅうけい 重刑 名1: +じゅうけいしょう 重軽傷 名1: +じゅうけつ 充血 名6: +じゅうげき 銃撃 名6: +じゅうこう 重厚 形動4: +じゅうこう 銃口 名1: +じゅうこうぎょう 重工業 名1: +じゅうさつ 銃殺 名6: +じゅうざい 重罪 名1: +じゅうし 重視 名6: +じゅうしやま 十四山 地名: +じゅうしょ 住所 名3: +じゅうしょう 重傷 名1: +じゅうしょう 重症 名1: +じゅうしょく 住職 名1: +じゅうしょろく 住所録 名1: +じゅうしん 重心 名1: +じゅうじ 従事 名6: +じゅうじつ 充実 名6: +じゅうじゅん 従順 形動4: +じゅうせい 銃声 名1: +じゅうぜい 重税 名1: +じゅうそう 重奏 代4: +じゅうそう 縦走 代4: +じゅうそう 十三 地名: +じゅうそく 充足 名6: +じゅうぞく 従属 名6: +じゅうたい 渋滞 名6: +じゅうたい 重体 名8: +じゅうたく 住宅 名1: +じゅうたくち 住宅地 名1: +じゅうたん 絨毯 名1: +じゅうだい 重大 名8: +じゅうだん 縦断 名6: +じゅうだん 銃弾 名1: +じゅうてん 重点 名4: +じゅうてん 充填 代4: +じゅうでん 充電 名6: +じゅうとう 充当 代4: +じゅうどう 柔道 代3: +じゅうなん 柔軟 形動4: +じゅうにし 十二支 名1: +じゅうにん 住人 名1: +じゅうばこ 重箱 名1: +じゅうびょう 重病 名1: +じゅうふく 重複 名6: +じゅうぶん 充分 形動9: +じゅうぶん 十分 形動9: +じゅうほう 銃砲 名1: +じゅうまん 充満 名6: +じゅうみん 住民 名1: +じゅうみんぜい 住民税 名1: +じゅうもんじ 十文字 名1: +じゅうやく 重役 名1: +じゅうゆ 重油 名1: +じゅうよう 重要 名8: +じゅうようし 重要視 代4: +じゅうらい 従来 代6: +じゅうらん 縦覧 代4: +じゅうりょう 重量 名1: +じゅうりょうぜい 従量税 名1: +じゅうりょく 重力 名1: +じゅかい 樹海 名1: +じゅきゅう 受給 名6: +じゅきゅう 需給 名1: +じゅぎょう 授業 名6: +じゅく 塾 接尾1: +じゅく 熟 サ変:サ五1: +じゅく 宿 単漢: +じゅくご 熟語 名1: +じゅくすい 熟睡 名6: +じゅくせい 熟成 名6: +じゅくたつ 熟達 名6: +じゅくち 熟知 名6: +じゅくどく 熟読 名6: +じゅくねん 熟年 名1: +じゅくりょ 熟慮 名6: +じゅくれん 熟練 名6: +じゅけい 受刑 名6: +じゅけん 受験 名6: +じゅけん 受検 名6: +じゅけんせい 受験生 名1: +じゅこう 受講 名6: +じゅし 樹脂 名1: +じゅしょう 受賞 名6: +じゅしょう 授賞 名6: +じゅしん 受信 名6: +じゅしん 受診 名6: +じゅじゅ 授受 名6: +じゅじゅつ 呪術 名1: +じゅず 数珠 名1: +じゅせい 受精 名6: +じゅせい 授精 名6: +じゅぞう 受像 名6: +じゅたい 受胎 名6: +じゅたく 受託 名6: +じゅだく 受諾 名6: +じゅちゅう 受注 名6: +じゅっかい 述懐 名6: +じゅつ 術 接尾1: +じゅつ 述 代1: +じゅつご 述語 名1: +じゅつご 術語 名1: +じゅどう 受動 名4: +じゅどうたい 受動態 名1: +じゅなん 受難 名6: +じゅにあ ジュニア 名1: +じゅにゅう 授乳 名6: +じゅのう 受納 名7: +じゅひ 樹皮 名1: +じゅひょう 樹氷 名1: +じゅみょう 寿命 名1: +じゅもく 樹木 名1: +じゅもん 呪文 名1: +じゅよ 授与 名6: +じゅよう 需要 名3: +じゅよう 受容 名6: +じゅり 受理 名6: +じゅりつ 樹立 名6: +じゅりょう 受領 名6: +じゅりょうしょ 受領書 名1: +じゅれい 樹齢 名1: +じゅわき 受話器 名1: +じゅん 純 代5:接頭1: +じゅん 準 接頭1:ザ変: +じゅん 順 接尾1: +じゅん 殉 ザ変: +じゅん 閏 単漢: +じゅん 准 単漢: +じゅん 循 単漢: +じゅん 旬 単漢: +じゅん 楯 単漢: +じゅん 淳 単漢: +じゅん 潤 単漢: +じゅん 盾 単漢: +じゅん 巡 単漢: +じゅん 遵 単漢: +じゅん 醇 単漢: +じゅん 惇 単漢: +じゅん 馴 単漢: +じゅん 隼 単漢: +じゅんあい 純愛 名1: +じゅんい 順位 名1: +じゅんいち 淳一 名前: +じゅんいち 純一 名前: +じゅんいち 順一 名前: +じゅんえき 純益 名1: +じゅんえん 巡演 名6: +じゅんえん 順延 名6: +じゅんか 純化 名6: +じゅんかい 巡回 名6: +じゅんかつ 潤滑 名8: +じゅんかつゆ 潤滑油 名1: +じゅんかん 循環 名6: +じゅんきょ 準拠 名6: +じゅんきん 純金 名1: +じゅんぎょう 巡業 名6: +じゅんけつ 純潔 名8: +じゅんけつ 純血 名1: +じゅんこ 淳子 名前: +じゅんこ 純子 名前: +じゅんこ 順子 名前: +じゅんこう 巡行 名6: +じゅんさ 巡査 名1: +じゅんさつ 巡察 名6: +じゅんし 殉死 名6: +じゅんし 巡視 名6: +じゅんしゅ 遵守 名6: +じゅんしょく 殉職 名6: +じゅんしん 純真 形動4: +じゅんじ 順次 副1: +じゅんじゅん 順々 名1: +じゅんじょ 順序 名1: +じゅんじょう 純情 名8: +じゅんすい 純粋 名8: +じゅんせい 純正 名8: +じゅんちょう 順調 名10: +じゅんとう 順当 形動4: +じゅんど 純度 名1: +じゅんのう 順応 名6: +じゅんばん 順番 名1: +じゅんぱく 純白 代5: +じゅんび 準備 名7: +じゅんびきん 準備金 名1: +じゅんふどう 順不同 名1: +じゅんぷう 順風 名1: +じゅんぼく 純朴 名8: +じゅんぽう 順法 名1: +じゅんよう 準用 名6: +じゅんようかん 巡洋艦 名1: +じゅんり 純利 名1: +じゅんりょう 純良 形動4: +じゅんれい 巡礼 名6: +じゅんろ 順路 名1: +じゆう 自由 名10: +じゆう 事由 代1: +じゆうがおか 自由が丘 地名: +じゆうがおか 自由ヶ丘 地名: +じょ 所 接尾3: +じょ 序 代4: +じょ 女 代1: +じょ 助 代1: +じょ 除 サ変: +じょ 叙 サ変: +じょ 恕 サ変: +じょ 徐 単漢: +じょ 如 単漢: +じょ 鋤 単漢: +じょ 汝 単漢: +じょーく ジョーク 名1: +じょい 女医 名1: +じょう 状 接尾1: +じょう 場 接尾1: +じょう 城 接尾4: +じょう 嬢 接尾1: +じょう 情 代1: +じょう 定 代1: +じょう 上 代1:接尾9: +じょう 条 代1:助数: +じょう 乗 代1:ザ変:助数: +じょう 畳 助数2: +じょう 錠 助数2: +じょう 帖 助数2: +じょう 丈 助数2: +じょう 穣 単漢: +じょう 常 単漢: +じょう 蒸 単漢: +じょう 杖 単漢: +じょう 浄 単漢: +じょう 壌 単漢: +じょう 譲 単漢: +じょう 醸 単漢: +じょう 擾 単漢: +じょう 成 単漢: +じょう 静 単漢: +じょう 茸 単漢: +じょう 貞 単漢: +じょう 冗 単漢: +じょう 剰 単漢: +じょう 丞 単漢: +じょう 瀞 単漢: +じょう 縄 単漢: +じょうい 上位 名1: +じょういん 乗員 名1: +じょういん 上院 名1: +じょうえい 上映 名6: +じょうえつ 上越 地名: +じょうえん 上演 名6: +じょうおん 常温 名1: +じょうか 浄化 名6: +じょうかそう 浄化槽 名1: +じょうかまち 城下町 名1: +じょうかん 情感 名1: +じょうかん 上官 名1: +じょうがい 場外 名1: +じょうがしま 城ヶ島 地名: +じょうき 上気 代4: +じょうき 上記 名1: +じょうき 蒸気 名1: +じょうきゃく 乗客 名1: +じょうきゅう 上級 名1: +じょうきょう 状況 名1: +じょうきょう 上京 名6: +じょうきん 常勤 名6: +じょうぎ 定規 名1: +じょうくう 上空 名1: +じょうけい 情景 名1: +じょうけん 条件 名1: +じょうげ 上下 名6: +じょうげん 上限 名1: +じょうげん 上弦 名1: +じょうこう 乗降 名6: +じょうこう 条項 名1: +じょうこう 上皇 名1: +じょうこく 上告 名6: +じょうご 上戸 名1: +じょうさん 乗算 名1: +じょうざい 錠剤 名1: +じょうざん 乗算 名1: +じょうし 上司 名1: +じょうしき 常識 名4: +じょうしつ 上質 名8: +じょうしゃ 乗車 名7: +じょうしゅ 城主 名1: +じょうしょう 上昇 名6: +じょうしょく 常食 名1: +じょうしん 上申 名6: +じょうしんえつ 上信越 地名: +じょうじ 常時 名1: +じょうじ 情事 名1: +じょうじま 城島 地名: +じょうじゅ 成就 名6: +じょうじゅつ 上述 名6: +じょうじゅん 上旬 名1: +じょうじょう 上場 名6: +じょうじょう 上々 代5: +じょうすい 浄水 代4: +じょうすいどう 上水道 名1: +じょうすう 乗数 名1: +じょうすう 常数 名1: +じょうすう 定数 名1: +じょうず 上手 名9: +じょうせい 情勢 名1: +じょうせい 状勢 名1: +じょうせい 醸成 名6: +じょうせき 上席 名1: +じょうせき 定石 名1: +じょうせつ 常設 名6: +じょうせん 乗船 名6: +じょうそ 上訴 名6: +じょうそう 上層 名1: +じょうそう 情操 名1: +じょうぞう 醸造 名6: +じょうたい 状態 名1: +じょうたい 常態 名1: +じょうたつ 上達 名7: +じょうたん 上端 名1: +じょうだん 冗談 名1: +じょうだん 上段 名1: +じょうち 上智 名1: +じょうち 常置 代4: +じょうちゅう 常駐 名6: +じょうちょ 情緒 名1: +じょうちょう 冗長 形動4:名4: +じょうでき 上出来 形動1: +じょうと 譲渡 名6: +じょうとう 上等 名8: +じょうとう 常套 名1: +じょうとう 城東 地名: +じょうとう 上道 地名: +じょうど 浄土 名1: +じょうない 場内 名1: +じょうない 城内 名1: +じょうなん 城南 地名: +じょうにん 常任 名6: +じょうねつ 情熱 名1: +じょうねん 情念 名1: +じょうはつ 蒸発 名6: +じょうはな 城端 地名: +じょうはんしん 上半身 名1: +じょうば 乗馬 名6: +じょうひ 上皮 名1: +じょうひん 上品 名8: +じょうび 常備 名6: +じょうぶ 丈夫 代5: +じょうぶ 上部 名1: +じょうぶつ 成仏 代4: +じょうぶん 条文 名1: +じょうへき 城壁 名1: +じょうへん 城辺 地名: +じょうほ 譲歩 名7: +じょうほう 情報 名4: +じょうほう 乗法 名1: +じょうほうじ 浄法寺 地名: +じょうほく 常北 地名: +じょうぼう 上房 地名: +じょうみゃく 静脈 名1: +じょうむ 乗務 名6: +じょうむ 常務 名1: +じょうやく 条約 名1: +じょうよ 剰余 名1: +じょうよ 譲与 名6: +じょうよう 乗用 名1: +じょうよう 常用 名6: +じょうよう 城陽 地名: +じょうよう 上陽 地名: +じょうようしゃ 乗用車 名1: +じょうよく 情欲 名1: +じょうらん 上覧 名6: +じょうり 条理 名1: +じょうりく 上陸 名6: +じょうりゅう 上流 名1: +じょうりゅう 蒸留 名6: +じょうりょく 常緑 名1: +じょうるり 浄瑠璃 名1: +じょうれい 条例 名1: +じょうれい 常例 名1: +じょうれん 常連 名1: +じょえん 助演 名6: +じょおう 女王 名1: +じょがい 除外 名6: +じょがくせい 女学生 名1: +じょきょ 除去 名6: +じょきょうじゅ 助教授 名1: +じょく 辱 単漢: +じょくん 叙勲 名1: +じょげん 助言 名6: +じょこう 徐行 名6: +じょさい 如才 名1: +じょさんぷ 助産婦 名1: +じょざん 除算 名1: +じょし 女子 名1: +じょし 女史 名1: +じょし 助詞 名1: +じょしつ 除湿 名6: +じょしゅ 助手 名1: +じょしょう 序章 名1: +じょじゅつ 叙述 名6: +じょじょう 叙情 名1: +じょじょに 徐々に 副1: +じょせい 女性 名4: +じょせい 助成 代4: +じょせき 除籍 名6: +じょせつ 除雪 名6: +じょせつ 序説 名1: +じょそう 助走 名6: +じょそう 女装 名6: +じょそう 除草 名6: +じょたい 除隊 名6: +じょちゅう 女中 代2: +じょちょう 助長 名6: +じょどうし 助動詞 名1: +じょばん 序盤 名1: +じょぶ ジョブ 名1: +じょぶん 序文 名1: +じょほう 除法 名1: +じょまく 序幕 名1: +じょまくしき 除幕式 名1: +じょめい 助命 名6: +じょめい 除名 名6: +じょや 除夜 名1: +じょやく 助役 名1: +じょゆう 女優 代2: +じょりゅう 女流 名1: +じょりょく 助力 名7: +じょれつ 序列 名1: +じょろん 序論 名1: +じよう 滋養 名1: +じら じら サ五7: +じらい 地雷 名1: +じりき 自力 名1: +じりつ 自立 名6: +じりつ 自律 名6: +じりゅう 時流 名1: +じりょく 磁力 名1: +じる 汁 接尾2: +じるし 印 接尾2: +じれい 事例 名1: +じれい 辞令 名1: +じれんま ジレンマ 名1: +じろう 次郎 名前: +じろう 治郎 名前: +じろう 二郎 名前: +じろん 持論 名1: +じん 人 接尾1: +じん 仁 代1: +じん 壬 代1: +じん 尋 代1: +じん 尽 代1: +じん 腎 代1: +じん 陣 代1: +じん 塵 代1: +じん 神 単漢: +じん 刃 単漢: +じん 甚 単漢: +じん 訊 単漢: +じん 迅 単漢: +じん 靭 単漢: +じんい 人為 名4: +じんいち 仁一 名前: +じんいん 人員 名1: +じんえい 陣営 名1: +じんえん 腎炎 名1: +じんか 人家 名1: +じんかく 人格 名1: +じんぎ 仁義 名1: +じんくす ジンクス 名1: +じんぐう 神宮 名1: +じんぐう 神宮 地名: +じんけん 人権 名1: +じんけん 人件 名1: +じんこう 人口 名1: +じんこう 人工 名4: +じんこつ 人骨 名1: +じんさい 人災 名1: +じんざい 人材 名1: +じんしゅ 人種 名4: +じんしん 人身 名1: +じんじ 人事 名1: +じんじいん 人事院 名1: +じんじか 人事課 名1: +じんじゃ 神社 名1: +じんじょう 尋常 代5: +じんせい 人生 名1: +じんせいかん 人生観 名1: +じんせき 神石 地名: +じんせき 人跡 名1: +じんせん 人選 名6: +じんそく 迅速 形動4: +じんぞう 腎臓 名1: +じんぞう 人造 名1: +じんたい 人体 名1: +じんだい 甚大 形動4: +じんち 陣地 名1: +じんち 人知 名1: +じんちく 人畜 名1: +じんちゅう 陣中 名1: +じんつう 陣痛 名1: +じんてき 人的 形動4: +じんとう 陣頭 名1: +じんとく 人徳 名1: +じんどう 人道 名4: +じんぶつ 人物 名1: +じんぶん 人文 名1: +じんぼ 神保 苗字: +じんぼう 人望 名1: +じんぼうちょう 神保町 地名: +じんましん 蕁麻疹 名1: +じんみゃく 人脈 名1: +じんみん 人民 名1: +じんめい 人名 名1: +じんめい 人命 名1: +じんもん 尋問 名6: +じんりきしゃ 人力車 名1: +じんりょく 尽力 名7: +じんりょく 人力 名1: +じんるい 人類 名1: +す 吸 ワ五6: +す 空 カ五1: +す 好 カ五1: +す 透 カ五5: +す 住 マ五8: +す 棲 マ五7: +す 澄 マ五7: +す 済 マ五8: +す す カ五7:マ五7:ワ五1: +す 刷 ラ五8: +す 擦 ラ五8: +す 酢 代1: +す 巣 代1: +す 守 単漢: +す 州 単漢: +す 洲 単漢: +す 諏 単漢: +す 須 単漢: +す 栖 単漢: +す 素 単漢: +す 簾 単漢: +すーつ スーツ 名1: +すーぱー スーパー 名1: +すーぷ スープ 名1: +すあし 素足 名1: +すい 水 接尾1: +すい 粋 代1: +すい 出 単漢: +すい 吹 単漢: +すい 垂 単漢: +すい 帥 単漢: +すい 推 単漢: +すい 炊 単漢: +すい 睡 単漢: +すい 翠 単漢: +すい 衰 単漢: +すい 遂 単漢: +すい 酔 単漢: +すい 錐 単漢: +すい 錘 単漢: +すい 誰 単漢: +すい 穂 単漢: +すい 悴 単漢: +すいあげ 吸い上げ 一段3: +すいあつ 水圧 名1: +すいい 推移 名6: +すいい 水位 名1: +すいいき 水域 名1: +すいえい 水泳 名6: +すいおん 水温 名1: +すいか スイカ 代1: +すいか 西瓜 代1: +すいがい 水害 名1: +すいがら 吸殻 名1: +すいきょ 推挙 名6: +すいぎん 水銀 名1: +すいけい 推計 名6: +すいげん 水源 名1: +すいこ 吸い込 マ五7: +すいこう 遂行 名6: +すいこう 推敲 名6: +すいこう 推考 名6: +すいさいが 水彩画 名1: +すいさつ 推察 名7: +すいさん 水産 名1: +すいさんか 水酸化 接頭1: +すいし 水死 名6: +すいしつ 水質 名1: +すいしょう 推奨 名6: +すいしょう 推賞 名6: +すいしょう 水晶 名1: +すいしん 推進 名6: +すいしん 水深 名1: +すいじ 炊事 名6: +すいじゃく 衰弱 名6: +すいじゅん 水準 名1: +すいじょう 水上 名1: +すいじょうき 水蒸気 名1: +すいす スイス 地名: +すいせい 水性 名1: +すいせい 水星 名1: +すいせい 彗星 名1: +すいせん 推薦 名7: +すいせん 水洗 名6: +すいせん 垂線 名1: +すいせん 水仙 名1: +すいそ 水素 名1: +すいそう 吹奏 名6: +すいそう 水槽 名1: +すいそく 推測 名6: +すいぞくかん 水族館 名1: +すいた 吹田 地名: +すいたい 衰退 名6: +すいちゅう 水中 名1: +すいちょく 垂直 名8: +すいっち スイッチ サ変: +すいてい 推定 名6: +すいてい 水底 名1: +すいてき 水滴 名1: +すいでん 水田 名1: +すいと 吸い取 ラ五7: +すいとう 出納 名6: +すいとう 水筒 名1: +すいとう 水稲 名1: +すいどう 水道 名1: +すいなん 水難 名1: +すいはんき 炊飯器 名1: +すいばく 水爆 名1: +すいばら 水原 地名: +すいばん 水盤 名1: +すいふ 水夫 名1: +すいふ 水府 地名: +すいへい 水平 名8: +すいぼう 衰亡 名6: +すいぼくが 水墨画 名1: +すいぼつ 水没 名6: +すいま 睡魔 名1: +すいみん 睡眠 名6: +すいめん 水面 名1: +すいもん 水門 名1: +すいよう 水曜 名1: +すいようえき 水溶液 名1: +すいようび 水曜日 名1: +すいり 推理 名6: +すいりゅう 水流 名1: +すいりょう 推量 名6: +すいりょう 水量 名1: +すいりょく 推力 名1: +すいりょく 水力 名1: +すいろ 水路 名1: +すいろん 推論 名6: +すいんぐ スイング 代1: +すう 数 数詞:接尾1: +すう 崇 単漢: +すう 嵩 単漢: +すう 枢 単漢: +すう 趨 単漢: +すう 雛 単漢: +すうぇーでん スウェーデン 地名: +すうがく 数学 名1: +すうき 数奇 代5: +すうこう 崇高 名8: +すうし 数詞 名1: +すうしき 数式 一括: +すうじ 数字 一括: +すうじく 枢軸 名1: +すうじつ 数日 代1: +すうせい 趨勢 名1: +すうち 数値 名1: +すうにん 数人 一括: +すうはい 崇拝 名6: +すうり 数理 名1: +すうりょう 数量 名1: +すうれつ 数列 一括: +すえ 末 代1: +すえ 据え 一段2: +すえ 須恵 地名: +すえ 陶 単漢: +すえお 据え置 カ五7: +すえお 末男 名前: +すえきち 末吉 名前: +すえつけ 据え付け 一段3: +すえなが 末永 苗字: +すえひろ 末広 地名:名前: +すえまつ 末松 苗字: +すえよし 末吉 地名: +すおう 周防 地名: +すかーと スカート 名1: +すかうと スカウト 名6: +すかがわ 須賀川 地名: +すからー スカラー 名1: +すが 須賀 苗字: +すが 菅 単漢: +すがい 菅井 苗字: +すがお 素顔 名1: +すがた 姿 名2: +すがだいら 菅平 地名: +すがの 菅野 苗字: +すがも 巣鴨 苗字: +すがも 巣鴨 地名: +すがや 菅谷 苗字: +すがわら 菅原 苗字: +すき 好き 名9: +すき 隙 代1: +すき 鋤 代1: +すき 須木 地名: +すき 鍬 単漢: +すきー スキー 代3: +すきーやー スキーヤー 名1: +すきずき 好きずき 代1: +すきっぷ スキップ 名6: +すきとお 透き通 ラ五7: +すきま 隙間 名1: +すきま すき間 名1: +すきゃな スキャナ 名1: +すきゃん スキャン 名1: +すきゃんだる スキャンダル 名1: +すぎ 杉 代1: +すぎ 過ぎ 一段3: +すぎ 椙 単漢: +すぎうら 杉浦 苗字: +すぎえ 杉江 苗字: +すぎさ 過ぎ去 ラ五1: +すぎさき 杉崎 苗字: +すぎざき 杉崎 苗字: +すぎた 杉田 苗字: +すぎと 杉戸 地名: +すぎなみ 杉並 地名: +すぎの 杉野 苗字: +すぎの 杉野 地名: +すぎはら 杉原 苗字: +すぎむら 杉村 苗字: +すぎもと 杉本 苗字: +すぎもと 杉本 地名: +すぎやま 杉山 苗字: +すく 救 ワ五8: +すく 巣食 ワ五1: +すくーぷ スクープ 代4: +すくーる スクール 名1: +すくいだ 救い出 サ五7: +すくな 少な 接尾1:形7: +すくも 宿毛 地名: +すくりーん スクリーン 名1: +すくりぷと スクリプト 名1: +すくろーる スクロール 名6: +すぐ すぐ 代6:ラ五7: +すぐさま すぐさま 副1: +すぐる 英 名前: +すぐれ 優れ 一段1: +すけ 介 単漢: +すけ 助 単漢: +すけ 甫 単漢: +すけ 輔 単漢: +すけ 祐 単漢: +すけ 亮 単漢: +すけーと スケート 代3: +すけーる スケール 名1: +すけじゅーる スケジュール 名1: +すけっち スケッチ 名6: +すげ 菅 単漢: +すげぬま 菅沼 苗字: +すこーぷ スコープ 名1: +すこあ スコア 名1: +すこし 少し 代6: +すこぶる すこぶる 副1: +すこやか 健やか 形動7: +すご 過ご サ五8: +すご すご 形2:マ五3: +すご 凄 形2:マ五3: +すごろく すごろく 代1: +すさ 須佐 地名: +すさき 須崎 苗字: +すさき 須崎 地名: +すさまじ 凄まじ 形3: +すさみ すさみ 地名: +すざか 須坂 地名: +すし 寿司 名2: +すし 鮨 代1: +すじ 筋 接尾1: +すじがき 筋書き 名1: +すじみち 筋道 名1: +すじょう 素性 名1: +すす すす ガ五7:ラ五7: +すす 進 マ五4: +すす 濯 ガ五7: +すす 煤 代1: +すすむ 進 名前: +すすめ 進め 一段1: +すすめ 勧め 一段4: +すすめ 奨め 一段4: +すすめ 薦め 一段4: +すず 鈴 代1: +すず 錫 代1: +すず スズ 代1: +すず 涼 マ五7: +すず 珠洲 地名: +すずか 鈴鹿 苗字: +すずか 鈴鹿 地名: +すずかぜ 涼風 名1: +すずき 鈴木 苗字: +すずき 鱸 代1: +すずし 涼し 形5: +すずめ 雀 代1: +すずらん 鈴蘭 代1: +すずり 硯 代1: +すそ 裾 代1: +すその 裾野 名1:地名: +すた 廃 ラ五7: +すたー スター 名1: +すたーと スタート 名6: +すたいる スタイル 名1: +すたじお スタジオ 名1: +すたっく スタック 名6: +すたっふ スタッフ 名1: +すたてぃっく スタティック 代5: +すたでぃ スタディ 名1: +すたみな スタミナ 名1: +すたれ 廃れ 一段1: +すたんだーど スタンダード 名8: +すたんど スタンド 名1: +すたんふぉーど スタンフォード 名1: +すたんぷ スタンプ 名1: +すだ 須田 苗字: +すだ 須田 地名: +すだ 巣立 タ五3: +すだま 須玉 地名: +すだれ 簾 代1: +すちーる スチール 名1: +すちろーる スチロール 名1: +すっかり すっかり 副2: +すっきり すっきり 副9: +すっつ 寿都 地名: +すっぱ すっぱ 形8: +すて 捨て 一段2: +すてーしょん ステーション 名1: +すてーじ ステージ 名1: +すてーたす ステータス 代1: +すてーと ステート 名1: +すてーとめんと ステートメント 名1: +すていたす ステイタス 代1: +すてき すてき 形動1: +すてき 素敵 形動1: +すてっかー ステッカー 名1: +すてっぷ ステップ 名1: +すてれお ステレオ 名1: +すてろいど ステロイド 名1: +すてんれす ステンレス 名1: +すで 素手 名1: +すでに すでに 副1: +すでに 既に 副1: +すと スト 名1: +すとーりー ストーリー 名1: +すとあ ストア 名6: +すとあー ストアー 名1: +すとっきんぐ ストッキング 名1: +すとっく ストック 名6: +すとっぷ ストップ 代4: +すとらいき ストライキ 名1: +すとらくちゃ ストラクチャ 名1: +すとりーと ストリート 名1: +すとりーま ストリーマ 名1: +すとりーまー ストリーマー 名1: +すとりーむ ストリーム 名1: +すとりんぐ ストリング 名1: +すとれーと ストレート 名8: +すとれす ストレス 名1: +すとろーく ストローク 名1: +すとろべりー ストロベリー 名1: +すどう 須藤 苗字: +すどおり 素通り 代4: +すな 砂 代1: +すな 沙 単漢: +すなお 素直 形動4: +すなが 須永 苗字: +すながわ 砂川 苗字: +すながわ 砂川 地名: +すなじ 砂地 名1: +すなっく スナック 名1: +すなっぷ スナップ 名1: +すなはま 砂浜 名1: +すなはら 砂原 苗字: +すなば 砂場 名1: +すなみ 巣南 地名: +すなわち すなわち 接続: +すなわち 即ち 接続: +すのまた 墨俣 地名: +すはだ 素肌 名1: +すばや 素早 形2: +すばらし すばらし 形2: +すばらし 素晴らし 形3: +すばる 昴 名1: +すぱーく スパーク 代4: +すぱい スパイ 名6: +すぱげってぃ スパゲッティ 名1: +すぱん スパン 名1: +すぴーか スピーカ 名1: +すぴーち スピーチ 名1: +すぴーでぃー スピーディー 名1: +すぴーど スピード 名1: +すぴん スピン 名6: +すぷーる スプール 名1: +すべ 統べ 一段1: +すべ 術 代1: +すべ 滑べ ラ五7: +すべて すべて 代6: +すべて 全て 代6: +すべりこ 滑り込 マ五7: +すべりだ 滑り出 サ五7: +すぺーす スペース 名1: +すぺあ スペア 名1: +すぺいん スペイン 地名: +すぺくとる スペクトル 名1: +すぺしゃりすと スペシャリスト 名1: +すぺっく スペック 名1: +すぺりんぐ スペリング 名1: +すぺる スペル 名1: +すぽーつ スポーツ 名6: +すぽっと スポット 名1: +すぽんさー スポンサー 名1: +すま 須磨 苗字: +すま 須磨 地名: +すま 住ま ワ五4: +すまーと スマート 名8: +すみ 角 苗字:代1: +すみ 隅 代1: +すみ 炭 代1: +すみ 墨 代1: +すみえ 澄江 名前: +すみかわ 澄川 苗字: +すみかわ 澄川 地名: +すみこ 住み込 マ五7: +すみこ 澄子 名前: +すみた 住田 苗字: +すみた 住田 地名: +すみだ 墨田 地名: +すみつ 住み着 カ五7: +すみとも 住友 苗字: +すみとも 住友 企業: +すみなれ 住み慣れ 一段1: +すみのえ 住之江 地名: +すみやか 速やか 形動4: +すみよう 住用 地名: +すみよし 住吉 地名: +すむーず スムーズ 名8: +すもう 相撲 名2: +すもっぐ スモッグ 名1: +すもと 洲本 地名: +すもと 栖本 地名: +すもも 李 代1: +すもん 守門 地名: +すやま 須山 苗字: +すらいす スライス 名6: +すらいど スライド 名6: +すらっしゅ スラッシュ 名1: +すりかえ すり替え 一段3: +すりこ 擦り込 マ五7: +すりっぷ スリップ 名6: +すりへ すり減 ラ五3: +すりへら すり減ら サ五1: +すりむ 擦りむ カ五5: +すりりんぐ スリリング 名8: +すりる スリル 名1: +するが 駿河 地名: +すると すると 接続: +するど 鋭 形2: +するめ 鯣 代1: +すれーぶ スレーブ 名1: +すれあ 擦れ合 ワ五1: +すれすれ すれすれ 代6: +すれちが すれ違 ワ五3: +すろーがん スローガン 名1: +すろっと スロット 名1: +すろっとる スロットル 名1: +すわ 座 ラ五8: +すわ 据わ ラ五7: +すわ 諏訪 苗字: +すわ 諏訪 地名: +すわこ 諏訪湖 名1: +すわっぷ スワップ 名1: +すわりこ 座り込 マ五5: +すん 寸 助数2: +すんか 寸暇 名1: +すんし 寸志 名1: +すんじ 寸時 名1: +すんぜん 寸前 名1: +すんだん 寸断 名6: +すんとう 駿東 地名: +すんぶん 寸分 副1: +すんぽう 寸法 名1: +すんわ 寸話 名1: +ず 図 接尾1:助数: +ず 厨 単漢: +ず 逗 単漢: +ず 豆 単漢: +ず 頭 単漢: +ずーむ ズーム 名1: +ずあん 図案 名1: +ずい 髄 代1: +ずい 蕊 単漢: +ずい 随 単漢: +ずい 瑞 単漢: +ずいい 随意 名1: +ずいこう 随行 名6: +ずいしょ 随所 名1: +ずいじ 随時 副8: +ずいはん 随伴 名6: +ずいひつ 随筆 代1: +ずいぶん ずいぶん 形動1: +ずいぶん 随分 形動1: +ずうずうし 図々し 形2: +ずかい 図解 名6: +ずかん 図鑑 名1: +ずが 図画 名1: +ずがいこつ 頭蓋骨 名1: +ずがら 図柄 名1: +ずき 好き 接尾6: +ずくめ ずくめ 接尾2: +ずけい 図形 名1: +ずこう 図工 名1: +ずし 図示 名6: +ずし 逗子 地名: +ずしき 図式 名4: +ずじょう 頭上 名1: +ずじょう 図上 名1: +ずっきーに ズッキーニ 名1: +ずっしり ずっしり 副8: +ずっと ずっと 副1: +ずつう 頭痛 名1: +ずのう 頭脳 名1: +ずばぬけ ずば抜け 一段1: +ずばり ずばり 代6: +ずひょう 図表 名1: +ずほう 図法 名1: +ずぼし 図星 名1: +ずぼん ズボン 名1: +ずまい 住い 接尾2: +ずみ 済み 接尾2: +ずめん 図面 名1: +ずら ずら サ五7: +ずる ずる 形2:代1: +ずるずる ずるずる 副2: +ずれ ずれ 一段3: +ずれこ ずれ込 マ五1: +ずんぐり ずんぐり 副9: +せ せ サ変未2:カ五1: +せ 競 ラ五3: +せ 背 代1: +せ 瀬 代1: +せ 施 単漢: +せ 世 単漢: +せ 畝 単漢: +せ 脊 単漢: +せーたー セーター 名1: +せーふ セーフ 名1: +せーぶ セーブ 名6: +せーる セール 名1: +せーるす セールス 名1: +せい せい 代1: +せい 製 接尾1:サ変: +せい 生 接尾1: +せい 制 接尾1:サ変:サ五1: +せい 星 接尾1: +せい 性 接尾3: +せい 世 助数2: +せい 正 代1:接頭1: +せい 姓 代1: +せい 精 代1: +せい 所為 代1: +せい 声 代1:助数: +せい 静 代1: +せい 成 単漢: +せい 清 単漢: +せい 勢 単漢: +せい 政 単漢: +せい 整 単漢: +せい 晴 単漢: +せい 聖 単漢: +せい 西 単漢: +せい 醒 単漢: +せい 青 単漢: +せい 省 単漢: +せい 棲 単漢: +せい 凄 単漢: +せい 井 単漢: +せい 甥 単漢: +せい 歳 単漢: +せい 犀 単漢: +せい 錆 単漢: +せい 鉦 単漢: +せい 征 単漢: +せい 栖 単漢: +せい 牲 単漢: +せい 盛 単漢: +せい 誠 単漢: +せい 誓 単漢: +せい 請 単漢: +せい 逝 単漢: +せい 斉 単漢: +せい 瀞 単漢: +せい 婿 単漢: +せい 靖 単漢: +せいあつ 制圧 名6: +せいあん 成案 名1: +せいい 誠意 名1: +せいいく 成育 名6: +せいいく 生育 名6: +せいいち 清一 名前: +せいいち 精一 名前: +せいいち 誠一 名前: +せいいちろう 清一郎 名前: +せいいちろう 誠一郎 名前: +せいいっぱい 精一杯 名1: +せいいん 成員 名1: +せいいん 正員 名1: +せいいん 成因 名1: +せいうん 盛運 名1: +せいえい 清栄 名3: +せいえい 精鋭 名1: +せいえん 声援 名7: +せいえん 製塩 代4: +せいおう 西欧 名4: +せいおん 静穏 名8: +せいか 成果 名1: +せいか 正価 名1: +せいか 正課 名1: +せいか 生家 名1: +せいか 生花 名1: +せいか 盛夏 名1: +せいか 精華 名1: +せいか 聖火 名1: +せいか 製菓 名1: +せいか 青果 名1: +せいかい 正解 名6: +せいかい 政界 名1: +せいかい 盛会 名1: +せいかく 正確 名8: +せいかく 性格 名1: +せいかつ 生活 名6: +せいかん 生還 名7: +せいかん 静観 名6: +せいかん 青函 地名: +せいがく 声楽 名1: +せいがん 請願 名6: +せいき 正規 名8: +せいき 世紀 名1:助数2: +せいき 生気 名1: +せいき 精機 名1: +せいき 精気 名1: +せいき 性器 名1: +せいき 生起 名6: +せいきち 清吉 名前: +せいきゅう 請求 名7: +せいきゅう 性急 名8: +せいきょ 逝去 名7: +せいきょう 生協 名1: +せいきょう 盛況 名1: +せいきょく 政局 名1: +せいきん 精勤 名6: +せいぎ 正義 名1: +せいぎょ 制御 名6: +せいぎょう 盛業 名1: +せいけい 成形 名6: +せいけい 整形 名6: +せいけい 生計 名1: +せいけつ 清潔 名8: +せいけん 政権 名1: +せいけん 政見 名1: +せいげん 制限 名6: +せいこ 聖子 名前: +せいこう 成功 名7: +せいこう 製鋼 名6: +せいこう 精巧 名8: +せいこううどく 晴耕雨読 代4: +せいこつ 整骨 名1: +せいこん 成婚 名7: +せいこん 精魂 名1: +せいご 生後 名1: +せいご 正誤 名1: +せいご 清吾 苗字: +せいごう 整合 名6: +せいさい 制裁 名6: +せいさい 正妻 名1: +せいさい 精細 形動4: +せいさく 製作 名6: +せいさく 制作 名6: +せいさく 政策 名1: +せいさく 清作 名前: +せいさん 生産 名6: +せいさん 精算 名6: +せいさん 清算 名6: +せいさん 成算 名1: +せいさん 凄惨 代5: +せいさんだか 生産高 名1: +せいざ 星座 名1: +せいざ 正座 名6: +せいざい 製材 名6: +せいし 制止 名6: +せいし 正視 名6: +せいし 生死 名1: +せいし 製紙 名1: +せいし 精子 名1: +せいし 静止 名6: +せいしき 正式 名8: +せいしつ 性質 名1: +せいしゃいん 正社員 名1: +せいしゅ 清酒 名1: +せいしゅん 青春 名6: +せいしょ 清書 名6: +せいしょ 聖書 名1: +せいしょう 清勝 名1: +せいしょう 清祥 名3: +せいしょう 斉唱 代4: +せいしょうねん 青少年 名1: +せいしょく 生殖 名1: +せいしん 精神 名4: +せいしん 誠心 名1: +せいしん 聖心 名1: +せいじ 政治 名4: +せいじ 清司 名前: +せいじ 清次 名前: +せいじ 清治 名前: +せいじ 清二 名前: +せいじ 誠司 名前: +せいじ 誠治 名前: +せいじ 誠二 名前: +せいじか 政治家 名1: +せいじつ 誠実 名8: +せいじゃく 静寂 名8: +せいじゅく 成熟 名6: +せいじゅん 清純 形動4: +せいじょう 正常 名8: +せいじょう 政情 名1: +せいじょう 清浄 名8: +せいじょう 成城 地名: +せいじろう 清次郎 名前: +せいじん 成人 名6: +せいすい 盛衰 名1: +せいすう 整数 名4: +せいすう 正数 名4: +せいず 製図 名6: +せいず 星図 名1: +せいせい 生成 名6: +せいせい 精製 名6: +せいせい 清々 副3: +せいせいどうどう 正々堂々 代6: +せいせき 成績 名1: +せいせん 生鮮 名8: +せいせん 精選 名6: +せいぜい せいぜい 副8: +せいぜん 整然 名1:形動2: +せいぜん 生前 名1: +せいそ 清楚 形動4: +せいそう 清掃 名6: +せいそう 正装 名6: +せいそう 盛装 名6: +せいそう 政争 名1: +せいそう 精巣 名1: +せいそく 生息 名6: +せいそく 棲息 名6: +せいそく 正則 名8: +せいぞう 製造 名6: +せいぞう 清三 名前: +せいぞろい 勢ぞろい 代4: +せいぞん 生存 名6: +せいたい 生態 名1: +せいたい 生体 名1: +せいたい 成体 名1: +せいたろう 清太郎 名前: +せいだい 盛大 形動4: +せいだん 西淡 地名: +せいち 聖地 名1: +せいち 生地 名1: +せいち 整地 名6: +せいち 精緻 形動4: +せいちゃ 製茶 名1: +せいちゅう 成虫 名1: +せいちょう 成長 名7: +せいちょう 正調 名1: +せいちょう 清澄 名8: +せいちょう 生長 名6: +せいちょう 静聴 名1: +せいつう 精通 名6: +せいてい 制定 名6: +せいてき 性的 形動1: +せいてき 静的 形動1: +せいてつ 製鉄 名1: +せいてん 晴天 名1: +せいでんき 静電気 名1: +せいと 生徒 名1: +せいとう 正当 名8: +せいとう 正統 名4: +せいとう 政党 名1: +せいとう 正答 名1: +せいとう 製糖 名1: +せいとん 整頓 名6: +せいど 制度 名1: +せいど 精度 名1: +せいどく 精読 名6: +せいないじ 清内路 地名: +せいにく 精肉 名1: +せいねん 成年 名1: +せいねん 青年 名1: +せいねんがっぴ 生年月日 名1: +せいの 清野 苗字: +せいのう 性能 名1: +せいは 制覇 名6: +せいはく 精白 名6: +せいはん 製版 名6: +せいはんたい 正反対 名8: +せいばい 成敗 名6: +せいばつ 征伐 名6: +せいひ 成否 名1: +せいひ 正否 名1: +せいひ 西彼 地名: +せいひょう 製氷 名6: +せいひん 製品 名4: +せいび 整備 名6: +せいふ 政府 名1: +せいふ 正負 名1: +せいふう 清風 名1: +せいふく 制服 名1: +せいふく 征服 名6: +せいふん 製粉 名6: +せいぶ 西部 名1: +せいぶ 西武 企業: +せいぶつ 生物 名1: +せいぶつ 静物 名1: +せいぶん 成分 名1: +せいべつ 性別 名1: +せいほう 製法 名1: +せいほう 西方 名1: +せいほうけい 正方形 名1: +せいほん 製本 名6: +せいぼ 歳暮 名2: +せいぼ 生母 名1: +せいぼう 制帽 名1: +せいまい 精米 名6: +せいみつ 精密 名8: +せいめい 生命 名1: +せいめい 姓名 名1: +せいめい 清明 名1: +せいめい 声明 名6: +せいもん 正門 名1: +せいやく 制約 名6: +せいやく 成約 名6: +せいやく 製薬 名1: +せいやく 誓約 名6: +せいゆ 製油 名6: +せいゆう 声優 名1: +せいよう 静養 名7: +せいよう 西洋 名1: +せいよく 性欲 名1: +せいらい 生来 名1: +せいり 整理 名6: +せいり 生理 名4: +せいりつ 成立 名6: +せいりゃく 政略 名1: +せいりゅう 清流 名1: +せいりょう 清涼 名8: +せいりょう 声量 名1: +せいりょく 勢力 名4: +せいりょく 精力 名4: +せいれい 精励 名7: +せいれい 政令 名1: +せいれい 精霊 名1: +せいれき 西暦 名1: +せいれつ 整列 名6: +せいれん 精錬 名6: +せいろう 聖篭 地名: +せいろん 正論 名1: +せいわ 勢和 地名: +せいわ 清和 地名: +せお 瀬尾 苗字: +せお 背負 ワ五5: +せおりー セオリー 名1: +せかい 世界 名4: +せがわ 瀬川 苗字: +せき 席 名2: +せき 籍 代1: +せき 咳 代1: +せき 関 代1: +せき 関 苗字: +せき 関 地名: +せき 堰 代1: +せき 積 代1: +せき 石 接尾1: +せき 隻 助数2: +せき 寂 単漢: +せき 惜 単漢: +せき 戚 単漢: +せき 斥 単漢: +せき 昔 単漢: +せき 析 単漢: +せき 績 単漢: +せき 脊 単漢: +せき 責 単漢: +せき 赤 単漢: +せき 跡 単漢: +せき 蹟 単漢: +せき 碩 単漢: +せき 夕 単漢: +せきかわ 関川 苗字: +せきがいせん 赤外線 名1: +せきがね 関金 地名: +せきがはら 関ヶ原 地名: +せきぐち 関口 苗字: +せきさい 積載 名6: +せきさん 積算 名6: +せきざい 石材 名1: +せきしゅつ 析出 名6: +せきしょく 赤色 名1: +せきじゅうじ 赤十字 名1: +せきじょう 関城 地名: +せきじょう 席上 名1: +せきずい 脊髄 名1: +せきせつ 積雪 名1: +せきぜん 関前 地名: +せきぞう 石像 名1: +せきたん 石炭 名1: +せきつい 脊椎 名1: +せきてい 石庭 名1: +せきとめ せき止め 一段3: +せきとり 関取 名1: +せきどう 赤道 名1: +せきにん 責任 名1: +せきね 関根 苗字: +せきの 関野 苗字: +せきのみや 関宮 地名: +せきはい 惜敗 名6: +せきはん 赤飯 名2: +せきひ 石碑 名1: +せきぶん 積分 名6: +せきべつ 惜別 名6: +せきむ 責務 名1: +せきめ 関目 苗字: +せきめ 関目 地名: +せきめん 赤面 名6: +せきもと 関本 苗字: +せきもと 関本 地名: +せきや 関谷 苗字: +せきやど 関宿 地名: +せきゅりてぃ セキュリティ 名1: +せきゆ 石油 名1: +せきり 赤痢 名1: +せきわけ 関脇 名1: +せくしょん セクション 名1: +せぐち 瀬口 苗字: +せぐめんと セグメント 名1: +せけん 世間 名1: +せこう 施工 名6: +せしゅう 世襲 名6: +せじ 世辞 名2: +せじょう 施錠 名6: +せじょう 世情 名1: +せすじ 背筋 名1: +せそう 世相 名1: +せぞく 世俗 名4: +せた 瀬田 苗字: +せた 瀬田 地名: +せた 勢多 地名: +せたい 世帯 名1:助数2: +せたか 瀬高 地名: +せたがや 世田谷 地名: +せたけ 背丈 名1: +せたな 瀬棚 地名: +せだい 世代 名1:助数: +せちばる 世知原 地名: +せっ 接 サ変: +せっかい 石灰 名1: +せっかい 切開 名6: +せっかく せっかく 代6: +せっかく 折角 代6: +せっかち せっかち 代5: +せっき 節気 名1: +せっきゃく 接客 名6: +せっきょう 説教 名5: +せっきょく 積極 名4: +せっきん 接近 名6: +せっく 節句 名2: +せっくす セックス 名6: +せっけい 設計 名6: +せっけいず 設計図 名1: +せっけん 石鹸 名1: +せっけん 接見 代4: +せっこう 石膏 名1: +せっこつ 接骨 名6: +せっさく 切削 名6: +せっし 摂氏 名1: +せっしゅ 摂取 名6: +せっしゅ 接種 名6: +せっしょう 折衝 名6: +せっしょく 接触 名6: +せっしょく 節食 名6: +せっしょん セッション 名1: +せっすい 節水 名6: +せっせい 摂生 名6: +せっせい 節制 名6: +せっせん 接戦 代4: +せっせん 接線 名1: +せっそう 節操 名1: +せっそく 拙速 名8: +せったい 接待 名6: +せったく 拙宅 名1: +せっち 設置 名6: +せっち 接地 名6: +せっちゃく 接着 名6: +せっちゅう 折衷 名6: +せっつ 摂津 名1: +せっつ 摂津 地名: +せってい 設定 名6: +せってん 接点 名1: +せっと セット 代4:助数2: +せっとう 接頭 名1: +せっとう 窃盗 名6: +せっとく 説得 名6: +せっぱく 切迫 名6: +せっぱん 折半 名6: +せっぷん 接吻 名6: +せっぺん 切片 名1: +せつ せつ カ五1: +せつ 説 代1:接尾1: +せつ 節 代1:助数: +せつ 切 単漢: +せつ 拙 単漢: +せつ 接 単漢: +せつ 摂 単漢: +せつ 折 単漢: +せつ 設 単漢: +せつ 窃 単漢: +せつ 雪 単漢: +せつ 鱈 単漢: +せつえい 設営 名6: +せつお 節男 名前: +せつお 節夫 苗字: +せつがん 接岸 名6: +せつげん 節減 名6: +せつげん 雪原 名1: +せつこ 節子 名前: +せつごう 接合 名6: +せつじ 接辞 名1: +せつじつ 切実 名8: +せつじゅ 接受 名6: +せつじょ 切除 名6: +せつじょく 雪辱 名6: +せつぜい 節税 名6: +せつぞく 接続 名6: +せつぞくし 接続詞 名1: +せつだん 切断 名6: +せつでん 節電 名6: +せつど 節度 名1: +せつな 切な 形5: +せつび 設備 名6: +せつぶん 節分 名1: +せつぼう 切望 名6: +せつめい 説明 名7: +せつもん 設問 名6: +せつやく 節約 名6: +せつり 摂理 名1: +せつりつ 設立 名6: +せつわ 説話 名1: +せと 瀬戸 名1: +せとうち 瀬戸内 地名: +せとぎわ 瀬戸際 名1: +せとだ 瀬戸田 地名: +せとないかい 瀬戸内海 地名: +せなか 背中 名2: +せのび 背伸び 代4: +せばま 狭ま ラ五1: +せばめ 狭め 一段1: +せびろ 背広 名1: +せぴあ セピア 名1: +せふぃーろ セフィーロ 名1: +せふり 背振 地名: +せぼね 背骨 名1: +せま 狭 形7: +せま 迫 ラ五8: +せまくるし 狭苦し 形3: +せみ 蝉 代1: +せみころん セミコロン 名1: +せみなー セミナー 名1: +せみね 瀬峰 地名: +せめ 攻め 一段3: +せめ 責め 一段3: +せめおと 攻め落と サ五7: +せめこ 攻め込 マ五7: +せめたて 責めたて 一段3: +せめつけ 責めつけ 一段1: +せめて せめて 副1: +せめんと セメント 名1: +せや 瀬谷 苗字: +せや 瀬谷 地名: +せら 世羅 地名: +せらにし 世羅西 地名: +せらみっく セラミック 名1: +せり 芹 単漢: +せりあ 競り合 ワ五7: +せりあげ せり上げ 一段3: +せりざわ 芹沢 苗字: +せりふ 台詞 代1: +せる セル 名1: +せれくと セレクト 名6: +せろん 世論 名1: +せわ 世話 名5: +せん 線 代1:接尾1: +せん 栓 代1: +せん 船 接尾1: +せん 選 接尾1: +せん 戦 接尾1:助数: +せん 腺 接尾1: +せん 銭 助数2: +せん 宣 サ変: +せん 煎 ザ変: +せん 泉 代1: +せん 先 代1: +せん 詮 代1: +せん 釧 単漢: +せん 蝉 単漢: +せん 仙 単漢: +せん 占 単漢: +せん 専 単漢: +せん 尖 単漢: +せん 川 単漢: +せん 扇 単漢: +せん 撰 単漢: +せん 栴 単漢: +せん 浅 単漢: +せん 洗 単漢: +せん 染 単漢: +せん 潜 単漢: +せん 煽 単漢: +せん 旋 単漢: +せん 穿 単漢: +せん 箭 単漢: +せん 繊 単漢: +せん 羨 単漢: +せん 舛 単漢: +せん 薦 単漢: +せん 賎 単漢: +せん 践 単漢: +せん 遷 単漢: +せん 銑 単漢: +せん 閃 単漢: +せん 鮮 単漢: +せん 揃 単漢: +せん 苫 単漢: +せん 亘 単漢: +せん 僭 単漢: +せんい 繊維 名1: +せんい 遷移 名6: +せんいん 船員 名1: +せんえき 戦役 名1: +せんえつ 僭越 名8: +せんか 専科 名1: +せんか 戦果 名1: +せんか 戦火 名1: +せんかい 旋回 名6: +せんかく 先覚 名1: +せんかん 戦艦 名1: +せんがい 選外 名1: +せんがく 浅学 名1: +せんがん 洗顔 名6: +せんき 戦記 名1: +せんきゃく 船客 名1: +せんきゃくばんらい 千客万来 代1: +せんきょ 選挙 名6: +せんきょ 占拠 名6: +せんきょうし 宣教師 名1: +せんきょく 戦局 名1: +せんきょく 選曲 名6: +せんぎょ 鮮魚 名1: +せんぎょう 専業 名1: +せんく 先駆 名6: +せんけい 線形 名1: +せんけつ 先決 名1: +せんけん 先見 名1: +せんげつ 先月 名1: +せんげん 宣言 名6: +せんこう 専攻 名7: +せんこう 選考 名6: +せんこう 先攻 名6: +せんこう 先行 名6: +せんこう 穿孔 名6: +せんこう 線香 名2: +せんこう 閃光 名1: +せんこく 先刻 名1: +せんこく 宣告 名6: +せんご 戦後 名1: +せんごく 戦国 名1: +せんさー センサー 名1: +せんさい 戦災 名1: +せんさい 繊細 名8: +せんさく 詮索 名6: +せんさばんべつ 千差万別 名8: +せんざい 洗剤 名1: +せんざい 潜在 名6: +せんし 戦死 名6: +せんし 戦士 名1: +せんしつ 船室 名1: +せんしゃ 戦車 名1: +せんしゅ 選手 名1: +せんしゅ 船首 名1: +せんしゅ 先取 名6: +せんしゅう 先週 名11: +せんしゅう 専修 名1: +せんしゅう 選集 名1: +せんしゅうらく 千秋楽 名1: +せんしゅつ 選出 名6: +せんしょう 先勝 代4: +せんしょく 染色 名6: +せんしょく 染織 名1: +せんしん 先進 名1: +せんしん 専心 代4: +せんしんこく 先進国 名1: +せんじ 戦時 名1: +せんじつ 先日 名1: +せんじゃ 選者 名1: +せんじゅう 専従 名6: +せんじゅつ 戦術 名1: +せんじょう 戦場 名1: +せんじょう 洗浄 代4: +せんじょう 船上 名1: +せんじん 先人 名1: +せんす センス 名1: +せんす 扇子 名1: +せんすい 潜水 名6: +せんすいかん 潜水艦 名1: +せんせーしょなる センセーショナル 名8: +せんせーしょん センセーション 名1: +せんせい 先生 名1: +せんせい 宣誓 名6: +せんせいじゅつ 占星術 名1: +せんせん 宣戦 名6: +せんせん 戦線 名1: +せんぜん 戦前 名1: +せんそう 戦争 名6: +せんぞ 先祖 名3: +せんぞく 専属 名6: +せんたー センター 名1: +せんたい 船体 名1: +せんたく 選択 名6: +せんたく 洗濯 名5: +せんたくき 洗濯機 名1: +せんたくし 選択肢 代1: +せんたん 先端 名1: +せんだい 仙台 地名: +せんだい 先代 名3: +せんだい 川内 苗字: +せんだい 川内 地名: +せんだがや 千駄ヶ谷 地名: +せんだぎ 千駄木 地名: +せんち センチ 助数2: +せんち 戦地 名1: +せんちめーとる 糎 単漢: +せんちゃ 煎茶 名1: +せんちゃく 先着 名6: +せんちょう 船長 代2: +せんちょう 千丁 地名: +せんて 先手 名1: +せんてい 選定 名6: +せんてん 先天 名4: +せんでん 宣伝 名6: +せんと セント 助数2: +せんとう 先頭 名1: +せんとう 銭湯 名1: +せんとう 戦闘 名6: +せんとうき 戦闘機 名1: +せんど 鮮度 名1: +せんどう 先導 名6: +せんどう 船頭 名1: +せんない 船内 名1: +せんなん 仙南 地名: +せんなん 泉南 地名: +せんにちまえ 千日前 地名: +せんにゅう 潜入 名6: +せんにゅうかん 先入観 名1: +せんにん 専任 名1: +せんにん 仙人 名1: +せんにん 選任 名6: +せんねん 専念 代4: +せんのう 洗脳 名6: +せんはた 千畑 地名: +せんば 船場 地名: +せんばい 専売 名6: +せんばつ 選抜 名6: +せんばん 旋盤 名1: +せんぱい 先輩 名1: +せんぱく 船舶 名1: +せんぱつ 先発 名6: +せんぱつ 洗髪 名6: +せんぱん 先般 代6: +せんび 船尾 名1: +せんぴょう 選評 名6: +せんぶん 線分 名1: +せんぷう 旋風 名1: +せんぷうき 扇風機 名1: +せんぷく 潜伏 名6: +せんべつ 選別 名6: +せんぼう 羨望 名6: +せんぼく 仙北 地名: +せんぼく 泉北 地名: +せんぼつ 戦没 名6: +せんぽう 先方 名1: +せんまや 千厩 地名: +せんむ 専務 名1: +せんめい 鮮明 名8: +せんめん 洗面 名6: +せんもん 専門 名4: +せんもんか 専門家 名1: +せんやく 先約 名6: +せんゆう 占有 名6: +せんゆう 専有 名6: +せんゆう 戦友 名1: +せんよう 専用 名6: +せんり 千里 苗字:名前: +せんり 千里 地名: +せんり 戦利 名1: +せんりつ 戦慄 代4: +せんりつ 旋律 代1: +せんりゃく 戦略 名1: +せんりゅう 川柳 名1: +せんりょう 占領 代4: +せんりょう 染料 代1: +せんりょく 戦力 名1: +せんれい 先例 名1: +せんれい 洗礼 名1: +せんれつ 鮮烈 名8: +せんれん 洗練 名6: +せんろ 線路 名1: +ぜ 是 代1: +ぜい 税 接尾1: +ぜい 脆 単漢: +ぜいかん 税関 名1: +ぜいがく 税額 名1: +ぜいきん 税金 名1: +ぜいげん 税源 名1: +ぜいこみ 税込み 名1: +ぜいしゅう 税収 名1: +ぜいせい 税制 名1: +ぜいたく 贅沢 名8: +ぜいにく ぜい肉 名1: +ぜいほう 税法 名1: +ぜいむ 税務 名1: +ぜいむしょ 税務署 名1: +ぜいりし 税理士 名1: +ぜいりつ 税率 名1: +ぜせい 是正 名6: +ぜっ 絶 サ変: +ぜっきょう 絶叫 名6: +ぜっく 絶句 名6: +ぜっけい 絶景 名1: +ぜっこう 絶好 名1: +ぜっこう 絶交 名6: +ぜっこうちょう 絶好調 名8: +ぜっさん 絶賛 名6: +ぜっしょく 絶食 名6: +ぜっせい 絶世 名1: +ぜったい 絶対 名4: +ぜったいち 絶対値 名1: +ぜっちょう 絶頂 名1: +ぜっぱん 絶版 名1: +ぜっぴつ 絶筆 名1: +ぜっぴん 絶品 名1: +ぜっぺき 絶壁 名1: +ぜつ 絶 単漢: +ぜつ 舌 単漢: +ぜつえん 絶縁 名6: +ぜつだい 絶大 形動4: +ぜつぼう 絶望 名6: +ぜつみょう 絶妙 代5: +ぜつむ 絶無 名1: +ぜつめい 絶命 名6: +ぜつめつ 絶滅 名6: +ぜに 銭 代1: +ぜにん 是認 名6: +ぜねすと ゼネスト 名1: +ぜひ ぜひ 副1: +ぜひ 是非 代1: +ぜみ ゼミ 名1: +ぜみなーる ゼミナール 名1: +ぜろ ゼロ 名1: +ぜろっくす ゼロックス 企業: +ぜん 全 代1:接頭5: +ぜん 前 接頭1: +ぜん 善 代1: +ぜん 禅 代1: +ぜん 膳 名2:助数2: +ぜん 然 代1: +ぜん 千 単漢: +ぜん 漸 単漢: +ぜん 繕 単漢: +ぜん 蝉 単漢: +ぜん 喘 単漢: +ぜんあく 善悪 名1: +ぜんい 善意 名1: +ぜんいき 全域 名1: +ぜんいち 善一 名前: +ぜんいん 全員 代6: +ぜんえい 前衛 名1: +ぜんか 前科 名1: +ぜんかい 前回 名11: +ぜんかい 全会 名1: +ぜんかい 全壊 名6: +ぜんかい 全快 名6: +ぜんかい 全開 名6: +ぜんかく 全角 名1: +ぜんかしき 漸化式 名1: +ぜんかん 全巻 名1: +ぜんかん 全館 名1: +ぜんがく 全額 名1: +ぜんがく 全学 名1: +ぜんき 前期 名1: +ぜんき 前記 名6: +ぜんきち 善吉 名前: +ぜんきょく 全局 名1: +ぜんきょく 全曲 名1: +ぜんきん 漸近 名1: +ぜんけい 前掲 名1: +ぜんけい 全景 名1: +ぜんげつ 前月 名1: +ぜんげん 漸減 名6: +ぜんこ 全戸 名1: +ぜんこう 前項 名1: +ぜんこう 善行 名1: +ぜんこう 全校 名1: +ぜんこく 全国 名4: +ぜんご 前後 代4: +ぜんごさく 善後策 名1: +ぜんさい 前菜 名1: +ぜんさく 前作 名1: +ぜんし 全紙 名1: +ぜんしゃ 前者 名1: +ぜんしゃ 全社 名1: +ぜんしゅう 全集 名1: +ぜんしゅう 前週 名1: +ぜんしょ 善処 名6: +ぜんしょ 全書 名1: +ぜんしょう 全勝 名6: +ぜんしょう 全焼 名6: +ぜんしょう 全章 名1: +ぜんしょう 前章 名1: +ぜんしん 全身 名4: +ぜんしん 前身 名1: +ぜんしん 前進 名6: +ぜんしん 漸進 名6: +ぜんじ 漸次 代6: +ぜんじつ 前日 名1: +ぜんじつ 全日 名1: +ぜんじゅつ 前述 名6: +ぜんじろう 善次郎 名前: +ぜんせいき 全盛期 名1: +ぜんせき 全席 名1: +ぜんせん 前線 名1: +ぜんせん 全線 名1: +ぜんぜん 全然 副8: +ぜんそう 前奏 名6: +ぜんそく 喘息 名1: +ぜんぞう 漸増 名6: +ぜんたい 全体 名1: +ぜんだい 前代 名1: +ぜんち 全治 名6: +ぜんちし 前置詞 名1: +ぜんちょう 前兆 名1: +ぜんちょう 全長 名1: +ぜんつう 全通 名6: +ぜんつうじ 善通寺 地名: +ぜんてい 前提 名1: +ぜんてん 全店 名1: +ぜんと 前途 名1: +ぜんど 全土 名1: +ぜんどう 善導 代4: +ぜんにちせい 全日制 名1: +ぜんにっくう 全日空 企業: +ぜんにほん 全日本 名1: +ぜんにん 前任 名1: +ぜんにん 善人 名1: +ぜんねんど 前年度 名1: +ぜんのう 前納 名6: +ぜんはん 前半 名1: +ぜんぱい 全廃 名6: +ぜんぱい 全敗 名6: +ぜんぱん 全般 名4: +ぜんびん 前便 名1: +ぜんびん 全便 名1: +ぜんぴん 全品 名1: +ぜんぶ 全部 名1: +ぜんぶん 全文 名1: +ぜんぶん 前文 名1: +ぜんべい 全米 名1: +ぜんぺん 前編 名1: +ぜんぺん 全編 名1: +ぜんぼう 全貌 名1: +ぜんぽう 前方 名1: +ぜんめつ 全滅 名6: +ぜんめん 前面 名1: +ぜんめん 全面 名1: +ぜんや 前夜 名1: +ぜんやく 全訳 名6: +ぜんよう 善用 代4: +ぜんよう 全容 名1: +ぜんら 全裸 名1: +ぜんりゃく 前略 名1: +ぜんりょう 善良 形動4: +ぜんりょく 全力 名1: +ぜんれい 前例 名1: +ぜんれき 前歴 名1: +ぜんれつ 前列 名1: +そ 沿 ワ五7: +そ 添 ワ五3: +そ 剃 ラ五8: +そ 反 ラ五8: +そ 祖 代1: +そ 素 代1: +そ 疎 代1: +そ 粗 代1: +そ 姐 単漢: +そ 噌 単漢: +そ 塑 単漢: +そ 岨 単漢: +そ 措 単漢: +そ 曾 単漢: +そ 曽 単漢: +そ 楚 単漢: +そ 狙 単漢: +そ 疏 単漢: +そ 礎 単漢: +そ 租 単漢: +そ 組 単漢: +そ 蘇 単漢: +そ 訴 単漢: +そ 阻 単漢: +そ 遡 単漢: +そ 鼠 単漢: +そーす ソース 名1: +そーと ソート 名6: +そーぷ ソープ 名1: +そあく 粗悪 形動4: +そいつ そいつ 代1: +そいん 素因 名1: +そう 総 接頭1: +そう そう 特殊副:代1: +そう 相 代1: +そう 僧 代1: +そう 奏 サ変:サ五1: +そう 層 接尾1:助数: +そう 荘 代1: +そう 葬 代1: +そう 壮 代1: +そう 双 代1: +そう 想 代1: +そう 走 代1: +そう 鯵 単漢: +そう 繰 単漢: +そう 桑 単漢: +そう 宗 単漢: +そう 庄 単漢: +そう 曾 単漢: +そう 曽 単漢: +そう 創 単漢: +そう 叢 単漢: +そう 倉 単漢: +そう 喪 単漢: +そう 爽 単漢: +そう 宋 単漢: +そう 匝 単漢: +そう 惣 単漢: +そう 捜 単漢: +そう 掃 単漢: +そう 挿 単漢: +そう 掻 単漢: +そう 操 単漢: +そう 早 単漢: +そう 曹 単漢: +そう 巣 単漢: +そう 槍 単漢: +そう 槽 単漢: +そう 漕 単漢: +そう 燥 単漢: +そう 争 単漢: +そう 痩 単漢: +そう 窓 単漢: +そう 糟 単漢: +そう 綜 単漢: +そう 聡 単漢: +そう 草 単漢: +そう 蒼 単漢: +そう 藻 単漢: +そう 装 単漢: +そう 送 単漢: +そう 遭 単漢: +そう 鎗 単漢: +そう 霜 単漢: +そう 騒 単漢: +そう 贈 単漢: +そう 爪 単漢: +そう 葱 単漢: +そう 蚤 単漢: +そう 湊 単漢: +そう 聰 単漢: +そう 躁 単漢: +そう 輳 単漢: +そうあん 草案 名1: +そうい 相違 名6: +そうい 創意 名1: +そういち 宗一 名前: +そういん 総員 名1: +そううつ 躁鬱 名1: +そうおう 相応 名6:形動1: +そうおん 騒音 名1: +そうか 草加 地名: +そうかい 総会 名1: +そうかい 壮快 名8: +そうかい 爽快 名8: +そうかつ 総括 名6: +そうかつ 総轄 名6: +そうかん 創刊 名6: +そうかん 壮観 名1: +そうかん 相関 名6: +そうかん 総監 名1: +そうかん 送還 名6: +そうがく 総額 名1: +そうがんきょう 双眼鏡 名1: +そうき 早期 名1: +そうきゅう 早急 名8: +そうきょ 壮挙 名1: +そうきょく 総局 名1: +そうきょくせん 双曲線 名1: +そうきん 送金 名6: +そうぎ 争議 名1: +そうぎ 葬儀 名3: +そうぎょう 創業 名6: +そうぎょう 操業 名6: +そうぐう 遭遇 名6: +そうけい 総計 名6: +そうけん 送検 名6: +そうけん 壮健 名10: +そうげい 送迎 名6: +そうげん 草原 名4: +そうこ 倉庫 名1: +そうこう 走行 名6: +そうこう 壮行 名1: +そうこう 操行 名1: +そうこう 草稿 名1: +そうこう 霜降 名1: +そうご 相互 名1: +そうごう 総合 名6: +そうごん 荘厳 名8: +そうさ 操作 名6: +そうさ 捜査 名6: +そうさ 走査 名6: +そうさ 匝瑳 地名: +そうさい 総裁 名6: +そうさく 創作 名6: +そうさく 捜索 名6: +そうざい 惣菜 名2: +そうし 創始 名6: +そうし 相思 名1: +そうし 草紙 名1: +そうしき 葬式 名2: +そうしたら そうしたら 接続: +そうしつ 喪失 名6: +そうして そうして 副1: +そうしゃ 走者 名1: +そうしゃ 奏者 名1: +そうしゃ 操車 名1: +そうしゅうへん 総集編 代1: +そうしゅつ 送出 代4: +そうしゅん 早春 名1: +そうしょ 草書 名1: +そうしょう 総称 名6: +そうしょく 装飾 名6: +そうしん 送信 名6: +そうじ 掃除 名5: +そうじ 相似 名6: +そうじしょく 総辞職 名6: +そうじて 総じて 副1: +そうじゃ 総社 地名: +そうじゅ 送受 名6: +そうじゅう 操縦 名6: +そうじゅく 早熟 名8: +そうじゅしん 送受信 名6: +そうじょう 相乗 名1: +そうすう 総数 名1: +そうせい 早世 名6: +そうせいじ 双生児 名1: +そうせつ 創設 名6: +そうぜい 総勢 名1: +そうぜつ 壮絶 名8: +そうぜん 騒然 形動2: +そうそう 早々 代6: +そうそう 草々 形動2: +そうぞう 想像 名7: +そうぞう 創造 名6: +そうぞうし 騒々し 形5: +そうぞく 相続 名6: +そうたい 相対 名4: +そうたい 早退 名6: +そうたつ 送達 名6: +そうだい 壮大 形動4: +そうだい 総代 名1: +そうだい 早大 名1: +そうだか 総高 名1: +そうだち 総立ち 名1: +そうだつ 争奪 名6: +そうだん 相談 名7: +そうち 装置 名6: +そうち 送致 名6: +そうちゃく 装着 名6: +そうちょう 早朝 名1: +そうちょう 総長 名1: +そうちょう 荘重 形動4: +そうてい 想定 名6: +そうてい 装丁 名6: +そうてい 送呈 名6: +そうてん 争点 名1: +そうで 総出 名1: +そうでん 送電 名6: +そうと 壮図 代1: +そうと 壮途 代1: +そうとう 相当 名8:副4: +そうとう 双頭 名1: +そうとく 総督 名1: +そうどう 騒動 名1: +そうどう 相同 名1: +そうなん 遭難 名6: +そうにゅう 挿入 名6: +そうねん 壮年 名1: +そうは 走破 名6: +そうば 相場 名1: +そうばん 早晩 副1: +そうひょう 総評 名1: +そうび 装備 名6: +そうふ 送付 名7: +そうふう 送風 名6: +そうべつ 送別 名6: +そうべつ 壮瞥 地名: +そうほう 双方 名1: +そうほうこう 双方向 名1: +そうま 相馬 苗字: +そうま 相馬 地名: +そうむ 総務 名1: +そうめい 聰明 名8: +そうめん 素麺 名1: +そうや 宗谷 地名: +そうらく 相楽 地名: +そうらん 総覧 名6: +そうらん 騒乱 名1: +そうり 総理 名6: +そうりつ 創立 名6: +そうりふ 総理府 名1: +そうりょ 僧侶 名1: +そうりょう 送料 名1: +そうりょう 総量 名1: +そうりょう 総領 名1: +そうりょく 総力 名1: +そうる ソウル 地名: +そうれつ 壮烈 名8: +そうろう 候 単漢: +そうろん 総論 名1: +そうわ 挿話 名1: +そうわ 総和 名1: +そえ 添え 一段3: +そえかみ 添上 地名: +そえだ 添田 苗字: +そえだ 添田 地名: +そえん 疎遠 名8: +そお 曽於 地名: +そかい 疎開 名6: +そが 曽我 苗字: +そがい 疎外 名6: +そがい 阻害 名6: +そく 即 サ変:サ五1: +そく 則 接尾1:サ変:サ五1: +そく 足 助数2: +そく 速 助数2: +そく 束 代1: +そく 塞 単漢: +そく 促 単漢: +そく 側 単漢: +そく 息 単漢: +そく 捉 単漢: +そく 測 単漢: +そく 速 単漢: +そくい 即位 名6: +そくおう 即応 名6: +そくざ 即座 名1: +そくし 即死 代4: +そくしん 促進 名6: +そくじ 即時 名1: +そくせい 促成 名6: +そくせき 即席 名1: +そくせき 足跡 名1: +そくたつ 速達 名6: +そくだん 即断 名6: +そくち 測地 名6: +そくてい 測定 名6: +そくとう 即答 名6: +そくとう 速答 名6: +そくど 速度 名1: +そくど 測度 名1: +そくはつ 即発 名6: +そくばい 即売 名6: +そくばく 束縛 名6: +そくほう 速報 名6: +そくめん 側面 名1: +そくらてす ソクラテス 代1: +そくりょう 測量 名6: +そくりょく 速力 名1: +そくろう 足労 名3: +そぐ そぐ ワ五1: +そけっと ソケット 名1: +そげき 狙撃 名6: +そこ そこ 代1: +そこ 底 代1: +そこう 素行 代1: +そこく 祖国 名1: +そこそこ そこそこ 代1: +そこぢから 底力 名1: +そこで そこで 接続: +そこな 損な ワ五5: +そこね 損ね 一段3: +そこね 底値 名1: +そこびえ 底冷え 代4: +そこら そこら 代1: +そごう そごう 企業: +そざい 素材 名1: +そざつ 粗雑 名8: +そし 素子 名1: +そし 阻止 名6: +そし 誹 ラ五3: +そしき 組織 名6: +そしつ 素質 名1: +そして そして 接続: +そしな 粗品 名1: +そしゃく 租借 名6: +そしゃく 咀嚼 名6: +そしょう 訴訟 名6: +そしょく 粗食 名1: +そじ 素地 名1: +そじょう 訴状 名1: +そすい 疎水 名1: +そすう 素数 名1: +そせい 組成 名6: +そせい 蘇生 名6: +そせい 粗製 名1: +そせん 祖先 名1: +そそ そそ ラ五7: +そそ 注 ガ五7: +そそ 楚々 形動2: +そそう 粗相 代4: +そそのか 唆 サ五5: +そそりた そそり立 タ五1: +そだ 育 タ五8: +そだい 粗大 名8: +そだて 育て 一段4: +そだてあげ 育て上げ 一段1: +そち 措置 名7: +そちら そちら 代1: +そっき 速記 名6: +そっきょう 即興 名1: +そっきん 側近 名1: +そっきん 即金 名1: +そっくり そっくり 代6: +そっけつ 即決 名6: +そっけな そっけな 形3: +そっこう 即効 名1: +そっこう 速攻 名1: +そっこうじょ 測候所 名1: +そっこく 即刻 代6: +そっせん 率先 名6: +そっち そっち 代1: +そっちゅう 卒中 名1: +そっちょく 率直 形動4: +そっと そっと 副4: +そっとう 卒倒 名6: +そつ 卒 接尾1: +そつ 率 単漢: +そつう 疎通 名6: +そつぎょう 卒業 名7: +そつろん 卒論 名1: +そで 袖 代1: +そでがうら 袖ヶ浦 地名: +そと 外 代1: +そとがわ 外側 名1: +そとまわり 外回り 代1: +そとめ 外海 地名: +そなえ 備え 一段3: +そなえ 供え 一段4: +そなえつけ 備え付け 一段3: +そなた ソナタ 名1: +そなわ 備わ ラ五3: +そに 曾爾 地名: +そにー ソニー 企業: +そね 曽根 苗字: +そねざき 曽根崎 地名: +その その 連体: +その 園 代1: +その 苑 単漢: +その 薗 単漢: +その 其 単漢: +そのうち そのうち 代6: +そのこと そのこと 代1: +そのた その他 代1: +そのだ 園田 苗字: +そのべ 園部 苗字: +そのべ 園部 地名: +そのまま そのまま 代6: +そば そば 名2: +そば 蕎麦 名2: +そば 側 代1: +そびえた そびえ立 タ五5: +そびえと ソビエト 地名: +そびょう 素描 名6: +そふ 祖父 代1: +そふと ソフト 名8: +そふとうぇあ ソフトウェア 名1: +そふとうえあ ソフトウエア 名1: +そふぼ 祖父母 名1: +そぶえ 祖父江 地名: +そほう 粗放 形動4: +そぼ 祖母 代1: +そぼう 粗暴 形動4: +そぼく 素朴 名8: +そま 染ま ラ五1: +そまつ 粗末 形動4: +そむ 背 カ五1: +そめ 染め 一段3: +そめ 初め 一段3: +そめつけ 染め付け 一段3: +そめもの 染物 代1: +そめや 染谷 苗字: +そもそも そもそも 副7: +そや 粗野 名8: +そよ そよ ガ五3: +そよう 素養 名1: +そよう 蘇陽 地名: +そよかぜ そよ風 代1: +そら 逸ら サ五5: +そら 空 名2: +そらち 空知 地名: +そりかえ 反り返 ラ五7: +そりっど ソリッド 名1: +そりゃく 粗略 名8: +そりゅうし 素粒子 代1: +それ それ 代1: +それ 逸れ 一段1: +それぞれ それぞれ 代6: +それだけ それだけ 代6: +それほど それほど 代6: +それん ソ連 地名: +そろ 揃 ワ五4: +そろえ そろえ 一段4: +そろえ 揃え 一段4: +そろそろ そろそろ 代6: +そん 損 代4:ザ変: +そん 存 サ変:ザ変: +そん 村 代1: +そん 孫 単漢: +そん 尊 単漢: +そん 噂 単漢: +そん 遜 単漢: +そん 邨 単漢: +そんえい 村営 名1: +そんえき 損益 名1: +そんかい 損壊 名6: +そんがい 損害 名1: +そんぐ ソング 名1: +そんけい 尊敬 名6: +そんげん 尊厳 名8: +そんざい 存在 名6: +そんしつ 損失 名1: +そんしょう 尊称 名1: +そんしょう 損傷 名6: +そんしょく 遜色 名1: +そんぞく 存続 名6: +そんぞく 尊属 名1: +そんだい 尊大 名8: +そんちょう 尊重 名6: +そんちょう 村長 代2: +そんとく 損得 名1: +そんな そんな 連体: +そんぼう 存亡 名1: +そんみん 村民 名1: +そんもう 損耗 名6: +そんらく 村落 名1: +そんりつ 存立 名6: +そんりつ 村立 名1: +ぞい 沿い 接尾2: +ぞう 像 代1:接尾1: +ぞう 増 接尾1: +ぞう 象 代1: +ぞう 蔵 サ変:代1: +ぞう 贈 単漢: +ぞう 憎 単漢: +ぞう 臓 単漢: +ぞう 造 単漢: +ぞう 雑 単漢: +ぞういん 増員 名6: +ぞうえい 造営 名6: +ぞうえき 増益 名6: +ぞうえん 増援 代4: +ぞうえん 造園 代4: +ぞうお 憎悪 代4: +ぞうか 増加 名6: +ぞうか 造花 名1: +ぞうかん 増刊 名6: +ぞうがく 増額 名6: +ぞうき 臓器 名1: +ぞうきばやし 雑木林 代1: +ぞうきょう 増強 名6: +ぞうけい 造形 名1: +ぞうけい 造詣 名1: +ぞうけつ 増結 名6: +ぞうげ 象牙 名1: +ぞうげん 増減 名6: +ぞうご 造語 名1: +ぞうさ 造作 名1: +ぞうさく 造作 名6: +ぞうさつ 増刷 名6: +ぞうさん 増産 名6: +ぞうし 増資 名6: +ぞうしゅう 増収 名6: +ぞうしょ 蔵書 名1: +ぞうしょう 蔵相 名1: +ぞうしょく 増殖 名6: +ぞうしん 増進 名6: +ぞうすい 雑炊 名2: +ぞうすい 増水 名6: +ぞうせい 造成 名6: +ぞうせつ 増設 名6: +ぞうせん 造船 名6: +ぞうぜい 増税 名6: +ぞうだい 増大 名6: +ぞうちく 増築 名6: +ぞうちょう 増長 名6: +ぞうてい 贈呈 名6: +ぞうとう 贈答 名7: +ぞうに 雑煮 名2: +ぞうはつ 増発 名6: +ぞうびん 増便 名6: +ぞうふく 増幅 名6: +ぞうぶん 増分 名1: +ぞうほ 増補 名6: +ぞうよ 贈与 名7: +ぞうり 草履 代1: +ぞうりん 造林 名6: +ぞうわい 贈賄 名6: +ぞく 属 サ変:サ五1:代1: +ぞく 族 接尾1: +ぞく 俗 代1: +ぞく 賊 代1: +ぞく 続 単漢: +ぞくあく 俗悪 代5: +ぞくご 俗語 名1: +ぞくしゅつ 続出 名6: +ぞくしょう 俗称 名1: +ぞくせい 属性 名4: +ぞくせつ 俗説 名1: +ぞくぞく 続々 副8: +ぞくとう 続騰 名6: +ぞくはつ 続発 名6: +ぞくへん 続編 名1: +ぞくほう 続報 名6: +ぞくろん 俗論 名1: +ぞっか 俗化 名6: +ぞっこう 続行 名6: +ぞめ 初め 接尾2: +ぞる ゾル 名1: +ぞろえ 揃え 接尾2: +ぞろぞろ ぞろぞろ 副8: +ぞん 存 ザ変: +ぞんがい 存外 形動1: +ぞんじあげ 存じ上げ 一段1: +ぞんぶん 存分 名1: +ぞんめい 存命 名6: +た た タ五5: +た 炊 カ五5: +た 焚 カ五5: +た 立 タ五4: +た 建 タ五4: +た 発 タ五8: +た 絶 タ五1: +た 経 タ五1: +た 裁 タ五3: +た 断 タ五3: +た 足 サ五7:ラ五7: +た 田 代1: +た 他 代1: +た 多 接頭1: +た 太 単漢: +た 汰 単漢: +た 詫 単漢: +たーげっと ターゲット 名1: +たーとる タートル 名1: +たーびん タービン 名1: +たーぼ ターボ 名1: +たーみなる ターミナル 名1: +たーみねーた ターミネータ 名1: +たーむ ターム 名1: +たーん ターン 名6: +たあい 他愛 名1: +たい 対 代4:接頭1: +たい 体 接尾1:助数2: +たい 帯 接尾1: +たい 隊 接尾1: +たい 鯛 代1: +たい 態 代1: +たい 他意 代1: +たい タイ 地名: +たい 耐 代1: +たい 太 単漢: +たい 碓 単漢: +たい 汰 単漢: +たい 堆 単漢: +たい 岱 単漢: +たい 待 単漢: +たい 怠 単漢: +たい 戴 単漢: +たい 替 単漢: +たい 泰 単漢: +たい 滞 単漢: +たい 胎 単漢: +たい 腿 単漢: +たい 苔 単漢: +たい 袋 単漢: +たい 貸 単漢: +たい 退 単漢: +たい 逮 単漢: +たい 黛 単漢: +たい 台 単漢: +たい 大 単漢: +たい 諦 単漢: +たいあたり 体当り 代4: +たいあっぷ タイアップ 名6: +たいあん 対案 名1: +たいあん 大安 名1: +たいい 体位 名1: +たいい 退位 名6: +たいい 大意 名1: +たいいき 帯域 名1: +たいいく 体育 名1: +たいいくかん 体育館 名1: +たいいん 退院 名7: +たいいん 隊員 名1: +たいえい 大栄 地名: +たいえき 体液 名1: +たいおう 対応 名6: +たいおん 体温 名1: +たいか 退化 名6: +たいか 滞貨 名1: +たいか 大家 名1: +たいかい 大会 名1: +たいかい 退会 名6: +たいかい 大海 名1: +たいかく 体格 名1: +たいかく 対角 名1: +たいかくせん 対角線 名1: +たいかん 耐寒 名1: +たいかん 退官 名6: +たいかんしき 戴冠式 名1: +たいが 大河 名1: +たいがい 体外 名1: +たいがい 対外 名1: +たいがい 大概 代6: +たいがく 退学 名6: +たいがん 対岸 名1: +たいき 待機 名6: +たいき 大気 名1: +たいき 大樹 地名: +たいきゃく 退却 名6: +たいきゅう 耐久 名1: +たいきょ 退去 名6: +たいきょ 大挙 副4: +たいきょく 対局 代4: +たいきょく 大局 名4: +たいきん 大金 名1: +たいぎめいぶん 大義名分 代1: +たいくつ 退屈 名8:サ変: +たいぐう 待遇 名6: +たいぐん 大群 名1: +たいけい 体型 名1: +たいけい 体系 名4: +たいけつ 対決 名6: +たいけん 体験 名6: +たいげん 体言 名1: +たいげん 体現 代4: +たいこ 太古 名1: +たいこ 太鼓 名1: +たいこう 対抗 名6: +たいこう 退行 名6: +たいこう 大公 名1: +たいこう 大綱 名1: +たいこく 大国 名1: +たいさ 大佐 名1: +たいさ 大差 名1: +たいさく 対策 名1: +たいさく 大作 名1: +たいさん 退散 名6: +たいざ 対座 代4: +たいざい 滞在 名6: +たいし 大使 名1: +たいし 大志 名1: +たいし 太子 名1: +たいしかん 大使館 名1: +たいした 大した 連体: +たいしつ 体質 名4: +たいしゃ 退社 名6: +たいしゃ 代謝 名6: +たいしゃ 大社 名1: +たいしゃく 貸借 名6: +たいしゅう 大衆 名4: +たいしゅう 体臭 名1: +たいしゅつ 退出 名6: +たいしょ 対処 代4: +たいしょ 大暑 代1: +たいしょう 対象 名1: +たいしょう 大賞 名1: +たいしょう 大正 名1: +たいしょう 大将 名1: +たいしょう 対照 名6: +たいしょう 対称 名8: +たいしょう 大勝 代4: +たいしょく 退職 名6: +たいしょくきん 退職金 名1: +たいしん 大信 地名: +たいじ 退治 名6: +たいじ 胎児 名1: +たいじ 泰次 名前: +たいじ 太地 地名: +たいじゅ 大樹 名1: +たいじゅう 体重 名1: +たいじょう 退場 名6: +たいじん 対人 名1: +たいすい 耐水 名1: +たいすう 対数 名1: +たいすけ 泰介 名前: +たいせい 体制 名4: +たいせい 体勢 名1: +たいせい 耐性 名1: +たいせい 態勢 名1: +たいせい 大勢 名1: +たいせい 大成 名6: +たいせいよう 大西洋 名1: +たいせき 体積 名1: +たいせき 堆積 名6: +たいせき 退席 名6: +たいせつ 大切 名8: +たいせつ 大雪 名1: +たいせん 対戦 代4: +たいせん 大戦 名1: +たいそう 体操 名6: +たいそう 大層 副1:形動1: +たいそう 大喪 名1: +たいぞう 泰三 名前: +たいだ 怠惰 名8: +たいだん 対談 名6: +たいだん 退団 名6: +たいち 太一 名前: +たいち 対置 名6: +たいちょう 体調 名1: +たいちょう 体長 名1: +たいちょう 隊長 名1: +たいてい 大抵 代5: +たいてき 大敵 名1: +たいでん 帯電 名6: +たいとう 対等 代5: +たいとう 台東 地名: +たいとう 台頭 名6: +たいとく 体得 名6: +たいとる タイトル 名1: +たいど 態度 名1: +たいどう 胎動 代4: +たいない 体内 名1: +たいない 胎内 名1: +たいにち 対日 名1: +たいにち 滞日 名6: +たいにん 退任 名6: +たいにん 大任 名1: +たいねつ 耐熱 名1: +たいのう 滞納 名6: +たいは 大破 名6: +たいはん 大半 名1: +たいばつ 体罰 名1: +たいばん 胎盤 名1: +たいひ 対比 名6: +たいひ 退避 名6: +たいびょう 大病 名6: +たいぴすと タイピスト 名1: +たいふう 台風 名1: +たいぶつ 対物 名1: +たいぷ タイプ 名6: +たいぷらいたー タイプライター 名1: +たいへい 太平 名1: +たいへい 大平 地名: +たいへいよう 太平洋 名1: +たいへん 大変 代5: +たいへん たいへん 代5: +たいべい 対米 名1: +たいべつ 大別 名6: +たいほ 逮捕 名6: +たいほう 大砲 名1: +たいぼう 待望 名7: +たいぼう 耐乏 名1: +たいぼく 大木 名1: +たいま 大麻 名1: +たいま 当麻 地名: +たいま タイマ 名1: +たいまん 怠慢 名8: +たいみんぐ タイミング 名1: +たいむ タイム 名1: +たいむりー タイムリー 名8: +たいめい 岱明 地名: +たいめん 対面 名7: +たいめん 体面 名1: +たいや タイヤ 名1: +たいやく 大役 名1: +たいやく 対訳 名6: +たいゆう 大雄 地名: +たいよ 貸与 名7: +たいよう 太陽 名1: +たいよう 大洋 名1: +たいよう 大要 名1: +たいら 平 地名: +たいら 平ら 形動4:ガ五1: +たいらげ 平らげ 一段1: +たいりく 大陸 名4: +たいりつ 対立 名6: +たいりゃく 大略 代6: +たいりょう 大量 名1: +たいりょく 体力 名1: +たいりん 大輪 名1: +たいる タイル 名1: +たいわ 対話 名6: +たいわ 大和 地名: +たいわん 台湾 地名: +たう 多雨 名1: +たうん タウン 名1: +たえ 耐え 一段2: +たえ 堪え 一段2: +たえ 絶え 一段2: +たえ 妙 代1: +たえこ 妙子 名前: +たえず 絶えず 副1: +たえま 絶え間 代1: +たお 倒 サ五8: +たおやか たおやか 形動4: +たおる タオル 名1: +たおれ 倒れ 一段2: +たか たか ラ五7: +たか 高 代1:形10: +たか 鷹 代1: +たか 多可 地名: +たか 隆 単漢: +たかあき 孝明 名前: +たかあき 隆明 名前: +たかい 他界 代4: +たかい 高井 苗字: +たかいし 高石 苗字: +たかいし 高石 地名: +たかいち 高市 苗字: +たかいち 高市 地名: +たかいど 高井戸 地名: +たかお 孝男 名前: +たかお 孝夫 名前: +たかお 孝雄 名前: +たかお 高尾 苗字: +たかお 高尾 地名: +たかお 隆男 名前: +たかお 隆夫 名前: +たかお 隆雄 名前: +たかおか 高岡 苗字: +たかおか 高岡 地名: +たかおの 高尾野 地名: +たかが たかが 副1: +たかき 高来 地名: +たかぎ 喬木 地名: +たかぎ 高木 苗字: +たかく 高久 名前: +たかく 多角 名4: +たかくけい 多角形 代1: +たかこ 貴子 名前: +たかこ 孝子 名前: +たかさか 高坂 苗字: +たかさき 高崎 苗字: +たかさき 高崎 地名: +たかさご 高砂 地名: +たかさと 高郷 地名: +たかさわ 高沢 苗字: +たかざわ 高沢 苗字: +たかし 高志 名前: +たかし 隆司 名前: +たかし 隆志 名前: +たかし 孝司 名前: +たかし 孝志 名前: +たかし 喬 名前: +たかし 敬 名前: +たかし 孝 名前: +たかし 崇 名前: +たかし 卓 名前: +たかし 隆 名前: +たかしお 高潮 名1: +たかしま 高島 苗字: +たかしま 高島 地名: +たかしま 鷹島 地名: +たかしまだいら 高島平 地名: +たかしみず 高清水 地名: +たかじょう 高城 地名: +たかす 高鷲 地名: +たかす 鷹栖 地名: +たかせ 高瀬 苗字: +たかせ 高瀬 地名: +たかた 高田 苗字: +たかた 高田 地名: +たかだ 高田 苗字: +たかだい 高台 名1: +たかだか 高々 副2: +たかだのばば 高田馬場 地名: +たかちほ 高千穂 地名: +たかっけい 多角形 名1: +たかつ 高津 苗字: +たかつ 高津 地名: +たかつき 高月 地名: +たかつき 高槻 苗字: +たかつき 高槻 地名: +たかとう 高遠 地名: +たかとう 高藤 苗字: +たかとし 孝利 名前: +たかとび 高飛び 代4: +たかとみ 高富 地名: +たかとり 高取 苗字: +たかとり 高取 地名: +たかな 高鳴 ラ五7: +たかなし 高梨 苗字: +たかなべ 高鍋 地名: +たかなみ 高波 苗字:名1: +たかなわ 高輪 地名: +たかね 高値 名8: +たかね 高根 地名: +たかねざわ 高根沢 苗字: +たかねざわ 高根沢 地名: +たかの 高野 苗字: +たかの 高野 地名: +たかのす 鷹巣 地名: +たかのぞみ 高望み 代4: +たかのり 隆則 名前: +たかはぎ 高萩 地名: +たかはし 高橋 苗字: +たかはし 高梁 地名: +たかはた 高畑 苗字: +たかはた 高畠 苗字: +たかはま 高浜 苗字: +たかはま 高浜 地名: +たかはら 高原 苗字: +たかはる 高原 地名: +たかばやし 高林 苗字: +たかふみ 隆文 名前: +たかま 高ま ラ五3: +たかまつ 高松 地名: +たかみ 高見 苗字: +たかみや 高宮 苗字: +たかみや 高宮 地名: +たかむら 高村 苗字: +たかめ 高め 一段3: +たかもと 高本 苗字: +たかもり 高森 苗字: +たかもり 高森 地名: +たかや 高谷 苗字: +たかやす 高安 苗字: +たかやす 高安 地名: +たかやなぎ 高柳 苗字: +たかやま 高山 苗字: +たかやま 高山 地名: +たかゆき 孝幸 名前: +たかゆき 孝行 名前: +たかゆき 孝之 名前: +たかゆき 隆之 名前: +たかよし 孝義 名前: +たから 宝 名2: +たから 財 単漢: +たからか 高らか 形動4: +たからじま 宝島 代1: +たからづか 宝塚 地名: +たからべ 財部 地名: +たからもの 宝物 名1: +たかん 多感 名8: +たが 違 ワ五5: +たが 多賀 苗字: +たが 多賀 地名: +たがい 互い 代1: +たがいちがい 互い違い 代1: +たがく 多額 名8: +たがじょう 多賀城 地名: +たがた 田方 地名: +たがみ 田上 苗字: +たがや 耕 サ五5: +たがわ 田川 苗字: +たがわ 田川 地名: +たき 滝 代1: +たき 瀧 代1: +たき 多岐 代5: +たき 多気 地名: +たき 多紀 地名: +たきかわ 滝川 苗字: +たきかわ 滝川 地名: +たきがわ 滝川 苗字: +たきがわ 滝川 地名: +たきぎ 薪 代1: +たきぐち 滝口 苗字: +たきさわ 滝沢 地名: +たきざわ 滝沢 苗字: +たきざわ 滝沢 地名: +たきしーど タキシード 名1: +たきだし 炊出し 代4: +たきね 滝根 地名: +たきの 滝野 苗字: +たきの 滝野 地名: +たきび 焚火 名1: +たきもと 滝本 苗字: +たく 託 サ五7: +たく 宅 代1: +たく 卓 代1: +たく 多久 地名: +たく 托 単漢: +たく 啄 単漢: +たく 択 単漢: +たく 拓 単漢: +たく 沢 単漢: +たく 濯 単漢: +たく 琢 単漢: +たく 鐸 単漢: +たく 擢 単漢: +たくいつ 択一 名6: +たくえつ 卓越 名6: +たくお 卓雄 名前: +たくさん たくさん 代5: +たくさん 沢山 代5: +たくしー タクシー 名1: +たくしょく 拓殖 代4: +たくじ 託児 代4: +たくじょう 卓上 名1: +たくせつ 卓説 名1: +たくそう 託送 代4: +たくち 宅地 名1: +たくはい 宅配 名6: +たくばつ 卓抜 代5: +たくほん 拓本 名1: +たくぼ 田窪 苗字: +たくま 詫間 地名: +たくまし たくまし 形3: +たくみ 巧み 代5: +たくみ 巧 名前: +たくみ 匠 代1: +たくや 卓也 名前: +たくら 企 マ五7: +たくわえ 蓄え 一段3: +たくわえ 貯え 一段3: +たぐ 手繰 ラ五1: +たぐ タグ 名1: +たぐい 類 代1: +たぐち 田口 苗字: +たけ 竹 代1: +たけ 茸 代1: +たけ 丈 代1: +たけ 他家 名1: +たけ 岳 代1: +たけ たけ 一段1: +たけ 長け 一段1: +たけ 武 単漢: +たけい 武井 苗字: +たけいち 武市 苗字: +たけうち 竹内 苗字: +たけうち 武内 苗字: +たけお 武男 名前: +たけお 武夫 名前: +たけお 武雄 地名: +たけお 武雄 名前: +たけお 竹男 名前: +たけお 竹雄 名前: +たけおか 竹岡 苗字: +たけざわ 竹沢 苗字: +たけし 毅 名前: +たけし 健 名前: +たけし 剛 名前: +たけし 猛 名前: +たけし 武 名前: +たけし 健志 名前: +たけし 武司 名前: +たけし 武史 名前: +たけし 武志 苗字: +たけし 武石 地名: +たけした 竹下 苗字: +たけじ 武治 名前: +たけた 竹田 地名: +たけだ 武田 苗字: +たけだ 竹田 苗字: +たけだ 竹田 地名: +たけとみ 竹富 地名: +たけとよ 武豊 地名: +たけなか 竹中 苗字: +たけなわ たけなわ 代5: +たけの 竹野 苗字: +たけの 竹野 地名: +たけはら 竹原 苗字: +たけはら 竹原 地名: +たけばやし 竹林 名1: +たけばやし 竹林 苗字: +たけひこ 武彦 名前: +たけひさ 武久 名前: +たけふ 武生 地名: +たけべ 建部 苗字: +たけべ 建部 地名: +たけむら 竹村 苗字: +たけもと 竹本 苗字: +たけもり 竹森 苗字: +たけん 他県 名1: +たげい 多芸 名8: +たげん 多元 名4: +たげん 多言 名1: +たこ 凧 代1: +たこ 蛸 代1: +たこ 鮹 代1: +たこ 多古 地名: +たこう 他校 名1: +たこう 多幸 名10: +たこく 他国 名1: +たごん 他言 名6: +たさい 多才 名8: +たさい 多彩 名8: +たさつ 他殺 名1: +たざき 田崎 苗字: +たざわ 田沢 苗字: +たざわこ 田沢湖 地名: +たし 他紙 代1: +たし 他誌 代1: +たしか 確か 副1:形動4: +たしか たしか 副1:形動4: +たしかめ 確かめ 一段4: +たしざん 足し算 名1: +たしざん 足算 名1: +たしつ 多湿 名8: +たしゃ 他社 名1: +たしゃ 他者 名1: +たしゅ 多種 名8: +たしょう 多少 代6: +たしょう 多祥 名3: +たしろ 田代 苗字: +たしろ 田代 地名: +たじ 他事 名1: +たじ 多事 名8: +たじつ 他日 名1: +たじま 田島 苗字: +たじみ 多治見 地名: +たじゅう 多重 名4: +たじょう 多情 名8: +たじり 田尻 苗字: +たじり 田尻 地名: +たすう 多数 名1: +たすうけつ 多数決 名1: +たすか 助か ラ五3: +たすく タスク 代1: +たすけ 助け 一段4: +たすけあ 助け合 ワ五7: +たすけだ 助け出 サ五7: +たずさえ 携え 一段1: +たずさわ 携わ ラ五3: +たずね 尋ね 一段2: +たずね 訪ね 一段2: +たせん 他薦 名6: +たぜい 多勢 名1: +たた たた カ五7:マ五7: +たた 畳 マ五7: +たた 叩 カ五7: +たた 多々 副1: +たたえ 称え 一段1: +たたか 戦 ワ五7: +たたか 闘 ワ五7: +たたみ 畳 代1: +たたみかけ 畳み掛け 一段1: +たたみこ 畳み込 マ五7: +ただ ただ 代6: +ただ 只 代6: +ただ 唯 代6: +ただ 正 サ五5: +ただ 質 サ五5: +ただ 多田 苗字: +ただい 多大 名8: +ただいま ただいま 感動: +ただいま ただ今 代6: +ただいま 只今 代6: +ただお 忠男 名前: +ただお 忠夫 名前: +ただお 忠雄 名前: +ただおか 忠岡 地名: +ただごと 唯事 代1: +ただし ただし 接続: +ただし 正 名前: +ただし 正し 形2: +ただし 但し 接続: +ただし 忠 名前: +ただちに 直ちに 副1: +ただひこ 忠彦 名前: +ただまさ 忠正 名前: +ただみ 只見 地名: +ただよ 漂 ワ五7: +ただよし 忠義 名前: +たち たち 接尾1: +たち 達 接尾1: +たち 質 代1: +たちあ 立ち会 ワ五7: +たちあが 立ち上が ラ五7: +たちあらい 大刀洗 地名: +たちい 立ち入 ラ五3: +たちおくれ 立ち後れ 一段3: +たちかわ 立川 苗字: +たちかわ 立川 地名: +たちき 断ち切 ラ五7: +たちぎえ 立ち消え 代1: +たちぎき 立ち聞き 代4: +たちさ 立ち去 ラ五7: +たちすく 立ちすく マ五7: +たちどころに たちどころに 副1: +たちどま 立ち止ま ラ五7: +たちなお 立ち直 ラ五7: +たちなら 立ち並 バ五7: +たちの 立ち退 カ五7: +たちはだか 立ちはだか ラ五3: +たちば 立場 名2: +たちばな 橘 代1: +たちばな 立花 苗字: +たちばなし 立ち話 代4: +たちまち たちまち 副7: +たちまわ 立ち回 ラ五7: +たちみ 立見 代1: +たちむか 立ち向か ワ五3: +たちよ 立ち寄 ラ五6: +たっ 達 サ変:サ五1: +たっきゅう 卓球 代3: +たっきゅうびん 宅急便 名1: +たっけん 卓見 名3: +たっしゃ 達者 形動6: +たっせい 達成 名6: +たった たった 副7: +たった 立田 地名: +たっち タッチ 代4: +たっての たっての 連体: +たっと 貴 形2:バ五3: +たっと 尊 形2:バ五3: +たっぴつ 達筆 名8: +たっぷり たっぷり 代4:副1: +たつ 辰 代1: +たつ 竜 代1: +たつ 龍 代1: +たつ 達 単漢: +たつお 達男 名前: +たつお 達夫 名前: +たつお 達雄 名前: +たつお 辰男 名前: +たつお 辰夫 名前: +たつお 辰雄 名前: +たつお 竜夫 名前: +たつお 竜雄 名前: +たつこ 田子 地名: +たつごう 竜郷 地名: +たつじ 辰二 名前: +たつじん 達人 名1: +たつの 辰野 地名: +たつの 竜野 苗字: +たつの 竜野 地名: +たつのくち 辰口 地名: +たつのり 達徳 名前: +たつまき 竜巻 名1: +たつみ 巽 苗字: +たつみ 立見 苗字: +たつや 達也 名前: +たつや 辰也 名前: +たつやま 竜山 地名: +たつるはま 田鶴浜 地名: +たつろう 達郎 名前: +たづな 手綱 名1: +たて 縦 代1: +たて 盾 代1: +たて たて 接尾1: +たて 建て 一段4: +たて 立て 一段4: +たて 楯 代1: +たて 館 単漢: +たて 舘 単漢: +たて 竪 単漢: +たていし 建石 苗字: +たていし 立石 苗字: +たていわ 館岩 地名: +たてうり 建売り 名1: +たてかえ 建て替え 一段3: +たてかえ 立て替え 一段3: +たてかえ 立替 名1: +たてかけ 立てかけ 一段1: +たてこ たて込 マ五7: +たてこも 立てこも ラ五3: +たてしな 立科 地名: +たてじま 縦縞 名1: +たてつ 盾突 カ五1: +たてつぼ 建坪 名1: +たてなが 縦長 名8: +たての 館野 苗字: +たてばやし 館林 地名: +たてまえ 建前 代1: +たてまし 建増し 代4: +たてまつ 奉 ラ五3: +たてもの 建物 名1: +たてやま 館山 地名: +たてやま 立山 苗字: +たてやま 立山 地名: +たで 蓼 代1: +たとえ たとえ 一段3: +たとえば たとえば 連体: +たとえば 例えば 連体: +たとみ 田富 地名: +たど たど ラ五5: +たど 多度 地名: +たど 辿 ラ五5: +たどうし 他動詞 代1: +たどころ 田所 苗字: +たどつ 多度津 地名: +たどりつ たどり着 カ五5: +たな 棚 代1: +たな 店 代1: +たなおろし 棚卸し 名6: +たなか 田中 苗字: +たなぐら 棚倉 地名: +たなし 田無 地名: +たなだ 棚田 苗字: +たなばた 七夕 名1: +たなび 棚引 カ五5: +たなべ 田辺 苗字: +たなべ 田辺 地名: +たなん 多難 名8: +たに 谷 代1:苗字: +たにうち 谷内 苗字: +たにがわ 谷川 名1: +たにぐち 谷口 苗字: +たにぐみ 谷汲 地名: +たにま 谷間 代1: +たにもと 谷本 苗字: +たにやま 谷山 苗字: +たにん 他人 名1: +たぬき 狸 代1: +たぬしまる 田主丸 地名: +たぬま 田沼 苗字: +たね 種 代1: +たね 胤 単漢: +たねあかし 種明し 代4: +たねいち 種市 苗字: +たねいち 種市 地名: +たねがしま 種子島 地名: +たねん 多年 名1: +たの 多野 地名: +たの 田野 苗字: +たの 田野 地名: +たの 頼 マ五8: +たのうら 田浦 地名: +たのし 楽し 形5:マ五5: +たのはた 田野畑 地名: +たのみこ 頼み込 マ五7: +たのもし 頼もし 形9: +たはつ 多発 名6: +たはら 田原 苗字: +たば 束 代1: +たばこ タバコ 名2: +たばこ 煙草 名2: +たばた 田端 苗字: +たばた 田端 地名: +たばた 田畑 苗字: +たばね 束ね 一段1: +たばやま 丹波山 地名: +たび たび 代1: +たび 足袋 代1: +たび 度 代1: +たび 旅 代4: +たびかさな 度重な ラ五1: +たびさき 旅先 代1: +たびじ 旅路 代1: +たびたび たびたび 代6: +たびたび 度々 代6: +たびだ 旅立 タ五7: +たびびと 旅人 代1: +たびら 田平 地名: +たふ タフ 名8: +たぶ タブ 名1: +たぶー タブー 名1: +たぶせ 田布施 地名: +たぶん たぶん 代6: +たぶん 多分 代6: +たぶん 他聞 代1: +たべ 食べ 一段2: +たべもの 食べ物 名1: +たべん 多弁 名8: +たほう 他方 代6: +たぼう 多忙 名10: +たま たま ラ五3: +たま 給 ワ五1: +たま 賜 ワ五1: +たま 玉 名2: +たま 球 代1: +たま 珠 代1: +たま 弾 代1: +たま 多摩 地名: +たま 溜 ラ五3: +たま 霊 単漢: +たまい 玉井 苗字: +たまかわ 玉川 地名: +たまがわ 玉川 地名: +たまがわ 田万川 地名: +たまき 玉城 苗字: +たまき 玉木 苗字: +たまぐすく 玉城 地名: +たまご 卵 名1: +たましい 魂 代1: +たまたま たまたま 副8: +たまち 田町 苗字: +たまち 田町 地名: +たまつくり 玉造 地名: +たまづくり 玉造 地名: +たまな 玉名 地名: +たまに たまに 副1: +たまの 玉野 苗字: +たまの 玉野 地名: +たまのうら 玉之浦 地名: +たまのこし 玉の輿 名1: +たまほ 玉穂 地名: +たまむら 玉村 苗字: +たまむら 玉村 地名: +たまもの 賜 名1: +たまやま 玉山 苗字: +たまやま 玉山 地名: +たまゆ 玉湯 地名: +たまり 玉里 地名: +たまり 溜 名1: +たまわ 賜わ ラ五5: +たまわ 賜 ラ五5: +たみお 民男 名前: +たみお 民雄 名前: +たむら 田村 苗字: +たむら 田村 地名: +たむろ 屯 代4: +ため 為 代1: +ため ため 一段3: +ため 溜め 一段4: +ため 貯め 一段2: +ため 矯め 一段1: +ため 試 サ五8: +ためいき ため息 代1: +ためら ためら ワ五3: +ためん 他面 名11: +ためん 多面 名4: +たも 保 タ五8: +たもつ 保 名前: +たや 絶や サ五5: +たやす たやす 形6: +たよ 頼 ラ五7: +たよう 多様 形動4: +たよう 多用 代5:サ変: +たより 便り 名5: +たよりな 頼りな 形3: +たら 垂ら サ五7: +たら 鱈 名1: +たら 太良 地名: +たらぎ 多良木 地名: +たらず 足らず 接尾1: +たらま 多良間 地名: +たらみ 多良見 地名: +たり 足り 一段1: +たりき 他力 名1: +たりょう 多量 名8: +たる 樽 代1: +たるい 垂井 苗字: +たるい 垂井 地名: +たるみ 垂水 地名: +たるみず 垂水 地名: +たれ 垂れ 一段4: +たれさが 垂れ下が ラ五3: +たれんと タレント 名1: +たろう 太郎 名前: +たろう 田老 地名: +たわ たわ マ五7: +たわー タワー 名1: +たわいな たわいな 形1: +たわごと たわごと 代1: +たわごと 戯言 代1: +たわむれ 戯れ 一段4: +たわら 田原 苗字: +たわら 俵 苗字:代1: +たわらもと 田原本 地名: +たん 単 代1: +たん 胆 代1: +たん 短 代1:接頭1: +たん 痰 代1: +たん 端 代1: +たん 反 代1:助数2: +たん 嘆 ザ変: +たん 炭 代1: +たん 丹 代1: +たん 但 単漢: +たん 坦 単漢: +たん 担 単漢: +たん 探 単漢: +たん 旦 単漢: +たん 歎 単漢: +たん 淡 単漢: +たん 湛 単漢: +たん 箪 単漢: +たん 綻 単漢: +たん 耽 単漢: +たん 蛋 単漢: +たん 誕 単漢: +たん 鍛 単漢: +たん 椴 単漢: +たん 譚 単漢: +たんい 単位 名1: +たんいつ 単一 名8: +たんか 単価 名1: +たんか 短歌 名1: +たんかー タンカー 名1: +たんがん 嘆願 名6: +たんき 短期 名4: +たんき 短気 名8: +たんきゅう 探求 名6: +たんきゅう 探究 名6: +たんく タンク 名1: +たんぐすてん タングステン 名1: +たんけん 探検 名6: +たんけん 探険 名6: +たんげん 単元 名1: +たんこう 単行 名1: +たんこう 炭坑 名1: +たんこう 炭鉱 名1: +たんこう 単項 名1: +たんご 単語 名1: +たんご 丹後 地名: +たんさ 探査 名6: +たんさく 探索 名6: +たんさん 炭酸 名1: +たんざにあ タンザニア 地名: +たんし 端子 名1: +たんしゃ 単車 名1: +たんしゅく 短縮 名6: +たんしょ 短所 名1: +たんしょう 探勝 名6: +たんしょう 短小 名8: +たんしん 単身 名1: +たんしん 短針 名1: +たんじかん 短時間 名1: +たんじゅう 短銃 名1: +たんじゅう 胆汁 名1: +たんじゅん 単純 名8: +たんじょう 誕生 名5: +たんじょうび 誕生日 名2: +たんす 箪笥 名1: +たんすい 淡水 名1: +たんすう 単数 名1: +たんせい 丹精 代4: +たんせい 端正 名8: +たんせき 胆石 名1: +たんせん 単線 名1: +たんぜん 丹前 名1: +たんぜん 端然 名11: +たんそ 炭素 名1: +たんそく 嘆息 名6: +たんたい 単体 名1: +たんたん 淡々 形動2: +たんだい 短大 名1: +たんち 探知 名6: +たんちょう 単調 名8: +たんちょう 短調 名1: +たんてい 探偵 名6: +たんてき 端的 形動1: +たんでん 炭田 名1: +たんとう 担当 名7: +たんとう 短刀 名1: +たんとう 但東 地名: +たんとうちょくにゅう 単刀直入 代1: +たんどく 単独 名1: +たんなる 単なる 連体: +たんなん 丹南 地名: +たんにん 担任 代4: +たんねん 丹念 形動4: +たんの 丹野 苗字: +たんの 端野 地名: +たんば 丹波 苗字: +たんば 丹波 地名: +たんばら 丹原 地名: +たんぱ 短波 名1: +たんぱく タンパク 名1: +たんぱく 蛋白 名1: +たんぱく 淡白 名8: +たんぴょう 短評 名1: +たんぴょう 単票 名1: +たんぴん 単品 名1: +たんぶん 短文 名1: +たんぶん 単文 名1: +たんぺん 短編 名1: +たんぺん 短篇 名1: +たんぼ 田んぼ 代1: +たんぼう 探訪 名6: +たんぽ 担保 名1: +たんまつ 端末 名1: +たんもの 反物 名1: +たんらく 短絡 名6: +たんれい 端麗 形動4: +たんれん 鍛錬 名6: +だ だ サ五7:代1: +だ 出 サ五8: +だ 抱 カ五6: +だ 打 代1: +だ 駄 代1: +だ 唾 単漢: +だ 堕 単漢: +だ 妥 単漢: +だ 雫 単漢: +だ 蛇 単漢: +だ 惰 単漢: +だ 柁 単漢: +だ 舵 単漢: +だ 楕 単漢: +だ 陀 単漢: +だ 騨 単漢: +だーく ダーク 名8: +だーす ダース 助数2: +だい 大 接頭5:接尾1: +だい 第 接頭1: +だい 代 接尾1:助数: +だい 台 代1:助数2: +だい 題 代4: +だい 弟 単漢: +だい 内 単漢: +だい 廼 単漢: +だい 醍 単漢: +だいあ ダイア 名1: +だいあぐらむ ダイアグラム 名1: +だいある ダイアル 名6: +だいあろぐ ダイアログ 名1: +だいあん 代案 名1: +だいあん 大安 地名: +だいいち 第一 一括: +だいえい 大栄 名1: +だいえっと ダイエット 名6: +だいおーど ダイオード 名1: +だいおう 大王 地名: +だいおうじょう 大往生 代4: +だいか 代価 代1: +だいかん 大寒 代1: +だいがえ 代替 名1: +だいがく 大学 名1: +だいがくいん 大学院 名1: +だいがくせい 大学生 名1: +だいきぼ 大規模 名8: +だいきゅう 代休 名1: +だいきん 代金 名1: +だいく 大工 代2: +だいけい 台形 名1: +だいこう 代行 名6: +だいこく 大黒 名1: +だいこん 大根 名1: +だいご 大子 地名: +だいごみ 醍醐味 名1: +だいざい 題材 名1: +だいし 台紙 名1: +だいしゃ 台車 名1: +だいしょ 代書 名6: +だいしょう 代償 名6: +だいしょう 大小 名1: +だいじ 大事 名9: +だいじ 題字 名1: +だいじぇすと ダイジェスト 名1: +だいじょうぶ 大丈夫 代5: +だいじん 大臣 名1: +だいすう 代数 名1: +だいすう 台数 名1: +だいず 大豆 名1: +だいせつ 大雪 地名: +だいせん 大山 地名: +だいたい だいたい 代6: +だいたい 大体 代6: +だいたい 代替 代4: +だいたい 大隊 名1: +だいたん 大胆 形動4: +だいだい 橙 代1: +だいだい 代々 代6: +だいち 大地 名1: +だいち 台地 名1: +だいちょう 台帳 名1: +だいちょう 大腸 名1: +だいとう 大東 地名: +だいとうりょう 大統領 名1: +だいどころ 台所 名2: +だいなし 台無し 名8: +だいなみっく ダイナミック 名8: +だいに 第二 一括: +だいにっぽん 大日本 企業: +だいにゅう 代入 名6: +だいのう 大脳 名1: +だいひつ 代筆 名6: +だいひょう 代表 名6: +だいぶ だいぶ 副1: +だいぶつ 大仏 名1: +だいぶぶん 大部分 代6: +だいべん 代弁 名6: +だいべん 大便 名1: +だいほん 台本 名1: +だいみょう 大名 名2: +だいめい 題名 名1: +だいめいし 代名詞 名1: +だいもく 題目 名1: +だいもん 大門 苗字: +だいもん 大門 地名: +だいや ダイヤ 名1: +だいやく 代役 名1: +だいやぐらむ ダイヤグラム 名1: +だいやもんど ダイヤモンド 名1: +だいやる ダイヤル 名6: +だいよう 代用 名6: +だいり 代理 名6: +だいりせき 大理石 名1: +だいりてん 代理店 名1: +だいれくと ダイレクト 名8: +だいわ 大和 苗字: +だいわ 大和 地名: +だう ダウ 名1: +だうん ダウン 名6: +だうんひる ダウンヒル 名1: +だえき 唾液 名1: +だえん 楕円 名1: +だおれ 倒れ 接尾2: +だか 高 接尾2: +だかい 打開 代4: +だから だから 接続: +だが だが 接続: +だきこ 抱き込 マ五7: +だきしめ 抱きしめ 一段1: +だきしめ 抱き締め 一段1: +だきょう 妥協 名6: +だく 諾 サ変: +だく 濁 単漢: +だくおん 濁音 名1: +だくすい 濁水 名1: +だくてん 濁点 名1: +だくりゅう 濁流 名1: +だけ 岳 接尾2: +だけつ 妥結 名6: +だけど だけど 接続: +だけん 打鍵 代4: +だげき 打撃 名1: +だこう 蛇行 名6: +ださく 駄作 名1: +ださん 打算 名6: +だざいふ 太宰府 地名: +だしあ 出し合 ワ五5: +だしいれ 出し入れ 代4: +だしき 出し切 ラ五1: +だしぬ 出し抜 カ五5: +だしもの 出し物 名1: +だしゃ 打者 名1: +だしん 打診 名6: +だせい 惰性 名1: +だせき 打席 名1: +だそく 蛇足 名1: +だだ だだ 代1: +だちん 駄賃 名2: +だっ 脱 サ変: +だっかい 奪回 名6: +だっかい 脱会 名6: +だっきゃく 脱却 名6: +だっきゅう 脱臼 名6: +だっこう 脱稿 名6: +だっし 脱脂 代1: +だっしゅ ダッシュ 代4: +だっしゅう 脱臭 名6: +だっしゅつ 脱出 名6: +だっしょく 脱色 名6: +だっすい 脱水 名6: +だっせん 脱線 名6: +だっそう 脱走 名6: +だったい 脱退 名6: +だっぴ 脱皮 名6: +だつ 奪 単漢: +だつ 脱 単漢: +だつい 脱衣 名1: +だつごく 脱獄 名6: +だつじ 脱字 名1: +だつぜい 脱税 名6: +だつぼう 脱帽 名6: +だつらく 脱落 名6: +だつりゃく 奪略 名6: +だて 伊達 苗字:代5: +だて 伊達 地名: +だてん 打点 助数2: +だでん 打電 名6: +だとう 妥当 名8:サ変: +だとう 打倒 名6: +だとうせい 妥当性 名1: +だに 谷 接尾4: +だは 打破 名6: +だびんぐ ダビング 名6: +だぶつ ダブつ カ五7: +だぶる ダブル 名1: +だぼく 打撲 名6: +だま 黙 ラ五8: +だま だま サ五7: +だみー ダミー 名1: +だむ ダム 名1: +だめ 駄目 代5: +だめ ダメ 代5: +だめーじ ダメージ 名1: +だらく 堕落 名6: +だらけ だらけ 一段1: +だらしな だらしな 形3: +だらす ダラス 地名: +だりょく 惰力 名1: +だる だる 形3: +だれ だれ 一段1: +だれ 誰 代1: +だん 団 接尾1: +だん 談 接尾1: +だん 談 ザ変: +だん 暖 代1: +だん 段 代1:助数: +だん 壇 代1: +だん 弾 ザ変:助数:接尾1: +だん 断 ザ変: +だん 男 単漢: +だん 椴 単漢: +だん 檀 単漢: +だん 騨 単漢: +だん 灘 単漢: +だん 團 単漢: +だんあつ 弾圧 名6: +だんかい 段階 名1:助数: +だんかい 団塊 名1: +だんがい 弾劾 名6: +だんがい 断崖 名1: +だんがん 弾丸 名1: +だんき 暖気 名1: +だんけつ 団結 名6: +だんげん 断言 名6: +だんこ 断固 代6: +だんこう 断交 名6: +だんこう 断行 名6: +だんご 団子 名2: +だんご だんご 名2: +だんごう 談合 名6: +だんし 男子 名1: +だんしゃく 男爵 名1: +だんじ 男児 名1: +だんじき 断食 名6: +だんじて 断じて 副1: +だんじょ 男女 名1: +だんじょう 壇上 名1: +だんす ダンス 代4: +だんせい 男性 名4: +だんせい 弾性 名1: +だんせん 断線 名6: +だんぜつ 断絶 名6: +だんぜん 断然 副1: +だんそう 断層 名1: +だんぞく 断続 名6: +だんたい 団体 名1: +だんだん だんだん 副2: +だんだん 段々 代6: +だんち 団地 名1: +だんちがい 段違い 代5: +だんちょう 団長 名1: +だんてい 断定 名6: +だんとう 暖冬 名1: +だんどり 段取り 代4: +だんな 旦那 代2: +だんねん 断念 名6: +だんぷ ダンプ 名1: +だんぺん 断片 名4: +だんぼう 暖房 名6: +だんめん 断面 名1: +だんゆう 男優 代2: +だんらく 段落 名1: +だんりゅう 暖流 名1: +だんりょく 弾力 名1: +だんろ 暖炉 名1: +だんわ 談話 名6: +ち 散 ラ五6: +ち 地 接尾1: +ち 値 接尾1: +ち 血 代1: +ち 知 代1: +ち 治 サ変:サ五1: +ち 池 代1: +ち 千 単漢: +ち 茅 単漢: +ち 弛 単漢: +ち 恥 単漢: +ち 智 単漢: +ち 痴 単漢: +ち 稚 単漢: +ち 置 単漢: +ち 致 単漢: +ち 蜘 単漢: +ち 遅 単漢: +ち 馳 単漢: +ち 薙 単漢: +ち 魑 単漢: +ちーず チーズ 名1: +ちーふ チーフ 名1: +ちーむ チーム 名1: +ちあき 千秋 苗字: +ちあん 治安 名1: +ちい 地位 名1: +ちいき 地域 名1: +ちいき 値域 名1: +ちいさ 小さ 形10: +ちいさがた 小県 地名: +ちいさな 小さな 連体: +ちぇーん チェーン 名1: +ちぇす チェス 名1: +ちぇっかー チェッカー 名1: +ちぇっく チェック 名6: +ちぇるのぶいり チェルノブイリ 地名: +ちぇんじ チェンジ 名6: +ちえ 知恵 名2: +ちえこ 千恵子 名前: +ちえこ 千枝子 名前: +ちえこ 智恵子 名前: +ちえん 遅延 名6: +ちえん 地縁 名1: +ちか 近 形10: +ちか 誓 ワ五8: +ちか 地下 名1: +ちか 地価 名1: +ちかい 地階 名1: +ちかく 近く 名2: +ちかく 地殻 名1: +ちかく 知覚 名6: +ちかごろ 近頃 代6: +ちかしつ 地下室 名1: +ちかぢか 近々 副7: +ちかづ 近付 カ五8: +ちかてつ 地下鉄 名1: +ちかみち 近道 名6: +ちかよ 近寄 ラ五7: +ちから 力 名2: +ちからぞえ 力添え 代4: +ちからづよ 力強 形3: +ちからもち 力持ち 代1: +ちかん 痴漢 名6: +ちかん 置換 名6: +ちが 違 ワ五3: +ちがいな 違いな 形2: +ちがえ 違え 一段1: +ちがさき 茅ヶ崎 地名: +ちき 知己 名1: +ちきゅう 地球 名4: +ちきん チキン 名1: +ちぎ 契 ラ五7: +ちく 地区 名1: +ちく 竹 単漢: +ちく 築 単漢: +ちく 畜 単漢: +ちく 蓄 単漢: +ちく 筑 単漢: +ちく 逐 単漢: +ちくいち 逐一 副1: +ちくご 筑後 地名: +ちくさ 千種 地名: +ちくさん 畜産 名1: +ちくし 筑紫 苗字: +ちくし 筑紫 地名: +ちくしの 筑紫野 地名: +ちくじ 逐次 副1: +ちくじょう 築上 地名: +ちくじょう 築城 代4: +ちくせき 蓄積 名6: +ちくぜん 筑前 地名: +ちくぞう 築造 名6: +ちくでん 蓄電 名6: +ちくほ 筑穂 地名: +ちくま 筑摩 地名: +ちくら 千倉 地名: +ちぐはぐ ちぐはぐ 形動4: +ちけい 地形 名1: +ちけっと チケット 名1: +ちけん 知見 名1: +ちこく 遅刻 名7: +ちご 稚児 名1: +ちさい 地裁 名1: +ちさと 千里 地名: +ちさと 千里 名前: +ちし 致死 名1: +ちしお 血潮 名1: +ちしき 知識 名1: +ちしつ 地質 名1: +ちじ 知事 代2: +ちじく 地軸 名1: +ちじょう 地上 名1: +ちじょく 恥辱 名1: +ちじん 知人 名1: +ちすい 治水 名6: +ちすじ 血筋 名1: +ちず 地図 名1: +ちず 智頭 地名: +ちせい 知性 名4: +ちせつ 稚拙 代5: +ちそう 地層 名1: +ちそう 馳走 名7: +ちた 知多 地名: +ちたい 地帯 名1: +ちたい 遅滞 名6: +ちだ 千田 苗字: +ちだい 地代 名1: +ちち 父 名1: +ちち 乳 名2: +ちち 遅々 形動2: +ちちおや 父親 代1: +ちちぶ 秩父 苗字: +ちちぶ 秩父 地名: +ちちゅう 地中 名4: +ちちゅうかい 地中海 地名: +ちぢ 縮 マ五7: +ちぢま 縮ま ラ五7: +ちぢわ 千々石 地名: +ちっそ 窒素 名1: +ちっそく 窒息 名6: +ちっとも ちっとも 副1: +ちっぷ チップ 名1: +ちっぷべつ 秩父別 地名: +ちつ 膣 代1: +ちつ 秩 単漢: +ちつ 窒 単漢: +ちつじょ 秩序 名1: +ちづこ 千鶴子 名前: +ちてい 地底 名1: +ちてき 知的 形動4: +ちてん 地点 名1: +ちとせ 千歳 地名: +ちどり 千鳥 代1: +ちな 因 マ五3: +ちな 知名 地名: +ちなつ 千夏 名前: +ちねつ 地熱 名1: +ちねん 知念 苗字: +ちねん 知念 地名: +ちの 茅野 地名: +ちの 千野 苗字: +ちのう 知能 名1: +ちはい 遅配 名6: +ちば 千葉 苗字: +ちば 千葉 地名: +ちばん 地番 名1: +ちひょう 地表 名1: +ちひろ 千尋 名前: +ちぶ 知夫 地名: +ちぶさ 乳房 代1: +ちへい 地平 名1: +ちへん 地変 名1: +ちべっと チベット 地名: +ちほう 地方 名1: +ちほう 痴呆 名1: +ちまた 巷 代1: +ちみつ 緻密 形動4: +ちみもうりょう 魑魅魍魎 名1: +ちめい 地名 名1: +ちめい 致命 名1: +ちめい 知名 代5: +ちゃ 茶 名2: +ちゃーじ チャージ 代4: +ちゃーたー チャーター 代4: +ちゃーと チャート 名1: +ちゃーはん チャーハン 名1: +ちゃーはん 炒飯 名1: +ちゃいな チャイナ 地名: +ちゃき 茶器 名1: +ちゃく 着 代4:助数2: +ちゃく 嫡 単漢: +ちゃくい 着衣 代4: +ちゃくがん 着眼 代4: +ちゃくしゅ 着手 名6: +ちゃくしゅつ 嫡出 名1: +ちゃくしょく 着色 名6: +ちゃくしん 着信 名6: +ちゃくじつ 着実 名8: +ちゃくすい 着水 名6: +ちゃくせき 着席 名6: +ちゃくそう 着想 名6: +ちゃくだつ 着脱 名6: +ちゃくち 着地 名6: +ちゃくちゃく 着々 副8: +ちゃくにん 着任 名6: +ちゃくばらい 着払 名1: +ちゃくもく 着目 名6: +ちゃくよう 着用 名6: +ちゃくりく 着陸 名6: +ちゃたん 北谷 地名: +ちゃっか 着火 名6: +ちゃっかり ちゃっかり 副3: +ちゃっこう 着工 名6: +ちゃねる チャネル 名1: +ちゃのま 茶の間 名2: +ちゃぺる チャペル 名1: +ちゃや 茶屋 名1: +ちゃりてぃ チャリティ 名1: +ちゃれんじ チャレンジ 名6: +ちゃわん 茶碗 名2: +ちゃん ちゃん 接尾1: +ちゃんす チャンス 名1: +ちゃんと ちゃんと 副4: +ちゃんねる チャンネル 名1: +ちゅーなー チューナー 名1: +ちゅーりんぐ チューリング 名1: +ちゅーん チューン 名1: +ちゅう 中 代1:接頭1:接尾9: +ちゅう 宙 代1: +ちゅう 忠 代1: +ちゅう 注 代1: +ちゅう 虫 代1: +ちゅう 沖 サ変: +ちゅう 厨 単漢: +ちゅう 仲 単漢: +ちゅう 抽 単漢: +ちゅう 昼 単漢: +ちゅう 柱 単漢: +ちゅう 衷 単漢: +ちゅう 註 単漢: +ちゅう 丑 単漢: +ちゅう 酎 単漢: +ちゅう 鋳 単漢: +ちゅう 駐 単漢: +ちゅう 紬 単漢: +ちゅう 肘 単漢: +ちゅう 紐 単漢: +ちゅうい 注意 名7: +ちゅういち 忠一 名前: +ちゅういぶか 注意深 形1: +ちゅういほう 注意報 名1: +ちゅうおう 中央 名1: +ちゅうか 中華 名1: +ちゅうか 中和 地名: +ちゅうかい 仲介 名6: +ちゅうかい 注解 名6: +ちゅうかく 中核 名1: +ちゅうかん 中間 名1: +ちゅうがえり 宙返り 代4: +ちゅうがく 中学 名1: +ちゅうがくせい 中学生 名1: +ちゅうがた 中型 名1: +ちゅうがっこう 中学校 名1: +ちゅうき 中期 名1: +ちゅうき 注記 名6: +ちゅうきぼ 中規模 名8: +ちゅうきゅう 中級 名1: +ちゅうきょう 中京 地名: +ちゅうきょり 中距離 名1: +ちゅうきん 忠勤 名1: +ちゅうきんとう 中近東 名1: +ちゅうぎ 忠義 名1: +ちゅうくう 中空 名1: +ちゅうけい 中継 名6: +ちゅうけん 中堅 名1: +ちゅうげん 中元 名2: +ちゅうこ 中古 名1: +ちゅうこく 忠告 名7: +ちゅうごく 中国 地名: +ちゅうごし 中腰 代1: +ちゅうさい 仲裁 名6: +ちゅうざ 中座 名6: +ちゅうざい 駐在 名6: +ちゅうし 中止 名6: +ちゅうし 注視 名6: +ちゅうしゃ 注射 名6: +ちゅうしゃ 駐車 名6: +ちゅうしゃく 注釈 名6: +ちゅうしゃじょう 駐車場 名1: +ちゅうしゅう 仲秋 名1: +ちゅうしゅつ 抽出 名6: +ちゅうしょう 抽象 名6: +ちゅうしょう 中傷 代4: +ちゅうしょう 中小 名1: +ちゅうしょく 昼食 名1: +ちゅうしん 中心 名4: +ちゅうしん 衷心 名1: +ちゅうじ 中耳 名1: +ちゅうじ 忠治 名前: +ちゅうじつ 忠実 名8: +ちゅうじゅん 中旬 名1: +ちゅうすい 注水 名6: +ちゅうすう 中枢 名1: +ちゅうず 中主 地名: +ちゅうせい 忠誠 名1: +ちゅうせい 中性 名4: +ちゅうせい 中世 名1: +ちゅうせいし 中性子 代1: +ちゅうせん 抽選 名6: +ちゅうぜつ 中絶 名6: +ちゅうそつ 中卒 名1: +ちゅうぞう 鋳造 名6: +ちゅうたい 中退 名6: +ちゅうたい 中隊 名1: +ちゅうだん 中断 名6: +ちゅうちょ 躊躇 名6: +ちゅうと 中途 名1: +ちゅうとう 中等 名1: +ちゅうどく 中毒 名6: +ちゅうなん 仲南 地名: +ちゅうなんべい 中南米 名1: +ちゅうにち 駐日 名6: +ちゅうにゅう 注入 名6: +ちゅうねん 中年 名1: +ちゅうふく 中腹 名1: +ちゅうぶ 中部 名1: +ちゅうぶう 中風 名1: +ちゅうべい 中米 名1: +ちゅうぼう 厨房 名1: +ちゅうもく 注目 名6: +ちゅうもん 注文 名7: +ちゅうや 昼夜 代6: +ちゅうりつ 中立 名6: +ちゅうりゃく 中略 名6: +ちゅうりゅう 中流 名1: +ちゅうるい 忠類 地名: +ちゅうわ 中和 名8:サ変: +ちゅにじあ チュニジア 地名: +ちゆ 治癒 名6: +ちょ 緒 代1: +ちょ 著 代1: +ちょ 樗 単漢: +ちょ 瀦 単漢: +ちょ 猪 単漢: +ちょ 苧 単漢: +ちょ 貯 単漢: +ちょ 箸 単漢: +ちょ 儲 単漢: +ちょーく チョーク 名1: +ちょいと ちょいと 副1: +ちょう 超 接頭5: +ちょう 長 接尾1: +ちょう 長 ザ変: +ちょう 帳 接尾1: +ちょう 庁 接尾1: +ちょう 町 接尾4: +ちょう 蝶 代1: +ちょう 腸 代1: +ちょう 朝 代1: +ちょう 調 接尾1: +ちょう 兆 数詞: +ちょう 丁 代1:助数2: +ちょう 鳥 代1: +ちょう 弔 サ変: +ちょう 徴 サ変: +ちょう 寵 サ変: +ちょう 張 単漢: +ちょう 彫 単漢: +ちょう 諜 単漢: +ちょう 跳 単漢: +ちょう 銚 単漢: +ちょう 帖 単漢: +ちょう 懲 単漢: +ちょう 挑 単漢: +ちょう 暢 単漢: +ちょう 眺 単漢: +ちょう 聴 単漢: +ちょう 凋 単漢: +ちょう 喋 単漢: +ちょう 潮 単漢: +ちょう 牒 単漢: +ちょう 脹 単漢: +ちょう 頂 単漢: +ちょう 蔦 単漢: +ちょう 挺 単漢: +ちょう 重 単漢: +ちょう 澄 単漢: +ちょうあい 寵愛 名6: +ちょうい 弔慰 名7: +ちょうい 弔意 名7: +ちょういん 調印 名7: +ちょうえい 町営 名1: +ちょうえき 懲役 名1: +ちょうえつ 超越 名6: +ちょうおんぱ 超音波 名1: +ちょうか 超過 名6: +ちょうかい 懲戒 名6: +ちょうかい 朝会 名1: +ちょうかい 町会 名1: +ちょうかい 鳥海 地名: +ちょうかく 聴覚 名1: +ちょうかん 朝刊 名1: +ちょうかん 長官 名1: +ちょうき 長期 名4: +ちょうきち 長吉 名前: +ちょうきょう 調教 名6: +ちょうきょり 長距離 名1: +ちょうきん 彫金 名1: +ちょうきん 超勤 名1: +ちょうけし 帳消し 代4: +ちょうこう 兆候 名1: +ちょうこう 聴講 名6: +ちょうこうそく 超高速 名8: +ちょうこく 彫刻 名6: +ちょうごう 調合 名6: +ちょうさ 調査 名7: +ちょうし 調子 名1: +ちょうし 銚子 地名: +ちょうしゃ 庁舎 名1: +ちょうしゅう 徴収 名6: +ちょうしゅう 聴衆 名1: +ちょうしょ 調書 名1: +ちょうしょ 長所 名1: +ちょうしょく 朝食 名1: +ちょうしん 長身 名1: +ちょうじ 弔辞 名1: +ちょうじかん 長時間 名1: +ちょうじゃ 長者 名1: +ちょうじゅ 長寿 名1: +ちょうじょ 長女 名1: +ちょうじょう 頂上 代1: +ちょうじょう 重畳 代4: +ちょうじり 帳尻 代1: +ちょうじん 超人 名4: +ちょうせい 調整 名6: +ちょうせい 調製 名6: +ちょうせい 長生 地名: +ちょうせつ 調節 名6: +ちょうせん 挑戦 名6: +ちょうせん 朝鮮 地名: +ちょうぜん 超然 形動2: +ちょうたつ 調達 名6: +ちょうたん 長短 名1: +ちょうだい 頂戴 代4: +ちょうちょう 町長 代2: +ちょうちょう 蝶々 名1: +ちょうちょう 長調 名1: +ちょうてい 朝廷 名1: +ちょうてい 調停 名6: +ちょうてん 頂点 名1: +ちょうでん 弔電 名1: +ちょうでんどう 超電導 名1: +ちょうど ちょうど 副1: +ちょうど 丁度 副1: +ちょうど 調度 名1: +ちょうない 町内 名1: +ちょうなん 長男 名3: +ちょうなん 長南 苗字: +ちょうなん 長南 地名: +ちょうは 長波 名1: +ちょうはつ 挑発 名6: +ちょうば 帳場 名1: +ちょうばつ 懲罰 名6: +ちょうひょう 帳票 名1: +ちょうふ 調布 地名: +ちょうふく 重複 名6: +ちょうぶつ 長物 名1: +ちょうぶん 長文 名1: +ちょうへい 徴兵 名6: +ちょうへん 長編 名1: +ちょうほう 重宝 名8:サ変: +ちょうほうけい 長方形 名1: +ちょうぼ 帳簿 名1: +ちょうみ 調味 名1: +ちょうみりょう 調味料 代1: +ちょうみん 町民 名1: +ちょうめ 丁目 助数2: +ちょうもん 弔問 名6: +ちょうり 調理 名6: +ちょうりつ 町立 名1: +ちょうりつ 調律 名6: +ちょうりゅう 潮流 名1: +ちょうりょく 張力 名1: +ちょうりょく 聴力 名1: +ちょうれい 朝礼 名1: +ちょうれいぼかい 朝令暮改 代4: +ちょうろう 長老 名1: +ちょうわ 調和 名6: +ちょきん 貯金 名6: +ちょく 直 代5: +ちょく 勅 代1: +ちょく 捗 単漢: +ちょくえい 直営 名6: +ちょくげき 直撃 名6: +ちょくご 直後 代6: +ちょくし 直視 名6: +ちょくしゃ 直射 名6: +ちょくしん 直進 名6: +ちょくせつ 直接 名8: +ちょくせん 直線 名4: +ちょくぜん 直前 代6: +ちょくそう 直送 名6: +ちょくぞく 直属 名6: +ちょくちょく ちょくちょく 副8: +ちょくつう 直通 名6: +ちょくはん 直販 名6: +ちょくばい 直売 名6: +ちょくほうたい 直方体 名1: +ちょくめん 直面 名6: +ちょくやく 直訳 名6: +ちょくりつ 直立 名6: +ちょくりゅう 直流 名6: +ちょくれつ 直列 名1: +ちょこ チョコ 名1: +ちょこ 猪口 名2: +ちょこれーと チョコレート 名1: +ちょさく 著作 名6: +ちょしゃ 著者 名1: +ちょしょ 著書 名1: +ちょじゅつ 著述 名6: +ちょぞう 貯蔵 名6: +ちょちく 貯蓄 名6: +ちょっか 直下 名6: +ちょっかく 直角 名1: +ちょっかつ 直轄 名6: +ちょっかん 直感 名6: +ちょっかん 直観 名6: +ちょっけい 直径 名1: +ちょっけい 直系 名1: +ちょっけつ 直結 名6: +ちょっこう 直行 名6: +ちょっこう 直交 名6: +ちょっと ちょっと 代6: +ちょっぴり ちょっぴり 副1: +ちょめい 著名 形動4: +ちよ 千代 名前: +ちよかわ 千代川 地名: +ちよこ 千代子 名前: +ちよだ 千代田 地名: +ちらか 散らか サ五7:ラ五1: +ちらし チラシ 代1: +ちらつ ちらつ カ五7: +ちらば 散らば ラ五3: +ちらり ちらり 副1: +ちらりと ちらりと 副6: +ちらん 知覧 地名: +ちり 地理 名1: +ちり 塵 名1: +ちり チリ 地名: +ちりばめ 散りばめ 一段1: +ちりゅう 知立 地名: +ちりょう 治療 名6: +ちわ 痴話 名1: +ちん 珍 接頭1:代1: +ちん 賃 接尾1: +ちん 朕 代1: +ちん 鎮 代1: +ちん 陳 ザ変: +ちん 砧 単漢: +ちん 沈 単漢: +ちん 椿 単漢: +ちんあげ 賃上げ 名6: +ちんあつ 鎮圧 名6: +ちんか 沈下 名6: +ちんか 鎮火 名6: +ちんきゃく 珍客 名1: +ちんぎん 賃金 名1: +ちんこう 沈降 名6: +ちんさげ 賃下げ 名6: +ちんざ 鎮座 代4: +ちんしゃ 陳謝 名6: +ちんしゃく 賃借 名6: +ちんじゅ 鎮守 名1: +ちんじゅつ 陳述 名6: +ちんじょう 陳情 名6: +ちんせい 鎮静 名6: +ちんぜい 鎮西 地名: +ちんたい 沈滞 名6: +ちんたい 賃貸 名6: +ちんちょう 珍重 名6: +ちんつう 鎮痛 名1: +ちんでん 沈殿 名6: +ちんぼつ 沈没 名6: +ちんみ 珍味 名1: +ちんもく 沈黙 名6: +ちんれつ 陳列 名6: +つ つ 助数2:カ五2:ラ五3: +つ 継 ガ五7: +つ 次 ガ五1: +つ 接 ガ五3: +つ 注 ガ五1: +つ 付 カ五3: +つ 着 カ五2: +つ 就 カ五7: +つ 突 カ五7: +つ 積 マ五7: +つ 摘 マ五7: +つ 釣 ラ五4: +つ 吊 ラ五4: +つ 津 地名: +つ 都 単漢: +つーりすと ツーリスト 名1: +つーりんぐ ツーリング 名1: +つーる ツール 名1: +つあー ツアー 名1: +つい つい 副1: +つい 対 代1: +つい 墜 単漢: +つい 堆 単漢: +つい 椎 単漢: +つい 槌 単漢: +つい 追 単漢: +つい 鎚 単漢: +ついおく 追憶 名6: +ついか 追加 名6: +ついき 追記 名6: +ついき 築城 地名: +ついきゅう 追及 名6: +ついきゅう 追求 名6: +ついきゅう 追究 名6: +ついげき 追撃 名6: +ついし 追試 名6: +ついしけん 追試験 名1: +ついしん 追伸 名6: +ついじゅう 追従 名6: +ついずい 追随 名6: +ついせき 追跡 名6: +ついそ 追訴 名6: +ついたち 一日 代6: +ついちょう 追徴 名6: +ついで ついで 名1: +ついとう 追悼 名6: +ついとつ 追突 名6: +ついに 遂に 副1: +ついにん 追認 名6: +ついば 啄 マ五7: +ついほう 追放 名6: +ついや 費や サ五5: +ついらく 墜落 名6: +ついろく 追録 名6: +ついん ツイン 名1: +つう 痛 接尾1: +つう 通 接尾1:助数2: +つう 通 ザ変: +つういん 通院 名6: +つうえん 通園 名6: +つうか 通過 名6: +つうか 通貨 名1: +つうかい 痛快 名8: +つうかん 痛感 名6: +つうかん 通関 名6: +つうがく 通学 名6: +つうき 通気 名1: +つうきん 通勤 名6: +つうこう 通行 名6: +つうこく 通告 名6: +つうこん 痛恨 名6: +つうさん 通算 名6: +つうさん 通産 名1: +つうさんしょう 通産省 名1: +つうしょう 通商 名6: +つうしょう 通称 名1: +つうしん 通信 名6: +つうじょう 通常 名1: +つうせつ 通説 名6: +つうせつ 痛切 名8: +つうぞく 通俗 名8: +つうたつ 通達 名6: +つうち 通知 名7: +つうちょう 通帳 名1: +つうどく 通読 名6: +つうねん 通念 名1: +つうふう 通風 名6: +つうほう 通報 名7: +つうやく 通訳 名6: +つうよう 通用 名6: +つうれい 通例 代6: +つうれつ 痛烈 名8: +つうろ 通路 名1: +つうわ 通話 名6: +つえ 杖 代1: +つか 使 ワ五8: +つか 遣 ワ五8: +つか 掴 マ五7: +つか 浸か ラ五5: +つか 漬か ラ五5: +つか 塚 代1: +つか 束 単漢: +つかいこ 使い込 マ五7: +つかいこな 使いこな サ五7: +つかいわけ 使い分け 一段3: +つかえ 仕え 一段1: +つかぐち 塚口 苗字: +つかこし 塚越 苗字: +つかごし 塚越 苗字: +つかさ 司 代1: +つかさど 司 ラ五5: +つかだ 塚田 苗字: +つかはら 塚原 苗字: +つかま 捕ま ラ五2: +つかまえ 捕まえ 一段2: +つかみあ つかみ合 ワ五7: +つかもと 塚本 苗字: +つかれ 疲れ 一段4: +つが 栂 代1: +つが 都賀 地名: +つがる 津軽 地名: +つがわ 津川 苗字: +つき 月 代1: +つき 尽き 一段3: +つき つき 一段1: +つき 槻 単漢: +つきあ 付き合 ワ五8: +つきあげ 突き上げ 一段3: +つきあわせ 突き合わせ 一段1: +つきがけ 月掛け 代1: +つきがせ 月ヶ瀬 地名: +つきがた 月形 地名: +つきぎめ 月極め 名1: +つきさ 突き刺 サ五7: +つきじ 築地 地名: +つきそ 付き添 ワ五7: +つきそい 付添い 名1: +つきそい 付添 名1: +つきたて 月舘 地名: +つきだ 突き出 サ五7: +つきだて 築館 地名: +つきつけ 突き付け 一段3: +つきつめ 突き詰め 一段1: +つきづき 月々 代6: +つきとめ 突き止め 一段1: +つきはな 突き放 サ五5: +つきばらい 月払い 名1: +つきひ 月日 代1: +つきべつ 月別 名1: +つきまと 付きまと ワ五1: +つきよ 月夜 名1: +つきよの 月夜野 地名: +つぎ 次 代1: +つぎお 次男 名前: +つぎこ つぎこ マ五7: +つぎた 継ぎ足 サ五7: +つぎつぎ 次々 副2: +つぎめ 継目 代1: +つく 尽く サ五6: +つく 作 ラ五8: +つく 造 ラ五8: +つく 創 ラ五8: +つくい 津久井 地名: +つくいこ 津久井湖 地名: +つくえ 机 代1: +つくし 筑紫 名1: +つくだ 佃 単漢: +つくづく つくづく 副2: +つくで 作手 地名: +つくば 筑波 地名: +つくば つくば 地名: +つくぼ 都窪 地名: +つくみ 津久見 地名: +つくり 旁 単漢: +つくりあげ 作り上げ 一段3: +つくりあげ 造り上げ 一段3: +つくりかた 作り方 代1: +つくりだ 作り出 サ五5: +つくろ 繕 ワ五5: +つぐ 津具 地名: +つぐな 償 ワ五7: +つけ 付け 一段4: +つけ つけ 一段1: +つけ 漬け 一段3: +つけくわえ 付け加え 一段3: +つけこ 付け込 マ五7: +つけた 付け足 サ五7: +つけち 付知 地名: +つけねら 付け狙 ワ五1: +つけもの 漬物 名2: +つげ 告げ 一段2: +つげ 都祁 地名: +つげ 柘 単漢: +つごう 都合 名7: +つしま 対馬 地名: +つしま 津島 苗字: +つしま 津島 地名: +つじ 辻 苗字:代1: +つじい 辻井 苗字: +つじつま つじつま 代1: +つじつま 辻褄 代1: +つじの 辻野 苗字: +つた 蔦 名1: +つた 蔦 地名: +つたえ 伝え 一段2: +つたな 拙 形2: +つたわ 伝わ ラ五3: +つだ 津田 苗字: +つだぬま 津田沼 地名: +つち 土 代1: +つち 槌 代1: +つち 鎚 代1: +つち 椎 単漢: +つち 壌 単漢: +つちうら 土浦 地名: +つちか 培 ワ五1: +つちだ 土田 苗字: +つちのえ 戊 代1: +つちや 土屋 苗字: +つちやま 土山 地名: +つっかえ 突っ返 サ五5: +つっかか 突っかか ラ五3: +つっこ 突っ込 マ五7: +つっつ 突っつ カ五7: +つっぱ 突っ張 ラ五7: +つっぱし つっ走 ラ五7: +つつ 筒 代1: +つつ 包 マ五8: +つつい 筒井 苗字: +つつが 筒賀 地名: +つつがな つつがな 形2: +つつし 謹 マ五7: +つつし 慎 マ五7: +つつしんで 謹んで 副1: +つつみ 堤 代1: +つつみ 包 代1: +つつみこ 包み込 マ五7: +つづ つづ ラ五7: +つづ 続 カ五4: +つづ 綴 ラ五7: +つづき 綴喜 地名: +つづき 都築 苗字: +つづけ 続け 一段2: +つづみ 鼓 代1: +つとに つとに 副1: +つとま 勤ま ラ五2: +つとむ 努 名前: +つとむ 勉 名前: +つとむ 務 名前: +つとむ 力 名前: +つとむ 勤 名前: +つとめ 努め 一段4: +つとめ 勤め 一段4: +つとめ 務め 一段4: +つとめ 勉め 一段3: +つとめさき 勤め先 代1: +つど 集 ワ五7: +つど 都度 名1: +つな つな ガ五4: +つな 繋 ガ五4: +つな 綱 名1: +つな 津名 地名: +つなが つなが ラ五3: +つなが 繋が ラ五3: +つなぎ 津奈木 地名: +つなげ 繋げ 一段1: +つなしま 綱島 地名: +つなみ 津波 名1: +つなん 津南 地名: +つね つね ラ五3: +つね 常 代1: +つね 恒 単漢: +つねあき 常明 名前: +つねお 恒男 名前: +つねお 恒夫 名前: +つねお 恒雄 名前: +つねお 常男 名前: +つねお 常夫 名前: +つねお 常雄 名前: +つねずみ 常澄 地名: +つねづね 常々 副1: +つの 角 名1: +つの 都濃 地名: +つの 都農 地名: +つの つの ラ五7: +つの 募 ラ五7: +つのだ 角田 苗字: +つば 唾 代1: +つば 鍔 代1: +つばき 椿 代1: +つばさ 翼 代1: +つばた 津幡 地名: +つばめ 燕 代1: +つぶ つぶ サ五7:ラ五7: +つぶ 潰 サ五8: +つぶ 粒 代1:助数2: +つぶや つぶや カ五7: +つぶれ 潰れ 一段2: +つべつ 津別 地名: +つぼ 坪 代1:助数2: +つぼ 壷 代1: +つぼい 坪井 苗字: +つぼすう 坪数 名1: +つぼた 坪田 苗字: +つま つま マ五8:ラ五1: +つま 摘 マ五7: +つま 詰ま ラ五1: +つま 妻 代1: +つま 都万 地名: +つま 嬬 単漢: +つまごい 嬬恋 地名: +つまさき 爪先 名1: +つまず つまず カ五7: +つまみだ つまみ出 サ五7: +つまらな つまらな 形5: +つまり つまり 代6: +つみ 罪 名8: +つみあげ 積み上げ 一段3: +つみかえ 積み替え 一段3: +つみかさな 積み重な ラ五3: +つみかさね 積み重ね 一段3: +つみき 積木 名1: +つみこ 積み込 マ五7: +つみたて 積み立て 一段3: +つみたて 積立て 名1: +つみだ 積み出 サ五7: +つみに 積荷 名1: +つみのこ 積み残 サ五7: +つみほろぼし 罪滅ぼし 代1: +つむ 紡 ガ五3: +つむぎ 紬 代1: +つむら 津村 苗字: +つめ 詰め 一段4: +つめ つめ 一段4: +つめ 爪 代1: +つめあわせ 詰合わせ 一段3: +つめかえ 詰め替え 一段3: +つめかけ 詰めかけ 一段1: +つめこ 詰め込 マ五7: +つめしょ 詰所 名1: +つめた 冷た 形7: +つも 積も ラ五7: +つもり つもり 代1: +つや 艶 代1: +つや 通夜 名2: +つやざき 津屋崎 地名: +つやま 津山 苗字: +つやま 津山 地名: +つゆ 梅雨 代1: +つゆ 露 代1: +つよ 強 形10: +つよき 強気 代5: +つよし 毅 名前: +つよし 強 名前: +つよし 剛 名前: +つよま 強ま ラ五3: +つよめ 強め 一段3: +つら つら 形9: +つら 辛 形9: +つら 面 代1: +つらな 連な ラ五3: +つらぬ 貫 カ五7: +つらぬきとお 貫き通 サ五1: +つらね 連ね 一段1: +つり 釣 代1: +つりー ツリー 名1: +つりあ 釣り合 ワ五7: +つりあが つり上が ラ五3: +つりあげ つり上げ 一段3: +つる 鶴 名1: +つる 蔓 名1: +つる 吊 サ五7: +つる 都留 地名: +つるい 鶴居 地名: +つるおか 鶴岡 苗字: +つるおか 鶴岡 地名: +つるが 敦賀 地名: +つるがしま 鶴ヶ島 地名: +つるぎ 剣 代1: +つるぎ 鶴来 地名: +つるた 鶴田 苗字: +つるだ 鶴田 地名: +つるはし 鶴橋 地名: +つるみ 鶴見 地名: +つれ つれ 一段2: +つれ 連れ 一段4: +つれこ 連れ込 マ五7: +つれそ 連れ添 ワ五3: +つれだ 連れ出 サ五7: +つわの 津和野 地名: +つんぼ 聾 名1: +づかい 使い 接尾2: +づくえ 机 接尾2: +づくり 作り 接尾2: +づけ 付 接尾2: +づけ 漬け 接尾2: +づめ 詰め 接尾2: +づら づら 接尾5: +て 手 名2: +て 手 助数: +て 照 ラ五7: +てーぶる テーブル 名1: +てーぷ テープ 名1: +てーま テーマ 名1: +てあし 手足 代1: +てあつ 手厚 形2: +てあて 手当 名6: +てあら 手荒 形動4: +てあらい 手洗い 名2: +てぃー ティー 名1: +てぃっしゅ ティッシュ 名1: +てい 低 接頭5: +てい 邸 接尾1: +てい 艇 接尾1: +てい 体 代1: +てい 亭 代1: +てい 鼎 代1: +てい 底 代1: +てい 丁 代1: +てい 庭 代1: +てい 呈 代4:サ五1: +てい 訂 サ変: +てい 堤 代1: +てい 停 単漢: +てい 偵 単漢: +てい 剃 単漢: +てい 貞 単漢: +てい 綴 単漢: +てい 鵜 単漢: +てい 定 単漢: +てい 帝 単漢: +てい 廷 単漢: +てい 弟 単漢: +てい 悌 単漢: +てい 抵 単漢: +てい 挺 単漢: +てい 提 単漢: +てい 梯 単漢: +てい 汀 単漢: +てい 碇 単漢: +てい 禎 単漢: +てい 程 単漢: +てい 締 単漢: +てい 諦 単漢: +てい 蹄 単漢: +てい 逓 単漢: +てい 鄭 単漢: +てい 釘 単漢: +てい 薙 単漢: +ていあん 提案 名7: +ていいん 定員 名1: +ていえん 庭園 名1: +ていおう 帝王 名1: +ていおん 低温 名1: +ていおん 低音 名1: +ていか 低下 名6: +ていか 定価 名1: +ていかん 定款 名1: +ていがく 低額 名1: +ていがく 定額 名1: +ていがくねん 低学年 名1: +ていき 定期 名4: +ていき 提起 代4: +ていきあつ 低気圧 名1: +ていきゅう 低級 名8: +ていきゅうび 定休日 名1: +ていきょう 提供 名7: +ていぎ 定義 名6: +ていくう 低空 名1: +ていけい 提携 名6: +ていけい 定型 名1: +ていけつ 締結 名6: +ていげん 提言 名6: +ていげん 低減 名6: +ていこ 貞子 名前: +ていこう 抵抗 名6: +ていこく 定刻 名1: +ていこく 帝国 名1: +ていさい 体裁 名2: +ていさつ 偵察 名6: +ていし 停止 名6: +ていしき 定式 名4: +ていしつ 低湿 名8: +ていしゃ 停車 名6: +ていしゅ 亭主 名1: +ていしゅく 貞淑 名8: +ていしゅつ 提出 名7: +ていしょう 提唱 名6: +ていしょく 定職 名1: +ていしょく 定食 名1: +ていしょく 抵触 名6: +ていじ 提示 名6: +ていじ 呈示 名6: +ていじ 定時 名1: +ていじ 貞治 名前: +ていじせい 定時制 名1: +ていじゅう 定住 名6: +ていじょう 定常 名8: +ていすう 定数 名1: +ていせい 訂正 名7: +ていせい 定性 名1: +ていせつ 定説 名1: +ていせん 停戦 名6: +ていそ 提訴 名6: +ていそう 貞操 名1: +ていそく 低速 名1: +ていぞく 低俗 名8: +ていたい 停滞 名6: +ていたく 邸宅 名3: +ていち 定置 名6: +ていち 低地 名1: +ていちゃく 定着 名6: +ていちょう 低調 名8: +ていちょう 丁重 名10: +ていてん 定点 名1: +ていでん 停電 名6: +ていとう 抵当 名1: +ていど 程度 名1: +ていね 手稲 地名: +ていね テイネ 地名: +ていねい 丁寧 名10: +ていねん 定年 名1: +ていのう 低能 名8: +ていはく 停泊 名6: +ていひょう 定評 名1: +ていへん 底辺 名1: +ていぼう 堤防 名1: +ていめい 低迷 名6: +ていめん 底面 名1: +ていらく 低落 名6: +ていり 低利 名8: +ていり 定理 名1: +ていりつ 低率 名8: +ていりゅう 停留 名1: +ていりゅう 底流 名1: +ていりょう 定量 名4: +ていれ 手入れ 代4: +ていれい 定例 名1: +てうす 手薄 名8: +ておくれ 手遅れ 代1: +ておち 手落ち 代1: +てかげん 手加減 代4: +てがかり 手がかり 代1: +てがき 手書き 代4: +てがけ 手掛け 一段1: +てがた 手形 名1: +てがた 手堅 形3: +てがみ 手紙 名1: +てがら 手柄 名2: +てがる 手軽 名9: +てき 適 サ変:サ五1: +てき 敵 代4: +てき 滴 助数2: +てき 的 接尾6: +てき 笛 単漢: +てき 鏑 単漢: +てき 嫡 単漢: +てき 摘 単漢: +てき 擢 単漢: +てきい 敵意 名1: +てきおう 適応 名6: +てきかく 的確 名8: +てきかく 適格 名8: +てきぎ 適宜 形動1: +てきごう 適合 名6: +てきさす テキサス 地名: +てきざい 適材 名1: +てきし 敵視 名6: +てきしゅつ 摘出 名6: +てきじ 適時 名11: +てきすと テキスト 名1: +てきせい 適正 名8: +てきせい 適性 名1: +てきせつ 適切 名8: +てきたい 敵対 名6: +てきち 適地 名1: +てきちゅう 的中 名6: +てきとう 適当 名8:サ変: +てきど 適度 名8: +てきにん 適任 名8: +てきはつ 摘発 名6: +てきぱき てきぱき 副3: +てきひ 適否 名1: +てきびし 手厳し 形2: +てきほう 適法 名8: +てきやく 適役 名1: +てきよう 摘要 名1: +てきよう 適用 名6: +てきりょう 適量 名1: +てきれい 適齢 名1: +てきれいき 適齢期 名1: +てぎわ 手際 代1: +てくにかる テクニカル 名8: +てくにっく テクニック 名1: +てくの テクノ 名1: +てくのろじー テクノロジー 名1: +てくび 手首 代1: +てぐすね てぐすね 名1: +てぐち 手口 代1: +てこ 梃 代1: +てごろ 手ごろ 形動7: +てごろ 手頃 形動7: +てごわ 手強 形3: +てさき 手先 代1: +てざわり 手触り 代1: +てしお 天塩 地名: +てしかが 弟子屈 地名: +てした 手下 代1: +てじな 手品 代1: +てじま 手島 苗字: +てじゅん 手順 名1: +てじょう 手錠 名1: +てすう 手数 名2: +てすと テスト 名6: +てすり てすり 代1: +てぜま 手狭 代5: +てだすけ 手助け 代4: +てだて 手立て 代1: +てちがい 手違い 代1: +てちょう 手帳 名1: +てぢか 手近 名9: +てっ 徹 サ変:サ五1: +てっかい 撤回 名6: +てっかん 鉄管 名1: +てっきょ 撤去 名6: +てっきょう 鉄橋 名1: +てっきり てっきり 副2: +てっきん 鉄筋 名1: +てっこう 鉄工 名1: +てっこう 鉄鉱 名1: +てっこう 鉄鋼 名1: +てっこつ 鉄骨 名1: +てっしゅう 撤収 名6: +てっせい 哲西 地名: +てっせい 鉄製 名1: +てっせん 鉄線 名1: +てっそく 鉄則 名1: +てったい 撤退 名6: +てってい 徹底 名6: +てっとう 鉄塔 名1: +てっとりばや 手っ取り早 形2: +てっぱい 撤廃 名6: +てっぱん 鉄板 名1: +てっぺい 撤兵 名6: +てっぽう 鉄砲 名1: +てつ 鉄 代1: +てつ 轍 代1: +てつ 綴 単漢: +てつ 哲 単漢: +てつ 徹 単漢: +てつ 撤 単漢: +てつ 迭 単漢: +てつ 姪 単漢: +てつお 哲男 名前: +てつお 哲夫 名前: +てつお 哲雄 名前: +てつお 鉄男 名前: +てつお 鉄夫 名前: +てつお 鉄雄 名前: +てつがく 哲学 名4: +てつけきん 手付金 名1: +てつこ 徹子 名前: +てつごうし 鉄格子 名1: +てつざい 鉄材 名1: +てつた 哲多 地名: +てつだ 手伝 ワ五8: +てつづき 手続き 名6: +てつどう 鉄道 名1: +てつや 哲也 名前: +てつや 徹夜 名6: +てつろう 哲郎 名前: +てづか 手塚 苗字: +てづくり 手作り 代4: +てづま 手詰ま ラ五3: +てどり 手取り 代1: +てなおし 手直し 代4: +てにす テニス 代4: +てぬき 手抜き 代4: +てぬぐい 手ぬぐい 名1: +てのひら 手の平 代1: +てはい 手配 名6: +てはじめ 手始め 代1: +てばな 手放 サ五7: +てびき 手引 名6: +てぶくろ 手袋 代1: +てべんとう 手弁当 代1: +てほん 手本 名2: +てま 手間 代1: +てまえ 手前 名2: +てまど 手間取 ラ五3: +てまわし 手回し 代4: +てみじか 手短 形動4: +てむか 手向か ワ五3: +てもと 手元 名2: +てら てら ワ五1: +てら 寺 名2: +てら 衒 単漢: +てらい 寺井 苗字: +てらうち 寺内 苗字: +てらお 寺尾 苗字: +てらおか 寺岡 苗字: +てらさか 寺坂 苗字: +てらさき 寺崎 苗字: +てらさわ 寺沢 苗字: +てらしま 寺島 苗字: +てらしま 寺島 地名: +てらだ 寺田 苗字: +てらだ 寺田 地名: +てらどまり 寺泊 地名: +てらもと 寺本 苗字: +てらやま 寺山 苗字: +てりつけ 照りつけ 一段3: +てる 輝 名前: +てる 照 単漢: +てるお 輝男 名前: +てるお 輝夫 名前: +てるお 輝雄 名前: +てるお 照男 名前: +てるお 照夫 名前: +てるお 照雄 名前: +てるこ 輝子 名前: +てるこ 照子 名前: +てるみ 照美 名前: +てれ 照れ 一段3: +てれっくす テレックス 名1: +てれぱしー テレパシー 名1: +てれび テレビ 名1: +てれびきょく テレビ局 名1: +てれびじょん テレビジョン 名1: +てわけ 手分け 代4: +てわた 手渡 サ五7: +てん 点 代1:助数2:ザ変: +てん 天 代1: +てん 転 代1:ザ変: +てん 典 代1: +てん 店 接尾1: +てん 店 助数2: +てん 展 接尾1: +てん ・ 代1: +てん 添 単漢: +てん 纏 単漢: +てん 辿 単漢: +てん 甜 単漢: +てん 填 単漢: +てん 貼 単漢: +てん 顛 単漢: +てん 殿 単漢: +てん 槙 単漢: +てんい 転移 名6: +てんいむほう 天衣無縫 代5: +てんいん 店員 代2: +てんえい 天栄 地名: +てんか 天下 名1: +てんか 添加 名6: +てんか 転化 名6: +てんか 転嫁 名6: +てんか 点火 名6: +てんかい 展開 名6: +てんかい 転回 名6: +てんかん 転換 名6: +てんき 天気 名2: +てんき 転機 名1: +てんき 転記 名6: +てんきー テンキー 名1: +てんきょ 転居 名6: +てんきん 転勤 名6: +てんぎょう 転業 名6: +てんぐ 天狗 代1: +てんけい 典型 名4: +てんけん 点検 名6: +てんこ 点呼 名6: +てんこう 天候 名1: +てんこう 転向 名6: +てんこう 転校 名6: +てんごく 天国 名1: +てんさい 天才 名1: +てんさい 天災 名1: +てんさい 転載 代4: +てんさく 添削 名6: +てんざい 点在 名6: +てんし 天使 名1: +てんしゃ 転写 名6: +てんしゅ 店主 名1: +てんしゅつ 転出 名6: +てんしょ 添書 名6: +てんしょく 転職 名6: +てんしょく 天職 名1: +てんしん 転身 名6: +てんしん 転進 名6: +てんしんらんまん 天真爛漫 名8: +てんじ 展示 名6: +てんじ 点字 名1: +てんじょう 天井 名1: +てんじん 天神 名1: +てんじん 天神 地名: +てんすい 天水 地名: +てんすう 点数 名1: +てんせい 天性 名1: +てんせき 転籍 名6: +てんせん 点線 名1: +てんそう 転送 名6: +てんそる テンソル 名1: +てんぞく 転属 名6: +てんたい 天体 名1: +てんち 天地 名1: +てんち 転地 名6: +てんてき 点滴 名6: +てんてこまい てんてこまい 代4: +てんと テント 名1: +てんとう 店頭 名1: +てんとう 転倒 名6: +てんとう 点灯 名6: +てんどう 天童 地名: +てんない 店内 名1: +てんにゅう 転入 名6: +てんにょ 天女 名1: +てんにん 転任 名7: +てんねん 天然 名1: +てんねんとう 天然痘 名1: +てんのう 天皇 名1: +てんのう 天王 地名: +てんのうじ 天王寺 苗字: +てんのうじ 天王寺 地名: +てんのうせい 天王星 名1: +てんばい 転売 名6: +てんぱく 天白 地名: +てんびき 天引き 代4: +てんぴ 天火 名1: +てんぷ 添付 名6: +てんぷく 転覆 名6: +てんぷら てんぷら 名1: +てんぷれーと テンプレート 名1: +てんぺん 転変 名6: +てんぼう 展望 名6: +てんぽ テンポ 名1: +てんぽ 店舗 名1: +てんぽらり テンポラリ 代5: +てんま 天満 苗字: +てんま 天満 地名: +てんまつ 顛末 名1: +てんまばやし 天間林 地名: +てんまんぐう 天満宮 名1: +てんめい 天明 地名: +てんめつ 点滅 名6: +てんもん 天文 名1: +てんよう 転用 名6: +てんらく 転落 名6: +てんらん 展覧 名6: +てんり 天理 名1: +てんり 天理 地名: +てんりゅう 天竜 地名: +てんりゅう 天龍 地名: +で で 接続: +で 出 一段3: +でーた データ 名4: +でーと デート 名6: +でーもん デーモン 名1: +であ 出会 ワ五7: +であし 出足 名1: +である 出歩 カ五5: +でぃくしょなり ディクショナリ 名1: +でぃじたる ディジタル 名1: +でぃすかっしょん ディスカッション 名1: +でぃすく ディスク 名1: +でぃすくりぷた ディスクリプタ 名1: +でぃすけっと ディスケット 名1: +でぃすこ ディスコ 名1: +でぃすてぃねーしょん ディスティネーション 代1: +でぃすぷれー ディスプレー 名1: +でぃすぷれい ディスプレイ 名1: +でぃずにー ディズニー 名1: +でぃっしゅ ディッシュ 名1: +でぃなー ディナー 名1: +でぃれくたー ディレクター 名1: +でぃれくとり ディレクトリ 名1: +でい 泥 単漢: +でいすい 泥酔 名6: +でいり 出入り 代4: +でいりぐち 出入口 代1: +でか でか 形2: +でかけ 出かけ 一段4: +でかせぎ 出稼ぎ 代4: +でき 出来 一段4: +でき でき 一段3: +でき 溺 単漢: +できあい 溺愛 名6: +できあが 出来上が ラ五3: +できごと 出来事 名1: +できし 溺死 名6: +できだか 出来高 名1: +できばえ 出来栄え 代1: +でぐち 出口 名2: +でこーだ デコーダ 名1: +でこーど デコード 名6: +でこぼこ 凸凹 代5:サ変: +でさき 出先 名1: +でざいなー デザイナー 名1: +でざいなーず デザイナーズ 名1: +でざいん デザイン 名6: +でし 弟子 名1: +でじたる デジタル 名8: +でじま 出島 苗字: +でじま 出島 地名: +ですから ですから 接続: +ですく デスク 名1: +でそろ 出そろ ワ五5: +でっか でっか 形6: +でっき デッキ 名1: +でっぱ 出っ歯 代1: +でっぱ 出っぱ ラ五3: +でなお 出直 サ五5: +では では 接続: +でばいす デバイス 名1: +でばっが デバッガ 名1: +でばっぐ デバッグ 名6: +でばん 出番 名1: +でぱーと デパート 名1: +でびゅー デビュー 名6: +でふぉると デフォルト 代1: +でふれ デフレ 名1: +でま デマ 名1: +でま 手間 接尾2: +でまわ 出回 ラ五3: +でむ 出向 カ五2: +でむかえ 出迎え 一段4: +でむら 出村 苗字: +でも でも 接続: +でも デモ 代1: +でもんすとれーしょん デモンストレーション 名1: +でらっくす デラックス 名8: +でりーと デリート 名6: +でるた デルタ 名1: +でわ 出羽 地名: +でん 伝 代1: +でん 田 代1: +でん 殿 代1: +でん 電 代1: +でん 澱 単漢: +でんあつ 電圧 名1: +でんい 電位 名1: +でんえん 田園 名1: +でんか 電化 代4: +でんか 電荷 名1: +でんか 殿下 名1: +でんき 電気 名1: +でんき 電機 名1: +でんき 電器 名1: +でんきゅう 電球 名1: +でんきょく 電極 名1: +でんげき 電撃 名4: +でんげん 電源 名1: +でんこう 電工 名1: +でんごん 伝言 名7: +でんさん 電算 名1: +でんさんき 電算機 名1: +でんし 電子 名1: +でんしゃ 電車 名1: +でんしょう 伝承 名6: +でんしん 電信 名1: +でんじき 電磁気 名1: +でんじは 電磁波 名1: +でんじゅ 伝授 名7: +でんせつ 伝説 名1: +でんせん 電線 名1: +でんせん 伝染 名6: +でんそう 伝送 名6: +でんそう 電装 名1: +でんそう 電送 名6: +でんたく 電卓 名1: +でんたつ 伝達 名7: +でんち 電池 名1: +でんちゅう 電柱 名1: +でんてつ 電鉄 名1: +でんでん 電々 企業: +でんとう 伝統 名4: +でんとう 電灯 名1: +でんどう 電動 名1: +でんねつ 電熱 名1: +でんぱ 電波 名1: +でんぱ 伝播 名6: +でんぱん 伝搬 名6: +でんぴょう 伝票 名1: +でんぶん 伝聞 名6: +でんぶん 電文 名1: +でんぽう 電報 名1: +でんらい 伝来 名6: +でんりゅう 電流 名1: +でんりょく 電力 名1: +でんわ 電話 名5: +でんわきょく 電話局 名1: +と 解 カ五5: +と 溶 カ五1: +と 説 カ五5: +と 研 ガ五6: +と 飛 バ五4: +と 跳 バ五8: +と 富 マ五7: +と 取 ラ五8: +と 捕 ラ五8: +と 採 ラ五8: +と 撮 ラ五8: +と 問 ワ五7: +と と 代1:ラ五8: +と 戸 代1: +と 途 代1: +と 都 代1: +と 徒 代1: +と 兎 単漢: +と 吐 単漢: +と 図 単漢: +と 堵 単漢: +と 塗 単漢: +と 妬 単漢: +と 屠 単漢: +と 斗 単漢: +と 杜 単漢: +と 渡 単漢: +と 登 単漢: +と 菟 単漢: +と 賭 単漢: +と 鍍 単漢: +と 砥 単漢: +と 土 単漢: +とーくん トークン 名1: +とーたる トータル 名8: +とある とある 連体: +とい 問 代1: +とい 樋 代1: +とい 戸井 地名: +とい 土肥 地名: +といあわせ 問い合わせ 一段4: +といかけ 問いかけ 一段3: +といき 吐息 代1: +といれ トイレ 名1: +といれっと トイレット 名1: +とう 当 代1:接頭1: +とう 等 接尾3:助数2: +とう 頭 助数2: +とう 党 接尾1:助数2: +とう 刀 接尾1: +とう 灯 接尾1: +とう 燈 接尾1: +とう 塔 代1: +とう 唐 代1: +とう 島 接尾1: +とう 糖 接尾1: +とう 投 ザ変: +とう 棟 代1: +とう 稲 単漢: +とう 桶 単漢: +とう 兜 単漢: +とう 桐 単漢: +とう 沓 単漢: +とう 十 単漢: +とう 逗 単漢: +とう 登 単漢: +とう 倒 単漢: +とう 搭 単漢: +とう 東 単漢: +とう 嶋 単漢: +とう 悼 単漢: +とう 冬 単漢: +とう 塘 単漢: +とう 套 単漢: +とう 宕 単漢: +とう 凍 単漢: +とう 桃 単漢: +とう 梼 単漢: +とう 盗 単漢: +とう 淘 単漢: +とう 湯 単漢: +とう 涛 単漢: +とう 痘 単漢: +とう 祷 単漢: +とう 統 単漢: +とう 答 単漢: +とう 筒 単漢: +とう 到 単漢: +とう 董 単漢: +とう 蕩 単漢: +とう 藤 単漢: +とう 討 単漢: +とう 謄 単漢: +とう 豆 単漢: +とう 踏 単漢: +とう 逃 単漢: +とう 透 単漢: +とう 鐙 単漢: +とう 陶 単漢: +とう 騰 単漢: +とう 闘 単漢: +とう 読 単漢: +とう 樋 単漢: +とうあん 答案 名1: +とういつ 統一 名6: +とういん 党員 名1: +とういん 東員 地名: +とうえい 投影 名6: +とうえい 東映 企業: +とうえい 東栄 地名: +とうおう 東欧 名1: +とうおんせん 等温線 名1: +とうか 投下 名6: +とうか 等価 名1: +とうか 透過 名6: +とうかい 東海 地名: +とうかい 倒壊 名6: +とうかいどう 東海道 名1: +とうかく 頭角 名1: +とうかつ 統括 名6: +とうかん 投函 名6: +とうがい 当該 名1: +とうがね 東金 地名: +とうき 登記 名6: +とうき 投棄 名6: +とうき 騰貴 名6: +とうき 陶器 名1: +とうき 冬期 名1: +とうき 冬季 名1: +とうき 当期 名1: +とうきゅう 東急 企業: +とうきゅう 投球 名6: +とうきゅう 等級 名1: +とうきょう 東京 地名: +とうきょうと 東京都 県区: +とうきょく 当局 名1: +とうぎ 討議 名6: +とうぎゅう 闘牛 名6: +とうけい 統計 名6: +とうけい 東経 名1: +とうけつ 凍結 名6: +とうげ 峠 代1: +とうげい 陶芸 名1: +とうこう 登校 名6: +とうこう 投稿 名6: +とうこう 投降 名6: +とうこうせん 等高線 名1: +とうこうだい 東工大 名1: +とうこん 闘魂 名1: +とうご 統語 名1: +とうごう 統合 名6: +とうごう 東郷 苗字: +とうごう 東郷 地名: +とうごう 等号 名1: +とうさい 搭載 名6: +とうさく 盗作 名6: +とうさま 父様 名2: +とうさん 倒産 名6: +とうさん 父さん 名2: +とうざ 当座 名1: +とうざい 東西 名1: +とうし 投資 名6: +とうし 凍死 名6: +とうし 透視 名6: +とうし 闘士 名1: +とうし 闘志 名1: +とうしき 等式 名1: +とうしば 東芝 企業: +とうしゃ 当社 名1: +とうしゃ 透写 代4: +とうしゃ 投射 代4: +とうしゃばん 謄写版 名1: +とうしゅ 党首 名1: +とうしゅ 投手 名1: +とうしゅ 当主 名1: +とうしゅう 踏襲 名6: +とうしょ 投書 名6: +とうしょ 当初 名1: +とうしょう 凍傷 名1: +とうしん 答申 名6: +とうしん 投身 名6: +とうしん 等親 助数2: +とうしん 頭身 助数2: +とうしんだい 等身大 代1: +とうじ 当時 名11: +とうじ 冬至 名1: +とうじ 湯治 名6: +とうじき 陶磁器 名1: +とうじしゃ 当事者 名1: +とうじつ 当日 名1: +とうじょう 登場 名6: +とうじょう 搭乗 名6: +とうじょう 東城 地名: +とうじょう 東条 苗字: +とうすい 陶酔 名6: +とうすう 頭数 名1: +とうせい 統制 名6: +とうせい 当世 名1: +とうせい 陶製 名1: +とうせき 投石 名6: +とうせき 透析 名6: +とうせん 当選 名6: +とうぜん 当然 代5: +とうそう 逃走 名6: +とうそう 闘争 名6: +とうそつ 統率 名6: +とうぞく 盗賊 名1: +とうた 淘汰 名6: +とうたつ 到達 名7: +とうだい 灯台 名1: +とうだい 東大 名1: +とうだい 当代 名1: +とうだいじ 東大寺 代1: +とうち 当地 名1: +とうち 倒置 名6: +とうち 統治 名6: +とうちゃく 到着 名7: +とうちゃん 父ちゃん 名2: +とうちょう 登頂 名6: +とうちょう 盗聴 名6: +とうちょく 当直 名6: +とうてい 到底 副1: +とうてん 当店 名1: +とうてん 読点 名1: +とうと 尊 形5:バ五3: +とうと 貴 形5:バ五3: +とうとう とうとう 形動2: +とうとう 等々 接尾1: +とうとつ 唐突 形動4: +とうどり 頭取 名1: +とうない 党内 名1: +とうなん 東南 名1: +とうなん 盗難 名1: +とうにゅう 投入 名6: +とうにん 当人 名1: +とうねん 当年 名1: +とうの 東野 苗字: +とうのしょう 東庄 地名: +とうは 党派 名1: +とうはく 東伯 地名: +とうはつ 頭髪 名1: +とうばん 当番 名2: +とうひ 逃避 名6: +とうひ 当否 名1: +とうひょう 投票 名6: +とうびょう 闘病 名3: +とうふ 豆腐 名2: +とうぶ 頭部 名1: +とうぶ 東部 名1: +とうぶん 当分 代6: +とうぶん 等分 代4:助数2: +とうぶん 糖分 代1: +とうへき 盗癖 名1: +とうへん 等辺 助数2: +とうべつ 当別 地名: +とうべん 答弁 名6: +とうほう 東方 名1: +とうほう 当方 名1: +とうほう 東邦 名1: +とうほう 東宝 企業: +とうほく 東北 名1: +とうほん 謄本 名1: +とうほんせいそう 東奔西走 名6: +とうぼう 逃亡 名6: +とうま 当麻 苗字: +とうま 当麻 地名: +とうみん 冬眠 名6: +とうめい 東名 地名: +とうめい 透明 名8: +とうめん 当面 名6: +とうや 洞爺 地名: +とうやく 投薬 名6: +とうゆ 灯油 名1: +とうよ 投与 名6: +とうよ 東予 地名: +とうよう 東洋 名1: +とうよう 登用 名6: +とうよう 東陽 地名: +とうよう 当用 名1: +とうよこ 東横 名1: +とうらい 到来 名6: +とうらく 当落 名1: +とうりつ 倒立 名6: +とうりゅうもん 登竜門 名1: +とうりょう 等量 名1: +とうろく 登録 名6: +とうろん 討論 名6: +とうわ 東和 地名: +とうわく 当惑 名6: +とえい 都営 名1: +とお 遠 形7: +とお 十 数詞:代1: +とお 通 サ五8:ラ五8: +とおあさ 遠浅 代1: +とおかまち 十日町 地名: +とおく 遠く 代1: +とおざか 遠ざか ラ五3: +とおざけ 遠ざけ 一段1: +とおだ 遠田 苗字: +とおだ 遠田 地名: +とおで 遠出 名6: +とおの 遠の カ五5: +とおの 遠野 地名: +とおやま 遠山 苗字: +とおり とおり 接尾1: +とおり 通り 助数2: +とおりすぎ 通り過ぎ 一段3: +とおる 亨 名前: +とおる 徹 名前: +とおわ 十和 地名: +とか 溶か サ五3: +とか 都下 名1: +とかい 都会 名1: +とかく とかく 副1: +とかしき 渡嘉敷 地名: +とかち 十勝 地名: +とが 尖 ラ五3: +とが 利賀 地名: +とがうち 戸河内 地名: +とがくし 戸隠 地名: +とがし 富樫 苗字: +とがめ 咎め 一段1: +とがわ 戸川 苗字: +とき とき 代1: +とき 時 代1: +とき 鴇 代1: +とき 土岐 地名: +ときえだ 時枝 苗字: +ときお 時男 名前: +ときお 時夫 苗字: +ときお 時雄 名前: +ときおり 時折 代6: +ときがわ 都幾川 地名: +ときた 時田 苗字: +ときどき ときどき 代6: +ときどき 時々 代6: +ときわ 常盤 地名: +ときわ 常葉 地名: +とぎ 富来 地名: +とぎつ 時津 地名: +とぎれ 途切れ 一段3: +とぎん 都銀 名1: +とく 得 代5:サ変: +とく 徳 代1: +とく 特 単漢: +とく 涜 単漢: +とく 匿 単漢: +とく 督 単漢: +とく 禿 単漢: +とく 篤 単漢: +とくい 得意 名9: +とくい 特異 形動4: +とくいげ 得意気 代5: +とくお 徳雄 名前: +とくがわ 徳川 名1:苗字: +とくぎ 特技 名1: +とくさく 得策 名1: +とくさん 特産 名1: +とくしつ 特質 名1: +とくしま 徳島 苗字: +とくしま 徳島 地名: +とくしゅ 特殊 名8: +とくしゅう 特集 名6: +とくしょう 特賞 名1: +とくしょく 特色 名1: +とくしん 特進 名6: +とくしん 得心 代4: +とくじ 徳治 名前: +とくじ 徳地 地名: +とくじゅ 特需 名1: +とくじろう 徳次郎 名前: +とくせい 特性 名1: +とくせい 特製 名6: +とくせつ 特設 名6: +とくせん 特選 名6: +とくそう 特捜 名1: +とくそく 督促 名6: +とくたろう 徳太郎 名前: +とくだ 徳田 苗字: +とくだい 特大 名1: +とくちょう 特徴 名1: +とくちょう 特長 名1: +とくてい 特定 名6: +とくてん 特典 名1: +とくてん 得点 代4: +とくとう 特等 名1: +とくなが 徳永 苗字: +とくに 特に 副1: +とくのしま 徳之島 地名: +とくは 特派 代4: +とくばい 特売 名6: +とくひつ 特筆 代4: +とくべつ 特別 名8: +とくめい 匿名 名1: +とくめい 特命 名1: +とくやく 特約 代4: +とくやま 徳山 苗字: +とくやま 徳山 地名: +とくゆう 特有 名8: +とくよう 徳用 名9: +とくら 都倉 苗字: +とくれい 特例 名1: +とくれい 督励 名6: +とぐら 戸倉 地名: +とけ 融け 一段1: +とけい 時計 名1: +とけつ 吐血 名6: +とげ 刺 代1: +とげ 遂げ 一段2: +とこ 床 代1: +とこ 常 単漢: +とこう 渡航 名6: +とことん とことん 副1: +とこなつ 常夏 名1: +とこなめ 常滑 地名: +とこや 床屋 代2: +ところ ところ 名1: +ところ 所 名1: +ところ 処 名1: +ところ 常呂 地名: +ところが ところが 接続: +ところざわ 所沢 地名: +ところで ところで 接続: +ところどころ 所々 代6: +とさ 土佐 地名: +とさしみず 土佐清水 地名: +とさやま 土佐山 地名: +とさやまだ 土佐山田 地名: +とざ 閉ざ サ五5: +とざわ 戸沢 苗字: +とざん 登山 名6: +とし 都市 名4: +とし 年 名2: +とし 歳 名2: +とし 敏 単漢: +とし 利 単漢: +とし 俊 単漢: +とし 稔 単漢: +としあき 俊昭 名前: +としあき 俊明 名前: +としあき 敏明 名前: +としあき 利昭 名前: +としあき 利明 名前: +としうえ 年上 代1: +としお 俊男 名前: +としお 俊夫 名前: +としお 俊雄 名前: +としお 敏男 名前: +としお 敏夫 名前: +としお 敏雄 名前: +としお 利男 名前: +としお 利夫 名前: +としお 寿男 名前: +としかず 俊一 名前: +としかず 利一 名前: +としかつ 利勝 名前: +としこ 寿子 名前: +としこ 淑子 名前: +としこ 俊子 名前: +としこ 敏子 名前: +としこ 利子 名前: +としごろ 年頃 名2: +としただ 利忠 名前: +としつき 年月 代1: +としはる 俊治 名前: +としはる 利治 名前: +としひこ 俊彦 名前: +としひこ 敏彦 名前: +としひこ 利彦 名前: +としひろ 俊博 名前: +としひろ 敏宏 名前: +としひろ 敏弘 名前: +としふみ 俊文 名前: +としま 年増 代1: +としま 豊島 地名: +としま 利島 地名: +としま 十島 地名: +としみつ 俊光 名前: +としや 俊哉 名前: +としゆき 俊幸 名前: +としゆき 俊行 名前: +としゆき 俊之 名前: +としゆき 敏行 名前: +としゆき 敏之 名前: +としゆき 利幸 名前: +としゆき 利之 名前: +としょ 図書 名1: +としょかん 図書館 名1: +としろう 俊郎 名前: +としろう 敏郎 名前: +としろう 利郎 名前: +としん 都心 名1: +とじ 閉じ 一段2: +とじ 綴じ 一段2: +とじこめ 閉じ込め 一段1: +とじまり 戸締り 代1: +とじょう 途上 名1: +とじょうこく 途上国 名1: +とす 鳥栖 地名: +とぜつ 途絶 名6: +とそう 塗装 名6: +とたん 途端 名1: +とだ 戸田 苗字: +とだ 戸田 地名: +とだえ 途絶え 一段1: +とだな 戸棚 名1: +とち 土地 名1: +とち 栃 代1: +とち 橡 代1: +とちお 栃尾 地名: +とちぎ 栃木 地名: +とちゅう 途中 名1: +とちょう 都庁 名1: +とっかん 突貫 名6: +とっき 突起 名6: +とっきゅう 特急 名1: +とっきょ 特許 名1: +とっくに とっくに 副1: +とっくり 徳利 名1: +とっくん 特訓 名6: +とっけん 特権 名1: +とっこうやく 特効薬 名1: +とっしゅつ 突出 名6: +とっしん 突進 名6: +とっとり 鳥取 地名: +とっぱ 突破 名6: +とっぱつ 突発 名6: +とっぱん 凸版 名1: +とっぷ トップ 名1: +とっぷう 突風 名1: +とつ 嫁 ガ五7: +とつ 凸 代1: +とつ 突 単漢: +とつか 戸塚 苗字: +とつか 戸塚 地名: +とつかわ 十津川 地名: +とつじょ 突如 代6: +とつぜん 突然 代5: +とつにゅう 突入 名6: +とても とても 副1: +ととの 整 ワ五1: +ととの 調 ワ五1: +ととのえ 整え 一段1: +ととのえ 調え 一段1: +とど 届 カ五8: +とどうふけん 都道府県 名1: +とどけ 届 接尾1: +とどけ 届け 一段4: +とどけで 届出 名6: +とどこお 滞 ラ五7: +とどほっけ 椴法華 地名: +とどま 留ま ラ五7: +とどまつ 椴 単漢: +とどめ とどめ 一段3: +とどろ 轟 カ五7: +とどろき 等々力 地名: +とない 都内 名1: +となえ 唱え 一段2: +となき 渡名喜 地名: +となみ 砺波 地名: +となみ 礪波 地名: +となり 隣 代1: +となりあわせ 隣合わせ 一段3: +となん 都南 地名: +とにかく とにかく 副1: +とね 利根 地名: +との 殿 代1: +とのしょう 土庄 地名: +とば 飛ば サ五1: +とば 鳥羽 苗字: +とば 鳥羽 地名: +とばく 賭博 名6: +とばた 戸畑 苗字: +とび 鳶 代1: +とびおり 飛び降り 一段3: +とびか 飛び交 ワ五5: +とびこ 飛び越 サ五7: +とびこ 飛び込 マ五7: +とびこえ 飛び越え 一段3: +とびしま 飛島 苗字: +とびしま 飛島 地名: +とびた 飛田 苗字: +とびだ 飛び出 サ五7: +とびち 飛び散 ラ五7: +とびつ 飛びつ カ五5: +とびの 飛び乗 ラ五7: +とびはね 飛び跳ね 一段1: +とびまわ 飛び回 ラ五5: +とびら 扉 代1: +とぴっくす トピックス 名1: +とべ 砥部 地名: +とべい 渡米 名6: +とほ 徒歩 名1: +とほう 途方 代1: +とぼし 乏し 形5: +とま 止ま ラ五8: +とま 泊ま ラ五8: +とま 留ま ラ五1: +とま 苫 単漢: +とまこまい 苫小牧 地名: +とまた 苫田 地名: +とまと トマト 名1: +とまど 戸惑 ワ五7: +とままえ 苫前 地名: +とまむ トマム 地名: +とまり 泊 地名: +とまりこ 泊り込 マ五7: +とみ 富 代1: +とみ 登美 名前: +とみあい 富合 地名: +とみうら 富浦 苗字: +とみえ 富江 地名: +とみお 富男 名前: +とみお 富夫 名前: +とみお 富雄 名前: +とみおか 富岡 苗字: +とみおか 富岡 地名: +とみおか 冨岡 苗字: +とみか 富加 地名: +とみかわ 富川 苗字: +とみぐすく 豊見城 地名: +とみこ 富子 名前: +とみこ 富美子 名前: +とみさと 富里 苗字: +とみさと 富里 地名: +とみさわ 富沢 苗字: +とみざわ 富沢 苗字: +とみた 富田 苗字: +とみた 冨田 苗字: +とみなが 富永 苗字: +とみに とみに 副1: +とみや 富谷 地名: +とみやま 富山 苗字: +とみん 都民 名1: +とむら 外村 苗字: +とむら 戸村 苗字: +とむら 弔 ワ五3: +とめ 止め 一段4: +とめ 登米 地名: +とめ 泊め 一段2: +とめ 留め 一段1: +とも とも ラ五3: +とも 友 代1: +とも 供 代1: +とも 共 代1: +とも 朋 単漢: +とも 智 単漢: +ともあれ ともあれ 接続: +ともえ 巴 単漢: +ともかく ともかく 代6: +ともかず 友和 名前: +ともこ 知子 名前: +ともこ 智子 名前: +ともこ 朝子 名前: +ともこ 朋子 名前: +ともこ 友子 名前: +ともだち 友達 名2: +ともち 砥用 地名: +ともども 共々 副5: +ともな 伴 ワ五5: +ともに ともに 副1: +ともばたらき 共働き 代4: +ともひこ 友彦 名前: +ともべ 友部 苗字: +ともゆき 智之 名前: +とや 戸谷 苗字: +とやま 富山 地名: +とやま 富山 苗字: +とやま 外山 苗字: +とやまけん 富山県 県区: +とよ 豊 単漢: +とよあき 豊明 名前: +とよあけ 豊明 地名: +とよあけ 豊明 名前: +とようら 豊浦 地名: +とよおか 豊岡 苗字: +とよおか 豊岡 地名: +とよおか 豊丘 地名: +とよかず 豊和 名前: +とよかわ 豊川 苗字: +とよかわ 豊川 地名: +とよこ 豊子 名前: +とよころ 豊頃 地名: +とよさか 豊栄 地名: +とよさと 豊郷 地名: +とよさと 豊里 地名: +とよしな 豊科 地名: +とよしま 豊島 苗字: +とよた 豊田 苗字: +とよた 豊田 地名: +とよた トヨタ 企業: +とよたま 豊玉 地名: +とよだ 豊田 苗字: +とよだ 豊田 地名: +とよつ 豊津 地名: +とよとみ 豊富 地名: +とよなか 豊中 苗字: +とよなか 豊中 地名: +とよね 豊根 地名: +とよの 豊能 地名: +とよの 豊野 地名: +とよはし 豊橋 苗字: +とよはし 豊橋 地名: +とよはま 豊浜 地名: +とよひら 豊平 地名: +とよま 登米 地名: +とよまつ 豊松 地名: +とよやま 豊山 地名: +とら 虎 代1: +とら 寅 代1: +とらい トライ 名6: +とらい 渡来 名6: +とらえ 捉え 一段1: +とらえ 捕らえ 一段1: +とらお 虎雄 名前: +とらお 寅男 名前: +とらお 寅雄 名前: +とらくたー トラクター 名1: +とらっきんぐ トラッキング 名1: +とらっく トラック 名1: +とらっぷ トラップ 名6: +とらのもん 虎ノ門 地名: +とらひめ 虎姫 地名: +とらふぃっく トラフィック 名1: +とらぶる トラブル 名1: +とらわれ 捕らわれ 一段3: +とらんく トランク 名1: +とらんざくしょん トランザクション 名1: +とらんしーばー トランシーバー 名1: +とらんじすた トランジスタ 名1: +とらんぷ トランプ 代4: +とり 鳥 代1: +とり 酉 代1: +とり 禽 単漢: +とりあ 取り合 ワ五7: +とりあえず とりあえず 代6: +とりあえず 取り敢えず 代6: +とりあげ 取り上げ 一段4: +とりあげ とり上げ 一段4: +とりあつか 取り扱 ワ五8: +とりあつかい 取扱 名1: +とりい 鳥居 苗字:名1: +とりいそぎ 取り急ぎ 副1: +とりいれ 取り入れ 一段3: +とりうみ 鳥海 苗字: +とりえ 取り柄 代1: +とりお トリオ 名1: +とりおこな 執り行 ワ五1: +とりおと 取り落と サ五7: +とりかえ 取り替え 一段4: +とりかえ 取り返 サ五7: +とりかか 取り掛か ラ五7: +とりかこ 取り囲 マ五7: +とりかわ 取り交わ サ五7: +とりが トリガ 代1: +とりがー トリガー 代1: +とりきめ 取り決め 一段4: +とりく 取り組 マ五7: +とりくず 取り崩 サ五1: +とりけ 取り消 サ五8: +とりけし 取消 名2: +とりこ 取り込 マ五7: +とりこ 虜 代1: +とりこわ 取り壊 サ五7: +とりごえ 鳥越 苗字: +とりごえ 鳥越 地名: +とりさ 取り去 ラ五1: +とりさげ 取り下げ 一段4: +とりざた 取りざた 代4: +とりしき 取り仕切 ラ五7: +とりしま 取り締ま ラ五7: +とりしまり 取締り 名1: +とりしまりやく 取締役 名1: +とりしらべ 取り調べ 一段3: +とりそろえ 取り揃え 一段1: +とりたて 取り立て 一段3: +とりたて 取立 名1: +とりたに 鳥谷 苗字: +とりだ 取り出 サ五7: +とりちがえ 取り違え 一段3: +とりつ 取り次 ガ五7: +とりつ 取り付 カ五1: +とりつ 都立 名1: +とりつくろ 取り繕 ワ五3: +とりつけ 取り付け 一段4: +とりつけ 取付 名1: +とりで 砦 代1: +とりで 取手 地名: +とりとめ 取り留め 一段3: +とりな 執り成 サ五5: +とりのこ 取り残 サ五7: +とりのぞ 取り除 カ五5: +とりはから 取り計ら ワ五4: +とりはず 取り外 サ五7: +とりはだ 鳥肌 代1: +とりはら 取り払 ワ五5: +とりひき 取引 名5: +とりひきさき 取引先 名2: +とりぷる トリプル 名1: +とりま 取り巻 カ五7: +とりまぜ 取り混ぜ 一段1: +とりまとめ 取りまとめ 一段3: +とりみだ 取り乱 サ五7: +とりも 取り持 タ五7: +とりもど 取り戻 サ五7: +とりもの 捕物 名1: +とりや 鳥屋 地名: +とりやま 鳥山 苗字: +とりょう 塗料 名1: +とりよせ 取り寄せ 一段4: +とりわけ とりわけ 接続: +とるこ トルコ 地名: +とれーしんぐ トレーシング 名1: +とれーす トレース 名6: +とれーど トレード 名6: +とれーなー トレーナー 名1: +とれーにんぐ トレーニング 名6: +とれい トレイ 代1: +とれんど トレンド 名1: +とろ 吐露 代4: +とろう 徒労 名1: +とろけ とろけ 一段1: +とろふぃー トロフィー 代1: +とろんと トロント 地名: +とわだ 十和田 地名: +とわだこ 十和田湖 地名: +とん トン 助数2: +とん 噸 単漢: +とん 屯 単漢: +とん 豚 単漢: +とん 惇 単漢: +とん 敦 単漢: +とん 沌 単漢: +とん 遁 単漢: +とん 頓 単漢: +とんだばやし 富田林 地名: +とんちゃく 頓着 名6: +とんちんかん 頓珍漢 代5: +とんねる トンネル 名1: +とんばら 頓原 地名: +とんび 鳶 代1: +とんぼ とんぼ 名1: +ど 度 接尾1:助数2:サ変: +ど ° 助数2: +ど 戸 接尾2: +ど 土 代1: +ど 奴 単漢: +ど 怒 単漢: +ど 努 単漢: +どーなつ ドーナツ 代1: +どーむ ドーム 名1: +どあ ドア 名1: +どあい 度合 代1: +どい 土井 苗字: +どい 土居 苗字: +どいつ ドイツ 地名: +どいつご ドイツ語 名1: +どう どう 特殊副: +どう 動 ザ変: +どう 胴 代1: +どう 銅 代1: +どう 同 代1:接頭1:ザ変: +どう 道 接尾2: +どう 堂 接尾2: +どう 桐 単漢: +どう 働 単漢: +どう 導 単漢: +どう 憧 単漢: +どう 撞 単漢: +どう 洞 単漢: +どう 瞳 単漢: +どう 童 単漢: +どう 萄 単漢: +どうい 同意 名6: +どうい 同位 名1: +どういう どういう 連体: +どういつ 同一 名8: +どういつし 同一視 代4: +どういん 動員 名6: +どうおん 同音 名1: +どうか どうか 副1: +どうか 銅貨 名1: +どうか 同化 代4: +どうかく 同格 名1: +どうかん 同感 代4: +どうが 動画 名1: +どうがく 同額 名1: +どうがん 童顔 名1: +どうき 動機 名1: +どうき 同期 代4: +どうきゅう 同級 名1: +どうきょ 同居 名6: +どうきょう 同郷 名1: +どうぎ 動議 名1: +どうぎ 同義 名1: +どうぎょう 同業 名3: +どうくつ 洞窟 名1: +どうぐ 道具 名1: +どうけ 道化 名1: +どうけい 同型 名1: +どうけい 同形 名1: +どうけん 同県 名1: +どうげつ 同月 名1: +どうげんざか 道玄坂 地名: +どうこう 動向 名1: +どうこう 同好 名1: +どうこう 同行 名6: +どうこく 同国 名1: +どうさ 動作 名6: +どうさつ 洞察 名6: +どうさん 動産 名1: +どうし 動詞 名4: +どうし 同士 名1: +どうし 同志 名1: +どうし 同氏 名1: +どうし 同市 名1: +どうし 道志 地名: +どうししゃ 同志社 名1: +どうしつ 同室 代4: +どうしつ 同質 名1: +どうして どうして 代6: +どうしゃ 同社 名1: +どうしゅ 同種 名1: +どうしょく 同色 代5: +どうしょくぶつ 動植物 名1: +どうしん 童心 名1: +どうしんえん 同心円 名1: +どうじ 同時 名1: +どうじく 同軸 名1: +どうじつ 同日 名1: +どうじま 堂島 苗字: +どうじま 堂島 地名: +どうじょう 同情 名6: +どうじょう 同乗 代4: +どうじょう 同上 名1: +どうじょう 道場 名1: +どうじん 同人 名1: +どうすう 同数 名1: +どうせ どうせ 副1: +どうせい 同姓 名1: +どうせい 同性 名1: +どうせい 同棲 名6: +どうせい 銅製 名1: +どうせき 同席 名6: +どうせん 導線 名1: +どうぜん 同然 名8: +どうそう 同窓 名1: +どうぞ どうぞ 副1: +どうぞう 銅像 名1: +どうたい 動態 名1: +どうたい 導体 名1: +どうたい 胴体 名1: +どうだん 同断 名8: +どうち 同値 名1: +どうち 同地 名1: +どうちゅう 道中 名1: +どうちょう 同調 名6: +どうちょう 道庁 名1: +どうてい 道程 名1: +どうてい 童貞 名1: +どうてき 動的 形動4: +どうてん 動転 名6: +どうてん 同点 名1: +どうとう 同等 名8: +どうとく 道徳 名4: +どうとんぼり 道頓堀 地名: +どうどう 堂々 形動2: +どうにか どうにか 副4: +どうにゅう 導入 名6: +どうねん 同年 名1: +どうはい 同輩 名1: +どうはん 同伴 名7: +どうひょう 道標 代1: +どうふう 同封 名6: +どうぶつ 動物 名4: +どうみゃく 動脈 名1: +どうめい 同盟 名1: +どうめい 同名 名1: +どうも どうも 副1: +どうやら どうやら 副1: +どうゆう 同友 名1: +どうよう 同様 名8: +どうよう 動揺 名6: +どうよう 童謡 名1: +どうらく 道楽 名1: +どうらん 動乱 名6: +どうり 道理 代1: +どうりょう 同僚 名1: +どうりょく 動力 名1: +どうるい 同類 名1: +どうれつ 同列 名1: +どうろ 道路 名1: +どうわ 童話 名1: +どうわ 同和 名1: +どおり 通り 接尾2: +どかた 土方 名1: +どき 時 接尾2: +どき 土器 名1: +どきどき ドキドキ 副9: +どきゅめんと ドキュメント 名1: +どきょう 度胸 名1: +どく 毒 代4: +どく 独 代1: +どく 読 単漢: +どくえん 独演 名6: +どくがく 独学 名6: +どくさい 独裁 名6: +どくしゃ 読者 名1: +どくしょ 読書 名6: +どくしょう 独唱 代4: +どくしん 独身 名1: +どくじ 独自 名8: +どくせい 毒性 名1: +どくせん 独占 名6: +どくそ 毒素 名1: +どくそう 独創 名6: +どくそう 独走 名6: +どくそう 独奏 名6: +どくたー ドクター 名1: +どくだん 独断 名6: +どくとく 独特 名8: +どくどくし 毒々し 形3: +どくは 読破 名6: +どくはく 独白 名6: +どくほん 読本 名1: +どくやく 毒薬 名1: +どくりつ 独立 名6: +どくりょく 独力 名1: +どけん 土建 名1: +どこ どこ 代1: +どこ 何処 代1: +どこか どこか 代6: +どしどし どしどし 副2: +どしゃ 土砂 名1: +どじょう 土壌 名1: +どじょう どじょう 名1: +どじょう 鯲 単漢: +どじょう 鰌 単漢: +どすう 度数 名1: +どせい 土星 名1: +どそく 土足 名1: +どぞう 土蔵 名1: +どだい 土台 名1: +どちら どちら 代1: +どっか どっか 代6: +どっかい 読解 名6: +どっく ドック 名1: +どっさり どっさり 副2: +どっしり どっしり 副3: +どっち どっち 代1: +どっと どっと 副1: +どっと ドット 名1: +どて 土手 名1: +どとう 怒涛 名1: +どな 怒鳴 ラ五7: +どなた どなた 代1: +どなべ 土鍋 名1: +どなり 土成 地名: +どにち 土日 代1: +どの どの 代6: +どの 殿 接尾2: +どばし 土橋 苗字: +どひょう 土俵 名1: +どびゅっしー ドビュッシー 代1: +どべい 土塀 代1: +どぼく 土木 名1: +どま 土間 名1: +どめいん ドメイン 名1: +ども ども 接尾2: +ども ども ラ五3: +ども 吃 ラ五7: +ども 共 接尾2: +どよう 土曜 名1: +どよう 土用 名1: +どようび 土曜日 名1: +どらい ドライ 名8: +どらいば ドライバ 名1: +どらいばー ドライバー 名1: +どらいぶ ドライブ 名6: +どらっぐ ドラッグ 名1: +どらふと ドラフト 名1: +どらま ドラマ 名1: +どりあ ドリア 名1: +どりょく 努力 名7: +どる ドル 助数2: +どるびー ドルビー 名1: +どれ どれ 代1: +どれい 奴隷 名1: +どれっしんぐ ドレッシング 名1: +どろ 泥 代1: +どろっぷ ドロップ 名1: +どろどろ 泥々 副9: +どろぬま 泥沼 名1: +どん 鈍 代1: +どん 丼 代1: +どん 呑 代1: +どん 曇 単漢: +どん 貪 単漢: +どんか 鈍化 代4: +どんかん 鈍感 名8: +どんぐり ドングリ 代1: +どんこう 鈍行 名1: +どんてん 曇天 名1: +どんどん どんどん 副2: +どんな どんな 代1:連体: +どんよく 貪欲 代5: +な な 形2:サ五7:ラ五7: +な 成 サ五5:ラ五5: +な 為 サ五5: +な 泣 カ五7: +な 鳴 カ五7:ラ五2: +な 凪 ガ五3: +な 無 形2: +な 名 代1: +な 菜 代1: +な 奈 単漢: +な 那 単漢: +な 納 単漢: +ない 内 接尾1: +ないーぶ ナイーブ 名8: +ないえ 奈井江 地名: +ないか 内科 名1: +ないかく 内閣 名1: +ないがい 内外 名1: +ないがしろ 蔑ろ 形動1: +ないきょく 内局 名1: +ないきん 内勤 名6: +ないこう 内向 代4: +ないこく 内国 名1: +ないざい 内在 名6: +ないしゅっけつ 内出血 代4: +ないしょ 内緒 名1: +ないしょく 内職 名6: +ないしん 内心 名1: +ないしん 内申 名6: +ないしん 内診 名6: +ないじ 内示 名6: +ないじゅ 内需 名1: +ないじょう 内情 名1: +ないせい 内政 名1: +ないせい 内省 名6: +ないせき 内積 名1: +ないせつ 内接 名6: +ないせん 内戦 名1: +ないせん 内線 名1: +ないそう 内装 名1: +ないぞう 内蔵 名6: +ないぞう 内臓 名1: +ないだく 内諾 名6: +ないち 内地 名1: +ないてい 内定 名6: +ないと ナイト 名1: +ないとう 内藤 苗字: +ないふ ナイフ 名1: +ないふん 内紛 名1: +ないぶ 内部 名1: +ないみつ 内密 名8: +ないめん 内面 名4: +ないやく 内約 代4: +ないよう 内容 名4: +ないらん 内乱 名1: +ないりく 内陸 名1: +ないろん ナイロン 名1: +なう ナウ 形1: +なえ 苗 代1: +なえ 萎え 一段1: +なえば 苗場 地名: +なお 直 サ五8:ラ五3: +なお 治 サ五7:ラ五8: +なお なお 副1:サ五7:ラ五3: +なお 尚 副1: +なお 猶 副1: +なお 奈緒 名前: +なおい 直井 苗字: +なおいり 直入 地名: +なおえ 直江 名前: +なおえつ 直江津 地名: +なおかわ 直川 地名: +なおき 直樹 名前: +なおこ 尚子 名前: +なおこ 直子 名前: +なおこ 奈保子 名前: +なおさら なおさら 副8: +なおしま 直島 地名: +なおじ 直治 名前: +なおと 直人 名前: +なおみ 尚美 名前: +なおみ 直美 名前: +なおや 直也 名前: +なおゆき 直行 名前: +なおよし 直義 名前: +なか 中 名1: +なか 仲 名1: +なか 那珂 地名: +なか 那賀 地名: +なかい 中井 苗字: +なかいず 中伊豆 地名: +なかうおぬま 中魚沼 地名: +なかお 中尾 苗字: +なかかわね 中川根 地名: +なかかんばら 中蒲原 地名: +なかがい 仲買 名1: +なかがみ 中頭 地名: +なかがわ 中川 苗字: +なかがわ 中川 地名: +なかがわ 那賀川 地名: +なかぎょう 中京 地名: +なかくびき 中頚城 地名: +なかぐすく 中城 地名: +なかこま 中巨摩 地名: +なかごう 中郷 地名: +なかごめ 中込 苗字: +なかごろ 中ごろ 名1: +なかさつない 中札内 地名: +なかさと 中里 地名: +なかざと 中里 苗字: +なかざと 中里 地名: +なかざと 仲里 名1: +なかざわ 中沢 苗字: +なかしべつ 中標津 地名: +なかしま 中島 苗字: +なかしま 中島 地名: +なかじま 中島 苗字: +なかじま 中嶋 苗字: +なかじょう 中条 苗字: +なかすじ 中筋 苗字: +なかせん 中仙 地名: +なかそね 中曽根 苗字: +なかた 中田 苗字: +なかたがい 仲たがい 代4: +なかたど 仲多度 地名: +なかたに 中谷 苗字: +なかたに 仲谷 苗字: +なかたね 中種子 地名: +なかだ 中田 苗字: +なかだ 仲田 苗字: +なかだいら 中平 苗字: +なかだち 仲立ち 代4: +なかだるみ 中だるみ 代4: +なかつ 中津 地名: +なかつえ 中津江 地名: +なかつがる 中津軽 地名: +なかつがわ 中津川 地名: +なかつぎ 中継ぎ 代4: +なかとさ 中土佐 地名: +なかとみ 中富 地名: +なかとんべつ 中頓別 地名: +なかなおり 仲直り 代4: +なかなか なかなか 副7: +なかにいかわ 中新川 地名: +なかにいだ 中新田 地名: +なかにし 中西 苗字: +なかには 中には 副1: +なかにも 中にも 副1: +なかにわ 中庭 名1: +なかね 中根 苗字: +なかの 中野 苗字: +なかの 中野 地名: +なかのくち 中之口 地名: +なかのしま 中之島 地名: +なかのじょう 中之条 地名: +なかはら 中原 苗字: +なかはら 中原 地名: +なかば 半ば 代6: +なかばやし 中林 苗字: +なかばる 中原 地名: +なかふらの 中富良野 地名: +なかへじ 中辺路 地名: +なかほど 中程 名1: +なかま 仲間 名2: +なかま 中間 地名: +なかまち 中町 苗字: +なかみ 中身 代1: +なかみち 中道 苗字: +なかみち 中道 地名: +なかみなと 那珂湊 地名: +なかむら 中村 苗字: +なかむら 中村 地名: +なかむら 仲村 苗字: +なかもと 中本 苗字: +なかや 中谷 苗字: +なかやま 中山 苗字: +なかよし 仲良し 代1: +なかんずく なかんずく 副1: +なが 流 サ五8: +なが 長 形11:接頭1: +なが 永 形11: +なが 那賀 地名: +なが 名賀 地名: +ながあめ 長雨 代1: +ながい 永井 苗字: +ながい 長井 苗字: +ながい 長井 地名: +ながい 長居 代4: +ながいき 長生き 代4: +ながいずみ 長泉 地名: +ながうた 長唄 代1: +ながお 長尾 苗字: +ながお 長尾 地名: +ながおか 長岡 苗字: +ながおか 長岡 地名: +ながおかきょう 長岡京 地名: +ながくて 長久手 地名: +ながぐつ 長靴 代1: +ながさか 長坂 苗字: +ながさき 長崎 苗字: +ながさき 長崎 地名: +ながさわ 長沢 苗字: +ながしこ 流し込 マ五7: +ながしま 長島 苗字: +ながしま 長嶋 苗字: +ながしま 永島 苗字: +ながす 長洲 地名: +ながせ 永瀬 苗字: +ながせ 長瀬 苗字: +ながそで 長袖 代1: +ながた 永田 苗字: +ながた 長田 苗字: +ながたらし 長たらし 形3: +ながつだ 長津田 苗字: +ながつだ 長津田 地名: +ながつづき 長続き 代4: +ながと 長門 苗字: +ながと 長門 地名: +ながとろ 長瀞 地名: +ながなが 長々 副2: +ながぬま 長沼 苗字: +ながねん 長年 代6: +ながねん 永年 代6: +ながの 長野 苗字: +ながの 長野 地名: +ながの 永野 苗字: +ながのはら 長野原 地名: +ながはま 長浜 苗字: +ながはま 長浜 地名: +ながび 長引 カ五7: +ながまつ 永松 苗字: +ながめ 眺め 一段3: +ながもち 長持ち 代4: +ながや 長屋 名1: +ながやま 永山 苗字: +ながよ 長与 地名: +ながら 長柄 地名: +ながら 乍 単漢: +ながらく 長らく 代6: +ながれ 流れ 一段4: +ながれこ 流れ込 マ五7: +ながれだ 流れ出 サ五7: +ながれやま 流山 苗字: +ながれやま 流山 地名: +ながわ 奈川 地名: +ながわ 名川 地名: +なきじん 今帰仁 地名: +なぎ 凪 名1: +なぎ 奈義 地名: +なぎさ 渚 代1: +なぎそ 南木曾 地名: +なく なく サ五5: +なく 無く サ五5: +なく 亡く サ五5: +なぐ 殴 ラ五8: +なぐさ 慰 マ五4: +なぐさめ 慰め 一段4: +なぐも 南雲 苗字: +なぐり 名栗 地名: +なげ 嘆 カ五4: +なげ 投げ 接尾1:一段2: +なげいれ 投げ入れ 一段1: +なげかけ 投げかけ 一段1: +なげかわし 嘆かわし 形3: +なげこ 投げ込 マ五7: +なげだ 投げ出 サ五5: +なげつけ 投げつけ 一段1: +なげやり 投げやり 代5: +なこうど 仲人 名2: +なご 名護 地名: +なご 和 マ五7: +なごや 名古屋 地名: +なごやか 和やか 形動4: +なごり 名残 名2: +なさ なさ ラ五1: +なさけ 情け 代1: +なさけな 情けな 形5: +なさけぶか 情け深 形3: +なさそう なさそう 形動4: +なし 梨 代1: +なし 無し 代1: +なしとげ 成し遂げ 一段1: +なしょなる ナショナル 名1: +なじ なじ マ五8: +なじ 馴染 マ五8: +なじ 詰 ラ五7: +なす なす ラ五5:代1: +なす 那須 地名: +なぜ なぜ 形動1:一段1: +なぜ 何故 形動1: +なぜ 名瀬 地名: +なぞ 謎 代1: +なたしょう 名田庄 地名: +なだ 灘 地名: +なだか 名高 形2: +なださき 灘崎 地名: +なだち 名立 地名: +なだめ なだめ 一段1: +なだれ 雪崩 名1: +なちかつうら 那智勝浦 地名: +なちす ナチス 地名: +なっとう 納豆 名1: +なっとく 納得 代4: +なつ 夏 代1: +なつ 夏 接頭1: +なつ 捺 単漢: +なついん 捺印 名7: +なつかし 懐かし 形9:マ五7: +なつこ 夏子 名前: +なつば 夏場 名1: +なつふく 夏服 名1: +なつむき 夏向き 名1: +なつめ 棗 名1: +なつもの 夏物 名1: +なつやすみ 夏休み 名1: +なつやま 夏山 苗字: +なつやま 夏山 名1: +なづけ 名付け 一段3: +なで 撫で 一段2: +なでおろ なでおろ サ五5: +なとり 名取 苗字: +なとり 名取 地名: +なとりうむ ナトリウム 名1: +など など 接尾1: +など 等 接尾1: +ななえ 七飯 地名: +ななお 七尾 地名: +ななかい 七会 地名: +ななつか 七塚 地名: +ななめ 斜め 代1: +ななやま 七山 地名: +なに 何 代3: +なにげな 何気な 形2: +なにごと 何事 代1: +なにしろ なにしろ 副1: +なにしろ 何しろ 副1: +なにせ 何せ 副1: +なにとぞ 何卒 副1: +なにぶん 何分 副1: +なにもの 何者 代1: +なにゆえ 何故 副7: +なにわ 浪速 地名: +なの 名乗 ラ五7: +なのか 七日 代6: +なは 那覇 地名: +なはり 奈半利 地名: +なばり 名張 地名: +なふだ 名札 名1: +なべ 鍋 名2: +なべもの 鍋物 名1: +なま 生 代1: +なま 鈍 ラ五3: +なまいき 生意気 名8: +なまえ 名前 名2: +なまぐさ 生臭 形4: +なまけ 怠け 一段3: +なまず 鯰 代1: +なまなまし 生々し 形3: +なまみ 生身 代1: +なまり 鉛 代1: +なみ 波 代1: +なみ 並 代1: +なみ 浪 単漢: +なみあい 浪合 地名: +なみあし 並足 名1: +なみえ 浪江 地名: +なみおか 浪岡 地名: +なみかぜ 波風 名1: +なみかた 波方 地名: +なみかわ 並河 苗字: +なみき 並木 名1: +なみだ 波立 タ五7: +なみだ 涙 名1: +なみだぐ 涙ぐ マ五5: +なみだぐまし 涙ぐまし 形2: +なみなみ 並々 代1: +なみの 波野 地名: +なみはずれ 並外れ 一段1: +なみま 波間 代1: +なむ 南無 名1: +なめ なめ 一段2:サ五7: +なめ 嘗め 一段2: +なめかた 行方 苗字: +なめかわ 滑川 苗字: +なめがた 行方 地名: +なめらか なめらか 形動4: +なめらか 滑らか 形動4: +なめりかわ 滑川 苗字: +なめりかわ 滑川 地名: +なや 悩 マ五8: +なよろ 名寄 地名: +なら 慣ら サ五7: +なら 均 サ五7: +なら 鳴ら サ五3: +なら 並 バ五4: +なら 習 ワ五8: +なら 奈良 地名: +なら 楢 代1: +ならいごと 習い事 名1: +ならお 奈良尾 地名: +ならかわ 楢川 地名: +ならしの 習志野 地名: +ならでは ならでは 副7: +ならは 楢葉 地名: +ならびに ならびに 接続: +ならべ 並べ 一段1: +ならわ 慣わ サ五7: +なり 也 単漢: +なりきん 成金 名1: +なりた 成り立 タ五7: +なりた 成田 苗字: +なりた 成田 地名: +なりひび 鳴り響 カ五1: +なります 成増 地名: +なりゆ 成り行 カ五3: +なりわ 成羽 地名: +なりわい 生業 代1: +なる 奈留 地名: +なるこ 鳴子 地名: +なるさわ 鳴沢 地名: +なるせ 成瀬 苗字: +なるたけ なるたけ 副1: +なると 鳴門 地名: +なるとう 成東 地名: +なるべく なるべく 代6: +なるほど なるほど 代6: +なれ 慣れ 一段4: +なれ 馴れ 一段4: +なれなれし なれなれし 形3: +なわ 縄 代1: +なわ 名和 地名: +なわて 畷 単漢: +なわばり 縄張 代1: +なん 何 代1:数詞: +なん 難 接尾1:ザ変: +なん 男 代1: +なん 軟 代1: +なん 南 単漢: +なん 楠 単漢: +なんい 難易 名1: +なんい 南緯 名1: +なんか 南下 代4: +なんか 軟化 代4: +なんかい 難解 代5: +なんかい 南海 名1: +なんかん 難関 名1: +なんかん 南関 地名: +なんがい 南外 地名: +なんきょく 南極 名1: +なんきょく 難局 名1: +なんきん 南京 地名: +なんぎ 難儀 名8:サ変: +なんこう 難航 名6: +なんこう 軟膏 名1: +なんこう 南光 地名: +なんこく 南国 地名: +なんこつ 軟骨 名1: +なんごう 南郷 地名: +なんごく 南国 名1: +なんごく 南国 地名: +なんざん 南山 地名: +なんしき 軟式 名1: +なんしつ 軟質 名1: +なんしょ 難所 名1: +なんしょく 難色 名1: +なんじ 何時 一括: +なんじ 難事 名1: +なんじ 汝 名1: +なんじ 爾 単漢: +なんじゃく 軟弱 名8: +なんじゅう 難渋 代5:サ変: +なんじょう 南条 苗字: +なんじょう 南条 地名: +なんすい 軟水 名1: +なんせい 南西 名1: +なんせい 軟性 名1: +なんせい 南勢 地名: +なんせんす ナンセンス 代5: +なんぞ 何ぞ 副1: +なんたん 南端 名1: +なんだい 難題 名1: +なんだん 南淡 地名: +なんちょう 難聴 名1: +なんて なんて 接尾1:副1: +なんてん 難点 名1: +なんで なんで 副1: +なんでも なんでも 副1: +なんと なんと 副1: +なんとう 南島 地名: +なんとう 南東 名1: +なんとか 何とか 副1: +なんとなく なんとなく 副1: +なんど 何度 一括: +なんど 納戸 代1: +なんなく 難なく 副1: +なんねん 何年 一括: +なんのう 南濃 地名: +なんば 難波 苗字: +なんば 難波 地名: +なんばー ナンバー 名1: +なんぱ 軟派 名6: +なんぱ 難破 名6: +なんびょう 難病 名1: +なんぴと 何人 代1: +なんぴょうよう 南氷洋 名1: +なんぶ 南部 名1: +なんべい 南米 名1: +なんぼく 南北 名1: +なんぽう 南方 名1: +なんぽろ 南幌 地名: +なんみん 難民 名1: +なんもく 南牧 地名: +なんもん 難問 名1: +なんよう 南陽 地名: +なんら なんら 代6: +なんら 何ら 代6: +なんら 何等 代6: +に 荷 代1: +に 似 一段3: +に 煮 一段3: +に 二 一括: +に 児 単漢: +に 爾 単漢: +に 丹 単漢: +に 尼 単漢: +に 迩 単漢: +に 邇 単漢: +にーず ニーズ 名1: +にあ 似合 ワ五4: +にあげ 荷揚げ 代4: +にあみす ニアミス 名1: +にい 新 単漢: +にいかっぷ 新冠 地名: +にいかわ 新川 苗字: +にいがた 新潟 地名: +にいさと 新里 苗字: +にいさと 新里 地名: +にいさん 兄さん 名2: +にいざ 新座 地名: +にいざと 新里 苗字: +にいじま 新島 苗字: +にいじま 新島 地名: +にいつ 新津 苗字: +にいつ 新津 地名: +にいつる 新鶴 地名: +にいはま 新居浜 地名: +にいはり 新治 地名: +にいはる 新治 地名: +にいみ 新見 地名: +にいみ 新美 苗字: +にう 丹生 苗字: +にう 丹生 地名: +にうけ 荷受け 代4: +にえ 煮え 一段1: +にお 臭 ワ五7: +にお 匂 ワ五7: +にお 仁尾 地名: +にかほ 仁賀保 地名: +にかよ 似通 ワ五1: +にからぐあ ニカラグア 地名: +にが 苦 形8:ラ五3: +にが 逃が サ五7: +にがおえ 似顔絵 代1: +にがて 苦手 名8: +にがにがし 苦々し 形3: +にがわ 仁川 地名: +にがわらい 苦笑い 代4: +にき 仁木 苗字: +にぎ 握 ラ五8: +にぎやか 賑やか 形動4: +にぎりつぶ 握りつぶ サ五7: +にぎわ 賑わ サ五7:ワ五8: +にく にく 形5:マ五7: +にく 憎 形5:マ五7: +にく 肉 名2: +にくがん 肉眼 名1: +にくぎゅう 肉牛 名1: +にくしみ 憎しみ 代1: +にくしょく 肉食 名6: +にくしん 肉親 名1: +にくせい 肉声 名1: +にくたい 肉体 名4: +にくはく 肉薄 名6: +にくらし 憎らし 形5: +にぐるま 荷車 代1: +にげ 逃げ 一段4: +にげこ 逃げ込 マ五7: +にげだ 逃げ出 サ五7: +にげみち 逃げ道 代1: +にこ 煮込 マ五7: +にこちん ニコチン 名1: +にこにこ ニコニコ 副9: +にこやか にこやか 形動4: +にご 濁 サ五3:ラ五3: +にごら 濁ら サ五1: +にし 西 苗字:代1: +にし 西 接頭2: +にし 爾志 地名: +にしあいづ 西会津 地名: +にしあざい 西浅井 地名: +にしありえ 西有家 地名: +にしありた 西有田 地名: +にしあわくら 西粟倉 地名: +にしいず 西伊豆 地名: +にしいばらき 西茨城 地名: +にしいややま 西祖谷山 地名: +にしいわい 西磐井 地名: +にしうすき 西臼杵 地名: +にしうみ 西海 地名: +にしうわ 西宇和 地名: +にしお 西尾 苗字: +にしお 西尾 地名: +にしおおじ 西大路 地名: +にしおか 西岡 苗字: +にしおきたま 西置賜 地名: +にしおこっぺ 西興部 地名: +にしかいがん 西海岸 代1: +にしかすがい 西春日井 地名: +にしかぜ 西風 名1: +にしかた 西方 苗字: +にしかつら 西桂 地名: +にしかも 西加茂 地名: +にしかわ 西川 苗字: +にしかんばら 西蒲原 地名: +にしがわ 西側 名1: +にしき 錦 名1: +にしき 西木 地名: +にしき 西紀 地名: +にしきょう 西京 地名: +にしくにさき 西国東 地名: +にしくびき 西頚城 地名: +にしぐち 西口 名1: +にしごう 西郷 地名: +にしごうし 西合志 地名: +にしざき 西崎 苗字: +にしざわ 西沢 苗字: +にししらかわ 西白河 地名: +にしじま 西島 苗字: +にしじん 西陣 地名: +にしせんぼく 西仙北 地名: +にしそのぎ 西彼杵 地名: +にしたがわ 西田川 地名: +にしたま 西多摩 地名: +にしだ 西田 苗字: +にしつがる 西津軽 地名: +にしとさ 西土佐 地名: +にしとなみ 西砺波 地名: +にしな 仁科 苗字: +にしなり 西成 地名: +にしね 西根 地名: +にしの 西野 苗字: +にしのおもて 西之表 地名: +にしのしま 西ノ島 地名: +にしのみや 西宮 地名: +にしはら 西原 苗字: +にしはる 西春 地名: +にしび 西日 代1: +にしびわじま 西枇杷島 地名: +にしまつうら 西松浦 地名: +にしむら 西村 苗字: +にしむらやま 西村山 地名: +にしむろ 西牟婁 地名: +にしめ 西目 地名: +にしめや 西目屋 地名: +にしめら 西米良 地名: +にしもと 西本 苗字: +にしもろかた 西諸県 地名: +にしゃたくいつ 二者択一 代1: +にしやつしろ 西八代 地名: +にしやま 西山 苗字: +にしやま 西山 地名: +にしよしの 西吉野 地名: +にしよどがわ 西淀川 地名: +にしわき 西脇 苗字: +にしわき 西脇 地名: +にしん 二進 代4: +にしん 鰊 代1: +にじ 虹 代1: +にじゅう 二重 一括: +にじゅう 廿 単漢: +にじゅうまる ◎ 代1: +にじょう 二丈 地名: +にじょう 二乗 代4: +にせ 似せ 一段1: +にせ 偽 代1: +にせこ ニセコ 地名: +にせもの 偽物 名1: +にた 仁多 地名: +にち 日 代1:助数: +にちげん 日限 名1: +にちじ 日時 名1: +にちじょう 日常 名4: +にちづけ 日付 助数2: +にちどく 日独 名1: +にちなん 日南 地名: +にちはら 日原 地名: +にちふつ 日仏 名1: +にちぶ 日舞 名1: +にちぶり 日ぶり 助数2: +にちべい 日米 名1: +にちぼつ 日没 名1: +にちや 日夜 名1: +にちよう 日曜 名1: +にちようひん 日用品 名1: +にちようび 日曜日 名1: +にっか 日課 名1: +にっかん 日刊 名1: +にっかん 日韓 名1: +にっき 日記 名1: +にっきゅう 日給 名1: +にっきょうそ 日教組 代1: +にっきん 日勤 名6: +にっけい 日系 名1: +にっけい 日計 名1: +にっけい 日経 企業: +にっこう 日光 地名: +にっこう 日航 企業: +にっこう 日興 企業: +にっこり にっこり 代4: +にっさん 日産 企業: +にっさん 日参 名6: +にっし 日誌 名1: +にっしゃ 日射 名1: +にっしょう 日照 名1: +にっしょう 日商 名1: +にっしょく 日食 名1: +にっしん 日進 地名: +にっしんげっぽ 日進月歩 代4: +にっすう 日数 名1: +にっそ 日ソ 名1: +にった 新田 苗字: +にった 新田 地名: +にっちゅう 日中 名1: +にっちょく 日直 名6: +にってい 日程 名1: +にっとう 日当 名1: +にっぽう 日報 名1: +にっぽり 日暮里 地名: +にっぽん 日本 名1: +にっぽんばし 日本橋 地名: +につ 似つ カ五1: +につま 煮詰ま ラ五1: +にづくり 荷造り 代4: +にづくり 荷作り 代4: +にとろ ニトロ 名1: +にな 担 ワ五6: +にぬし 荷主 名1: +にのへ 二戸 地名: +にのみや 二宮 苗字: +にふだ 荷札 名1: +にぶ 鈍 形6:ラ五3: +にへい 二瓶 苗字: +にほん 日本 名4: +にほんいち 日本一 代6: +にほんかい 日本海 名1: +にほんご 日本語 名4: +にほんしょき 日本書紀 代1: +にほんじん 日本人 名1: +にほんまつ 二本松 地名: +にぼし 煮干 名1: +にま 迩摩 地名: +にもつ 荷物 名2: +にもの 煮物 代1: +にゅー ニュー 名2: +にゅーす ニュース 名1: +にゅーよーく ニューヨーク 地名: +にゅあんす ニュアンス 名1: +にゅう 入 単漢: +にゅう 乳 単漢: +にゅう 柔 単漢: +にゅういん 入院 名7: +にゅうえき 乳液 名1: +にゅうえん 入園 名7: +にゅうか 乳化 名6: +にゅうか 入荷 名7: +にゅうかい 入会 名7: +にゅうかく 入閣 名7: +にゅうかわ 丹生川 地名: +にゅうがく 入学 名7: +にゅうがくきん 入学金 名1: +にゅうきょ 入居 名7: +にゅうきん 入金 名7: +にゅうぎょう 乳業 名1: +にゅうこ 入庫 代4: +にゅうこう 入構 名6: +にゅうこう 入港 名6: +にゅうこく 入国 名7: +にゅうさつ 入札 名7: +にゅうさん 乳酸 名1: +にゅうし 入試 名1: +にゅうしつ 入室 名7: +にゅうしゃ 入社 名7: +にゅうしゅ 入手 名6: +にゅうしゅつりょく 入出力 名1: +にゅうしょ 入所 名6: +にゅうしょう 入賞 名7: +にゅうじ 乳児 名1: +にゅうじょう 入場 名7: +にゅうせいひん 乳製品 名1: +にゅうせき 入籍 名7: +にゅうせん 入選 名7: +にゅうぜん 入善 地名: +にゅうたい 入隊 名7: +にゅうだん 入団 名7: +にゅうてい 入廷 名7: +にゅうでん 入電 名7: +にゅうとう 入党 名6: +にゅうとう 乳頭 名1: +にゅうねん 入念 名8: +にゅうばい 入梅 名1: +にゅうぶ 入部 名6: +にゅうもん 入門 名6: +にゅうよう 入用 名10: +にゅうようじ 乳幼児 名1: +にゅうよく 入浴 名7: +にゅうりょう 入寮 名6: +にゅうりょく 入力 名7: +にゅうわ 柔和 形動3: +にょ 女 単漢: +にょ 如 単漢: +にょう 尿 代1: +にょうぼう 女房 名1: +にょらい 如来 名1: +によど 仁淀 地名: +にら 睨 マ五7: +にら 韮 代1: +にらさき 韮崎 地名: +にらやま 韮山 地名: +にわ 庭 名2: +にわ 丹羽 苗字: +にわ 丹羽 地名: +にわか にわか 接頭1:形動1: +にわか 俄 接頭1:形動1: +にわかあめ にわか雨 代1: +にわき 庭木 代1: +にわさき 庭先 代1: +にわとり 鶏 代1: +にん 人 接尾1: +にん 人 助数2: +にん 任 代1:ザ変: +にん 忍 単漢: +にん 認 単漢: +にん 仁 単漢: +にん 妊 単漢: +にんい 任意 名8: +にんか 認可 名6: +にんき 人気 名1: +にんき 任期 名1: +にんぎょう 人形 名1: +にんぐみ 人組 助数2: +にんげつ 人月 名1:助数2: +にんげん 人間 名4: +にんげんみ 人間味 名1: +にんしき 認識 名6: +にんしょう 人称 名1: +にんしょう 認証 名6: +にんしん 妊娠 名6: +にんじゃ 忍者 名1: +にんじゅう 忍従 名6: +にんじょう 人情 名1: +にんじん 人参 代1: +にんずう 人数 名1: +にんそう 人相 名1: +にんたい 忍耐 名6: +にんち 任地 名1: +にんち 認知 名6: +にんてい 認定 名6: +にんぴ 認否 名1: +にんぷ 人夫 名1: +にんぷ 妊婦 名1: +にんむ 任務 名1: +にんめい 任命 名6: +にんめん 任免 名6: +ぬ 抜 カ五2: +ぬ 脱 ガ五6: +ぬ 塗 ラ五8: +ぬ 縫 ワ五8: +ぬいぐるみ ぬいぐるみ 代1: +ぬいこ 縫い込 マ五7: +ぬいつけ 縫いつけ 一段3: +ぬか 抜か サ五3:ラ五7: +ぬか 糠 代1: +ぬかた 額田 地名: +ぬき 抜き 接尾1: +ぬき 貫 単漢: +ぬきさし 抜き差し 代1: +ぬきと 抜き取 ラ五5: +ぬきんで 抜きん出 一段1: +ぬくぬく ぬくぬく 副2: +ぬぐ ぬぐ ワ五5: +ぬぐ 拭 ワ五5: +ぬけ 抜け 一段1: +ぬけだ 抜け出 サ五5: +ぬけめ 抜目 名1: +ぬし 主 接尾1: +ぬす 盗 マ五7: +ぬの 布 代1: +ぬま 沼 代1: +ぬまくま 沼隈 地名: +ぬまた 沼田 苗字 +ぬまた 沼田 地名: +ぬまづ 沼津 地名: +ぬら 濡ら サ五7: +ぬり 塗 接尾1: +ぬりつけ 塗り付け 一段3: +ぬりつぶ 塗りつぶ サ五7: +ぬる ぬる 形4:マ五3: +ぬる 温 形4:マ五3: +ぬるまゆ ぬるま湯 名1: +ぬれ 濡れ 一段1: +ね 寝 一段1: +ね 練 ラ五7: +ね 根 代1: +ね 音 代1: +ね 子 代1: +ね 値 接尾1: +ね 禰 単漢: +ね 祢 単漢: +ねーむ ネーム 名1: +ねあがり 値上がり 代4: +ねあがり 根上 地名: +ねあげ 値上げ 代4: +ねい 寝入 ラ五3: +ねい 婦負 地名: +ねい 寧 単漢: +ねいき 寝息 代1: +ねいてぃぶ ネイティブ 代5: +ねいろ 音色 代1: +ねうち 値打ち 代1: +ねえ ねえ 感動: +ねえさん 姉さん 名2: +ねお 根尾 地名: +ねおん ネオン 名1: +ねか 寝か サ五1: +ねが 願 ワ五8: +ねがい 願 接尾1: +ねがいさげ 願い下げ 一段3: +ねぎ 値切 ラ五7: +ねぎ 葱 代1: +ねぎし 根岸 苗字: +ねぎし 根岸 地名: +ねぎら 労 ワ五3: +ねくたい ネクタイ 名1: +ねぐりじぇ ネグリジェ 名1: +ねこ 寝込 マ五3: +ねこ 猫 代1: +ねごこち 寝心地 代1: +ねごと 寝言 代1: +ねさがり 値下がり 代4: +ねさげ 値下げ 代4: +ねじ ねじ 代1:ラ五3: +ねじ 捻 ラ五7: +ねじ 螺 代1: +ねじめ 根占 地名: +ねすと ネスト 代1: +ねず 根津 地名: +ねずみ 鼠 代1: +ねた ねた 代1: +ねた 妬 マ五7: +ねだ ねだ ラ五8: +ねだん 値段 名2: +ねっき 熱気 名1: +ねっきょう 熱狂 名6: +ねっく ネック 名1: +ねっしゃびょう 熱射病 名1: +ねっしょう 熱唱 名6: +ねっしん 熱心 名8: +ねっせん 熱戦 名1: +ねったい 熱帯 名1: +ねっちゅう 熱中 代4: +ねっと ネット 名1: +ねっとう 熱湯 名1: +ねっとわーく ネットワーク 名4: +ねっぷう 熱風 名1: +ねつ 熱 接尾1: +ねつ 寝つ カ五7: +ねつい 熱意 名1: +ねつえん 熱演 名6: +ねつべん 熱弁 名1: +ねつぼう 熱望 名6: +ねつりょう 熱量 名1: +ねつれつ 熱烈 名8: +ねづ 根津 苗字: +ねづ 根津 地名: +ねづ 根付 カ五3: +ねづよ 根強 形2: +ねどこ 寝床 代1: +ねはば 値幅 名1: +ねはん 涅槃 名1: +ねば 粘 ラ五8: +ねば 根羽 地名: +ねばりづよ 粘り強 形2: +ねびえ 寝冷え 代4: +ねふだ 値札 代1: +ねぶか 根深 代1:形2: +ねぶそく 寝不足 代1: +ねまわし 根回し 代4: +ねむ 眠 形7:ラ五8: +ねむけ 眠気 代1: +ねむた 眠た 形5: +ねむろ 根室 地名: +ねもと 根本 苗字: +ねやがわ 寝屋川 地名: +ねら 狙 ワ五7: +ねりあわせ 練り合わせ 一段3: +ねりなお 練り直 サ五7: +ねりま 練馬 地名: +ねん 年 代1:助数2: +ねん 念 代1:ザ変: +ねん 然 単漢: +ねん 捻 単漢: +ねん 撚 単漢: +ねん 燃 単漢: +ねん 粘 単漢: +ねん 稔 単漢: +ねんかん 年間 名1:助数2: +ねんかん 年刊 名1: +ねんが 年賀 名2: +ねんがく 年額 名1: +ねんがじょう 年賀状 名2: +ねんがっぴ 年月日 名1: +ねんがん 念願 名6: +ねんき 年期 名1: +ねんき 年忌 名1:助数2: +ねんきん 年金 名1: +ねんぐ 年貢 代1: +ねんげつ 年月 名1: +ねんこう 年功 名1: +ねんご 年後 助数2: +ねんごう 年号 名1: +ねんさん 年産 名1: +ねんざ 捻挫 代4: +ねんし 年始 名2: +ねんしゅう 年収 名1: +ねんしゅつ 捻出 名6: +ねんしょ 念書 名1: +ねんしょう 燃焼 名6: +ねんしょう 年商 名1: +ねんしょう 年少 名8: +ねんじ 年次 名1:助数2: +ねんじゅう 年中 代1: +ねんすう 年数 名1: +ねんせい 年生 助数2: +ねんだい 年代 名1:助数2: +ねんちゃく 粘着 名6: +ねんちょう 年長 代5: +ねんてん 捻転 代4: +ねんとう 年頭 名1: +ねんとう 念頭 名1: +ねんど 年度 名1:助数2: +ねんど 粘土 名1: +ねんどまつ 年度末 名1: +ねんない 年内 名1: +ねんねん 年々 代6: +ねんぱい 年輩 名3: +ねんぱい 年配 名3: +ねんぴ 燃費 名1: +ねんぴょう 年表 名1: +ねんぶつ 念仏 名1: +ねんぶり 年ぶり 助数2: +ねんべつ 年別 名1: +ねんぽう 年俸 名1: +ねんぽう 年報 名1: +ねんまく 粘膜 名1: +ねんまつ 年末 名1: +ねんらい 年来 名1: +ねんり 年利 名1: +ねんりき 念力 名1: +ねんりょう 燃料 名1: +ねんりん 年輪 名1: +ねんれい 年齢 名1: +の 退 カ五1: +の 飲 マ五6: +の 呑 マ五6: +の 乗 ラ五8: +の 載 ラ五7: +の の 代1: +の 野 代1: +の 乃 単漢: +の 廼 単漢: +の 之 単漢: +の 埜 単漢: +のー ノー 名1: +のーと ノート 名1: +のーど ノード 名1: +のーまる ノーマル 名8: +のいず ノイズ 名1: +のいち 野市 地名: +のいまん ノイマン 名1: +のいろーぜ ノイローゼ 名1: +のう 脳 名1: +のう 膿 代1: +のう 農 代1: +のう 能 接尾1: +のう 能生 地名: +のう 嚢 単漢: +のう 悩 単漢: +のう 濃 単漢: +のう 納 単漢: +のういっけつ 脳溢血 名1: +のうえん 農園 名1: +のうか 農家 名1: +のうかい 納会 名1: +のうがく 農学 名1: +のうがた 直方 地名: +のうき 納期 名1: +のうきぐ 農機具 名1: +のうきょう 農協 名1: +のうきん 納金 名6: +のうぎょう 農業 名6: +のうこう 濃厚 形動4: +のうこう 農耕 名1: +のうさぎょう 農作業 代4: +のうさん 農産 名1: +のうしゃ 納車 名6: +のうしゅく 濃縮 名6: +のうじょう 農場 名1: +のうずい 脳髄 名1: +のうぜい 納税 名6: +のうそっちゅう 脳卒中 名1: +のうそん 農村 名1: +のうたん 濃淡 名1: +のうち 農地 名1: +のうど 濃度 名1: +のうどう 能動 名4: +のうにゅう 納入 名6: +のうは 脳波 名1: +のうはう ノウハウ 名1: +のうひん 納品 名6: +のうふ 納付 名6: +のうふ 農夫 名1: +のうまく 脳膜 名1: +のうみ 能美 苗字: +のうみ 能美 地名: +のうみつ 濃密 名8: +のうみん 農民 名1: +のうむ 濃霧 名1: +のうやく 農薬 名1: +のうり 脳裏 名1: +のうりつ 能率 名4: +のうりょう 納涼 名1: +のうりょく 能力 名1: +のうりん 農林 名1: +のうりんすいさんしょう 農林水産省 名1: +のおがた 直方 地名: +のかみ 野上 地名: +のが 逃 サ五5: +のがた 野方 地名: +のがみ 野上 苗字: +のがれ 逃れ 一段1:接尾8: +のき 軒 代1: +のぎ 野木 苗字: +のぎ 能義 地名: +のぎ 禾 単漢: +のぐち 野口 苗字: +のけ 除け 一段1: +のけ 退け 一段1: +のこ 残 サ五6:ラ五8: +のこぎり 鋸 代1: +のさか 野栄 地名: +のざき 野崎 苗字: +のざき 野崎 地名: +のざわ 野沢 苗字: +のざわ 野沢 地名: +のざわおんせん 野沢温泉 地名: +のしろ 能代 地名: +のじま 野島 苗字: +のじゅく 野宿 代4: +のじり 野尻 苗字: +のじり 野尻 地名: +のせ 乗せ 一段2: +のせ 載せ 一段2: +のせ 能勢 地名: +のせがわ 野迫川 地名: +のぞ 除 カ五7: +のぞ 覗 カ五7: +のぞ 望 マ五8: +のぞ 臨 マ五8: +のぞきこ のぞき込 マ五7: +のぞまし 望まし 形3: +のたま のたま ワ五1: +のだ 野田 苗字: +のだ 野田 地名: +のだがわ 野田川 地名: +のち 後 代1: +のちのち 後々 代6: +のっと 乗っ取 ラ五7: +のっと 則 ラ五1: +のつ 野津 苗字: +のつけ 野付 地名: +のつはる 野津原 地名: +のと 能都 地名: +のとじま 能登島 地名: +のど 咽 代1: +のど 喉 代1: +のどか のどか 形動4: +のなか 野中 苗字: +ののいち 野々市 地名: +ののし 罵 ラ五7: +のはら 野原 代1: +のば 伸ば サ五7: +のば 延ば サ五7: +のばなし 野放し 代5: +のび 伸び 一段3: +のび 延び 一段3: +のびなや 伸び悩 マ五7: +のびのび のびのび 副3: +のびのび 伸び伸び 副3: +のぶ 伸 単漢: +のぶ 延 単漢: +のぶ 宣 単漢: +のぶ 暢 単漢: +のぶあき 信明 名前: +のぶお 伸夫 名前: +のぶお 信男 名前: +のぶお 信夫 名前: +のぶお 信雄 名前: +のぶこ 伸子 名前: +のぶこ 信子 名前: +のぶたか 信孝 名前: +のぶなが 信長 名前: +のぶひこ 信彦 名前: +のぶひこ 宣彦 名前: +のぶひろ 伸浩 名前: +のぶゆき 信幸 名前: +のぶゆき 信行 名前: +のぶゆき 信之 名前: +のぶよし 信義 名前: +のへじ 野辺地 地名: +のべ 述べ 一段1: +のべ 伸べ 一段1: +のべ 延べ 一段3: +のべ 野辺 代1: +のべおか 延岡 地名: +のぼ 登 ラ五8: +のぼ 昇 ラ五8: +のぼ 上 ラ五8: +のぼせ のぼせ 一段3: +のぼりつめ 上り詰め 一段1: +のぼりべつ 登別 地名: +のぼる 昇 名前: +のぼる 登 名前: +のま 々 単漢: +のみ 蚤 代1: +のみ 能美 地名: +のみねーと ノミネート 代4: +のみほ 飲み干 サ五5: +のみもの 飲物 名2: +のみや 飲み屋 代1: +のむら 野村 苗字: +のもざき 野母崎 地名: +のもと 野本 苗字: +のやま 野山 代1: +のら 野良 代1: +のり 海苔 代1: +のり 糊 代1: +のり 則 代1: +のり 規 単漢: +のり 憲 単漢: +のり 徳 単漢: +のり 範 単漢: +のりあき 則明 名前: +のりあげ 乗り上げ 一段3: +のりいれ 乗り入れ 一段3: +のりうつ 乗り移 ラ五7: +のりお 紀男 名前: +のりお 紀夫 名前: +のりお 則夫 名前: +のりおくれ 乗り遅れ 一段4: +のりかえ 乗り換え 一段4: +のりかえ 乗換 名6: +のりかか 乗りかか ラ五7: +のりき 乗り切 ラ五7: +のりく 乗り組 マ五7: +のりくみいん 乗組員 名1: +のりくら 乗鞍 地名: +のりこ 乗り越 サ五8: +のりこ 乗り込 マ五7: +のりこ 紀子 名前: +のりこ 典子 名前: +のりこ 法子 名前: +のりこえ 乗り越え 一段1: +のりすて 乗り捨て 一段3: +のりだ 乗り出 サ五5: +のりつ 乗り継 ガ五7: +のりつけ 乗り付け 一段1: +のりづけ 糊付け 代4: +のりと 祝詞 名1: +のりば 乗り場 名1: +のりまわ 乗り回 サ五7: +のりもの 乗り物 名1: +のりゆき 紀之 名前: +のるうぇー ノルウェー 地名: +のるむ ノルム 名1: +のろ のろ 形2:ワ五7: +のろ 呪 ワ五7: +のろ 鈍 形2: +のろ 野呂 苗字: +のろわし 呪わし 形3: +のん ノン 接頭1: +のんき 暢気 代5: +のんびり のんびり 代4: +は 履 カ五6: +は 吐 カ五6: +は 掃 カ五8: +は 剥 ガ五8: +は 貼 ラ五7: +は 張 ラ五7: +は 這 ワ五5: +は 葉 代1: +は 歯 代1: +は 刃 代1: +は 羽 代1: +は 覇 代1: +は 端 代1: +は 派 接尾1: +は 波 代1: +は 頗 単漢: +は 巴 単漢: +は 把 単漢: +は 播 単漢: +は 杷 単漢: +は 琶 単漢: +は 破 単漢: +は 芭 単漢: +は 簸 単漢: +は 玻 単漢: +はーと ハート 名1: +はーど ハード 名8: +はーどうぇあ ハードウェア 名1: +はーどうえあ ハードウエア 名1: +はーふ ハーフ 名1: +はーぶ ハーブ 名1: +はあ はあ 感動: +はあく 把握 名6: +はい はい 感動: +はい 肺 代1: +はい 灰 代1: +はい 杯 代1:助数2: +はい 輩 代1: +はい 牌 代1: +はい ハイ 代1: +はい 拝 代4: +はい 敗 助数2: +はい 入 ラ五6: +はい 廃 サ変:サ五1: +はい 排 サ変:サ五1: +はい 配 サ変:サ五1: +はい 俳 単漢: +はい 盃 単漢: +はい 背 単漢: +はい 稗 単漢: +はいあん 廃案 名1: +はいいろ 灰色 名1: +はいいん 敗因 名1: +はいうぇい ハイウェイ 名1: +はいえん 肺炎 名1: +はいかい 俳諧 名1: +はいかん 配管 名6: +はいかん 廃刊 名6: +はいき 廃棄 名6: +はいき 排気 名6: +はいきゅう 配給 名6: +はいきょ 廃虚 名1: +はいきんぐ ハイキング 名6: +はいぎょう 廃業 名6: +はいく 俳句 代1: +はいぐうしゃ 配偶者 名1: +はいけい 拝啓 名1: +はいけい 背景 名1: +はいけん 拝見 名6: +はいご 背後 代1: +はいごう 配合 名6: +はいざら 灰皿 名1: +はいし 廃止 名6: +はいしゃ 歯医者 代2: +はいしゃ 廃車 代4: +はいしゃ 配車 代4: +はいしゃ 敗者 名1: +はいしゃく 拝借 名6: +はいしゅつ 排出 名6: +はいしょく 配色 名6: +はいじょ 排除 名6: +はいじん 俳人 名1: +はいじん 廃人 名1: +はいすい 排水 名6: +はいすい 配水 名6: +はいせき 排斥 名6: +はいせつ 排泄 名6: +はいせん 配線 名6: +はいせん 敗戦 名6: +はいぜん 配膳 名6: +はいそう 配送 名6: +はいぞく 配属 名6: +はいた 排他 名4: +はいたい 敗退 名6: +はいたつ 配達 名6: +はいち 配置 名6: +はいちょう 拝聴 名6: +はいつ ハイツ 代1: +はいてく ハイテク 名8: +はいでん 配電 名6: +はいとう 配当 名6: +はいはん 排反 名1: +はいばら 榛原 地名: +はいばん 廃盤 名1: +はいぱー ハイパー 名1: +はいひん 廃品 名1: +はいび 配備 名6: +はいふ 配布 名6: +はいふ 配付 名6: +はいふく 拝復 名1: +はいぶつ 廃物 名1: +はいぶん 配分 名6: +はいぼく 敗北 名6: +はいむ ハイム 名1: +はいめん 背面 名1: +はいゆう 俳優 代2: +はいりこ 入り込 マ五7: +はいりょ 配慮 名7: +はいれつ 配列 名6: +はいれべる ハイレベル 名8: +はうす ハウス 名1: +はえ 生え 一段1: +はえ 栄え 一段3: +はえ 映え 一段3: +はえ 蝿 代1: +はえばる 南風原 地名: +はお 羽織 ラ五7: +はおり 羽織 代1:  +はか 墓 代1: +はか 計 ラ五7: +はか 図 ラ五7: +はか 測 ラ五7: +はか 量 ラ五7: +はか 謀 ラ五7: +はか 諮 ラ五7: +はか はか ラ五8: +はかい 破壊 名6: +はかい 破戒 名1: +はかせ 博士 名1: +はかた 博多 地名: +はかた 伯方 地名: +はかど 捗 ラ五3: +はかな はかな 形3:マ五3: +はかま 袴 代1: +はから 計ら ワ五3: +はかり 秤 代1: +はかりごと 謀 代1: +はが 芳賀 苗字: +はが 芳賀 地名: +はが 波賀 地名: +はがき はがき 名2: +はがき 葉書 名2: +はがね 鋼 代1: +はき 破棄 名6: +はき 覇気 名1: +はき 杷木 地名: +はきだ 吐き出 サ五7: +はきもの 履物 名1: +はきゅう 波及 代4: +はきょく 破局 名1: +はぎ 萩 代1: +はぎ 萩 地名: +はぎ 矧 単漢: +はぎの 萩野 苗字: +はぎれ 歯切れ 代1: +はぎわら 萩原 苗字: +はく 箔 代1: +はく 伯 代1: +はく 白 代1: +はく 博 代4: +はく 泊 助数2: +はく 拍 助数2: +はく 栢 単漢: +はく 狛 単漢: +はく 剥 単漢: +はく 柏 単漢: +はく 粕 単漢: +はく 舶 単漢: +はく 薄 単漢: +はく 迫 単漢: +はくあ 白亜 名1: +はくあい 博愛 名1: +はくい 白衣 名1: +はくい 羽咋 地名: +はくがい 迫害 名6: +はくがく 博学 名1: +はくさい 白菜 名1: +はくさん 白山 地名: +はくし 博士 名1: +はくし 白紙 名1: +はくしき 博識 名1: +はくしゃ 薄謝 名1: +はくしゃく 伯爵 名1: +はくしゅ 拍手 名6: +はくしゅう 白州 地名: +はくしょ 白書 名1: +はくしょく 白色 名1: +はくしん 迫真 名1: +はくじつ 白日 名1: +はくじょう 薄情 名8: +はくじょう 白状 名6: +はくじん 白人 名1: +はくすい 白水 地名: +はくた 伯太 地名: +はくだつ 剥奪 名6: +はくち 白痴 名1: +はくちゅう 白昼 名1: +はくちょう 白鳥 代1: +はくねつ 白熱 名6: +はくば 白馬 地名: +はくぶつ 博物 名1: +はくぶつかん 博物館 名1: +はくぼく 白墨 名1: +はくまい 白米 名1: +はくらい 舶来 名6: +はくらんかい 博覧会 代1: +はくり 剥離 名6: +はくりょく 迫力 名1: +はくろ 白露 代1: +はぐく 育 マ五7: +はぐり 葉栗 地名: +はぐるま 歯車 名1: +はぐろ 羽黒 地名: +はけ 刷毛 名1: +はけ はけ 一段3: +はけ 捌け 一段3: +はけい 波形 名1: +はけん 派遣 名6: +はげ はげ 一段3: +はげ 剥げ 一段3: +はげ 禿げ 一段3: +はげ 励 マ五8: +はげ 禿 単漢: +はげし 激し 形4: +はげし 烈し 形4: +はこ 箱 代1:助数2: +はこ 運 バ五8: +はこ 函 単漢: +はこう 跛行 代4: +はこだて 函館 地名: +はこね 箱根 地名: +はこびこ 運び込 マ五7: +はこびだ 運び出 サ五7: +はさ 挟 マ五7: +はさ はさ マ五7: +はさき 波崎 地名: +はさま 挟間 地名: +はさま 迫 地名: +はさみ 波佐見 地名: +はさん 破産 名6: +はざかいき 端境期 名1: +はざま 狭間 名1: +はざま 間 苗字: +はざま 硲 単漢: +はし 橋 代1: +はし 端 代1: +はし 箸 名2: +はし 走 ラ五8: +はしかみ 階上 地名: +はしがき はしがき 代1: +はしぐち 橋口 苗字: +はしご 梯子 代1: +はしだ 橋田 苗字: +はしづめ 橋詰 苗字: +はしづめ 橋爪 苗字: +はしま 羽島 地名: +はしもと 橋本 苗字: +はしもと 橋本 地名: +はしゃ はしゃ ガ五8: +はしゃ 覇者 名1: +はしゅつ 派出 名6: +はしゅつじょ 派出所 名1: +はしら 柱 代1: +はしりがき 走り書き 代4: +はしりだ 走り出 サ五7: +はしりまわ 走り回 ラ五5: +はしわたし 橋渡し 代4: +はじ はじ カ五4:代1: +はじ 弾 カ五3: +はじ 恥 代1: +はじま 始ま ラ五3: +はじめ はじめ 一段2: +はじめ 始め 接尾1:一段2: +はじめ 初め 名1: +はじめ 一 名前: +はじめ 肇 名前: +はじめて 初めて 代6: +はす 蓮 代1: +はすいけ 蓮池 苗字: +はすう 端数 名1: +はすだ 蓮田 地名: +はすぬま 蓮沼 苗字: +はすぬま 蓮沼 地名: +はすみ 羽須美 地名: +はすみ 蓮見 苗字: +はず 外 サ五7: +はず 弾 マ五7: +はず はず 代1:マ五7:サ五7: +はず 筈 代1: +はず 幡豆 地名: +はずかし 恥ずかし 形10: +はずかしめ 辱め 一段3: +はずれ はずれ 一段3: +はずれ 外れ 一段3: +はせ 馳せ 一段1: +はせ 長谷 苗字: +はせい 派生 名6: +はせがわ 長谷川 苗字: +はせべ 長谷部 苗字: +はせん 波線 代1: +はせん 破線 代1: +はぜ 鯊 代1: +はぜ 櫨 単漢: +はそん 破損 名6: +はた 果た サ五7: +はた 旗 代1: +はた 機 代1: +はた 端 代1: +はた 幡 代1: +はた 畑 代1: +はた 畠 代1: +はた 波田 地名: +はた 幡多 地名: +はた 秦 苗字: +はたいろ 旗色 名1: +はたけ 畑 代1: +はたけ 畠 代1: +はたけやま 畠山 苗字: +はたしょう 秦荘 地名: +はたち 二十歳 名1: +はたと はたと 副1: +はたなか 畑中 苗字: +はたなか 畠中 苗字: +はたの 波多野 苗字: +はたの 畑野 苗字: +はたはた 鰰 代1: +はたやま 畑山 苗字: +はたら 働 カ五8: +はたらきかけ 働きかけ 一段3: +はたん 破綻 名6: +はだ 肌 名2: +はだ 膚 名1: +はだか 裸 代1: +はだぎ 肌着 名1: +はだざわり 肌触り 代1: +はだし 裸足 代1: +はだの 秦野 地名: +はだみ 肌身 代1: +はだん 破談 名1: +はち 蜂 代1: +はち 鉢 代1: +はちおうじ 八王子 地名: +はちかい 八開 地名: +はちく 破竹 代1: +はちじょう 八丈 地名: +はちのへ 八戸 地名: +はちまん 八幡 地名: +はちみつ 蜂蜜 名1: +はちもり 八森 地名: +はちょう 波長 名1: +はちりゅう 八竜 地名: +はちろう 八郎 名前: +はちろうがた 八郎潟 地名: +はっ 発 サ変:サ五1: +はっか 発火 名6: +はっかー ハッカー 名1: +はっかいさん 八海山 地名: +はっかく 発覚 名6: +はっかん 発刊 名6: +はっき 発揮 代4: +はっきょう 発狂 名6: +はっきり はっきり 副3: +はっく ハック 名6: +はっくつ 発掘 名6: +はっけん 発見 名6: +はっけん 発券 名6: +はっこう 発行 名6: +はっこう 発効 名6: +はっこう 発光 名6: +はっこつ 白骨 名4: +はっさん 発散 名6: +はっしゃ 発車 名6: +はっしゃ 発射 名6: +はっしょう 発祥 名1: +はっしん 発信 名6: +はっしん 発振 名6: +はっしん 発進 名6: +はっせい 発生 名6: +はっせい 発声 名6: +はっそう 発想 名1: +はっそう 発送 名6: +はった 八田 苗字: +はったつ 発達 名6: +はっちゃく 発着 名6: +はっちゅう 発注 名6: +はってん 発展 名7: +はっとう 八東 地名: +はっとり 服部 苗字: +はっとり 服部 地名: +はっぱ 葉っぱ 名1: +はっぴー ハッピー 名8: +はっぴょう 発表 名6: +はっぴょうかい 発表会 名1: +はっぷ 発布 名6: +はっぽう 発砲 名6: +はっぽう 八方 名1: +はつ 発 接尾4:助数2: +はつ 初 代1:接頭1: +はつ 髪 単漢: +はつ 溌 単漢: +はつ 醗 単漢: +はついく 発育 名6: +はつえ 初江 名前: +はつお 初男 名前: +はつおん 発音 名6: +はつか 二十日 代6: +はつかいち 廿日市 地名: +はつが 発芽 名6: +はつげん 発言 名6: +はつこい 初恋 名1: +はつじょう 発情 名6: +はつでん 発電 名6: +はつどう 発動 名6: +はつに 初荷 名1: +はつねつ 発熱 名6: +はつばい 発売 名6: +はつびょう 発病 名6: +はつみみ 初耳 名1: +はつめい 発明 名8:サ変: +はつもうで 初詣 名1: +はつれい 発令 名6: +はて はて 感動: +はて 果て 一段3: +はで 派手 名8: +はと 鳩 代1: +はとがや 鳩ヶ谷 地名: +はとやま 鳩山 苗字: +はとり 羽鳥 地名: +はどう 波動 代1: +はどめ 歯止め 代4: +はな 話 サ五8: +はな 放 サ五8:タ五5: +はな 離 サ五8: +はな 花 名1: +はな 鼻 名1: +はな 華 名1: +はない 花井 苗字: +はないずみ 花泉 地名: +はなおか 花岡 苗字: +はなげ 鼻毛 代1: +はなこ 花子 名前: +はなこ 華子 名前: +はなざかり 花盛り 名1: +はなざわ 花沢 苗字: +はなし 話 代4: +はなし 噺 代1: +はなしあ 話し合 ワ五8: +はなしこ 話し込 マ五7: +はなぞの 花園 代1: +はなたば 花束 名1: +はなだ 花田 苗字: +はなぢ 鼻血 代1: +はなてん 放出 地名: +はなはだ 甚だ 副1: +はなはだし 甚だし 形3: +はなばなし 華々し 形3: +はなび 花火 名1: +はなびら 花びら 代1: +はなまき 花巻 地名: +はなみ 花見 代3: +はなむこ 花婿 代2: +はなや 華や ガ五7: +はなや 花屋 名2: +はなやか 華やか 形動4: +はなやま 花山 苗字: +はなやま 花山 地名: +はなれ 離れ 一段4: +はなれ 放れ 一段2: +はなわ 塙 単漢: +はに 埴 代1: +はにしな 埴科 地名: +はにゅう 羽生 苗字: +はにゅう 羽生 地名: +はね 羽根 代1: +はね 羽 代1: +はね はね 一段1: +はね 跳ね 一段1: +はねかえ 跳ね返 サ五7:ラ五7: +はねだ 羽田 苗字: +はねだ 羽田 地名: +はねむーん ハネムーン 名1: +はのうら 羽ノ浦 地名: +はは 母 代1: +ははおや 母親 代1: +はば 幅 代1: +はば 巾 代1: +はば 阻 マ五7: +はばた 羽ばた カ五7: +はばつ 派閥 名1: +はばひろ 幅広 形2: +はびきの 羽曳野 地名: +はびこ はびこ ラ五1: +はぶ 省 カ五5: +はぶり 羽振り 代1: +はぼろ 羽幌 地名: +はま はま ラ五1: +はま 浜 代1: +はま 濱 単漢: +はまおか 浜岡 苗字: +はまおか 浜岡 地名: +はまき 葉巻 名1: +はまきた 浜北 苗字: +はまきた 浜北 地名: +はまぐち 浜口 苗字: +はまぐり 蛤 代1: +はまさか 浜坂 地名: +はまざき 浜崎 苗字: +はまじま 浜島 地名: +はまだ 浜田 苗字: +はまだ 浜田 地名: +はまとんべつ 浜頓別 地名: +はまな 浜名 苗字: +はまな 浜名 地名: +はまなか 浜中 苗字: +はまなか 浜中 地名: +はまの 浜野 苗字: +はまます 浜益 地名: +はままつ 浜松 地名: +はままつ 浜松 苗字: +はみがき 歯磨き 代4: +はみだ はみ出 サ五7: +はみんぐ ハミング 代4: +はむら 羽村 地名: +はめ はめ 一段1: +はめ 填め 一段1: +はめ 羽目 代1: +はめこ はめ込 マ五7: +はめつ 破滅 名6: +はも 鱧 代1: +はもの 刃物 名1: +はもん 波紋 名1: +はや はや 副1:ラ五7: +はや 逸 ラ五1: +はや 生や サ五5: +はや 早 副1:形9: +はや 速 形9: +はやかわ 早川 苗字: +はやがてん 早合点 代4: +はやきた 早来 地名: +はやさか 早坂 苗字: +はやし 林 苗字: +はやし 林 名1: +はやし 囃子 名2: +はやしだ 林田 苗字: +はやしま 早島 地名: +はやせ 早瀬 苗字: +はやと 隼人 名前: +はやと 勇人 名前: +はやとちり 早とちり 代4: +はやの 早野 苗字: +はやばや 早々 副2: +はやぶさ 隼 代1: +はやま 早ま ラ五3: +はやま 速ま ラ五3: +はやま 葉山 苗字: +はやま 葉山 地名: +はやみ 早見 苗字: +はやみ 速見 地名: +はやみず 速水 苗字: +はやめ 早め 形動6:一段3: +はやめ 速め 一段3: +はら 腹 代1: +はら 原 代1: +はら 原 苗字: +はら はら サ五5: +はら 晴ら サ五5: +はら 払 ワ五8: +はらいこ 払い込 マ五7: +はらいさげ 払い下げ 一段3: +はらいもど 払い戻 サ五7: +はらぐち 原口 苗字: +はらしま 原島 苗字: +はらじゅく 原宿 地名: +はらだ 原田 苗字: +はらまち 原町 地名: +はらわた 腸 代1: +はらん 波乱 名1: +はり 針 代1: +はり 梁 代1: +はり 播 単漢: +はりあ 張り合 ワ五7: +はりがね 針金 名1: +はりがみ 張り紙 代4: +はりがみ 貼紙 代4: +はりき 張り切 ラ五7: +はりこ 張り込 マ五7: +はりこ 張子 名1: +はりだ 張り出 サ五7: +はりつけ 張り付け 一段3: +はりま 播磨 苗字: +はりま 播磨 地名: +はる 春 代1:接頭1: +はるえ 春江 名前: +はるお 治男 名前: +はるお 治夫 名前: +はるお 治雄 名前: +はるお 春男 名前: +はるお 春夫 名前: +はるお 春雄 名前: +はるお 晴夫 名前: +はるお 晴雄 名前: +はるか はるか 副1:形動1: +はるか 遥か 副1:形動1: +はるこ 春子 名前: +はるな 榛名 地名: +はるの 春野 地名: +はるばる はるばる 副2: +はるひ 春日 地名: +はるひこ 春彦 名前: +はるひこ 晴彦 名前: +はるひさ 晴久 名前: +はるみ 晴海 地名: +はるみ 春美 名前: +はるめ 春め カ五3: +はるやすみ 春休み 名1: +はれ 晴れ 一段3: +はれ 腫れ 一段3: +はれあが 晴れ上が ラ五7: +はれぎ 晴れ着 代1: +はれすがた 晴れ姿 名1: +はれつ 破裂 名6: +はれわた 晴れ渡 ラ五7: +はろう 波浪 名1: +はわい ハワイ 地名: +はわい 羽合 地名: +はん 判 代1:ザ変: +はん 半 代1: +はん 版 代1:助数: +はん 犯 接尾1:助数2: +はん 班 接尾1:助数: +はん 反 接頭1:サ変:サ五1: +はん 藩 代1: +はん 範 代1: +はん 煩 代1: +はん 斑 代1: +はん 坂 単漢: +はん 阪 単漢: +はん 幡 単漢: +はん 伴 単漢: +はん 叛 単漢: +はん 帆 単漢: +はん 搬 単漢: +はん 板 単漢: +はん 氾 単漢: +はん 汎 単漢: +はん 畔 単漢: +はん 繁 単漢: +はん 般 単漢: +はん 販 単漢: +はん 釆 単漢: +はん 頒 単漢: +はん 飯 単漢: +はん 凡 単漢: +はんい 範囲 名1: +はんえい 繁栄 名7: +はんえい 反映 名6: +はんえん 半円 名1: +はんか 繁華 名8: +はんかい 半壊 名6: +はんかく 半角 名1: +はんかん 反感 名1: +はんがく 半額 名1: +はんき 半期 名1: +はんきゅう 阪急 企業: +はんきゅう 半球 名1: +はんきょう 反響 名6: +はんぎゃく 反逆 名6: +はんぐ ハング 代4:ラ五1: +はんけい 半径 名1: +はんけつ 判決 名6: +はんげき 反撃 名6: +はんげん 半減 名6: +はんこう 反抗 名6: +はんこう 犯行 名1: +はんご 反語 名1: +はんさよう 反作用 名1: +はんざい 犯罪 名1: +はんざつ 繁雑 名8: +はんざつ 煩雑 名8: +はんざん 飯山 地名: +はんしゃ 反射 名6: +はんしゅう 半周 名6: +はんしゅつ 搬出 名6: +はんしょう 半焼 名6: +はんしょく 繁殖 名6: +はんしん 阪神 企業: +はんしん 半身 名1: +はんじ 判事 名1: +はんじゅく 半熟 名8: +はんじょう 繁盛 名7: +はんすう 半数 名1: +はんすう 反芻 名6: +はんせい 反省 名6: +はんぜん 判然 代4:形動2: +はんそ 反訴 名1: +はんそう 搬送 名6: +はんそく 反則 名6: +はんそで 半袖 名1: +はんぞうもん 半蔵門 地名: +はんたい 反対 名8:サ変: +はんだ 半田 苗字: +はんだ 半田 地名: +はんだい 阪大 名1: +はんだん 判断 名6: +はんちゅう 範疇 名1: +はんちょう 班長 名1: +はんつき 半月 名1: +はんてい 判定 名6: +はんてん 反転 名6: +はんてん 斑点 名1: +はんとう 半島 名1: +はんとうめい 半透明 代5: +はんとし 半年 名1: +はんど ハンド 名1: +はんどう 反動 名4: +はんどうたい 半導体 名1: +はんどく 判読 名6: +はんどら ハンドラ 名1: +はんどりんぐ ハンドリング 名1: +はんどる ハンドル 名1: +はんなん 阪南 地名: +はんにち 半日 名1: +はんにち 反日 名4: +はんにゃ 般若 名1: +はんにゅう 搬入 名6: +はんにん 犯人 名1: +はんね 半値 名1: +はんのう 反応 名6: +はんのう 飯能 地名: +はんはん 半々 名1: +はんば 飯場 名1: +はんばい 販売 名7: +はんばいき 販売機 名1: +はんばく 反駁 名6: +はんぱ 半端 名8: +はんぱつ 反発 名6: +はんぶん 半分 代1: +はんぷ 頒布 名6: +はんぷく 反復 名6: +はんべつ 判別 名6: +はんぼう 繁忙 名10: +はんまー ハンマー 名1: +はんめい 判明 名6: +はんめん 反面 名1: +はんめん 半面 名1: +はんも 繁茂 代4: +はんもく 反目 名6: +はんもん 反問 名6: +はんよう 汎用 名4: +はんらく 反落 名6: +はんらん 氾濫 名6: +はんらん 反乱 名6: +はんりょ 伴侶 名1: +はんれい 判例 名1: +はんれい 凡例 名1: +はんろん 反論 名6: +ば 場 代1:接尾2: +ば 馬 接尾2: +ば 羽 助数2: +ば 婆 単漢: +ば 罵 単漢: +ば 芭 単漢: +ばー バー 名1: +ばーくれー バークレー 地名: +ばーくれい バークレイ 地名: +ばーじょん バージョン 名1: +ばーべきゅー バーベキュー 名1: +ばあい 場合 代1: +ばい 倍 代4:助数2: +ばい 培 単漢: +ばい 媒 単漢: +ばい 唄 単漢: +ばい 貝 単漢: +ばい 梅 単漢: +ばい 楳 単漢: +ばい 煤 単漢: +ばい 狽 単漢: +ばい 買 単漢: +ばい 売 単漢: +ばい 賠 単漢: +ばい 陪 単漢: +ばい 吠 単漢: +ばいあすろん バイアスロン 名1: +ばいう 梅雨 名1: +ばいお バイオ 名1: +ばいか 売価 名1: +ばいか 倍加 名6: +ばいかい 媒介 名6: +ばいがく 倍額 名1: +ばいきゃく 売却 名6: +ばいく バイク 名1: +ばいしゃく 媒酌 名7: +ばいしゅう 買収 名6: +ばいしゅん 売春 名6: +ばいしょう 賠償 名6: +ばいしん 陪審 名1: +ばいすう 倍数 名1: +ばいぞう 倍増 名6: +ばいたい 媒体 名1: +ばいてん 売店 名1: +ばいと バイト 助数: +ばいと バイト 名6: +ばいなり バイナリ 名1: +ばいばい 売買 名6: +ばいめい 売名 名1: +ばいやく 売約 名6: +ばいよう 培養 名6: +ばいようえき 培養液 名1: +ばいりつ 倍率 名1: +ばいんでぃんぐ バインディング 代1: +ばいんど バインド 代4: +ばか 化か サ五1: +ばか 馬鹿 名8: +ばかず 場数 名1: +ばかばかし ばかばかし 形5: +ばかばかし バカバカし 形5: +ばく 麦 代1: +ばく 曝 単漢: +ばく 爆 単漢: +ばく 漠 単漢: +ばく 幕 単漢: +ばく 縛 単漢: +ばく 莫 単漢: +ばく 駁 単漢: +ばく 暴 単漢: +ばくげき 爆撃 名6: +ばくしょう 爆笑 名6: +ばくぜん 漠然 形動2: +ばくだい 莫大 形動4: +ばくだん 爆弾 名1: +ばくてりあ バクテリア 名1: +ばくは 爆破 名6: +ばくはつ 爆発 名6: +ばくまつ 幕末 名1: +ばくやく 爆薬 名1: +ばくろ 暴露 名6: +ばぐ バグ 名1:ラ五1: +ばけ 化け 一段1: +ばけつ バケツ 名1: +ばこ 箱 接尾2: +ばし 橋 接尾2: +ばしょ 場所 名1: +ばしょう 芭蕉 名前: +ばしら 柱 接尾2: +ばす バス 名1: +ばすえ 場末 名1: +ばすけっと バスケット 代3: +ばすてい バス停 名1: +ばせい 罵声 名1: +ばたー バター 名1: +ばち 罰 代1: +ばっ 罰 サ変:サ五1: +ばっきん 罰金 名1: +ばっく バック 代4: +ばっじ バッジ 名1: +ばっすい 抜粋 名6: +ばっそく 罰則 名1: +ばっち バッチ 名1: +ばってき 抜擢 名6: +ばっと バット 名1: +ばっは バッハ 代1: +ばっふぁ バッファ 名1: +ばっぽん 抜本 名1: +ばつ 罰 代1: +ばつ 閥 代1: +ばつ × 代1: +ばつ 抜 単漢: +ばつ 筏 単漢: +ばつ 伐 単漢: +ばつ 末 単漢: +ばつぐん 抜群 名8: +ばとう 罵倒 名6: +ばとう 馬頭 地名: +ばどみんとん バドミントン 名1: +ばなし 話 接尾2: +ばなれ 離れ 接尾7: +ばにら バニラ 名1: +ばば 婆 代1: +ばば 馬場 苗字: +ばぶる バブル 名1: +ばめん 場面 名1: +ばら ばら 名1:サ五7: +ばらばら ばらばら 代6: +ばらばら バラバラ 代6: +ばらま ばらま カ五7: +ばらんす バランス 名1: +ばり 針 接尾2: +ばりえーしょん バリエーション 名1: +ばりき 馬力 名1: +ばりゅー バリュー 名1: +ばるく バルク 名1: +ばるぶ バルブ 名1: +ばれえ バレエ 名1: +ばれんたいん バレンタイン 名1: +ばろめーた バロメータ 名1: +ばん 晩 代1: +ばん 盤 代1: +ばん 番 接尾1:助数2: +ばん 判 接尾2: +ばん 板 接尾2: +ばん 版 接尾2: +ばん 播 単漢: +ばん 伴 単漢: +ばん 挽 単漢: +ばん 磐 単漢: +ばん 蕃 単漢: +ばん 蛮 単漢: +ばん 万 単漢: +ばんかい 挽回 名6: +ばんかん 万感 名1: +ばんがい 番外 名1: +ばんきん 板金 名1: +ばんく バンク 名6: +ばんぐみ 番組 名1: +ばんこく 万国 名1: +ばんこん 晩婚 名1: +ばんごう 番号 名1: +ばんさん 晩餐 名1: +ばんざい 万歳 名1: +ばんしゃく 晩酌 名6: +ばんしゅう 晩秋 名1: +ばんしゅん 晩春 名1: +ばんしょう 万障 名1: +ばんじ 万事 名1: +ばんせい 晩成 名6: +ばんせん 番線 名1:助数2: +ばんぜん 万全 名8: +ばんそう 伴奏 名6: +ばんだい 番台 名1: +ばんだい 磐梯 地名: +ばんち 番地 名1:助数2: +ばんて 番手 助数: +ばんとう 番頭 名1: +ばんど バンド 名1: +ばんどう 坂東 苗字: +ばんにん 番人 名1: +ばんにん 万人 名1: +ばんねん 晩年 名1: +ばんのう 万能 名1: +ばんばん ばんばん 副1: +ばんぱく 万博 名1: +ばんぶつ 万物 名1: +ばんぺい 番兵 名1: +ばんみん 万民 名1: +ばんゆう 万有 名1: +ぱ 波 単漢: +ぱーせんと パーセント 助数2: +ぱーせんと % 助数2: +ぱーそなりてぃ パーソナリティ 名1: +ぱーそなる パーソナル 名8: +ぱーてぃ パーティ 名1: +ぱーてぃー パーティー 名1: +ぱーてぃしょん パーティション 名1: +ぱーと パート 名1: +ぱーとなー パートナー 名1: +ぱーふぇくと パーフェクト 名8: +ぱーみっしょん パーミッション 名1: +ぱーる パール 名1: +ぱい パイ 名1: +ぱい 敗 助数2: +ぱい 杯 助数2: +ぱいおにあ パイオニア 企業: +ぱいぷ パイプ 名1: +ぱいろっと パイロット 名1: +ぱきすたん パキスタン 地名: +ぱく 泊 助数2: +ぱく 拍 助数2: +ぱけっと パケット 名1: +ぱこ 箱 助数2: +ぱじゃま パジャマ 名1: +ぱす パス 代4: +ぱすかる パスカル 名1: +ぱすた パスタ 名1: +ぱすてる パステル 名1: +ぱすわーど パスワード 名1: +ぱずる パズル 名1: +ぱそこん パソコン 名1: +ぱたーん パターン 名1: +ぱちんこ パチンコ 名1: +ぱっく パック 名6: +ぱっけーじ パッケージ 名1: +ぱっしんぐ パッシング 名6: +ぱっち パッチ 代4: +ぱっと パット 代3: +ぱっど パッド 名1: +ぱつ 発 助数2: +ぱなま パナマ 地名: +ぱにっく パニック 名1: +ぱねりすと パネリスト 名1: +ぱねる パネル 名1: +ぱのらま パノラマ 名1: +ぱぱ パパ 名1: +ぱふぉーまんす パフォーマンス 名1: +ぱぶりっく パブリック 名8: +ぱらぐらふ パラグラフ 名1: +ぱらふぃん パラフィン 名1: +ぱらめーた パラメータ 名1: +ぱらめとろん パラメトロン 名1: +ぱられる パラレル 名8: +ぱり パリ 地名: +ぱるす パルス 名1: +ぱるぷ パルプ 名1: +ぱれす パレス 名1: +ぱれすちな パレスチナ 地名: +ぱれっと パレット 名1: +ぱろでぃ パロディ 名1: +ぱわー パワー 名1: +ぱわふる パワフル 名8: +ぱん パン 名1: +ぱん 版 助数: +ぱんく パンク 代4: +ぱんだ パンダ 名1: +ぱんつ パンツ 名1: +ぱんふれっと パンフレット 名1: +ぱんぷす パンプス 名1: +ひ 日 代1: +ひ 火 代1: +ひ 碑 代1: +ひ 秘 代1: +ひ 非 代1:接頭5: +ひ 陽 代1: +ひ 灯 代1: +ひ 否 代1: +ひ 妃 代1: +ひ 比 接尾1: +ひ 費 接尾1: +ひ 引 カ五7: +ひ 惹 カ五1: +ひ 曳 カ五1: +ひ 退 カ五5: +ひ 弾 カ五5: +ひ ひ カ五5: +ひ 干 単漢: +ひ 卑 単漢: +ひ 轡 単漢: +ひ 庇 単漢: +ひ 彼 単漢: +ひ 悲 単漢: +ひ 匪 単漢: +ひ 扉 単漢: +ひ 批 単漢: +ひ 披 単漢: +ひ 斐 単漢: +ひ 泌 単漢: +ひ 疲 単漢: +ひ 皮 単漢: +ひ 緋 単漢: +ひ 罷 単漢: +ひ 肥 単漢: +ひ 被 単漢: +ひ 誹 単漢: +ひ 避 単漢: +ひ 飛 単漢: +ひ 樋 単漢: +ひ 簸 単漢: +ひ 毘 単漢: +ひ 桧 単漢: +ひ 氷 単漢: +ひーぷ ヒープ 名1: +ひーろー ヒーロー 名1: +ひあい 悲哀 名1: +ひいで 秀で 一段1: +ひいらぎ 柊 代1: +ひうん 非運 名1: +ひえ 稗 代1: +ひえ 冷え 一段3: +ひえこ 冷え込 マ五7: +ひえづ 日吉津 地名: +ひえぬき 稗貫 地名: +ひおき 日置 苗字: +ひおき 日置 地名: +ひか 光 ラ五3: +ひか 皮下 名1: +ひかえ 控え 一段3: +ひかく 比較 名6: +ひかげ 日陰 名1: +ひかた 干潟 地名: +ひかみ 氷上 地名: +ひからび 干からび 一段1: +ひかり 光 代1: +ひかり 光 地名: +ひかる 光 名前: +ひかわ 斐川 地名: +ひかわ 簸川 地名: +ひかん 悲観 名6: +ひが ひが マ五7: +ひが 僻 マ五7: +ひがい 被害 名1: +ひがいしゃ 被害者 名1: +ひがえり 日帰り 代4: +ひがし 東 苗字:接頭2: +ひがし 東 代1: +ひがしあざい 東浅井 地名: +ひがしあわくら 東粟倉 地名: +ひがしいけぶくろ 東池袋 地名: +ひがしいず 東伊豆 地名: +ひがしいずも 東出雲 地名: +ひがしいちき 東市来 地名: +ひがしいばらき 東茨城 地名: +ひがしいややま 東祖谷山 地名: +ひがしいわい 東磐井 地名: +ひがしうすき 東臼杵 地名: +ひがしうら 東浦 地名: +ひがしうわ 東宇和 地名: +ひがしおおさか 東大阪 地名: +ひがしおきたま 東置賜 地名: +ひがしかぐら 東神楽 地名: +ひがしかすがい 東春日井 地名: +ひがしかつしか 東葛飾 地名: +ひがしかも 東加茂 地名: +ひがしかわ 東川 苗字: +ひがしかわ 東川 地名: +ひがしかんばら 東蒲原 地名: +ひがしがわ 東側 名1: +ひがしくしら 東串良 地名: +ひがしくにさき 東国東 地名: +ひがしくびき 東頚城 地名: +ひがしくるめ 東久留米 地名: +ひがしぐち 東口 名1: +ひがししらかわ 東白川 地名: +ひがしすみよし 東住吉 地名: +ひがしせふり 東背振 地名: +ひがしそのぎ 東彼杵 地名: +ひがしたがわ 東田川 地名: +ひがしだ 東田 苗字: +ひがしちくま 東筑摩 地名: +ひがしちちぶ 東秩父 地名: +ひがしつがる 東津軽 地名: +ひがしつの 東津野 地名: +ひがしとなみ 東砺波 地名: +ひがしなだ 東灘 地名: +ひがしなり 東成 地名: +ひがしなるせ 東成瀬 地名: +ひがしね 東根 地名: +ひがしの 東野 苗字: +ひがしの 東野 地名: +ひがしひろしま 東広島 地名: +ひがしまつうら 東松浦 地名: +ひがしまつやま 東松山 地名: +ひがしむらやま 東村山 地名: +ひがしむろ 東牟婁 地名: +ひがしもろかた 東諸県 地名: +ひがしやつしろ 東八代 地名: +ひがしやま 東山 苗字: +ひがしやま 東山 地名: +ひがしやまと 東大和 地名: +ひがしやまなし 東山梨 地名: +ひがしゆり 東由利 地名: +ひがしよか 東与賀 地名: +ひがしよしの 東吉野 地名: +ひがしよどがわ 東淀川 地名: +ひがしりしり 東利尻 地名: +ひがん 彼岸 名2: +ひがん 悲願 名1: +ひき 比企 苗字: +ひき 比企 地名: +ひき 匹 助数2: +ひき 疋 単漢: +ひきあ 引き合 ワ五7: +ひきあげ 引き上げ 一段3: +ひきあげ 引き揚げ 一段3: +ひきあて 引当 名1: +ひきあわせ 引き合わせ 一段3: +ひきい 率い 一段1: +ひきうけ 引き受け 一段4: +ひきうけ 引受け 名1: +ひきおと 引き落と サ五7: +ひきかえ 引き替え 一段3: +ひきかえ 引き返 サ五7: +ひきかえ 引換 名1: +ひきがね 引金 名1: +ひきがわ 日置川 地名: +ひきこ 引き込 マ五7: +ひきさ 引き裂 カ五7: +ひきさ 引きさ カ五7: +ひきさが 引き下が ラ五7: +ひきさげ 引き下げ 一段3: +ひきさげ 引下げ 名1: +ひきざん 引き算 名1: +ひきざん 引算 名1: +ひきしま 引き締ま ラ五7: +ひきしめ 引き締め 一段3: +ひきすう 引数 名1: +ひきず ひきず ラ五3: +ひきた 引き立 タ五7: +ひきた 疋田 苗字: +ひきだ 引き出 サ五7: +ひきつ 引き継 ガ五7: +ひきつけ 引き付け 一段3: +ひきつづ 引き続 カ五3: +ひきでもの 引出物 代1: +ひきと 引き取 ラ五8: +ひきとめ 引き止め 一段1: +ひきぬ 引き抜 カ五3: +ひきのば 引き延ば サ五7: +ひきのば 引き伸ば サ五7: +ひきはな 引き離 サ五7: +ひきみ 匹見 地名: +ひきもど 引き戻 サ五7: +ひきゃく 飛脚 名1: +ひきょう 秘境 名1: +ひきょう 卑怯 代5: +ひきよせ 引き寄せ 一段1: +ひきわけ 引き分け 一段3: +ひきわた 引き渡 サ五8: +ひきわたし 引渡し 代4: +ひぎょう 罷業 名1: +ひく 低 形2: +ひくつ 卑屈 名8: +ひくめ 低め 一段3: +ひぐち 樋口 苗字: +ひぐま ひぐま 代1: +ひけた 引田 地名: +ひけつ 秘訣 名1: +ひけつ 否決 名6: +ひけんしゃ 被験者 名1: +ひげ 髭 代1: +ひげ 鬚 代1: +ひげ 卑下 名6: +ひげき 悲劇 名4: +ひこ 彦 代1: +ひこう 非行 名1: +ひこう 飛行 名6: +ひこうき 飛行機 名1: +ひこうじょう 飛行場 名1: +ひこく 被告 名1: +ひこね 彦根 地名: +ひご 庇護 代4: +ひご 肥後 地名: +ひごと 日毎 代6: +ひごろ 日頃 代1: +ひさ 久 単漢: +ひさい 被災 名6: +ひさい 久居 地名: +ひさお 久男 名前: +ひさお 久夫 名前: +ひさお 久雄 名前: +ひさこ 久子 名前: +ひさし 久し 形8: +ひさし 久 名前: +ひさし 寿 名前: +ひさし 尚 名前: +ひさし 庇 単漢: +ひさしぶり 久しぶり 名2: +ひさびさ 久々 名1: +ひさやま 久山 苗字: +ひさやま 久山 地名: +ひさん 悲惨 名8: +ひざ 膝 代1: +ひざし 日差し 代1: +ひし 菱 代1: +ひしかり 菱刈 地名: +ひしかわ 菱川 苗字: +ひしがた 菱形 名1: +ひしひし ひしひし 副2: +ひしゃたい 被写体 名1: +ひしょ 秘書 名1: +ひしょ 避暑 名6: +ひしょう 飛翔 名6: +ひじ 肘 代1: +ひじ 肱 代1: +ひじ 日出 苗字: +ひじ 日出 地名: +ひじかわ 肱川 地名: +ひじゅう 比重 名1: +ひじゅつ 秘術 名1: +ひじゅん 批准 名6: +ひじょう 非常 名8: +ひじょう 非情 名8: +ひじょうぐち 非常口 名1: +ひじょうしき 非常識 名8: +ひじり 聖 代1: +ひすてりー ヒステリー 名1: +ひすとりー ヒストリー 名1: +ひず ひず マ五3: +ひず 歪 マ五3: +ひぜん 肥前 地名: +ひそ 潜 マ五3: +ひそう 悲壮 名8: +ひそう 皮相 名8: +ひそか 秘か 形動4: +ひそか 密か 形動4: +ひそめ 潜め 一段1: +ひぞう 秘蔵 名6: +ひぞく 卑俗 代5: +ひた 浸 サ五8:ラ五7: +ひた 日田 地名: +ひたい 額 代1: +ひたすら ひたすら 形動1: +ひたち 常陸 地名: +ひたち 日立 苗字: +ひたち 日立 地名: +ひたちおおた 常陸太田 地名: +ひたん 悲嘆 名7: +ひだ 飛騨 地名: +ひだ 飛田 苗字: +ひだい 肥大 名8:サ変: +ひだか 日高 苗字: +ひだか 日高 地名: +ひだち 肥立ち 代1: +ひだり 左 代1:接頭1: +ひだりあし 左足 名1: +ひだりうえ 左上 代1: +ひだりうで 左腕 名1: +ひだりがわ 左側 名1: +ひだりした 左下 代1: +ひだりて 左手 名1: +ひだりめ 左目 名1: +ひちそう 七宗 地名: +ひちゅう 秘中 名1: +ひっか 引っか カ五7: +ひっかか 引っかか ラ五7: +ひっかけ 引っかけ 一段3: +ひっき 筆記 名6: +ひっくりかえ ひっくり返 サ五5:ラ五1: +ひっけい 必携 名1: +ひっけん 必見 名1: +ひっこ 引っ越 サ五8: +ひっこ 引っ込 マ五3: +ひっこし 引越し 名6: +ひっさつ 必殺 名1: +ひっし 必死 名8: +ひっし 必至 名1: +ひっしゃ 筆者 名1: +ひっしゃ 筆写 代4: +ひっしゅう 必修 名1: +ひっしょう 必勝 名1: +ひっす 必須 名8: +ひっせき 筆跡 名1: +ひっそり ひっそり 副3: +ひっち 筆致 名1: +ひっちゃく 必着 名1: +ひってき 匹敵 名6: +ひっと ヒット 名6: +ひっとう 筆頭 名1: +ひっぱ 引っ張 ラ五7: +ひっぱく 逼迫 名6: +ひつ 筆 代1: +ひつ 泌 単漢: +ひつ 匹 単漢: +ひつ 弼 単漢: +ひつ 必 単漢: +ひつ 畢 単漢: +ひつ 逼 単漢: +ひつ 疋 単漢: +ひつう 悲痛 名8: +ひつぎ 棺 代1: +ひつじ 羊 代1: +ひつじ 未 代1: +ひつじゅ 必需 名1: +ひつじゅん 筆順 名1: +ひつじょう 必定 代6: +ひつぜつ 筆舌 名1: +ひつぜん 必然 名4: +ひつだん 筆談 名6: +ひつどく 必読 名1: +ひつよう 必要 名8: +ひづけ 日付 名1: +ひづめ 蹄 代1: +ひてい 否定 名6: +ひてつ 非鉄 名1: +ひで 英 単漢: +ひで 秀 単漢: +ひであき 英明 名前: +ひであき 秀明 名前: +ひでお 英男 名前: +ひでお 英夫 名前: +ひでお 英雄 名前: +ひでお 秀男 名前: +ひでお 秀夫 名前: +ひでお 秀雄 名前: +ひでお 日出男 名前: +ひでお 日出夫 名前: +ひでき 秀樹 名前: +ひでき 英樹 名前: +ひでこ 秀子 名前: +ひでとし 英俊 名前: +ひでひこ 英彦 名前: +ひでみつ 英光 名前: +ひでゆき 秀幸 名前: +ひでり 日照り 名1: +ひでん 秘伝 名1: +ひと 人 代1: +ひと ひと 接頭1: +ひと 一 数詞: +ひとえ 一重 代1: +ひとえ 単 単漢: +ひとかげ 人影 代1: +ひとがら 人柄 名2: +ひとくち 一口 代1: +ひとこと 一言 代6: +ひところ 一頃 代1: +ひとごと 人事 代1: +ひとごみ 人混み 代1: +ひとさわがせ 人騒がせ 代5: +ひとざと 人里 代1: +ひとし 等 名前: +ひとし 仁 名前: +ひとし 均 名前: +ひとし 仁志 名前: +ひとし 等し 形2: +ひとじち 人質 名1: +ひとすじ 一筋 代5: +ひとたび 一度 代6: +ひとちがい 人違い 代4: +ひとつ ひとつ 代6: +ひとつ 一つ 代6: +ひとつばし 一ツ橋 地名: +ひとつばし 一橋 苗字: +ひとづま 人妻 代1: +ひとで 人手 代1: +ひとで 人出 代1: +ひととおり 一通り 代6: +ひととき ひととき 代6: +ひととき 一時 代6: +ひとなみ 人並 代5: +ひとばん 一晩 代6: +ひとびと 人々 代1: +ひとまえ 人前 代1: +ひとまく 一幕 名1: +ひとまず ひとまず 代6: +ひとまわり 一回り 代4: +ひとみ 瞳 代1: +ひとみ 仁美 名前: +ひとみ 人見 苗字: +ひとよし 人吉 地名: +ひとり 一人 名2: +ひとり 独り 名2: +ひとり ひとり 名2: +ひとりじめ 独り占め 代4: +ひとりっこ 一人っ子 代1: +ひど ひど 形2: +ひど 酷 形2: +ひどり 日取り 代1: +ひな 雛 代1: +ひない 比内 地名: +ひなせ 日生 地名: +ひなた 日向 苗字: +ひなん 避難 名6: +ひなん 非難 名6: +ひにく 皮肉 名8:ラ五1: +ひにち 日にち 代1: +ひにん 否認 名6: +ひにん 避妊 名6: +ひね ひね 一段1:ラ五7: +ひね 捻 ラ五7: +ひの 日野 苗字: +ひの 日野 地名: +ひのえ 丙 代1: +ひのえまた 桧枝岐 地名: +ひのかげ 日之影 地名: +ひのき 桧 代1: +ひので 日の出 代1: +ひのはら 桧原 地名: +ひはん 批判 名6: +ひば 比婆 地名: +ひばく 被曝 名6: +ひばち 火鉢 代1: +ひばな 火花 名1: +ひばん 非番 名1: +ひひょう 批評 名6: +ひび 日々 代6: +ひび ひび 代1: +ひび 響 カ五7: +ひびや 日比谷 地名: +ひびわれ ひび割れ 代4:一段1: +ひふ 皮膚 名1: +ひふく 被服 名1: +ひふく 被覆 名6: +ひふん 悲憤 名6: +ひぶ 日歩 名1: +ひほう 悲報 名1: +ひほう 秘宝 名1: +ひぼん 非凡 名8: +ひま 暇 名9: +ひま 隙 代1: +ひま 閑 単漢: +ひまく 皮膜 名1: +ひまらや ヒマラヤ 地名: +ひまわり 向日葵 名1: +ひまん 肥満 名6: +ひみ 氷見 地名: +ひみつ 秘密 名8: +ひめ 姫 名2: +ひめ 秘め 一段1: +ひめ 媛 単漢: +ひめい 悲鳴 名1: +ひめかわ 姫川 地名: +ひめしま 姫島 地名: +ひめじ 姫路 地名: +ひめど 姫戸 地名: +ひめん 罷免 名6: +ひも 紐 代1: +ひも 綬 単漢: +ひもく 費目 名1: +ひもと 火元 名1: +ひもの 干物 名1: +ひゃくしょう 百姓 名1: +ひゃくぶん 百聞 名1: +ひゃくぶんりつ 百分率 名1: +ひゃっか 百科 名1: +ひゃっかてん 百貨店 名1: +ひや 冷や サ五7: +ひやあせ 冷汗 代1: +ひやか 冷やか サ五7: +ひやく 飛躍 名6: +ひやま 桧山 苗字: +ひやま 桧山 地名: +ひややか 冷やか 形動4: +ひゅーすとん ヒューストン 地名: +ひゅーまん ヒューマン 名1: +ひゅーれっと ヒューレット 名1: +ひゅうが 日向 苗字: +ひゅうが 日向 地名: +ひゆ 比喩 名6: +ひょう 表 代1: +ひょう 表 サ変:サ五1: +ひょう 票 代1: +ひょう 票 助数2: +ひょう 標 代1: +ひょう 豹 代1: +ひょう 評 接尾1:サ変:サ五1: +ひょう 俵 助数2: +ひょう 雹 代1: +ひょう 兵 代1: +ひょう 拍 単漢: +ひょう 彪 単漢: +ひょう 氷 単漢: +ひょう 漂 単漢: +ひょう 瓢 単漢: +ひょう 平 単漢: +ひょうい 表意 名1: +ひょうか 評価 名6: +ひょうが 氷河 名1: +ひょうき 表記 名6: +ひょうき 標記 名6: +ひょうきん ひょうきん 代5: +ひょうぎ 評議 名6: +ひょうけい 表敬 名1: +ひょうけつ 票決 名6: +ひょうげん 表現 名6: +ひょうこう 標高 名1: +ひょうご 標語 名1: +ひょうご 兵庫 地名: +ひょうさつ 表札 名1: +ひょうざん 氷山 名1: +ひょうし 拍子 名1: +ひょうし 表紙 名1: +ひょうしき 標識 名1: +ひょうしゅつ 表出 名6: +ひょうしょう 表彰 名6: +ひょうしょう 表象 名1: +ひょうじ 表示 名6: +ひょうじゅん 標準 名4: +ひょうじょう 表情 代3: +ひょうそう 表層 名1: +ひょうだい 表題 名1: +ひょうちゃく 漂着 名6: +ひょうてい 評定 名6: +ひょうてき 標的 名1: +ひょうてん 氷点 名1: +ひょうてん 評点 名1: +ひょうど 表土 名1: +ひょうどう 兵藤 苗字: +ひょうはく 漂白 名6: +ひょうばん 評判 名6: +ひょうへん 豹変 名6: +ひょうほん 標本 名1: +ひょうめい 表明 名6: +ひょうめん 表面 名4: +ひょうり 表裏 名6: +ひょうりゅう 漂流 名6: +ひょうりょう 秤量 名6: +ひょうろん 評論 名6: +ひょっこり ひょっこり 副2: +ひょっと ひょっと 副4: +ひよう 費用 名1: +ひよし 日義 地名: +ひよし 日吉 苗字: +ひよし 日吉 地名: +ひより 日和 名1: +ひよわ ひ弱 形動4: +ひら 開 カ五8: +ひら 平 代1:接頭1: +ひらあやまり 平謝り 代1: +ひらい 平井 苗字: +ひらい 平井 地名: +ひらいしん 避雷針 名1: +ひらいずみ 平泉 地名: +ひらお 平生 地名: +ひらお 平尾 苗字: +ひらお 平尾 地名: +ひらおか 平岡 苗字: +ひらか 平賀 地名: +ひらか 平鹿 地名: +ひらかた 枚方 地名: +ひらかわ 平河 地名: +ひらかわ 平川 苗字: +ひらが 平賀 苗字: +ひらがな ひらがな 名1: +ひらがな 平仮名 名1: +ひらき 平木 苗字: +ひらきなお 開き直 ラ五7: +ひらきなお 開きなお ラ五7: +ひらさわ 平沢 苗字: +ひらた 平た 形2: +ひらた 平田 苗字: +ひらた 平田 地名: +ひらつか 平塚 苗字: +ひらつか 平塚 地名: +ひらとり 平取 地名: +ひらど 平戸 地名: +ひらない 平内 地名: +ひらの 平野 苗字: +ひらの 平野 地名: +ひらはら 平原 苗字: +ひらばやし 平林 苗字: +ひらまつ 平松 苗字: +ひらめ ひらめ カ五7:代1: +ひらめ 閃 カ五7: +ひらめ 鮃 代1: +ひらや 平谷 苗字: +ひらや 平谷 地名: +ひらやま 平山 苗字: +ひらら 平良 地名: +ひりつ 比率 名1: +ひりょう 肥料 名1: +ひる ひる マ五7: +ひる 怯 マ五7: +ひる 昼 名2: +ひる 蛭 代1: +ひる 蒜 単漢: +ひるい 比類 名1: +ひるかわ 蛭川 苗字: +ひるかわ 蛭川 地名: +ひるがえ 翻 サ五7:ラ五3: +ひるね 昼寝 名6: +ひるま 昼間 代6: +ひるめし 昼飯 名1: +ひるやすみ 昼休み 名2: +ひれ 鰭 代1: +ひれい 比例 名6: +ひれつ 卑劣 名8: +ひれふ ひれ伏 サ五1: +ひれん 悲恋 名1: +ひろ 拾 ワ五7: +ひろ 広 形6:単漢: +ひろ 弘 単漢: +ひろ 浩 単漢: +ひろ 寛 単漢: +ひろ 宏 単漢: +ひろ 尋 単漢: +ひろ 博 単漢: +ひろ 裕 単漢: +ひろあき 宏明 名前: +ひろあき 広明 名前: +ひろあき 弘明 名前: +ひろあき 博昭 名前: +ひろあき 博明 名前: +ひろう 疲労 名6: +ひろう 披露 名7: +ひろうえん 披露宴 名1: +ひろお 広尾 地名: +ひろかみ 広神 地名: +ひろかわ 広川 苗字: +ひろが 広が ラ五3: +ひろがわ 広川 地名: +ひろげ 広げ 一段1: +ひろこ 弘子 名前: +ひろこ 裕子 名前: +ひろこ 浩子 名前: +ひろこ 博子 名前: +ひろこ 寛子 名前: +ひろさき 弘前 地名: +ひろし 広志 名前: +ひろし 浩志 名前: +ひろし 博司 名前: +ひろし 博史 名前: +ひろし 寛 名前: +ひろし 宏 名前: +ひろし 広 名前: +ひろし 弘 名前: +ひろし 浩 名前: +ひろし 博 名前: +ひろし 裕 名前: +ひろし 洋 名前: +ひろしま 広島 地名: +ひろしま 広島 苗字: +ひろせ 広瀬 苗字: +ひろた 広田 苗字: +ひろなか 広中 苗字: +ひろの 広野 地名: +ひろの 広野 苗字: +ひろのみや 浩宮 苗字: +ひろば 広場 名1: +ひろひさ 博久 名前: +ひろひさ 裕久 名前: +ひろびろ 広々 副3: +ひろふみ 博文 苗字: +ひろま 広ま ラ五3: +ひろま 広間 名1: +ひろみ 宏美 名前: +ひろみ 広見 地名: +ひろみ 弘美 名前: +ひろみ 博美 名前: +ひろみ 裕美 名前: +ひろみち 博道 名前: +ひろみつ 博満 名前: +ひろめ 広め 一段1: +ひろゆき 浩之 名前: +ひろゆき 博之 名前: +ひろゆき 宏之 名前: +ひろゆき 弘之 名前: +ひろゆき 裕之 名前: +ひろゆき 寛之 名前: +ひろゆき 啓之 名前: +ひろゆき 宏行 名前: +ひわ 秘話 名1: +ひわ 比和 地名: +ひわき 樋脇 地名: +ひわさ 日和佐 地名: +ひわり 日割 名6: +ひわれ 干割れ 一段3: +ひん 品 代1:接尾1:助数2: +ひん 貧 代1: +ひん 賓 代1: +ひん 瀕 サ変:サ五1: +ひん 頻 単漢: +ひん 彬 単漢: +ひん 浜 単漢: +ひん 牝 単漢: +ひん 斌 単漢: +ひんい 品位 名1: +ひんかく 品格 名1: +ひんけつ 貧血 名1: +ひんこう 品行 名1: +ひんこん 貧困 名8: +ひんし 品詞 名1: +ひんし 瀕死 名1: +ひんしつ 品質 名1: +ひんしゅ 品種 名1: +ひんしゅく 顰蹙 代4: +ひんじゃく 貧弱 名8: +ひんずー ヒンズー 名1: +ひんと ヒント 名1: +ひんど 頻度 名1: +ひんぱつ 頻発 名6: +ひんぱん 頻繁 名8: +ひんぷ 貧富 名1: +ひんみん 貧民 名1: +ひんめい 品名 名1: +ひんもく 品目 名1: +ひんやり ひんやり 副3: +び 美 代1: +び 微 代1: +び 火 接尾2: +び 日 接尾2: +び 尾 代1: +び 備 単漢: +び 枇 単漢: +び 毘 単漢: +び 琵 単漢: +び 眉 単漢: +び 鼻 単漢: +び 媚 単漢: +びーかー ビーカー 名1: +びーとるず ビートルズ 名1: +びーなす ビーナス 名1: +びーる ビール 名1: +びえい 美瑛 地名: +びか 美化 名6: +びかん 美観 名1: +びがく 美学 名1: +びき 匹 助数2: +びこう 備考 名1: +びこう 尾行 名6: +びさい 尾西 地名: +びさい 微細 形動4: +びしゅ 美酒 名1: +びしょう 微笑 代4: +びしょう 微小 代5: +びじー ビジー 代1: +びじねす ビジネス 名1: +びじゃく 微弱 名8: +びじゅある ビジュアル 名8: +びじゅつ 美術 名1: +びじゅつかん 美術館 名1: +びじょ 美女 名1: +びじょん ビジョン 名1: +びじん 美人 名1: +びすます ビスマス 名1: +びせい 美星 地名: +びぜん 備前 地名: +びだん 美談 名1: +びっくり びっくり 代4: +びっぐ ビッグ 名8: +びっしょり びっしょり 副8: +びっしり びっしり 副8: +びっちゅう 備中 地名: +びっと ビット 代1:助数: +びてき 美的 名8: +びでお ビデオ 名4: +びとく 美徳 名1: +びなん 美男 代1: +びにーる ビニール 名1: +びばい 美唄 地名: +びひん 備品 名1: +びび 微々 形動2: +びふか 美深 地名: +びぶん 微分 名6: +びほろ 美幌 地名: +びみょう 微妙 形動4: +びゃく 百 単漢: +びゃくや 白夜 名1: +びやく 媚薬 名1: +びゅー ビュー 名1: +びゅう 謬 単漢: +びょう 鋲 代1: +びょう 秒 代1:助数2: +びょう 票 助数2: +びょう 病 接尾2: +びょう 廟 代1: +びょう 描 単漢: +びょう 猫 単漢: +びょう 苗 単漢: +びょう 錨 単漢: +びょう 平 単漢: +びょういん 病院 名1: +びょうが 描画 名6: +びょうき 病気 名7: +びょうけつ 病欠 名1: +びょうげん 病原 名1: +びょうし 拍子 助数2: +びょうし 病死 名6: +びょうしつ 病室 名1: +びょうしゃ 描写 名6: +びょうしょう 病床 名1: +びょうしん 病身 名1: +びょうしん 秒針 名1: +びょうじゃく 病弱 名8: +びょうじょう 病状 名3: +びょうそく 秒速 名1: +びょうたい 病態 名1: +びょうてき 病的 形動3: +びょうとう 病棟 名1: +びょうどう 平等 名8: +びょうにん 病人 名3: +びょうぼつ 病没 名6: +びょうま 病魔 名1: +びょうめい 病名 名1: +びょうりがく 病理学 名4: +びょうれき 病歴 名1: +びよう 美容 名1: +びよく 尾翼 名1: +びら ビラ 名1: +びらん 糜爛 名6: +びりやーど ビリヤード 名1: +びりょう 微量 名1: +びりょく 微力 名8: +びる ビル 名1: +びわ 琵琶 代1: +びわこ 琵琶湖 地名: +びん 便 代1:助数: +びん 瓶 代1: +びん 貧 単漢: +びん 敏 単漢: +びんかん 敏感 名8: +びんご 備後 地名: +びんしょう 敏捷 代5: +びんじょう 便乗 代4: +びんせん 便箋 名1: +びんそく 敏速 代5: +びんぼう 貧乏 代5:サ変: +びんらん 便覧 名1: +ぴーく ピーク 名1: +ぴーす ピース 名1: +ぴあにすと ピアニスト 名1: +ぴあの ピアノ 名1: +ぴき 匹 助数2: +ぴくせる ピクセル 名1: +ぴったり ぴったり 副3:形動9: +ぴっち ピッチ 名1: +ぴっぷ 比布 地名: +ぴゅあ ピュア 名8: +ぴょう 票 助数2: +ぴらふ ピラフ 名1: +ぴらみっど ピラミッド 名1: +ぴりおど ピリオド 名1: +ぴん ピン 名1: +ぴん 品 助数2: +ぴんく ピンク 名1: +ぴんせっと ピンセット 名1: +ぴんち ピンチ 名1: +ぴんと ピント 名1: +ふ 吹 カ五7: +ふ 拭 カ五7: +ふ 噴 カ五1: +ふ 葺 カ五1: +ふ 伏 サ五3: +ふ 臥 サ五1: +ふ 降 ラ五7: +ふ 振 ラ五7: +ふ 踏 マ五8: +ふ 符 代1: +ふ 府 代1: +ふ 譜 代1: +ふ 負 代1: +ふ 歩 代1: +ふ 賦 代4: +ふ 付 代4: +ふ 婦 接尾1: +ふ 夫 接尾1: +ふ 不 接頭5: +ふ 埠 単漢: +ふ 富 単漢: +ふ 冨 単漢: +ふ 布 単漢: +ふ 怖 単漢: +ふ 扶 単漢: +ふ 敷 単漢: +ふ 斧 単漢: +ふ 普 単漢: +ふ 浮 単漢: +ふ 父 単漢: +ふ 腐 単漢: +ふ 膚 単漢: +ふ 芙 単漢: +ふ 赴 単漢: +ふ 阜 単漢: +ふ 附 単漢: +ふ 風 単漢: +ふ 鮒 単漢: +ふ 訃 単漢: +ふ 麸 単漢: +ふーど フード 名1: +ふーりえ フーリエ 名1: +ふぁーすと ファースト 名1: +ふぁい φ 代1: +ふぁいる ファイル 名6: +ふぁいんだー ファインダー 名1: +ふぁくしみり ファクシミリ 名1: +ふぁくたー ファクター 名1: +ふぁくとりー ファクトリー 名1: +ふぁっくす ファックス 名1: +ふぁっしょん ファッション 名1: +ふぁみこん ファミコン 名1: +ふぁみりー ファミリー 名1: +ふぁん ファン 名1: +ふぁんくしょん ファンクション 名1: +ふぁんたじー ファンタジー 名1: +ふあん 不安 名8: +ふあんてい 不安定 代5: +ふぃーだ フィーダ 名1: +ふぃーと フィート 助数2: +ふぃーどばっく フィードバック 代4: +ふぃーるど フィールド 名1: +ふぃくしょん フィクション 名1: +ふぃじかる フィジカル 代5: +ふぃっくす フィックス 代4: +ふぃっと フィット 代4: +ふぃらめんと フィラメント 名1: +ふぃりぴん フィリピン 地名: +ふぃる フィル 名1: +ふぃるた フィルタ 名1: +ふぃるたー フィルター 名1: +ふぃるむ フィルム 名1: +ふい 不意 代5: +ふいちょう 吹聴 名6: +ふいっち 不一致 代1: +ふう 風 代5:接尾1: +ふう 封 代1:ザ変: +ふう ふう 代5:接尾1: +ふう 夫 単漢: +ふう 楓 単漢: +ふういん 封印 名6: +ふうう 風雨 名1: +ふううん 風雲 名1: +ふうか 風化 名6: +ふうかく 風格 名1: +ふうが 風雅 名1: +ふうがわり 風変わり 形動1: +ふうき 風紀 名1: +ふうきり 封切り 名6: +ふうけい 風景 名1: +ふうこう 風光 名1: +ふうこう 風向 名1: +ふうさ 封鎖 名6: +ふうさい 風采 名1: +ふうし 風刺 名6: +ふうしゃ 風車 名1: +ふうしゅう 風習 名1: +ふうしょ 封書 名1: +ふうしん 風疹 名1: +ふうじこ 封じ込 マ五3: +ふうせつ 風雪 名1: +ふうせん 風船 名1: +ふうそく 風速 名1: +ふうぞく 風俗 名1: +ふうちょう 風潮 名1: +ふうとう 封筒 名1: +ふうど 風土 名1: +ふうにゅう 封入 名6: +ふうふ 夫婦 名3: +ふうぶつ 風物 名1: +ふうぼう 風貌 名1: +ふうぼう 風防 名1: +ふうみ 風味 名1: +ふうりゅう 風流 名8: +ふうりょく 風力 名1: +ふうりん 風鈴 名1: +ふうれん 風連 地名: +ふうん 不運 名8: +ふぇーず フェーズ 名1: +ふぇあ フェア 代1: +ふぇいす フェイス 名1: +ふぇざー フェザー 名1: +ふぇすてぃばる フェスティバル 代1: +ふぇみにずむ フェミニズム 代1: +ふぇりー フェリー 代1: +ふぇんす フェンス 代1: +ふえ 増え 一段2: +ふえ 殖え 一段1: +ふえ 笛 代1: +ふぉーかす フォーカス 代4: +ふぉーく フォーク 代4: +ふぉーとらん フォートラン 名1: +ふぉーど フォード 名1: +ふぉーまっと フォーマット 名1: +ふぉーまる フォーマル 名8: +ふぉーむ フォーム 名1: +ふぉーらむ フォーラム 名1: +ふぉーると フォールト 名1: +ふぉあ フォア 名1: +ふぉるだー フォルダー 名1: +ふぉると フォルト 名1: +ふぉろー フォロー 代4: +ふぉわーど フォワード 名1: +ふぉんと フォント 名1: +ふおん 不穏 形動4: +ふか 更か サ五7: +ふか 深 形8: +ふか 付加 代4: +ふか 不可 名1: +ふか 府下 名1: +ふか 鱶 名1: +ふか 負荷 代4: +ふかい 不快 名10: +ふかい 深井 苗字: +ふかうら 深浦 地名: +ふかえ 深江 苗字: +ふかえ 深江 地名: +ふかお 深尾 苗字: +ふかかい 不可解 名8: +ふかがわ 深川 苗字: +ふかがわ 深川 地名: +ふかく 不覚 代1: +ふかけつ 不可欠 名8: +ふかさわ 深沢 苗字: +ふかざわ 深沢 苗字: +ふかざわ 深沢 地名: +ふかしん 不可侵 名1: +ふかせ 深瀬 苗字: +ふかだ 深田 苗字: +ふかだ 深田 地名: +ふかの 深野 苗字: +ふかのう 不可能 名8: +ふかひ 不可避 名8: +ふかぶん 不可分 名8: +ふかま 深ま ラ五3: +ふかめ 深め 一段3: +ふかや 深谷 苗字: +ふかや 深谷 地名: +ふかやす 深安 地名: +ふかわ 布川 苗字: +ふかんしょう 不感症 名1: +ふかんぜん 不完全 名8: +ふがいな ふがいな 形2: +ふき 付記 代4: +ふき 蕗 代1: +ふきあげ 吹上 地名: +ふきあれ 吹き荒れ 一段1: +ふきかえ 吹き返 サ五7: +ふきかえ 吹替え 一段3: +ふきげん 不機嫌 代5: +ふきこ 吹き込 マ五7: +ふきそ 不起訴 名1: +ふきそく 不規則 代5: +ふきつ 不吉 代5: +ふきつけ 吹き付け 一段3: +ふきでもの 吹出物 名1: +ふきと 拭き取 ラ五8: +ふきぬけ 吹抜け 一段3: +ふきゅう 普及 名6: +ふきゅう 不朽 名1: +ふきゅう 不休 名1: +ふきょう 不況 名8: +ふきょう 布教 名6: +ふきん 付近 名1: +ふきん 布巾 名1: +ふきんこう 不均衡 名8: +ふきんしん 不謹慎 名8: +ふぎ 不義 名1: +ふぎ 付議 名6: +ふく 含 マ五4: +ふく 服 代1: +ふく 服 サ五1:サ変: +ふく 副 代1:接頭5: +ふく 幅 代1: +ふく 福 代1: +ふく 複 代1: +ふく 伏 サ変:サ五1: +ふく 復 サ変:サ五1: +ふく 覆 単漢: +ふく 腹 単漢: +ふく 輻 単漢: +ふくい 福井 苗字: +ふくい 福井 地名: +ふくいん 福音 名1: +ふくえ 福栄 地名: +ふくえ 福江 地名: +ふくえき 服役 名6: +ふくえん 復縁 名6: +ふくおか 福岡 苗字: +ふくおか 福岡 地名: +ふくがく 復学 名6: +ふくぎょう 副業 名1: +ふくげん 復元 名6: +ふくごう 複合 名6: +ふくごう 復号 名6: +ふくさよう 副作用 名1: +ふくさんぶつ 副産物 名1: +ふくざき 福崎 苗字: +ふくざき 福崎 地名: +ふくざつ 複雑 名8: +ふくざわ 福沢 苗字: +ふくし 福祉 名1: +ふくし 副詞 名1: +ふくしき 複式 名1: +ふくしま 福島 苗字: +ふくしま 福島 地名: +ふくしまけん 福島県 県区: +ふくしゃ 複写 名6: +ふくしゅう 復習 名6: +ふくしゅう 復讐 名6: +ふくしょう 副賞 名1: +ふくしょう 復唱 名6: +ふくしょく 復職 名6: +ふくしょく 服飾 名1: +ふくしん 腹心 名1: +ふくじ 服地 名1: +ふくじゅう 服従 名6: +ふくすい 覆水 名1: +ふくすう 複数 名1: +ふくせい 複製 名6: +ふくせん 伏線 名1: +ふくせん 複線 名4: +ふくそう 服装 代3: +ふくそう 輻輳 代4: +ふくたろう 福太郎 名前: +ふくだ 福田 苗字: +ふくだい 副題 代1: +ふくち 福地 苗字: +ふくちやま 福知山 地名: +ふくちょう 復調 名6: +ふくつ 不屈 名8: +ふくつう 腹痛 名1: +ふくで 福田 地名: +ふくとみ 福富 苗字: +ふくとめ 福留 苗字: +ふくどく 服毒 名6: +ふくどみ 福富 苗字: +ふくどみ 福富 地名: +ふくなが 福永 苗字: +ふくの 福野 地名: +ふくはら 福原 苗字: +ふくびき 福引 名1: +ふくぶ 腹部 名1: +ふくべ 福部 地名: +ふくほん 副本 名1: +ふくま 福間 苗字: +ふくまく 腹膜 名1: +ふくみつ 福光 苗字: +ふくみつ 福光 地名: +ふくむ 服務 名6: +ふくめん 覆面 名6: +ふくもと 福本 苗字: +ふくやく 服薬 名6: +ふくやま 福山 苗字: +ふくやま 福山 地名: +ふくよう 服用 名6: +ふくら 膨ら サ五1:マ五7: +ふくり 複利 名1: +ふくり 福利 名1: +ふくれ 膨れ 一段1: +ふくろ 袋 名1: +ふくろ 復路 名1: +ふくろい 袋井 地名: +ふくろう 梟 代1: +ふくろう ふくろう 代1: +ふぐ 河豚 代1: +ふぐ 鰒 代1: +ふぐあい 不具合 代5: +ふぐたいてん 不倶載天 名1: +ふけ 更け 一段1: +ふけ 老け 一段1: +ふけ フケ ラ五2: +ふけい 父兄 名3: +ふけい 婦警 代2: +ふけいき 不景気 名8: +ふけいざい 不経済 名8: +ふけこ 老け込 マ五7: +ふけつ 不潔 名8: +ふけん 府県 名1: +ふけんこう 不健康 代5: +ふけんぜん 不健全 代5: +ふげし 鳳至 地名: +ふげん 付言 代4: +ふこう 不幸 名10: +ふこう 不孝 代5: +ふこうへい 不公平 代5: +ふこく 布告 代4: +ふこころえ 不心得 代5: +ふごう 富豪 名1: +ふごう 符号 名1: +ふごう 符合 代4: +ふごうかく 不合格 名1: +ふごうり 不合理 代5: +ふさ 塞 ガ五7: +ふさ 房 代1: +ふさい 夫妻 名3: +ふさい 負債 名1: +ふさが 塞が ラ五7: +ふさく 不作 名8: +ふさこ 房子 名前: +ふさわし ふさわし 形2: +ふさわし 相応し 形2: +ふさんか 不参加 名1: +ふざい 不在 名1: +ふざけ ふざけ 一段3: +ふし 節 代1: +ふしあわせ 不幸せ 代5: +ふしぎ 不思議 名8: +ふしぜん 不自然 名8: +ふしちょう 不死鳥 名1: +ふしぶし 節々 代1: +ふしまつ 不始末 名8: +ふしみ 伏見 苗字: +ふしみ 伏見 地名: +ふしめ 節目 代1: +ふしゅび 不首尾 代5: +ふしょう 負傷 名6: +ふしょう 不詳 名1: +ふしょうじ 不祥事 名1: +ふしょく 腐食 名6: +ふしん 不審 代5: +ふしん 不振 代5: +ふしん 不信 代1: +ふしんせつ 不親切 代5: +ふしんにん 不信任 名1: +ふじ 富士 地名: +ふじ 藤 代1: +ふじ 不治 代1: +ふじ 不時 代1: +ふじい 藤井 苗字: +ふじいでら 藤井寺 地名: +ふじうら 藤浦 苗字: +ふじえだ 藤枝 苗字: +ふじえだ 藤枝 地名: +ふじお 富士雄 名前: +ふじお 富士夫 名前: +ふじおか 藤岡 苗字: +ふじおか 藤岡 地名: +ふじかわ 藤川 苗字: +ふじかわ 藤川 地名: +ふじかわ 富士川 地名: +ふじき 藤木 苗字: +ふじこ 藤子 名前: +ふじさき 藤崎 苗字: +ふじさわ 藤沢 苗字: +ふじさわ 藤沢 地名: +ふじさん 富士山 代1: +ふじしま 藤島 苗字: +ふじしろ 藤城 苗字: +ふじしろ 藤代 苗字: +ふじた 藤田 苗字: +ふじたに 藤谷 苗字: +ふじちゃく 不時着 代4: +ふじつ 藤津 地名: +ふじつう 富士通 企業: +ふじなみ 藤波 苗字: +ふじの 藤野 苗字: +ふじの 藤野 地名: +ふじのみや 富士宮 地名: +ふじはし 藤橋 地名: +ふじまき 藤巻 苗字: +ふじみ 富士見 地名: +ふじみ 不死身 代5: +ふじむら 藤村 苗字: +ふじもと 藤本 苗字: +ふじもり 藤森 苗字: +ふじゅうぶん 不十分 名8: +ふじゅん 不純 名8: +ふじゅん 不順 名8: +ふじゆう 不自由 名8:サ変: +ふじょ 婦女 名1: +ふじょ 扶助 名6: +ふじょう 浮上 名6: +ふじょう 不浄 名10: +ふじよしだ 富士吉田 地名: +ふじわら 藤原 苗字: +ふじん 婦人 名3: +ふじん 夫人 名1: +ふすう 負数 名1: +ふすま 襖 代1: +ふず 付図 名1: +ふずい 不随 名1: +ふずい 付随 名6: +ふせ 防 ガ五7: +ふせ 布施 名2: +ふせい 不正 名8: +ふせい 不整 名8: +ふせいりつ 不成立 名1: +ふせき 布石 名1: +ふせつ 付設 名6: +ふせつ 敷設 名6: +ふぜい 風情 代1: +ふぜん 不全 名8: +ふそう 扶桑 地名: +ふそうおう 不相応 名8: +ふそく 不足 名8:サ変: +ふそく 付則 名1: +ふぞく 付属 名6: +ふぞく 附属 名6: +ふぞろい 不揃い 代5: +ふた 蓋 代1: +ふた 二 数詞: +ふたい 付帯 名6: +ふたく 付託 名6: +ふたく 負託 名6: +ふたご 双子 名1: +ふたござ 双子座 代1: +ふたたび 再び 代6: +ふたつ 二つ 代6: +ふたつい 二ツ井 地名: +ふたば 双葉 名1: +ふたば 双葉 地名: +ふたみ 双海 地名: +ふたみ 双三 地名: +ふたみ 二見 苗字: +ふたみ 二見 地名: +ふたり 二人 名2: +ふたん 負担 名6: +ふだ 札 名2: +ふだい 普代 地名: +ふだん 普段 名11: +ふだん 不断 名11: +ふち 縁 代1: +ふち 付置 代4: +ふち 淵 代1: +ふち 渕 単漢: +ふちゃく 付着 名6: +ふちゅう 府中 地名: +ふちゅう 婦中 地名: +ふちゅうい 不注意 名1: +ふちょう 不調 名8: +ふちょう 婦長 代2: +ふちょう 府庁 名1: +ふっかつ 復活 名6: +ふっき 復帰 名6: +ふっきゅう 復旧 名6: +ふっけん 復権 名6: +ふっこ 復古 名6: +ふっこう 復興 名7: +ふっこく 復刻 名6: +ふっさ 福生 地名: +ふっしょく 払拭 名6: +ふっつ 富津 地名: +ふってん 沸点 名1: +ふっとう 沸騰 名6: +ふつ 布津 地名: +ふつ 仏 代1: +ふつ 弗 単漢: +ふつ 払 単漢: +ふつ 沸 単漢: +ふつう 普通 名8: +ふつう 不通 名1: +ふつか 二日 代6: +ふつごう 不都合 名8: +ふつつか 不束か 代5: +ふづき 文月 代1: +ふてい 不貞 名8: +ふてい 不定 名8: +ふてき 不敵 名8: +ふてき 不適 名8: +ふてきせつ 不適切 名8: +ふてぎわ 不手際 名8: +ふで 筆 代1: +ふと ふと 副4: +ふと 太 形6:ラ五8: +ふとう 不当 名8: +ふとう 不等 名8: +ふとう 埠頭 名1: +ふとく 不徳 名8: +ふとくい 不得意 名8: +ふところ 懐 代1: +ふとじ 太字 名1: +ふとめ 太め 代5: +ふとん 布団 名2: +ふどう 不動 名8: +ふどう 不同 名8: +ふどう 浮動 名6: +ふどうさん 不動産 名1: +ふどうたい 不導体 名1: +ふどうとく 不道徳 名8: +ふどき 風土記 名1: +ふな 舟 代1: +ふな 船 代1: +ふな 鮒 代1: +ふない 船井 苗字: +ふない 船井 地名: +ふなおか 船岡 苗字: +ふなおか 船岡 地名: +ふながた 舟形 地名: +ふなたび 船旅 名1: +ふなで 船出 名6: +ふなに 船荷 名1: +ふなのり 船乗り 代1: +ふなはし 舟橋 地名: +ふなばし 船橋 苗字: +ふなばし 船橋 地名: +ふなびん 船便 名1: +ふなほ 船穂 地名: +ふなれ 不慣れ 代5: +ふにん 赴任 名6: +ふにん 不妊 名1: +ふね 船 名2: +ふね 舟 名2: +ふねひき 船引 地名: +ふねん 不燃 名1: +ふの 布野 地名: +ふのう 不能 名8: +ふはい 腐敗 名6: +ふはい 不敗 名1: +ふはつ 不発 名1: +ふひつよう 不必要 名8: +ふひょう 不評 名1: +ふび 不備 名8: +ふびょうどう 不平等 名8: +ふふく 不服 名8: +ふぶ 吹雪 カ五1: +ふぶき 吹雪 名1: +ふへい 不平 名1: +ふへん 不変 代5: +ふへん 普遍 名4: +ふべん 不便 名10: +ふほう 不法 名8: +ふほう 訃報 名3: +ふほんい 不本意 名8: +ふぼ 父母 代1: +ふまえ 踏まえ 一段1: +ふまん 不満 名10: +ふみ 文 代1: +ふみあき 文昭 名前: +ふみお 文男 名前: +ふみお 文夫 名前: +ふみお 文雄 名前: +ふみき 踏み切 ラ五7: +ふみきり 踏切 名1: +ふみこ 踏み込 マ五7: +ふみこ 富美子 名前: +ふみこ 冨美子 名前: +ふみこ 文子 名前: +ふみたお 踏み倒 サ五7: +ふみたか 文隆 名前: +ふみだい 踏台 名1: +ふみつけ 踏みつけ 一段3: +ふみとどま 踏みとどま ラ五5: +ふみにじ 踏みにじ ラ五5: +ふみはず 踏み外 サ五7: +ふみひこ 文彦 名前: +ふみん 不眠 名1: +ふむき 不向き 代5: +ふめい 不明 名10: +ふめいかく 不明確 名8: +ふめいよ 不名誉 代5: +ふめいりょう 不明瞭 代5: +ふめつ 不滅 名8: +ふめん 譜面 名1: +ふもう 不毛 名8: +ふもと 麓 代1: +ふや 増や サ五5: +ふや 殖や サ五5: +ふゆ 冬 代1:接頭1: +ふゆう 富裕 名8: +ふゆう 浮遊 名6: +ふゆかい 不愉快 名8: +ふゆきとどき 不行届き 代5: +ふゆば 冬場 名1: +ふゆふく 冬服 名1: +ふゆもの 冬物 名1: +ふゆやすみ 冬休み 名1: +ふゆやま 冬山 名1: +ふよ 付与 名6: +ふよう 不用 名8: +ふよう 不要 名8: +ふよう 扶養 名6: +ふようい 不用意 名8: +ふらい フライ 名1: +ふらいと フライト 名6: +ふらいんぐ フライング 代4: +ふらぐ フラグ 名1: +ふらっぐ フラッグ 名1: +ふらっしゅ フラッシュ 名1: +ふらっと フラット 代5: +ふらつ ふらつ カ五7: +ふらの 富良野 地名: +ふらり ふらり 副2: +ふらわー フラワー 名1: +ふらん フラン 代1:助数2: +ふらん 腐乱 名6: +ふらんく フランク 代5: +ふらんす フランス 地名: +ふらんすご フランス語 名1: +ふり 不利 名8: +ふり ふり 名1: +ふりー フリー 名8: +ふりーだむ フリーダム 名1: +ふりえき 不利益 代5: +ふりかえ 振り替え 一段3: +ふりかえ 振り返 ラ五7:サ五1: +ふりかえ 振替 代4: +ふりかけ 振りかけ 一段1: +ふりかた 振り方 名1: +ふりき 振り切 ラ五5: +ふりこ 振り込 マ五8: +ふりこみ 振込 名5: +ふりすびー フリスビー 名1: +ふりそそ 降り注 ガ五7: +ふりそで 振袖 代1: +ふりだ 降り出 サ五5: +ふりだ 振り出 サ五7: +ふりだし 振出 名1: +ふりつ 府立 名1:接尾4: +ふりつけ 振付け 一段3: +ふりま 振りま カ五1: +ふりまわ 振り回 サ五7: +ふりみだ 振り乱 サ五1: +ふりむ 振り向 カ五7: +ふりょ 不慮 名1: +ふりょう 不良 名8: +ふりょう 不漁 名8: +ふりょく 浮力 名1: +ふりわけ 振り分け 一段3: +ふりん 不倫 名8: +ふる 古 接頭1:形2:サ五1: +ふる フル 接頭1: +ふる 震 ワ五2: +ふる 奮 ワ五1: +ふる 振る ワ五3: +ふるーつ フルーツ 名1: +ふるいおこ 奮い起こ サ五5: +ふるいた 奮い立 タ五7: +ふるう 古宇 地名: +ふるえ 震え 一段3: +ふるえあが 震え上が ラ五7: +ふるかわ 古川 苗字: +ふるかわ 古川 地名: +ふるくさ 古くさ 形2: +ふるさと 古里 名1: +ふるさわ 古沢 苗字: +ふるた 古田 苗字: +ふるて 古手 代1: +ふるどの 古殿 地名: +ふるの 古野 苗字: +ふるはし 古橋 苗字: +ふるび 古び 一段1: +ふるびら 古平 地名: +ふるほん 古本 名1: +ふるま 振る舞 ワ五8: +ふるま 振舞 ワ五8: +ふるむら 古村 苗字: +ふるめかし 古めかし 形2: +ふるや 古屋 苗字: +ふるや 古谷 苗字: +ふるやま 古山 苗字: +ふるわ 震わ サ五1: +ふれ 触れ 一段1: +ふれーく フレーク 名1: +ふれーず フレーズ 名1: +ふれーむ フレーム 名1: +ふれあ 触れ合 ワ五7: +ふれこ 触れ込 マ五7: +ふれんぞく 不連続 代5: +ふれんち フレンチ 名1: +ふろ 風呂 名2: +ふろー フロー 名1: +ふろあ フロア 名1: +ふろう 不労 名1: +ふろう 不老 名1: +ふろう 浮浪 名6: +ふろく 付録 名1: +ふろしき 風呂敷 名1: +ふろっぴー フロッピー 名1: +ふろんと フロント 名1: +ふわ 不破 苗字: +ふわ 不破 地名: +ふわ 不和 代5: +ふわたり 不渡り 名1: +ふわふわ フワフワ 副9: +ふわらいどう 付和雷同 代4: +ふん 分 代1:助数2: +ふん 糞 代3: +ふん 粉 代1: +ふん 墳 代1: +ふん 憤 代1: +ふん 噴 代1: +ふん 吻 単漢: +ふん 扮 単漢: +ふん 焚 単漢: +ふん 奮 単漢: +ふん 紛 単漢: +ふん 雰 単漢: +ふんいき 雰囲気 名1: +ふんえん 噴煙 名1: +ふんか 噴火 名6: +ふんがい 憤慨 名6: +ふんき 奮起 名6: +ふんさい 粉砕 名6: +ふんしつ 紛失 名6: +ふんしゃ 噴射 名6: +ふんしゅつ 噴出 名6: +ふんしょく 粉飾 名6: +ふんすい 噴水 名1: +ふんぜん 奮然 形動2: +ふんそう 紛争 名6: +ふんそう 扮装 名6: +ふんとう 奮闘 名7: +ふんどう 分銅 名1: +ふんにゅう 粉乳 名1: +ふんぱつ 奮発 名6: +ふんべつ 分別 名6: +ふんまつ 粉末 名1: +ふんむ 噴霧 名6: +ふんわり ふんわり 副3: +ぶ 部 代1:助数: +ぶ 歩 代1: +ぶ 武 代1: +ぶ 分 助数2: +ぶ 不 単漢: +ぶ 侮 単漢: +ぶ 撫 単漢: +ぶ 舞 単漢: +ぶ 葡 単漢: +ぶ 蕪 単漢: +ぶ 無 単漢: +ぶーす ブース 名1: +ぶーすたー ブースター 名1: +ぶーつ ブーツ 名1: +ぶーと ブート 名6: +ぶーむ ブーム 名1: +ぶあい 歩合 名1: +ぶあいそう 無愛想 代5: +ぶあつ 分厚 形2:形動1: +ぶいん 部員 名1: +ぶえんりょ 無遠慮 名8: +ぶか 深 接尾5: +ぶか 部下 名1: +ぶかい 部会 名1: +ぶがい 部外 名1: +ぶき 武器 名1: +ぶきみ 不気味 形動4: +ぶきょく 部局 名1: +ぶきよう 不器用 代5: +ぶさほう 無作法 名8: +ぶざー ブザー 名1: +ぶし 武士 名1: +ぶし 節 接尾2: +ぶしつけ ぶしつけ 代5: +ぶしゅ 部首 名1: +ぶしょ 部署 名1: +ぶしょ 部所 名1: +ぶしょう 不精 名8:サ変: +ぶしょう 武将 名1: +ぶじ 無事 名10: +ぶじょく 侮辱 名6: +ぶす ブス 代1: +ぶすう 部数 名1: +ぶせい 部制 助数2: +ぶぜん 豊前 地名: +ぶそう 武装 名6: +ぶそく 不足 接尾2: +ぶぞく 部族 名1: +ぶた 豚 代1: +ぶた ぶた 接尾2: +ぶた 蓋 接尾2: +ぶたい 舞台 名1: +ぶたい 部隊 名1: +ぶたにく 豚肉 名1: +ぶち 斑 代1: +ぶちょう 部長 代2: +ぶっか 物価 名1: +ぶっきょう 仏教 名1: +ぶっく ブック 名1: +ぶっけん 物件 名1: +ぶっし 物資 名1: +ぶっしつ 物質 名4: +ぶっしょう 物証 名1: +ぶっしょく 物色 名6: +ぶっそう 物騒 形動4: +ぶったい 物体 名1: +ぶっだ 仏陀 名1: +ぶってき 物的 形動3: +ぶっぴん 物品 名1: +ぶつ 物 接尾2: +ぶつ 仏 接尾2: +ぶつ 勿 単漢: +ぶつか ぶつか ラ五7: +ぶつぎ 物議 名1: +ぶつけ ぶつけ 一段1: +ぶつぞう 仏像 名1: +ぶつだん 仏壇 名1: +ぶつぶつ ぶつぶつ 副8: +ぶつめつ 仏滅 名1: +ぶつり 物理 名4: +ぶつりょう 物量 名1: +ぶてぃっく ブティック 名1: +ぶどう 葡萄 代1: +ぶどう 武道 代1: +ぶどまり 歩留まり 名1: +ぶない 部内 名1: +ぶなん 無難 名8: +ぶひ 部費 名1: +ぶひん 部品 名1: +ぶぶん 部分 名4: +ぶもん 部門 名1: +ぶよう 舞踊 名1: +ぶようじん 不用心 名8: +ぶらいんど ブラインド 代1: +ぶらうす ブラウス 名1: +ぶらく 部落 名1: +ぶらさが ぶら下が ラ五7: +ぶらさげ ぶら下げ 一段1: +ぶらざー ブラザー 企業: +ぶらじゃー ブラジャー 代1: +ぶらじる ブラジル 地名: +ぶらっく ブラック 名1: +ぶらり ぶらり 副2: +ぶらんく ブランク 代1: +ぶらんでー ブランデー 名1: +ぶらんど ブランド 名1: +ぶり ぶり 接尾2: +ぶり 振り 接尾2: +ぶりっじ ブリッジ 名1: +ぶりょく 武力 名1: +ぶるー ブルー 名1: +ぶるい 部類 名1: +ぶるがりあ ブルガリア 地名: +ぶれーかー ブレーカー 名1: +ぶれーき ブレーキ 名1: +ぶれーく ブレーク 代4: +ぶれい 無礼 名8: +ぶろーかー ブローカー 名1: +ぶろっく ブロック 名6: +ぶん 文 代1: +ぶん 分 接尾1:助数2: +ぶん 蚊 単漢: +ぶん 聞 単漢: +ぶんい 文意 代1: +ぶんいち 文一 名前: +ぶんか 文化 名4: +ぶんか 分科 名1: +ぶんか 文科 名1: +ぶんか 分化 代4: +ぶんかい 分解 名6: +ぶんかざい 文化財 名1: +ぶんかつ 分割 名6: +ぶんかん 分館 名1: +ぶんがく 文学 名4: +ぶんき 分岐 名6: +ぶんきょう 文京 地名: +ぶんきょう 文教 名1: +ぶんぎょう 分業 名6: +ぶんぐ 文具 名1: +ぶんけ 分家 名6: +ぶんけん 文献 名1: +ぶんげい 文芸 名1: +ぶんこ 文庫 名1: +ぶんこう 分校 名1: +ぶんご 文語 名1: +ぶんご 豊後 地名: +ぶんごう 文豪 名1: +ぶんごたかだ 豊後高田 地名: +ぶんさん 分散 名6: +ぶんし 分子 名1: +ぶんしつ 分室 名1: +ぶんしゅう 文集 名1: +ぶんしょ 文書 名1: +ぶんしょう 文章 名1: +ぶんしん 分身 名1: +ぶんじょう 分譲 名6: +ぶんすい 分水 地名: +ぶんすう 分数 名1: +ぶんせき 分析 名6: +ぶんせき 文責 名1: +ぶんせつ 文節 名1: +ぶんたい 分隊 名1: +ぶんたい 文体 名1: +ぶんたん 分担 名6: +ぶんだん 分断 名6: +ぶんだん 文壇 名1: +ぶんつう 文通 名6: +ぶんど ぶんど ラ五5: +ぶんのう 分納 名6: +ぶんぱ 分派 名6: +ぶんぱい 分配 名6: +ぶんぴつ 分泌 名6: +ぶんぴつ 文筆 名1: +ぶんぶ 文武 名1: +ぶんぷ 分布 名6: +ぶんべつ 分別 名6: +ぶんべん 分娩 名7: +ぶんぼ 分母 名1: +ぶんぼうぐ 文房具 名1: +ぶんぽう 文法 名1: +ぶんまつ 文末 代1: +ぶんみゃく 文脈 名1: +ぶんめい 文明 名1: +ぶんめん 文面 名1: +ぶんや 分野 名1: +ぶんよ 分与 名6: +ぶんらく 文楽 名1: +ぶんり 分離 名6: +ぶんりつ 分立 名6: +ぶんりょう 分量 名1: +ぶんるい 分類 名6: +ぶんれい 文例 名1: +ぶんれつ 分裂 名6: +ぷーる プール 名1: +ぷっしゅ プッシュ 代4: +ぷらいおりてぃ プライオリティ 代1: +ぷらいど プライド 名1: +ぷらいばしー プライバシー 名1: +ぷらいべーと プライベート 名8: +ぷらぐ プラグ 名1: +ぷらざ プラザ 名1: +ぷらす プラス 名1: +ぷらす + 単漢: +ぷらすちっく プラスチック 名1: +ぷらすまいなす ± 単漢: +ぷらずま プラズマ 名1: +ぷらちな プラチナ 代1: +ぷらん プラン 名1: +ぷらんと プラント 名1: +ぷらんにんぐ プランニング 代4: +ぷりずむ プリズム 名1: +ぷりみてぃぶ プリミティブ 代5: +ぷりんす プリンス 名1: +ぷりんせす プリンセス 名1: +ぷりんた プリンタ 名1: +ぷりんと プリント 名6: +ぷるだうん プルダウン 名1: +ぷれー プレー 名6: +ぷれーと プレート 名1: +ぷれーやー プレーヤー 名1: +ぷれーん プレーン 名8: +ぷれいやー プレイヤー 名1: +ぷれじでんと プレジデント 名1: +ぷれす プレス 名6: +ぷれぜんてーしょん プレゼンテーション 名1: +ぷれぜんと プレゼント 名6: +ぷれりゅーど プレリュード 代1: +ぷろ プロ 代2: +ぷろーぶ プローブ 代1: +ぷろぐらま プログラマ 名1: +ぷろぐらみんぐ プログラミング 名1: +ぷろぐらむ プログラム 名6: +ぷろじぇくと プロジェクト 名1: +ぷろせしんぐ プロセシング 名1: +ぷろせす プロセス 名1: +ぷろせっさ プロセッサ 名1: +ぷろだくしょん プロダクション 代1: +ぷろだくと プロダクト 名1: +ぷろてくしょん プロテクション 名1: +ぷろてくと プロテクト 名1: +ぷろでゅーさー プロデューサー 名1: +ぷろでゅーす プロデュース 名6: +ぷろとこる プロトコル 名1: +ぷろとたいぷ プロトタイプ 名1: +ぷろぱん プロパン 名1: +ぷろふぃーる プロフィール 名1: +ぷろふぇっしょなる プロフェッショナル 代5: +ぷろぺら プロペラ 名1: +ぷろぽーず プロポーズ 名6: +ぷろもーと プロモート 名6: +ぷろんぷと プロンプト 名1: +ぷん 分 助数2: +へ 減 ラ五8: +へ 経 一段1: +へい 兵 代1: +へい 丙 代1: +へい 塀 代1: +へい 坪 単漢: +へい 瓶 単漢: +へい 併 単漢: +へい 幣 単漢: +へい 平 単漢: +へい 弊 単漢: +へい 柄 単漢: +へい 並 単漢: +へい 蔽 単漢: +へい 閉 単漢: +へい 陛 単漢: +へい 箆 単漢: +へい 餅 単漢: +へいあん 平安 名8: +へいい 平易 名8: +へいおん 平穏 名8: +へいか 陛下 名1: +へいか 平価 名1: +へいかい 閉会 名6: +へいかん 閉館 名6: +へいがい 弊害 名1: +へいき 平気 名8: +へいき 併記 名6: +へいき 兵器 名1: +へいきん 平均 名6: +へいきんち 平均値 名1: +へいきんてん 平均点 名1: +へいげん 平原 名1: +へいこう 平行 名6: +へいこう 平衡 名6: +へいこう 並行 名6: +へいこう 閉口 名6: +へいこうせん 平行線 名1: +へいごう 併合 名6: +へいさ 閉鎖 名6: +へいざん 閉山 名6: +へいし 兵士 名1: +へいし 斃死 名6: +へいしゃ 弊社 名1: +へいじ 平時 名1: +へいじつ 平日 名1: +へいじょう 平常 名1: +へいじょうきょう 平城京 代1: +へいせい 平成 名1: +へいせい 平静 名8: +へいせつ 併設 名6: +へいぜん 平然 形動2: +へいそ 平素 名1: +へいそく 閉塞 名6: +へいそん 併存 名6: +へいたい 兵隊 名1: +へいたん 平坦 名8: +へいち 平地 名1: +へいてい 平定 名6: +へいてい 閉廷 名6: +へいてん 弊店 名1: +へいてん 閉店 名6: +へいねつ 平熱 名1: +へいねん 平年 名1: +へいはつ 併発 名6: +へいべい 平米 助数2: +へいほう 平方 名6:助数2: +へいぼん 平凡 名8: +へいまく 閉幕 名6: +へいみん 平民 名1: +へいめん 平面 名4: +へいもん 閉門 名6: +へいや 平野 名1: +へいよう 併用 名6: +へいりつ 並立 名6: +へいりょく 兵力 名1: +へいれつ 並列 名6: +へいわ 平和 名8: +へき 壁 接尾1: +へき 癖 代1: +へき 僻 サ変: +へき 日置 地名: +へき 碧 単漢: +へきかい 碧海 地名: +へきが 壁画 名1: +へきち 僻地 名1: +へきなん 碧南 地名: +へきめん 壁面 名1: +へくたーる ヘクタール 助数2: +へぐり 平群 地名: +へた 下手 代5: +へだ 戸田 地名: +へだた 隔た ラ五3: +へだて 隔て 一段1: +へっだ ヘッダ 名1: +へっだー ヘッダー 名1: +へっど ヘッド 名1: +へっどほん ヘッドホン 名1: +へび 蛇 代1: +へぼん ヘボン 代1: +へもぐろびん ヘモグロビン 代1: +へや 部屋 名2: +へら 箆 代1: +へり 縁 代1: +へりうむ ヘリウム 名1: +へりくだ 遜 ラ五7: +へるつ ヘルツ 助数2: +へるぷ ヘルプ 名1: +へん 変 代5:ザ変: +へん 片 接尾1: +へん 編 接尾1:助数: +へん 辺 代1: +へん 篇 代1: +へん 偏 代4: +へん 返 代1: +へん 遍 代1: +へんあつき 変圧器 名1: +へんい 変移 名6: +へんか 変化 名6: +へんかく 変革 名6: +へんかん 変換 名6: +へんかん 返還 名6: +へんきゃく 返却 名7: +へんきょう 辺境 名1: +へんきょく 編曲 名6: +へんきん 返金 名6: +へんくつ 偏屈 代5: +へんけい 変形 名6: +へんけん 偏見 名1: +へんげ 変化 名6: +へんこう 変更 名7: +へんさ 偏差 名1: +へんさい 返済 名7: +へんざい 偏在 名6: +へんし 変死 名6: +へんしつ 変質 名6: +へんしゅう 編集 名6: +へんしゅう 編修 名6: +へんしょ 返書 名1: +へんしょく 偏食 名6: +へんしょく 変色 名6: +へんしん 変身 名6: +へんしん 返信 名1: +へんじ 返事 名5: +へんじょう 返上 名6: +へんじん 変人 名1: +へんすう 変数 名1: +へんせい 編成 名6: +へんせい 編制 名6: +へんせん 変遷 名6: +へんそう 変装 名6: +へんそう 返送 名7: +へんそく 変則 名8: +へんそく 変速 代4: +へんぞう 変造 代4: +へんたい 変態 代4: +へんたい 編隊 名1: +へんち 辺地 名1: +へんちょう 変調 代4: +へんとう 返答 名6: +へんどう 変動 名6: +へんにゅう 編入 名6: +へんのう 返納 名6: +へんぴん 返品 名6: +へんぼう 変貌 名6: +へんぽん 返本 名6: +へんよう 変容 名6: +へんれい 返礼 名6: +へんれい 返戻 名6: +へんれき 遍歴 名6: +へんろ 遍路 名1: +べ 部 単漢: +べ 辺 単漢: +べーこん ベーコン 名1: +べーしっく ベーシック 名8: +べーす ベース 名1: +べーた ベータ 代1: +べーた β 代1: +べあ ベア 代1: +べい 米 代1: +べいか 米価 名1: +べいこく 米国 名1: +べいさく 米作 名1: +べいしょく 米食 名6: +べいじゅ 米寿 名1: +べいそ 米ソ 名1: +べき 冪 単漢: +べくた ベクタ 名1: +べくたー ベクター 名1: +べくとる ベクトル 名1: +べすと ベスト 名8: +べすとせらー ベストセラー 名1: +べっかん 別館 名1: +べっき 別記 名6: +べっきょ 別居 名6: +べっけん 別件 名1: +べっこ 別個 名8: +べっこう 別項 名1: +べっさつ 別冊 名1: +べっし 別紙 名1: +べっし 蔑視 名6: +べっしつ 別室 名1: +べっしやま 別子山 地名: +べっしゅ 別種 名1: +べっしょう 別称 名1: +べっせい 別姓 名1: +べっそう 別荘 名1: +べっそう 別送 名6: +べったく 別宅 名1: +べっと 別途 名1: +べっど ベッド 名1: +べっぴょう 別表 名1: +べっぷ 別府 地名: +べっぽう 別報 名1: +べつ 別 名8:接頭1:接尾1: +べつ 瞥 単漢: +べつ 蔑 単漢: +べつ 捌 単漢: +べつかい 別海 地名: +べつくち 別口 名1: +べつじん 別人 名1: +べつだん 別段 副1: +べつのう 別納 名6: +べつばい 別売 名6: +べつびん 別便 名1: +べつべつ 別々 名8: +べつめい 別名 名1: +べつもの 別物 名1: +べつり 別離 名1: +べてらん ベテラン 名1: +べとなむ ベトナム 地名: +べに 紅 代1: +べびー ベビー 名1: +べや 部屋 接尾2: +べりふぁい ベリファイ 名6: +べる ベル 名1: +べるぎー ベルギー 地名: +べると ベルト 名1: +べるりん ベルリン 地名: +べん 便 代4:ザ変: +べん 弁 代1:ザ変: +べん 勉 代1: +べん 娩 代1: +べん 鞭 代1: +べんえき 便益 名1: +べんかい 弁解 名6: +べんがく 勉学 名6: +べんきょう 勉強 名5: +べんぎ 便宜 名10: +べんぎじょう 便宜上 副1: +べんご 弁護 名6: +べんごし 弁護士 代2: +べんさい 弁済 名6: +べんしょう 弁償 名6: +べんじょ 便所 名1: +べんだー ベンダー 代1: +べんち ベンチ 名1: +べんちゃー ベンチャー 名1: +べんてん 弁天 名1: +べんとう 弁当 名2: +べんぴ 便秘 名1: +べんぽう 便法 名1: +べんめい 弁明 名6: +べんもう 鞭毛 名1: +べんらん 便覧 名1: +べんり 便利 名8: +べんれい 勉励 名1: +べんろん 弁論 名6: +ぺーじ ページ 助数2: +ぺーじ 頁 助数2: +ぺーす ペース 名1: +ぺーすと ペースト 代4: +ぺーぱー ペーパー 名1: +ぺあ ペア 名1: +ぺきん 北京 地名: +ぺしみすと ペシミスト 名1: +ぺっと ペット 名1: +ぺなるてぃ ペナルティ 名1: +ぺなるてぃー ペナルティー 名1: +ぺん ペン 名1: +ぺんき ペンキ 名1: +ぺんぎん ペンギン 名1: +ぺんしょん ペンション 名1: +ぺんねーむ ペンネーム 代1: +ほ 干 サ五7: +ほ 掘 ラ五8: +ほ 彫 ラ五8: +ほ 帆 代1: +ほ 穂 代1: +ほ 輔 代1: +ほ 補 代1: +ほ 歩 助数: +ほ 保 代1: +ほ 浦 単漢: +ほ 蒲 単漢: +ほ 葡 単漢: +ほ 畝 単漢: +ほ 甫 単漢: +ほ 舗 単漢: +ほ 鋪 単漢: +ほ 圃 単漢: +ほ 捕 単漢: +ほーむ ホーム 名1: +ほーる ホール 名1: +ほーん ホーン 助数2: +ほあん 保安 名1: +ほい 宝飯 地名: +ほいく 保育 名6: +ほう 法 接尾3: +ほう 方 代1: +ほう 砲 代1: +ほう 報 接尾1:ザ変: +ほう ほう ラ五7:代1: +ほう 放 ラ五7:単漢: +ほう 奉 ザ変: +ほう 崩 ザ変: +ほう 宝 単漢: +ほう 訪 単漢: +ほう 豊 単漢: +ほう 邦 単漢: +ほう 保 単漢: +ほう 縫 単漢: +ほう 胞 単漢: +ほう 逢 単漢: +ほう 鞄 単漢: +ほう 蔀 単漢: +ほう 鴇 単漢: +ほう 倣 単漢: +ほう 俸 単漢: +ほう 包 単漢: +ほう 呆 単漢: +ほう 峰 単漢: +ほう 鳳 単漢: +ほう 鵬 単漢: +ほう 峯 単漢: +ほう 庖 単漢: +ほう 抱 単漢: +ほう 捧 単漢: +ほう 朋 単漢: +ほう 泡 単漢: +ほう 烹 単漢: +ほう 芳 単漢: +ほう 萌 単漢: +ほう 蓬 単漢: +ほう 蜂 単漢: +ほう 褒 単漢: +ほう 鋒 単漢: +ほう 飽 単漢: +ほうあん 法案 名1: +ほうい 包囲 名6: +ほうい 方位 名1: +ほうえい 放映 名6: +ほうおう 法王 名1: +ほうか 放火 名6: +ほうか 法科 名1: +ほうか 邦貨 名1: +ほうかい 崩壊 名6: +ほうかご 放課後 名1: +ほうかつ 包括 名6: +ほうが 邦画 代1: +ほうがい 法外 代5: +ほうがく 方角 名1: +ほうがく 法学 名1: +ほうがん 包含 名6: +ほうがんし 方眼紙 名1: +ほうき 放棄 名6: +ほうき 法規 名1: +ほうきゅう 俸給 名1: +ほうぎょ 崩御 名7: +ほうけ 惚け 一段1: +ほうけい 方形 名1: +ほうけん 封建 名4: +ほうげき 砲撃 名6: +ほうげん 放言 名6: +ほうげん 方言 名1: +ほうこ 宝庫 名1: +ほうこう 方向 名1: +ほうこう 芳香 名1: +ほうこう 奉公 名7: +ほうこく 報告 名7: +ほうごう 縫合 名6: +ほうさく 方策 名1: +ほうさく 豊作 名1: +ほうさん 放散 名6: +ほうし 奉仕 名6: +ほうし 法師 名1: +ほうし 胞子 名1: +ほうし 芳志 名3: +ほうしき 方式 名1: +ほうしゃ 放射 名6: +ほうしゃせん 放射線 名1: +ほうしゃのう 放射能 名1: +ほうしゅう 報酬 名1: +ほうしゅつ 放出 名6: +ほうしゅやま 宝珠山 地名: +ほうしょう 報償 名1: +ほうしょう 報奨 名6: +ほうしょう 褒賞 名1: +ほうしょく 奉職 名6: +ほうしん 方針 名1: +ほうしん 放心 名6: +ほうじ 法事 名1: +ほうじょう 北条 苗字: +ほうじょう 北条 地名: +ほうじょう 方城 地名: +ほうじん 法人 名1: +ほうじん 邦人 名1: +ほうすい 放水 名6: +ほうせい 縫製 代4: +ほうせい 方正 代5: +ほうせき 宝石 名1: +ほうそう 放送 名6: +ほうそう 包装 名6: +ほうそう 疱瘡 名1: +ほうそうかい 法曹界 名1: +ほうそうきょく 放送局 名1: +ほうそうし 包装紙 名1: +ほうそく 法則 名1: +ほうたい 包帯 名6: +ほうたく 飽託 地名: +ほうだい 放題 名1: +ほうだん 放談 名6: +ほうだん 砲弾 名1: +ほうち 放置 名6: +ほうち 法治 名1: +ほうちょう 包丁 名1: +ほうてい 法定 名1: +ほうてい 法廷 名1: +ほうていしき 方程式 名1: +ほうてき 法的 形動3: +ほうでん 放電 名6: +ほうどう 報道 名6: +ほうどうじん 報道陣 名1: +ほうにち 訪日 名6: +ほうにん 放任 名6: +ほうねん 豊年 名1: +ほうねん 放念 代4: +ほうのう 奉納 名6: +ほうび 褒美 名3: +ほうふ 豊富 名8: +ほうふ 抱負 名1: +ほうふ 防府 地名: +ほうふく 報復 名6: +ほうぶつせん 放物線 名1: +ほうぶん 邦文 名1: +ほうへい 砲兵 名1: +ほうべい 訪米 名6: +ほうほう 方法 名1: +ほうほく 豊北 地名: +ほうぼう 方々 名1: +ほうぼく 放牧 名6: +ほうまん 放漫 名8: +ほうまん 豊満 名8: +ほうむ 葬 ラ五7: +ほうむ 法務 名1: +ほうむしょう 法務省 名1: +ほうめい 芳名 名3: +ほうめん 方面 名1: +ほうめん 放免 名6: +ほうもつ 宝物 名1: +ほうもん 訪問 名6: +ほうもんぎ 訪問着 名1: +ほうや 保谷 地名: +ほうやく 邦訳 名6: +ほうよう 法要 名1: +ほうよう 抱擁 名6: +ほうよう 包容 名6: +ほうらい 鳳来 地名: +ほうりつ 法律 名4: +ほうりゅう 放流 名6: +ほうりゅうじ 法隆寺 名1: +ほうれい 法令 名1: +ほうろう 放浪 名6: +ほうわ 飽和 名6: +ほえ 吠え 一段1: +ほお 頬 代1: +ほおん 保温 名6: +ほか 他 代6: +ほか ほか 代1: +ほか 外 代1: +ほかく 捕獲 名6: +ほかく 保革 名1: +ほかん 保管 名6: +ほかん 補間 代4: +ほかん 補完 代4: +ほがらか 朗らか 形動4: +ほきゅう 補給 名6: +ほきょう 補強 名6: +ほく 北 代1: +ほくい 北緯 名1: +ほくおう 北欧 名1: +ほくげん 北限 名1: +ほくしん 北辰 名1: +ほくじょう 北上 名6: +ほくせい 北西 名1: +ほくせい 北勢 地名: +ほくたん 北端 名1: +ほくだい 北大 名1: +ほくだん 北淡 地名: +ほくと 北斗 名1: +ほくとう 北東 名1: +ほくぶ 北部 名1: +ほくべい 北米 名1: +ほくぼう 北房 地名: +ほくよう 北洋 名1: +ほくりく 北陸 名1: +ほくりゅう 北龍 地名: +ほくろ ほくろ 代1: +ほけつ 補欠 名1: +ほけん 保健 名1: +ほけん 保険 名1: +ほけんきん 保険金 名1: +ほけんふ 保健婦 代2: +ほげい 捕鯨 名1: +ほこ 誇 ラ五7: +ほこ 鉾 代1: +ほこ 矛 代1: +ほこう 歩行 名6: +ほこた 鉾田 地名: +ほこらし 誇らし 形3: +ほころ 綻 バ五7: +ほご 保護 名6: +ほご 補語 名1: +ほさ 補佐 名6: +ほさか 保坂 苗字: +ほし 星 代1: +ほし 欲し 形3: +ほし ☆ 単漢: +ほし ★ 単漢: +ほしが 欲しが ラ五1: +ほしぞら 星空 代1: +ほしな 保科 苗字: +ほしの 星野 苗字: +ほしゃく 保釈 名6: +ほしゅ 保守 名6: +ほしゅう 補修 名6: +ほしゅう 補習 名6: +ほしょう 保証 名6: +ほしょう 保障 名6: +ほしょう 補償 名6: +ほしょうきん 保証金 名1: +ほしょうきん 補償金 名1: +ほしょうにん 保証人 名1: +ほじ 保持 名6: +ほじゅう 補充 名6: +ほじょ 補助 名6: +ほじょきん 補助金 名1: +ほすう 補数 名1: +ほすてす ホステス 名1: +ほすと ホスト 名1: +ほせい 補整 名6: +ほせい 補正 名6: +ほせん 保線 名1: +ほぜん 保全 名6: +ほそ 細 形8:ラ五7: +ほそい 細井 苗字: +ほそいり 細入 地名: +ほそう 舗装 名6: +ほそえ 細江 苗字: +ほそえ 細江 地名: +ほそかわ 細川 苗字: +ほそく 補足 名6: +ほそく 捕捉 名6: +ほそく 補則 名1: +ほそだ 細田 苗字: +ほそなが 細長 形2: +ほその 細野 苗字: +ほそぼそ 細々 副2: +ほそめ 細め 代5:一段1: +ほそや 細谷 苗字: +ほぞん 保存 名6: +ほたか 穂高 地名: +ほたる 蛍 代1: +ほちきす ホチキス 名1: +ほちゅう 補注 名1: +ほちょう 歩調 名1: +ほちょうき 補聴器 名1: +ほっ 欲 サ変:サ五1: +ほっかいどう 北海道 県区: +ほっき 発起 名6: +ほっきょく 北極 名1: +ほっけー ホッケー 代3: +ほっさ 発作 名4: +ほっそく 発足 名6: +ほった 堀田 苗字: +ほったん 発端 名1: +ほっちきす ホッチキス 名1: +ほってんとっと ホッテントット 名1: +ほっと ほっと 副4:カ五7: +ほっと ホット 名8: +ほっぷ ホップ 名1: +ほっぽう 北方 名1: +ほつ 発 単漢: +ほづみ 穂積 苗字: +ほづみ 穂積 地名: +ほて 火照 ラ五3: +ほてる ホテル 名1: +ほてん 補填 名6: +ほとけ 仏 代1: +ほとほと ほとほと 副1: +ほとんど ほとんど 代6: +ほとんど 殆ど 代6: +ほど 解 カ五7: +ほど 程 代1: +ほどう 舗道 名1: +ほどう 歩道 名1: +ほどう 補導 名6: +ほどうきょう 歩道橋 名1: +ほどがや 保土ヶ谷 地名: +ほどこ 施 サ五7: +ほどほど ほどほど 代5: +ほない 保内 地名: +ほなみ 穂波 地名: +ほね 骨 代1: +ほねお 骨折 ラ五8: +ほねぐみ 骨組み 名1: +ほねみ 骨身 名1: +ほねやすめ 骨休め 代4: +ほのお 炎 代1: +ほのお 焔 代1: +ほのか ほのか 代5: +ほのぼの ほのぼの 副3: +ほのるる ホノルル 地名: +ほばら 保原 地名: +ほびー ホビー 名1: +ほへい 歩兵 名1: +ほべつ 穂別 地名: +ほほ 頬 代1: +ほほえ 微笑 マ五7: +ほほえまし ほほえまし 形5: +ほぼ ほぼ 副1: +ほぼ 保母 代2: +ほまれ 誉れ 代1: +ほめ 褒め 一段4: +ほめ 誉め 一段4: +ほゆう 保有 名6: +ほよう 保養 名6: +ほら ほら 代1: +ほら 洞 代1: +ほらー ホラー 名1: +ほらど 洞戸 地名: +ほり 濠 名2: +ほり 堀 苗字: +ほり 堀 名2: +ほり 壕 単漢: +ほりい 堀井 苗字: +ほりうち 堀内 苗字: +ほりえ 堀江 地名: +ほりえ 堀江 名前: +ほりかわ 堀川 苗字: +ほりかわ 堀川 地名: +ほりがね 堀金 地名: +ほりぐち 堀口 苗字: +ほりこし 堀越 苗字: +ほりだ 掘り出 サ五7: +ほりの 堀野 苗字: +ほりのうち 堀之内 苗字: +ほりのうち 堀之内 地名: +ほりゅう 保留 名6: +ほりょ 捕虜 名1: +ほるまりん ホルマリン 名1: +ほれ 惚れ 一段1: +ほれこ 惚れ込 マ五7: +ほろ 滅 バ五4: +ほろ 幌 代1: +ほろいずみ 幌泉 地名: +ほろかない 幌加内 地名: +ほろのべ 幌延 地名: +ほろび 亡び 一段4: +ほろび 滅び 一段4: +ほろぼ 滅ぼ サ五7: +ほわいと ホワイト 名1: +ほん 本 名3: +ほん 本 接頭1:助数2: +ほん 叛 単漢: +ほん 翻 単漢: +ほん 奔 単漢: +ほんあん 本案 名1: +ほんい 本位 名1: +ほんい 本意 名1: +ほんか 本科 名1: +ほんかい 本会 名1: +ほんかいぎ 本会議 名1: +ほんかく 本格 名4: +ほんかくは 本格派 名1: +ほんかわね 本川根 地名: +ほんかん 本館 名1: +ほんがわ 本川 地名: +ほんき 本気 名8: +ほんきゅう 本給 名1: +ほんきょ 本拠 名1: +ほんきょく 本局 名1: +ほんきょち 本拠地 名1: +ほんぎまり 本決まり 代1: +ほんぎょう 本業 名1: +ほんぐう 本宮 地名: +ほんけ 本家 名1: +ほんけん 本件 名1: +ほんこう 本校 名1: +ほんこう 本稿 名1: +ほんこん 香港 地名: +ほんごう 本郷 苗字: +ほんごう 本郷 地名: +ほんごく 本国 名1: +ほんさい 本妻 名1: +ほんざん 本山 名1: +ほんし 本旨 名1: +ほんし 本紙 名1: +ほんし 本誌 名1: +ほんしき 本式 名8: +ほんしつ 本質 名4: +ほんしゃ 本社 名1: +ほんしゅう 本州 名1: +ほんしょ 本書 名1: +ほんしょ 本署 名1: +ほんしょう 本性 名1: +ほんしょう 本省 名1: +ほんしょう 本章 名1: +ほんしょく 本職 名1: +ほんしん 本心 名1: +ほんじつ 本日 代6: +ほんじゅらす ホンジュラス 地名: +ほんじょう 本庄 苗字: +ほんじょう 本庄 地名: +ほんじょう 本城 苗字: +ほんじょう 本城 地名: +ほんじょう 本荘 地名: +ほんじょう 本匠 地名: +ほんすう 本数 名1: +ほんすじ 本筋 名1: +ほんせき 本籍 名1: +ほんせん 本線 名1: +ほんせん 本船 名1: +ほんそう 奔走 名6: +ほんそく 本則 名1: +ほんたい 本体 名1: +ほんたく 本宅 名1: +ほんだ 本田 苗字: +ほんだ 本多 苗字: +ほんだ ホンダ 企業: +ほんだい 本題 名1: +ほんだい 本代 名1: +ほんだな 本棚 名1: +ほんちょう 本庁 名1: +ほんてん 本店 名1: +ほんとう 本当 名8: +ほんとう 奔騰 代4: +ほんど 本土 名1: +ほんど 本渡 地名: +ほんどう 本堂 名1: +ほんどう 本道 名1: +ほんどおり 本通り 地名: +ほんにん 本人 名3: +ほんね 本音 名1: +ほんねん 本年 名1: +ほんの ほんの 連体: +ほんのう 本能 名4: +ほんば 本場 名1: +ほんばこ 本箱 名1: +ほんばん 本番 名1: +ほんぶ 本部 名1: +ほんぶん 本文 名1: +ほんべつ 本別 地名: +ほんぺん 本編 名1: +ほんぽう 奔放 名8: +ほんぽう 本邦 名1: +ほんま 本間 苗字: +ほんまち 本町 地名: +ほんみょう 本名 名1: +ほんむ 本務 名1: +ほんめい 本命 名1: +ほんもう 本望 代5: +ほんもと 本元 名1: +ほんもの 本物 名1: +ほんや 本屋 代2: +ほんやく 翻訳 名6: +ほんやばけい 本耶馬渓 地名: +ほんらい 本来 代6: +ほんりゅう 本流 名1: +ほんりょう 本領 名1: +ぼ 簿 接尾1: +ぼ 姥 単漢: +ぼ 牡 単漢: +ぼ 募 単漢: +ぼ 墓 単漢: +ぼ 慕 単漢: +ぼ 戊 単漢: +ぼ 暮 単漢: +ぼ 母 単漢: +ぼ 菩 単漢: +ぼ 模 単漢: +ぼーい ボーイ 代2: +ぼーかる ボーカル 名1: +ぼーと ボート 名1: +ぼーど ボード 名1: +ぼーなす ボーナス 名1: +ぼーりんぐ ボーリング 名6: +ぼーる ボール 名1: +ぼーん ボーン 名1: +ぼいこっと ボイコット 名6: +ぼいす ボイス 名1: +ぼいん 母音 名1: +ぼいん 拇印 名1: +ぼう 棒 代1: +ぼう 坊 代1: +ぼう 某 接頭5:代1: +ぼう 帽 接尾1: +ぼう 亡 代1: +ぼう 忙 代1: +ぼう 房 代1: +ぼう 暴 代1: +ぼう 望 単漢: +ぼう 傍 単漢: +ぼう 剖 単漢: +ぼう 虻 単漢: +ぼう 乏 単漢: +ぼう 妨 単漢: +ぼう 忘 単漢: +ぼう 冒 単漢: +ぼう 紡 単漢: +ぼう 肪 単漢: +ぼう 膨 単漢: +ぼう 謀 単漢: +ぼう 貌 単漢: +ぼう 貿 単漢: +ぼう 鉾 単漢: +ぼう 防 単漢: +ぼう 卯 単漢: +ぼう 牟 単漢: +ぼう 呆 単漢: +ぼう 茅 単漢: +ぼういん 暴飲 名6: +ぼうえい 防衛 名6: +ぼうえき 貿易 名6: +ぼうかん 傍観 名6: +ぼうかん 防寒 名1: +ぼうかん 暴漢 名1: +ぼうがい 妨害 名6: +ぼうがい 望外 代5: +ぼうきゃく 忘却 名6: +ぼうきょ 暴挙 名1: +ぼうきょう 望郷 名6: +ぼうぎゃく 暴虐 名1: +ぼうぎょ 防御 名6: +ぼうくう 防空 名1: +ぼうけい 傍系 名1: +ぼうけん 冒険 名6: +ぼうげん 暴言 名1: +ぼうこう 暴行 名6: +ぼうご 防護 名6: +ぼうさい 防災 名1: +ぼうし 防止 名6: +ぼうし 帽子 名1: +ぼうし 某氏 名1: +ぼうしょう 傍証 代4: +ぼうしょく 暴食 名6: +ぼうじゅ 傍受 名6: +ぼうじょう 棒状 名1: +ぼうすい 防水 名1: +ぼうず 坊主 代1: +ぼうぜん 呆然 形動2: +ぼうそう 暴走 名6: +ぼうそう 房総 地名: +ぼうだい 膨大 代5:サ変: +ぼうだち 棒立ち 名1: +ぼうちゅうざい 防虫剤 名1: +ぼうちょう 傍聴 名6: +ぼうちょう 膨張 名6: +ぼうとう 冒頭 名1: +ぼうとう 暴騰 名6: +ぼうどう 暴動 名1: +ぼうねんかい 忘年会 名1: +ぼうのつ 坊津 地名: +ぼうはつ 暴発 名6: +ぼうはてい 防波堤 名1: +ぼうび 防備 名6: +ぼうふう 暴風 名1: +ぼうふう 防風 名1: +ぼうふうう 暴風雨 名1: +ぼうへき 防壁 名1: +ぼうめい 亡命 名6: +ぼうや 坊や 名1: +ぼうよう 芒洋 形動2: +ぼうらく 暴落 名6: +ぼうりょく 暴力 名1: +ぼうる ボウル 名1: +ぼうれい 亡霊 名1: +ぼうろん 暴論 名1: +ぼか ぼか サ五7: +ぼか 暈 サ五7: +ぼかん 母艦 名1: +ぼき 簿記 名1: +ぼきん 募金 名6: +ぼく 僕 代1: +ぼく 木 代1: +ぼく 卜 代1: +ぼく 墨 単漢: +ぼく 撲 単漢: +ぼく 朴 単漢: +ぼく 牧 単漢: +ぼく 睦 単漢: +ぼく 穆 単漢: +ぼくさつ 撲殺 名6: +ぼくし 牧師 代2: +ぼくしんぐ ボクシング 代3: +ぼくじゅう 墨汁 名1: +ぼくじょう 牧場 名1: +ぼくそう 牧草 名1: +ぼくちく 牧畜 名1: +ぼくとう 木刀 名1: +ぼけ 惚け 一段3: +ぼけつ 墓穴 名1: +ぼこう 母校 名1: +ぼこう 母港 名1: +ぼこく 母国 名1: +ぼさつ 菩薩 名1: +ぼし 母子 名1: +ぼしゅう 募集 名6: +ぼしゅうだん 母集団 名1: +ぼす ボス 名1: +ぼすとん ボストン 地名: +ぼせい 母性 名1: +ぼせん 母船 名1: +ぼたい 母体 名1: +ぼたん ボタン 名1: +ぼたん 牡丹 名1: +ぼたん 釦 名1: +ぼち 墓地 名1: +ぼちぼち ぼちぼち 副8: +ぼっ 没 サ変:サ五1: +ぼっくす ボックス 名1: +ぼっしゅう 没収 名6: +ぼっちゃん 坊っちゃん 名2: +ぼっとう 没頭 名6: +ぼっぱつ 勃発 名6: +ぼつ 没 代1: +ぼつ 勃 単漢: +ぼつにゅう 没入 名6: +ぼつぼつ ぼつぼつ 副8: +ぼつらく 没落 名6: +ぼでぃ ボディ 名1: +ぼでぃー ボディー 名1: +ぼとむ ボトム 名1: +ぼとる ボトル 名1: +ぼにゅう 母乳 名1: +ぼひ 墓碑 名1: +ぼや ぼや 代1: +ぼや ぼや カ五7: +ぼら 鯔 代1: +ぼら 鰡 代1: +ぼらんてぃあ ボランティア 名1: +ぼりゅーむ ボリューム 名1: +ぼると ボルト 助数2: +ぼん 本 接尾1: +ぼん 本 助数2: +ぼん 凡 代1: +ぼん 盆 接尾1: +ぼん 梵 代1: +ぼんおどり 盆踊り 代1: +ぼんさい 凡才 名1: +ぼんさい 盆栽 名1: +ぼんじん 凡人 名1: +ぼんぞく 凡俗 名8: +ぼんち 盆地 名1: +ぼんど ボンド 名1: +ぼんのう 煩悩 名1: +ぼんやり ぼんやり 副3: +ぼんよう 凡庸 代5: +ぽ 歩 助数: +ぽーず ポーズ 名1: +ぽーたぶる ポータブル 名8: +ぽーと ポート 名1: +ぽーる ポール 名1: +ぽいんた ポインタ 名1: +ぽいんたー ポインター 代1: +ぽいんてぃんぐ ポインティング 代4: +ぽいんと ポイント 名6:助数2: +ぽう 包 単漢: +ぽけっと ポケット 名1: +ぽじしょん ポジション 名1: +ぽすたー ポスター 名1: +ぽすと ポスト 名6: +ぽっと ポット 名1: +ぽっぷ ポップ 名1: +ぽっぷす ポップス 名1: +ぽてと ポテト 名1: +ぽぴゅらー ポピュラー 名8: +ぽり ポリ 名1: +ぽりしー ポリシー 名1: +ぽん 本 助数2: +ぽんど ポンド 助数2: +ま 巻 カ五7: +ま 蒔 カ五7: +ま 撒 カ五7: +ま 増 サ五7: +ま 待 タ五8: +ま 舞 ワ五7: +ま 間 代1: +ま 真 代1: +ま 魔 接尾1: +ま 摩 単漢: +ま 磨 単漢: +ま 麻 単漢: +まーかー マーカー 名1: +まーく マーク 名6: +まーけっと マーケット 名1: +まーけてぃんぐ マーケティング 名1: +まーじ マージ 名6: +まーじゃん マージャン 代4: +まーじん マージン 名1: +まーらー マーラー 名1: +まあ まあ 感動: +まあい 間合い 代1: +まあたらし 真新し 形2: +まい まい ラ五3: +まい 参 ラ五8: +まい 舞 代1: +まい 枚 助数2: +まい 米 代1: +まい マイ 名1: +まい 埋 単漢: +まい 妹 単漢: +まい 昧 単漢: +まい 毎 単漢: +まいあさ 毎朝 名1: +まいかー マイカー 名1: +まいかい 毎回 名1: +まいき 毎期 名1: +まいきょ 枚挙 名6: +まいく マイク 名1: +まいくろ マイクロ 名1: +まいこ 舞い込 マ五7: +まいこん マイコン 名1: +まいご 迷子 名1: +まいさか 舞阪 地名: +まいしゅう 毎週 代6: +まいしん 邁進 名6: +まいじ 毎時 代6: +まいすう 枚数 名1: +まいせつ 埋設 名6: +まいそう 埋葬 名6: +まいぞう 埋蔵 名6: +まいつき 毎月 代6: +まいづる 舞鶴 地名: +まいとし 毎年 代6: +まいど 毎度 代6: +まいなー マイナー 代5: +まいなす マイナス 名1: +まいなす − 単漢: +まいにち 毎日 名11: +まいねん 毎年 代6: +まいはら 米原 地名: +まいばら 米原 苗字: +まいばら 米原 地名: +まいばん 毎晩 代6: +まいぺーす マイペース 名1: +まいほーむ マイホーム 名1: +まいぼつ 埋没 名6: +まいまい 毎々 代6: +まいよ 毎夜 代6: +まいる マイル 代1:助数2: +まいる 哩 単漢: +まうえ 真上 代1: +まうす マウス 名1: +まうんてん マウンテン 名1: +まうんと マウント 名6: +まえ 前 代1: +まえ 前 接尾1: +まえあし 前足 名1: +まえうり 前売 名6: +まえおき 前置き 代4: +まえかわ 前川 苗字: +まえがき 前書き 代4: +まえがし 前貸し 代4: +まえがり 前借り 代4: +まえきん 前金 名1: +まえさわ 前沢 地名: +まえざわ 前沢 苗字: +まえじま 前島 苗字: +まえじま 前島 地名: +まえだ 前田 苗字: +まえつえ 前津江 地名: +まえの 前野 苗字: +まえはら 前原 苗字: +まえば 前歯 名1: +まえばし 前橋 地名: +まえばらい 前払い 代4: +まえばる 前原 地名: +まえぶれ 前触れ 代1: +まえまえ 前々 代6: +まえむき 前向き 名8: +まえもって 前もって 副1: +まえやま 前山 苗字: +まか 任 サ五1: +まか 負か サ五1: +まかせ まかせ 一段3: +まかせ 任せ 一段4: +まかな 賄 ワ五7: +まかべ 真壁 苗字: +まかべ 真壁 地名: +まが 曲が ラ五8: +まが 紛 ワ五3: +まがお 真顔 代1: +まがじん マガジン 名1: +まがり 間借り 代4: +まがりかど 曲り角 名1: +まき 薪 代1: +まき 巻 代1: +まき 牧 代1: +まき 槙 代1: +まき 真紀 名前: +まきあげ 巻き上げ 一段3: +まきおか 牧丘 地名: +まきがみ 巻紙 代1: +まきこ 巻き込 マ五7: +まきじゃく 巻尺 代1: +まきぞの 牧園 地名: +まきた 牧田 苗字: +まきつ 巻き付 カ五7: +まきの 牧野 苗字: +まきの マキノ 地名: +まきば 牧場 名1: +まきもの 巻物 名1: +まぎら 紛ら サ五5: +まぎらわし 紛らわし 形2: +まぎれ 紛れ 一段1: +まぎれこ 紛れ込 マ五7: +まぎわ 間際 代1: +まく 幕 代1: +まく 幕 助数: +まく 膜 代1: +まくあけ 幕開け 代4: +まくぎれ 幕切れ 名1: +まくせる マクセル 企業: +まくどなるど マクドナルド 企業: +まくはり 幕張 地名: +まくべつ 幕別 地名: +まくら 枕 代1: +まくらざき 枕崎 地名: +まくろ マクロ 名8: +まぐろ 鮪 代1: +まぐろうひる マグロウヒル 企業: +まけ 負け 接尾1:一段2: +まけこ 負け越 サ五7: +まげ 曲げ 一段4: +まこと 誠 代1:名前: +まこと 真 名前: +まこと 信 名前: +まご 孫 名1: +まごころ 真心 代1: +まごまご まごまご 副4: +まさ 勝 ラ五7: +まさ 優 ラ五7: +まさ 雅 単漢: +まさ 昌 単漢: +まさ 政 単漢: +まさ 正 単漢: +まさ 柾 単漢: +まさあき 政昭 名前: +まさあき 正昭 名前: +まさあき 正明 名前: +まさいち 政一 名前: +まさお 雅夫 名前: +まさお 雅雄 名前: +まさお 昌男 名前: +まさお 政男 名前: +まさお 政夫 名前: +まさお 政雄 名前: +まさお 正男 名前: +まさお 正夫 名前: +まさお 正雄 名前: +まさか まさか 代6: +まさかず 正一 名前: +まさかず 正和 名前: +まさかつ 政勝 名前: +まさかつ 正勝 苗字: +まさき 正紀 名前: +まさき 正樹 名前: +まさき 正木 苗字: +まさき 松前 地名: +まさきち 政吉 名前: +まさこ 昌子 名前: +まさこ 雅子 名前: +まさこ 政子 名前: +まさこ 正子 名前: +まさし 雅史 名前: +まさし 政志 名前: +まさし 正 名前: +まさし 正志 名前: +まさしく 正しく 副1: +まさじ 正治 名前: +まさたか 正孝 名前: +まさちゅーせっつ マサチューセッツ 地名: +まさつ 摩擦 名6: +まさと 雅人 名前: +まさと 真人 名前: +まさと 正人 名前: +まさとし 雅俊 名前: +まさとし 雅敏 名前: +まさとし 政利 名前: +まさとし 正俊 名前: +まさとし 正利 名前: +まさなお 正直 名前: +まさに まさに 副1: +まさに 正に 副1: +まさのぶ 雅信 名前: +まさのぶ 昌信 名前: +まさのり 正則 名前: +まさのり 正徳 名前: +まさはる 雅春 名前: +まさはる 正治 名前: +まさはる 正春 名前: +まさはる 政春 名前: +まさひこ 雅彦 名前: +まさひこ 昌彦 名前: +まさひこ 正彦 名前: +まさひろ 雅博 名前: +まさひろ 昌宏 名前: +まさひろ 昌弘 名前: +まさひろ 正広 名前: +まさひろ 正弘 名前: +まさふみ 正文 名前: +まさみ 政美 名前: +まさみ 正美 名前: +まさみ 雅美 名前: +まさみち 正道 名前: +まさみつ 正光 名前: +まさめ 正目 名1: +まさや 昌也 名前: +まさゆき 雅之 名前: +まさゆき 昌幸 名前: +まさゆき 政幸 名前: +まさゆき 政行 名前: +まさゆき 正幸 名前: +まさゆき 正行 名前: +まさゆめ 正夢 代1: +まさよし 政義 名前: +まさよし 正義 名前: +まさる 勝 名前: +まさる 優 名前: +まざ 交ざ ラ五3: +まざ 混ざ ラ五3: +まざまざ まざまざ 副2: +ましき 益城 地名: +ましけ 増毛 地名: +ましこ 益子 苗字: +ましこ 益子 地名: +ました 益田 地名: +ました 真下 代1: +まして まして 副1: +ましょうめん 真正面 名1: +ましん マシン 名1: +まじ 交じ ラ五3: +まじ 混じ ラ五3: +まじえ 交え 一段1: +まじっく マジック 名1: +まじま 間島 苗字: +まじめ 真面目 代5: +まじゅつ 魔術 名1: +まじょ 魔女 名1: +まじわ 交わ ラ五7: +ます 鱒 代1: +ます 升 代1: +ます 桝 代1: +ます 舛 単漢: +ますい 麻酔 名1: +ますい 増井 苗字: +ますお 増尾 苗字: +ますお 増尾 地名: +ますく マスク 名6: +ますこ 益子 名前: +ますこ 増子 苗字: +ますこみ マスコミ 名1: +ますた マスタ 代1: +ますたー マスター 名6: +ますだ 増田 苗字: +ますだ 益田 苗字: +ますだ 益田 地名: +ますほ 増穂 地名: +ますます ますます 副7: +ますます 益々 副7: +ますみ 真澄 名前: +ますやま 増山 苗字: +まず まず 副1:形2: +まず 先ず 副1: +まずし 貧し 形5: +まずまず まずまず 代6: +まぜ 混ぜ 一段1: +まぜ 馬瀬 地名: +まぜあわせ 混ぜ合わせ 一段3: +また また 代6:ガ五5: +また 股 代1: +また 跨 ガ五5: +また 又 接続: +また 亦 接続: +また 俣 単漢: +またが 跨 ラ五3: +またた 瞬 カ五3: +またま 真玉 地名: +またまた またまた 副1: +まだ まだ 代6: +まだ 未だ 代6: +まだしも まだしも 副1: +まだまだ まだまだ 副1: +まだむ マダム 代1: +まだら 斑 代1: +まだらお 斑尾 地名: +まち 町 接尾4: +まち 街 代1: +まちあいしつ 待合室 代1: +まちあわ 待ち合わ サ五7: +まちかど 街角 代1: +まちが 間違 ワ五4: +まちじゅう 町中 名1: +まちだ 町田 苗字: +まちだ 町田 地名: +まちどおし 待ち遠し 形5: +まちなか 町中 名1: +まちなみ 町並み 名1: +まちのぞ 待ち望 マ五1: +まちまち まちまち 代5: +まぢか 間近 代5:形1: +まぢか まぢか 代5:形1: +まっか 真っ赤 代5: +まっかり 真狩 地名: +まっき 末期 名4: +まっきんとっしゅ マッキントッシュ 代1: +まっくす マックス 企業: +まっくろ 真っ黒 代5:形1: +まっさいちゅう 真最中 代1: +まっさお 真っ青 代5: +まっさき 真っ先 代1: +まっさつ 抹殺 名6: +まっしょう 抹消 名6: +まっしょう 末梢 名1: +まっしろ 真っ白 代5:形1: +まっすぐ まっすぐ 代5: +まっすぐ 真っ直 代5: +まっせ 末世 名1: +まっせき 末席 名1: +まったく 全く 代6: +まったん 末端 名1: +まっち マッチ 代4: +まっちゃ 抹茶 代1: +まっちんぐ マッチング 代4: +まっとう 全う サ変: +まっぴつ 末筆 名1: +まっぴら まっぴら 形動1: +まっぴるま 真っ昼間 代1: +まっぴんぐ マッピング 名6: +まっぷ マップ 名1: +まっぷたつ 真っ二つ 代1: +まつ 祭 ラ五8: +まつ 奉 ラ五1: +まつ 松 代1: +まつ 末 接尾1: +まつ 抹 単漢: +まつ 沫 単漢: +まつい 松井 苗字: +まついだ 松井田 地名: +まつうら 松浦 苗字: +まつうら 松浦 地名: +まつえ 松江 苗字: +まつえ 松江 地名: +まつえい 末裔 名1: +まつお 松尾 苗字: +まつお 松尾 地名: +まつお 松夫 苗字: +まつおか 松岡 苗字: +まつかた 松方 苗字: +まつかわ 松川 苗字: +まつかわ 松川 地名: +まつき 松木 苗字: +まつげ まつげ 代1: +まつご 末期 名1: +まつさか 松坂 苗字: +まつさか 松阪 地名: +まつさき 松崎 苗字: +まつざか 松坂 苗字: +まつざき 松崎 苗字: +まつざわ 松沢 苗字: +まつしげ 松茂 地名: +まつした 松下 名1:苗字: +まつしま 松島 苗字: +まつしま 松島 地名: +まつしろ 松代 苗字: +まつじつ 末日 名1: +まつだ 松田 苗字: +まつだ マツダ 企業: +まつだい 末代 名1: +まつだい 松代 地名: +まつとう 松任 地名: +まつとうや 松任谷 苗字: +まつど 松戸 苗字: +まつど 松戸 地名: +まつなが 松永 苗字: +まつの 松野 苗字: +まつのやま 松之山 地名: +まつば 松葉 苗字: +まつばせ 松橋 地名: +まつばづえ 松葉杖 代1: +まつばら 松原 苗字: +まつばら 松原 地名: +まつび 末尾 名1: +まつぶし 松伏 地名: +まつまえ 松前 苗字: +まつまえ 松前 地名: +まつまる 松丸 苗字: +まつむら 松村 苗字: +まつもと 松本 地名: +まつもと 松本 苗字: +まつもと 松元 地名: +まつもと 松元 苗字: +まつやま 松山 苗字: +まつやま 松山 地名: +まつり 祭 接尾1: +まつりごと 政 代1: +まつろ 末路 名1: +まつわ 纏わ ラ五3: +まで 迄 代1: +まと 纏 ワ五1: +まと 的 代1: +まとい 纏 代1: +まとば 的場 苗字: +まとま まとま ラ五7: +まとめ まとめ 一段3: +まとも まとも 形動4: +まとりっくす マトリックス 代1: +まど 窓 代1: +まど 惑 ワ五8: +まどがわ 窓側 名1: +まどぎわ 窓際 名1: +まどぐち 窓口 名1: +まどべ 窓辺 代1: +まどり 間取り 名1: +まどろ まどろ マ五7: +まどわ 惑わ サ五3: +まな 学 バ五8: +まなー マナー 名1: +まなこ 眼 代1: +まなざし 眼差し 代1: +まなつ 真夏 代1: +まなつる 真鶴 地名: +まなでし 愛弟子 代1: +まなぶ 学 名前: +まにあ マニア 名1: +まにあ 間に合 ワ五6: +まにあっく マニアック 名8: +まにゅある マニュアル 名4: +まにわ 真庭 地名: +まぬかれ 免れ 一段1: +まぬがれ 免れ 一段1: +まぬけ 間抜け 代5: +まね 招 カ五4: +まね 真似 一段3: +まねーじゃ マネージャ 名1: +まねーじゃー マネージャー 名1: +まねきん マネキン 名1: +まねじめんと マネジメント 名6: +まねじゃー マネジャー 名1: +まの 真野 苗字: +まのび 間延び 代4: +まばた 瞬 カ五1: +まばたき まばたき 代4: +まばたき 瞬き 代4: +まばら 疎ら 代5: +まひ 麻痺 名6: +まひる 真昼 代1: +まび 間引 カ五3: +まふゆ 真冬 代1: +まぶし まぶし 形5: +まぶた まぶた 代1: +まほう 魔法 名1: +まぼろし 幻 代1: +まま まま 代6: +まま 侭 代1: +まま ママ 代2: +まま 間々 副1: +ままはは 継母 代1: +まみず 真水 名1: +まみれ まみれ 一段1: +まむろがわ 真室川 地名: +まめ まめ 代5: +まめ 豆 名2: +まめつ 摩滅 名6: +まめつぶ 豆粒 代1: +まも 守 ラ五8: +まもう 摩耗 名6: +まもる 守 名前: +まもる 衛 名前: +まや 摩耶 地名: +まやく 麻薬 名1: +まゆ 眉 代1: +まゆ 繭 代1: +まゆげ 眉毛 名1: +まゆずみ 黛 苗字:代1: +まゆみ 真弓 名前: +まゆみ 真由美 名前: +まよ 迷 ワ五8: +まよなか 真夜中 代1: +まらそん マラソン 名6: +まり まり 代1: +まり 鞠 代1: +まり 真理 名前: +まり 麻理 名前: +まりこ 真理子 名前: +まりこ 麻里子 名前: +まりょく 魔力 代1: +まる 丸 代1:形11: +まる ○ 代1: +まる ◎ 代1: +まる ● 代1: +まるい 丸井 苗字: +まるいけ 丸池 地名: +まるお 丸尾 苗字: +まるお 丸尾 地名: +まるおか 丸岡 苗字: +まるがめ 丸亀 地名: +まるく マルク 助数2: +まるこ 丸子 地名: +まるごと まるごと 副1: +まるせっぷ 丸瀬布 地名: +まるぜん 丸善 企業: +まるた 丸太 名1: +まるたに 丸谷 苗字: +まるち マルチ 名1: +まるっきり まるっきり 代6: +まるで まるで 副1: +まるはだか 丸裸 代5: +まるまる まるまる 代6: +まるまる 丸々 代6: +まるめ 丸め 一段1: +まるめこ 丸め込 マ五7: +まるもり 丸森 苗字: +まるやま 円山 苗字: +まるやま 円山 地名: +まるやま 丸山 苗字: +まるやま 丸山 地名: +まるゆう マル優 名1: +まれ まれ 形動1: +まれ 希 形動1: +まれ 稀 形動1: +まれ 稀れ 形動1: +まろ 麿 代1: +まろやか 円やか 形動4: +まわ 回 サ五8:ラ五8: +まわ 廻 サ五8:ラ五8: +まわり 周り 接尾1: +まわりこ 回り込 マ五7: +まわりみち 回り道 代4: +まん 万 数詞: +まん マン 接尾1: +まん 満 接頭1:代1: +まん 饅 代1: +まん 鰻 単漢: +まん 慢 単漢: +まん 漫 単漢: +まん 蔓 単漢: +まん 瞞 単漢: +まん 萬 単漢: +まんいち 万一 代6: +まんいん 満員 名1: +まんえつ 満悦 名7: +まんえん 蔓延 名6: +まんかい 満開 名6: +まんが 漫画 名4: +まんがん 満貫 名1: +まんき 満期 名1: +まんきつ 満喫 名6: +まんげきょう 万華鏡 名1: +まんげつ 満月 名1: +まんさい 満載 名6: +まんざい 漫才 名1: +まんしつ 満室 代1: +まんしゃ 満車 名1: +まんしゅう 満州 地名: +まんしょん マンション 名1: +まんしん 満身 名1: +まんじ 卍 代1: +まんじゅう 饅頭 名2: +まんじゅう まんじゅう 名2: +まんじょう 満場 名1: +まんすい 満水 名6: +まんせい 慢性 名4: +まんぜん 漫然 形動2: +まんぞく 満足 名7:形動8: +まんちょう 満潮 名1: +まんてん 満点 名1: +まんなか 真ん中 名1: +まんねんひつ 万年筆 名1: +まんのう 満濃 地名: +まんば 万場 地名: +まんめん 満面 名1: +まんゆう 漫遊 名6: +まんよう 万葉 代1: +まんりょう 満了 名6: +み 見 一段3: +み 診 一段1: +み 看 一段1: +み 観 一段1: +み 満 タ五1: +み 実 代1: +み 身 代1: +み 味 接尾1: +み 未 接頭1: +み 魅 サ変: +み 巳 代1: +み 箕 代1: +み 御 代1: +み 三 単漢: +み 深 単漢: +み 美 単漢: +みーてぃんぐ ミーティング 名6: +みーはー ミーハー 代5: +みあ 見合 ワ五4: +みあげ 見上げ 一段1: +みあさ 美麻 地名: +みあた 見当た ラ五1: +みあわせ 見合わせ 一段1: +みい 見入 ラ五1: +みい 三井 地名: +みいけ 三池 地名: +みいだ 見い出 サ五5: +みいらく 三井楽 地名: +みうけ 見受け 一段1: +みうごき 身動き 代4: +みうしな 見失 ワ五5: +みうち 身内 名1: +みうら 三浦 苗字: +みうら 三浦 地名: +みえ 見え 一段1: +みえ 見栄 名1: +みえ 三重 地名: +みえかくれ 見えかくれ 代4: +みえこ 三枝子 名前: +みえこ 美恵子 名前: +みえこ 美枝子 名前: +みおく 見送 ラ五8: +みおと 見落と サ五8: +みおとり 見劣り 代4: +みおぼえ 見覚え 名1: +みおも 身重 名8: +みか 美香 名前: +みかい 未開 名8: +みかいけつ 未解決 名8: +みかえ 見返 サ五3: +みかえり 見返り 名1: +みかぎ 見限 ラ五2: +みかく 味覚 名1: +みかくにん 未確認 名8: +みかけ 見かけ 一段3: +みかさ 三笠 苗字: +みかさ 三笠 地名: +みかた 味方 代4: +みかた 見方 名1: +みかた 三方 地名: +みかた 美方 地名: +みかつき 三日月 地名: +みかづき 三日月 代1: +みかみ 三上 苗字: +みかめ 三瓶 地名: +みかも 三加茂 地名: +みかも 美甘 地名: +みかわ 三河 地名: +みかわ 三川 地名: +みかわ 美川 苗字: +みかわ 三加和 地名: +みかん 蜜柑 名1: +みかん 未刊 名1: +みかん 未完 名1: +みかん みかん 名1: +みかんせい 未完成 代5: +みが 磨 カ五7: +みがって 身勝手 名8: +みがまえ 身構え 一段3: +みがら 身柄 名1: +みがる 身軽 代5: +みがわり 身代り 名1: +みき 幹 代1: +みき 見切 ラ五3: +みき 三木 苗字: +みき 三木 地名: +みき 美樹 名前: +みきお 幹男 名前: +みきお 幹夫 名前: +みきお 幹雄 名前: +みきこ 美貴子 名前: +みきこ 美樹子 名前: +みぎ 右 代1: +みぎ 右 接頭1: +みぎあし 右足 名1: +みぎうえ 右上 代1: +みぎうで 右腕 名1: +みぎがわ 右側 名1: +みぎした 右下 代1: +みぎて 右手 名1: +みぎはし 右端 代1: +みぎめ 右目 名1: +みぎわ 汀 代1: +みくだ 見下 サ五7: +みくに 三国 苗字: +みくに 三国 地名: +みくも 三雲 苗字: +みくも 三雲 地名: +みくらしま 御蔵島 地名: +みくらべ 見比べ 一段3: +みくろ ミクロ 名1: +みぐるし 見苦し 形9: +みけつ 未決 名1: +みけん 眉間 代1: +みこ 見越 サ五5: +みこ 見込 マ五7: +みこし 御輿 名2: +みこと 尊 代1: +みことのり 詔 代1: +みことのり 勅 代1: +みこん 未婚 名1: +みごと 見事 名9: +みさい 未済 名1: +みさいる ミサイル 名1: +みさお 操 代1: +みさか 御坂 地名: +みさかい 見境 名1: +みさき 三崎 苗字: +みさき 三崎 地名: +みさき 岬 名1: +みさくぼ 水窪 地名: +みさげ 見下げ 一段1: +みささ 三朝 地名: +みさだめ 見定め 一段1: +みさと 三郷 地名: +みさと 美郷 地名: +みさと 美里 地名: +みさと 美里 名前: +みさと 箕郷 地名: +みさわ 三沢 苗字: +みさわ 三沢 地名: +みし 見知 ラ五3: +みしがん ミシガン 地名: +みしま 三島 苗字: +みしま 三島 地名: +みしゅう 未収 名1: +みしょう 御荘 地名: +みしん ミシン 名1: +みじか 短 形6: +みじたく 身支度 代4: +みじめ 惨め 形動4: +みじゅく 未熟 名8: +みす ミス 名1: +みすい 未遂 名1: +みすぎ 美杉 地名: +みすご 見過ご サ五7: +みすて 見捨て 一段1: +みすみ 三角 地名: +みすみ 三隅 地名: +みず 水 名2: +みず 瑞 単漢: +みずあらい 水洗い 代4: +みずいらず 水入らず 名1: +みずいろ 水色 名1: +みずうみ 湖 代1: +みずかさ 水かさ 名1: +みずかみ 水上 苗字: +みずから 自ら 代6: +みずぎ 水着 名1: +みずぎわ 水際 名1: +みずけ 水気 名1: +みずこし 水越 苗字: +みずさわ 水沢 苗字: +みずさわ 水沢 地名: +みずしま 水島 苗字: +みずしま 水島 地名: +みずた 水田 苗字: +みずたに 水谷 苗字: +みずたま 水玉 名1: +みずなみ 瑞浪 地名: +みずの 水野 苗字: +みずひき 水引 名1: +みずびたし 水浸し 名1: +みずぶそく 水不足 名1: +みずほ 瑞穂 地名: +みずほ 瑞穂 名前: +みずま 三瀦 地名: +みずまき 水巻 地名: +みずまし 水増し 代4: +みせ 店 名2: +みせ 見せ 一段2: +みせいねん 未成年 名1: +みせさき 店先 名1: +みせす ミセス 名1: +みせばん 店番 名2: +みせもの 見せ物 名1: +みぜん 未然 名1: +みそ 味噌 名2: +みそか 晦日 名1: +みそこな 見損な ワ五1: +みその 御園 苗字: +みそら 身空 代1: +みぞ 溝 代1: +みぞ 渠 単漢: +みぞぐち 溝口 苗字: +みぞべ 溝辺 地名: +みた 三田 苗字: +みた 三田 地名: +みた 満た サ五7: +みたか 三鷹 地名: +みたがわ 三田川 地名: +みたけ 御嵩 地名: +みたけ 三岳 地名: +みたけ 身丈 名1: +みたて 見立て 一段4: +みたに 三谷 苗字: +みたま 三珠 地名: +みだ 乱 サ五8: +みだし 見出し 名1: +みだしなみ 身だしなみ 代1: +みだら 淫ら 形動1: +みだり みだり 形動1: +みだれ 乱れ 一段3: +みち 道 名1: +みち 未知 名1: +みち 満ち 一段1: +みち 路 単漢: +みちお 道男 名前: +みちお 道夫 名前: +みちお 道雄 名前: +みちがえ 見違え 一段1: +みちこ 美智子 名前: +みちこ 道子 名前: +みちしお 満ち潮 名1: +みちじゅん 道順 名1: +みちすじ 道筋 名1: +みちづれ 道連れ 代4: +みちのく みちのく 名1: +みちのり 道のり 名1: +みちばた 道端 名1: +みちび 導 カ五8: +みちびきだ 導き出 サ五7: +みちゃく 未着 名1: +みちよ 美智代 名前: +みぢか 身近 代5: +みっか 三日 代6: +みっかい 密会 名6: +みっかび 三ヶ日 地名: +みっきょう 密教 名1: +みっくす ミックス 名6: +みっこう 密航 名6: +みっこく 密告 名6: +みっしつ 密室 名1: +みっしゅう 密集 名6: +みっせつ 密接 名8:サ変: +みっそう 密葬 名6: +みっちゃく 密着 名6: +みっつ 三つ 代6: +みっともな みっともな 形2: +みっぷう 密封 名6: +みっぺい 密閉 名6: +みつ 蜜 代1: +みつ 密 代5: +みつ 御津 地名: +みつ 貢 ガ五7: +みつ 三 数詞: +みつ 光 単漢: +みつあき 光昭 名前: +みつあき 光明 名前: +みつい 三井 苗字: +みついし 三石 地名: +みつえ 御杖 地名: +みつえ 光枝 名前: +みつお 光男 名前: +みつお 光夫 名前: +みつお 光雄 名前: +みつお 三男 名前: +みつお 三夫 名前: +みつお 三雄 名前: +みつお 満夫 名前: +みつお 満雄 名前: +みつか 見つか ラ五3: +みつかいどう 水海道 地名: +みつぎ 御調 地名: +みつくろ 見繕 ワ五5: +みつぐ 貢 名前: +みつけ 見つけ 一段1: +みつけ 見附 地名: +みつけだ 見つけ出 サ五5: +みつこ 美津子 名前: +みつこ 光子 名前: +みつこし 三越 企業: +みつしま 美津島 地名: +みつせ 三瀬 地名: +みつぞう 密造 名6: +みつだん 密談 名6: +みつど 密度 名1: +みつなり 光成 名前: +みつにゅうこく 密入国 代4: +みつのぶ 光信 名前: +みつはし 三橋 苗字: +みつはし 三橋 地名: +みつばい 密売 名6: +みつばち 蜜蜂 名1: +みつひこ 光彦 名前: +みつびし 三菱 企業: +みつまさ 光正 名前: +みつめ 見つめ 一段1: +みつも 見積も ラ五8: +みつもり 見積り 代4: +みつもり 三森 苗字: +みつもりしょ 見積書 名2: +みつゆ 密輸 名6: +みつよ 光代 名前: +みつよし 光義 名前: +みつりょう 密漁 名6: +みつりょう 密猟 名6: +みつりん 密林 名1: +みつる 充 名前: +みつる 満 名前: +みてい 未定 名8: +みていぎ 未定義 名1: +みと 看取 ラ五7: +みと 水戸 地名: +みと 水戸 苗字: +みと 美都 地名: +みと 御津 地名: +みとう 未踏 名1: +みとう 美東 地名: +みとどけ 見届け 一段1: +みとみ 三富 苗字: +みとみ 三富 地名: +みとめ 認め 一段4: +みとや 三刀屋 地名: +みとよ 三豊 地名: +みとりず 見取図 名1: +みどうすじ 御堂筋 地名: +みどころ 見所 名1: +みどり 緑 名1:名前: +みどり 碧 名前: +みどり 美土里 名前: +みどり 美土里 地名: +みどり 翠 名前: +みどり みどり 名前: +みどりかわ 緑川 苗字: +みな みな 代6: +みな 皆 代6: +みな 見な サ五7: +みなお 見直 サ五7: +みなかみ 水上 苗字: +みなかみ 水上 地名: +みながわ 皆川 苗字: +みなくち 水口 地名: +みなこ 美奈子 名前: +みなさま 皆様 代1: +みなさん 皆さん 代1: +みなと 港 代1: +みなと 湊 単漢: +みなの 皆野 地名: +みなべ 南部 地名: +みなべがわ 南部川 地名: +みなまた 水俣 地名: +みなみ 南 苗字:接頭2: +みなみ 美並 地名: +みなみあいき 南相木 地名: +みなみあいづ 南会津 地名: +みなみあきた 南秋田 地名: +みなみあしがら 南足柄 地名: +みなみあずみ 南安曇 地名: +みなみあまべ 南海部 地名: +みなみありま 南有馬 地名: +みなみいず 南伊豆 地名: +みなみうおぬま 南魚沼 地名: +みなみうわ 南宇和 地名: +みなみおぐに 南小国 地名: +みなみかた 南方 地名: +みなみかやべ 南茅部 地名: +みなみかわち 南河内 地名: +みなみかんばら 南蒲原 地名: +みなみがわ 南側 名1: +みなみくしやま 南串山 地名: +みなみこま 南巨摩 地名: +みなみさいたま 南埼玉 地名: +みなみさく 南佐久 地名: +みなみしたら 南設楽 地名: +みなみしなの 南信濃 地名: +みなみたかぎ 南高来 地名: +みなみたね 南種子 地名: +みなみたま 南多摩 地名: +みなみだいとう 南大東 地名: +みなみちた 南知多 地名: +みなみつがる 南津軽 地名: +みなみつる 南都留 地名: +みなみなか 南那珂 地名: +みなみなす 南那須 地名: +みなみの 南野 苗字: +みなみふらの 南富良野 地名: +みなみまき 南牧 地名: +みなみまつうら 南松浦 地名: +みなみまわり 南回り 名1: +みなみみのわ 南箕輪 地名: +みなみむろ 南牟婁 地名: +みなみやましろ 南山城 地名: +みなも 水面 代1: +みなもと 源 代1: +みなら 見習 ワ五7: +みなれ 見なれ 一段1: +みに ミニ 名1: +みにい 見に行 カ五7: +みにいっ 見に行っ カ五音便: +みにく 見にく 形2: +みにく 醜 形3: +みにこん ミニコン 代1: +みにまむ ミニマム 代5: +みぬ 見抜 カ五5: +みね 峰 代1: +みね 嶺 代1: +みね 美祢 苗字: +みね 三根 地名: +みね 美禰 地名: +みねお 峰雄 名前: +みねぎし 峰岸 苗字: +みねはま 峰浜 地名: +みねやま 峰山 地名: +みの 実 ラ五7: +みの 稔 ラ五7: +みの 蓑 代1: +みの 美濃 苗字: +みの 美濃 地名: +みの 三野 地名: +みのう 未納 名1: +みのう 美嚢 地名: +みのお 箕面 地名: +みのかも 美濃加茂 地名: +みのが 見逃 サ五8: +みのぶ 身延 地名: +みのまわり 身の回り 代1: +みのり 美野里 地名: +みのる 実 名前: +みのる 稔 名前: +みのわ 箕輪 苗字: +みのわ 箕輪 地名: +みは 見張 ラ五7: +みはし 三橋 苗字: +みはな 見放 サ五7: +みはま 美浜 地名: +みはま 御浜 地名: +みはら 三原 苗字: +みはら 三原 地名: +みはら 美原 苗字: +みはらい 未払い 名1: +みはる 三春 地名: +みばえ 見栄え 名1: +みひつ 未必 代1: +みひら 見開 カ五7: +みふね 御船 地名: +みぶ 壬生 苗字: +みぶ 壬生 地名: +みぶり 身振り 名1: +みぶん 身分 名3: +みほ 美浦 地名: +みほ 美穂 名前: +みほ 美保 苗字: +みほこ 美穂子 名前: +みほのせき 美保関 地名: +みほん 見本 名1: +みぼうじん 未亡人 名1: +みま 見舞 ワ五5: +みま 三間 地名: +みま 美馬 地名: +みまい 見舞い 名5: +みまいきん 見舞金 名2: +みまさか 美作 地名: +みまた 三股 地名: +みまも 見守 ラ五7: +みまわ 見回 ラ五7:サ五7: +みまん 未満 名1:助数2: +みみ 耳 名2: +みみうち 耳打ち 代4: +みみざわり 耳障り 形動1: +みみず ミミズ 代1: +みみより 耳寄り 形動1: +みむ 見向 カ五3: +みむら 三村 苗字: +みめい 未明 名1: +みもと 身元 名1: +みゃく 脈 代1: +みゃくはく 脈拍 名1: +みゃくらく 脈絡 名1: +みや 宮 代1: +みやうち 宮内 苗字: +みやがわ 宮川 苗字: +みやき 三養基 地名: +みやぎ 宮城 苗字: +みやぎ 宮城 地名: +みやくぼ 宮窪 地名: +みやけ 三宅 苗字: +みやけ 三宅 地名: +みやげ 土産 名2: +みやこ 宮古 地名: +みやこ 京都 地名: +みやこ 美也子 名前: +みやこじ 都路 地名: +みやこじま 都島 地名: +みやこのじょう 都城 地名: +みやさか 宮坂 苗字: +みやざき 宮崎 苗字: +みやざき 宮崎 地名: +みやざわ 宮沢 苗字: +みやした 宮下 苗字: +みやしろ 宮代 苗字: +みやしろ 宮代 地名: +みやじま 宮島 苗字: +みやじま 宮島 地名: +みやた 宮田 苗字: +みやた 宮田 地名: +みやたけ 宮武 苗字: +みやづ 宮津 地名: +みやの 宮野 苗字: +みやのじょう 宮之城 地名: +みやはら 宮原 苗字: +みやはら 宮原 地名: +みやぶ 見破 ラ五7: +みやべ 宮部 苗字: +みやま 美山 苗字: +みやま 美山 地名: +みやま 海山 地名: +みやまえ 宮前 苗字: +みやまえ 宮前 地名: +みやもと 宮本 苗字: +みやもり 宮守 地名: +みやわき 宮脇 苗字: +みゅーじあむ ミュージアム 名1: +みゅーじかる ミュージカル 名1: +みゅーじしゃん ミュージシャン 名1: +みゅーじっく ミュージック 名1: +みゆき 美幸 名前: +みゆき 美雪 名前: +みゆき 美由紀 名前: +みゆき 深雪 名前: +みょう 妙 代5: +みょう 明 代1: +みょう 名 代1: +みょう 命 代1: +みょう 冥 単漢: +みょうあん 妙案 名1: +みょうがた 明方 地名: +みょうぎ 妙技 名1: +みょうぎ 妙義 地名: +みょうこう 妙高 地名: +みょうごにち 明後日 代6: +みょうざい 名西 地名: +みょうじ 名字 名1: +みょうじょう 明星 名1: +みょうだい 名代 名1: +みょうちょう 明朝 代6: +みょうどう 名東 地名: +みょうにち 明日 代6: +みょうねん 明年 代6: +みょうばん 明晩 代6: +みょうり 冥利 名1: +みよ 美代 苗字: +みよこ 美代子 名前: +みよし 三好 地名: +みよし 三好 名前: +みよし 三次 地名: +みよし 三芳 地名: +みよた 御代田 地名: +みより 身寄り 代1: +みらい 未来 名1: +みらさか 三良坂 地名: +みり ミリ 助数2: +みりめーとる 粍 単漢: +みりょう 魅了 名6: +みりょう 未了 名1: +みりょく 魅力 名4: +みるく ミルク 名1: +みれん 未練 名8: +みろく 弥勒 名1: +みわ 三輪 苗字: +みわ 三輪 地名: +みわ 三和 苗字: +みわ 三和 地名: +みわ 美和 地名: +みわ 美和 名前: +みわく 魅惑 名6: +みわけ 見分け 一段3: +みわこ 美和子 名前: +みわた 見渡 サ五7: +みん 民 接尾1: +みん 明 代1: +みん 眠 代1: +みん 閔 単漢: +みんえい 民営 名4: +みんか 民家 名1: +みんかん 民間 名1: +みんけん 民権 名1: +みんげい 民芸 名1: +みんしゃとう 民社党 名1: +みんしゅ 民主 名4: +みんしゅう 民衆 名1: +みんしゅく 民宿 名1: +みんじ 民事 名1: +みんせい 民政 名1: +みんせい 民生 名1: +みんぞく 民族 名1: +みんぞく 民俗 名1: +みんちょうたい 明朝体 名1: +みんと ミント 代1: +みんな みんな 代6: +みんな 皆 代6: +みんぽう 民法 名1: +みんぽう 民放 名1: +みんゆう 民有 名1: +みんよう 民謡 名1: +みんわ 民話 名1: +む 向 カ五4: +む 蒸 サ五7: +む 剥 カ五6: +む 無 代1:接頭5: +む 務 代1: +む 夢 代1: +む 霧 代1: +む 六 単漢: +む 武 単漢: +む 牟 単漢: +む 矛 単漢: +む 鵡 単漢: +むーど ムード 名1: +むい 無為 名8: +むいか 六日 代6: +むいかいち 六日市 地名: +むいみ 無意味 名8: +むえき 無益 名8: +むえん 無縁 名1: +むえん 無鉛 名1: +むか 向か ワ五8: +むかい 向井 苗字: +むかいしま 向島 地名: +むかいはら 向原 苗字: +むかいはら 向原 地名: +むかえ 迎え 一段4: +むかえいれ 迎え入れ 一段3: +むかし 昔 代6: +むかしばなし 昔話 名1: +むかわ 武川 苗字: +むかわ 武川 地名: +むかわ 鵡川 地名: +むかん 無冠 名1: +むが 無我 名1: +むがい 無害 代5: +むがく 無学 代5: +むき 無期 名1: +むき 無機 名1: +むきあ 向き合 ワ五7: +むきず 無傷 名8: +むきだ むき出 サ五7: +むきゅう 無休 名1: +むきゅう 無給 名1: +むきん 無菌 名1: +むぎ 麦 名1: +むぎ 牟岐 地名: +むぎ 武儀 地名: +むぎばたけ 麦畑 名1: +むぎわら 麦藁 名1: +むぎわら 麦ワラ 名1: +むく 無垢 名8: +むく 椋 単漢: +むくい 報い 一段3: +むくち 無口 名8: +むくろ 骸 代1: +むけ 向け 一段4: +むけい 無形 名1: +むけつ 無欠 名8: +むげ 無碍 代5: +むげい 無芸 代1: +むげがわ 武芸川 地名: +むげん 無限 名8: +むこ 婿 代1: +むこう 無効 名8: +むこう 向こう 名1: +むこう 向日 地名: +むこうじま 向島 地名: +むこがわ 武庫川 地名: +むこん 無根 名8: +むご 酷 形2: +むご 惨 形2: +むごたらし むごたらし 形2: +むごん 無言 名1: +むさし 武蔵 地名: +むさし 武蔵 名前: +むさしの 武蔵野 地名: +むさしむらやま 武蔵村山 地名: +むさん 無産 名1: +むざい 無罪 名1: +むざむざ むざむざ 副2: +むざん 無惨 名8: +むざん 無残 名8: +むし 無視 名6: +むし 虫 名1: +むし 蟲 名1: +むしあつ 蒸し暑 形2: +むしば 蝕 マ五7: +むしば 虫歯 名1: +むしゃ 武者 名1: +むしゅう 無臭 名1: +むしょう 無償 名1: +むしょうに むしょうに 副1: +むしょく 無職 名1: +むしろ むしろ 副1: +むしろ 筵 代1: +むしん 無心 名8:サ変: +むじ 無地 名1: +むじつ 無実 名8: +むじゃき 無邪気 名8: +むじゅん 矛盾 名6: +むじょう 無情 名8: +むじん 無人 名4: +むじん 無尽 名1: +むす 結 バ五8: +むすう 無数 名8: +むすこ 息子 代2: +むすびつ 結び付 カ五7: +むすびつけ 結びつけ 一段1: +むすめ 娘 代2: +むずかし 難し 形6: +むせ むせ 一段1: +むせい 無声 名1: +むせきにん 無責任 名8: +むせん 無線 名1: +むせん 無銭 名1: +むぜい 無税 名1: +むそう 夢想 名6: +むぞうさ 無造作 名8: +むた 牟田 苗字: +むだ 無駄 代5: +むだ ムダ 代5: +むだん 無断 名1: +むち 無知 名8: +むち 鞭 代1: +むちゃ むちゃ 代5: +むちゃ 無茶 代5: +むちゃくちゃ むちゃくちゃ 代5: +むちゃくちゃ 無茶苦茶 代5: +むちゅう 夢中 名8: +むちん 無賃 名1: +むっつ 六つ 代6: +むつ むつ 地名: +むつ 陸奥 地名: +むつ 睦 単漢: +むつう 無痛 名1: +むつうら 六浦 地名: +むつお 睦夫 名前: +むつかし 難し 形6: +むつざわ 睦沢 地名: +むつまじ 睦まじ 形3: +むつみ 睦美 名前: +むつみ むつみ 地名: +むてき 無敵 名8: +むでん 無電 名1: +むとう 武藤 苗字: +むどく 無毒 名8: +むなかた 宗像 苗字: +むなかた 宗像 地名: +むなさわぎ 胸騒ぎ 代4: +むなし 虚し 形5: +むなし 空し 形5: +むにえる ムニエル 名1: +むね 胸 代1: +むね 旨 代1: +むね 棟 代1:助数2: +むね 宗 単漢: +むねあげ 棟上げ 名1: +むねお 宗雄 名前: +むねん 無念 名8: +むのう 無能 名8: +むはい 無敗 名1: +むひ 無比 形動9: +むびょう 無病 名8: +むふう 無風 代5: +むほう 無法 名8: +むぼう 無謀 名8: +むみ 無味 名8: +むめい 無名 名1: +むめい 無銘 名1: +むやみ 無闇 形動1: +むゆうびょう 夢遊病 代1: +むよう 無用 名10: +むよく 無欲 名8: +むら 村 接尾4: +むら 蒸ら サ五7: +むら 邑 単漢: +むら 群 単漢: +むらい 村井 苗字: +むらおか 村岡 苗字: +むらかみ 村上 苗字: +むらかみ 村上 地名: +むらが 群が ラ五3: +むらき 村木 苗字: +むらこし 村越 苗字: +むらさき 紫 名1: +むらせ 村瀬 苗字: +むらた 村田 苗字: +むらまつ 村松 苗字: +むらまつ 村松 地名: +むらやま 村山 苗字: +むらやま 村山 地名: +むり 無理 名7:形動8: +むりやり 無理矢理 副9: +むりょう 無料 名1: +むりょく 無力 名8: +むるい 無類 名8: +むれ 群 代1: +むれ 群れ 一段3: +むれ 蒸れ 一段1: +むれ 牟礼 地名: +むれい 牟礼 地名: +むろ 室 代1: +むろい 室井 苗字: +むろう 室生 地名: +むろた 室田 苗字: +むろと 室戸 地名: +むろね 室根 地名: +むろまち 室町 名1: +むろまち 室町 地名: +むろらん 室蘭 地名: +むろん 無論 代6: +め め カ五1: +め 召 サ五2: +め 目 代1: +め 眼 代1: +め 芽 代1: +め 女 代1: +めーかー メーカー 名1: +めーく メーク 名6: +めーたー メーター 名1: +めーでー メーデー 名1: +めーとる メートル 助数2: +めーる メール 名6: +めあたらし 目新し 形2: +めあて 目当て 名2: +めい 滅入 ラ五1: +めい 名 接頭1:助数2:接尾1: +めい 姪 代1: +めい 命 代1:ザ変: +めい 銘 代1:ザ変: +めい 明 代1: +めい 盟 代1: +めい 迷 代1: +めい 鳴 代1: +めい 謎 単漢: +めい 冥 単漢: +めいあん 明暗 名1: +めいあん 名案 名1: +めいい 名医 名1: +めいおうせい 冥王星 名1: +めいか 名家 名1: +めいか 銘菓 名1: +めいかい 明解 名8: +めいかい 明快 名8: +めいかく 明確 名8: +めいが 名画 名1: +めいがら 銘柄 名1: +めいき 明記 名6: +めいき 銘記 名6: +めいきゅう 迷宮 名1: +めいきょく 名曲 名1: +めいぎ 名義 名1: +めいく メイク 名6: +めいげん 名言 名1: +めいげん 明言 名6: +めいさい 明細 名8: +めいさく 名作 名1: +めいさま 名様 助数2: +めいさん 名産 名1: +めいし 名詞 名4: +めいし 名刺 名1: +めいしゅ 名手 名1: +めいしょ 名所 名1: +めいしょう 名称 名1: +めいしょう 名勝 名1: +めいしん 迷信 名1: +めいしん 名神 地名: +めいじ 明治 名1: +めいじ 明示 名6: +めいじつ 名実 名1: +めいじん 名人 代2: +めいせい 名声 名1: +めいせき 明晰 名8: +めいそう 瞑想 名6: +めいだい 命題 名1: +めいちゅう 命中 名6: +めいちょ 名著 名1: +めいとう 名答 名3: +めいとう 名東 地名: +めいとう 名糖 企業: +めいど 明度 名1: +めいにち 命日 名1: +めいはく 明白 名8: +めいび 明媚 代5: +めいふく 冥福 名3: +めいぶつ 名物 名1: +めいぶん 名文 名1: +めいぼ 名簿 名1: +めいめい 命名 名6: +めいもく 名目 名1: +めいもん 名門 名1: +めいよ 名誉 名8: +めいりょう 明瞭 名8: +めいりんぐ メイリング 名1: +めいる メイル 名6: +めいれい 命令 名7: +めいろ 迷路 名1: +めいろう 明朗 名8: +めいわ 明和 地名: +めいわく 迷惑 名10:サ変: +めいん メイン 名1: +めうえ 目上 名1: +めうつり 目移り 名6: +めおと 夫婦 名1: +めか メカ 名1: +めかけ 妾 代2: +めかた 目方 名1: +めかにずむ メカニズム 名1: +めが メガ 助数2: +めがしら 目頭 名1: +めがみ 女神 名1: +めきしこ メキシコ 地名: +めくら 盲 代1: +めぐ 恵 マ五4: +めぐ めぐ ラ五7: +めぐ 巡 ラ五7: +めぐすり 目薬 名1: +めぐみ 恵 名前: +めぐみ めぐみ 名前: +めぐりあ 巡り合 ワ五7: +めぐろ 目黒 地名: +めげ めげ 一段1: +めさき 目先 名1: +めざ 目指 サ五5: +めざと 目ざと 形2: +めざまし 目覚し 形2:代1: +めざめ 目覚め 一段3: +めざわり 目障り 代5: +めし 飯 名1: +めした 目下 名1: +めしつかい 召使 名1: +めじゃー メジャー 代5: +めじり 目尻 名1: +めじるし 目印 名1: +めじろ 目白 地名: +めす 雌 代1: +めす 雌 接頭1: +めす 牝 代1: +めす 牝 接頭1: +めす メス 代1: +めす ♀ 代1: +めずらし 珍し 形5: +めせん 目線 名1: +めそっど メソッド 名1: +めそぽたみあ メソポタミア 地名: +めぞねっと メゾネット 代1: +めた メタ 名1: +めたる メタル 名1: +めたん メタン 名1: +めだ 目立 タ五7: +めだま 目玉 名2: +めだる メダル 名1: +めちゃくちゃ めちゃくちゃ 代5: +めちゃめちゃ めちゃめちゃ 代5: +めちる メチル 代1: +めっしゅ メッシュ 名1: +めっせーじ メッセージ 名1: +めった 滅多 形動1: +めっぽう 滅法 名11: +めつ 滅 単漢: +めつぼう 滅亡 名6: +めでぃあ メディア 名1: +めでた めでた 形9: +めど 目処 代1: +めなし 目梨 地名: +めにゅー メニュー 名1: +めぬま 妻沼 地名: +めはな 目鼻 名1: +めばえ 芽生え 一段3: +めべり 目減り 代4: +めぼし 目星 名1: +めまぐるし 目まぐるし 形2: +めまんべつ 女満別 地名: +めむろ 芽室 地名: +めめし 女々し 形3: +めも メモ 代4: +めも メモ ラ五1: +めもと 目元 代1: +めもり 目盛 名1: +めもり 目盛り 名1: +めもり メモリ 名1: +めもりー メモリー 名1: +めやす 目安 名1: +めりっと メリット 名1: +めろでぃー メロディー 名1: +めん 面 代1:助数2:サ変: +めん 麺 代1: +めん 綿 代1: +めん 免 代4:ザ変: +めん 緬 代1: +めん 棉 単漢: +めんえき 免疫 名1: +めんかい 面会 名7: +めんきょ 免許 代4: +めんきょしょう 免許証 名1: +めんざい 免罪 名1: +めんし 綿糸 名1: +めんしき 面識 名1: +めんしょく 免職 名6: +めんじょ 免除 名6: +めんじょう 免状 名2: +めんせき 面積 名1: +めんせき 免責 名6: +めんせつ 面接 名6: +めんぜい 免税 名6: +めんぜん 面前 名1: +めんそ 免訴 名6: +めんそう 面相 助数2: +めんたる メンタル 代5: +めんだ 免田 地名: +めんだん 面談 名7: +めんつ 面子 名1: +めんてなんす メンテナンス 名6: +めんどう 面倒 名10: +めんどくさ めんどくさ 形5: +めんばー メンバー 名1: +めんぼく 面目 名1: +めんみつ 綿密 名8: +めんめん 面々 名1: +めんるい 麺類 名1: +も 燃 サ五6: +も 持 タ五8: +も 模 サ五5:単漢: +も 盛 ラ五3: +も 漏 ラ五3: +も 洩 ラ五3: +も も マ五7:ガ五7:ラ五7: +も 揉 マ五8: +も 藻 代1: +も 裳 代1: +も 喪 代1: +も 摸 単漢: +も 茂 単漢: +もーたー モーター 名1: +もーつぁると モーツァルト 代1: +もーど モード 名1: +もう もう 副1: +もう 申 サ五7: +もう 猛 接頭1: +もう 盲 代1: +もう 蒙 代1: +もう 網 接尾1: +もう 毛 助数2: +もう 亡 単漢: +もう 望 単漢: +もう 妄 単漢: +もう 孟 単漢: +もう 耗 単漢: +もう 魍 単漢: +もうい 猛威 名1: +もうか 儲か ラ五3: +もうきん 猛禽 名1: +もうけ 儲け 一段3: +もうけ 設け 一段3: +もうげん 妄言 名1: +もうしあげ 申し上げ 一段1: +もうしいれ 申し入れ 一段3: +もうしうけ 申し受け 一段3: +もうしこ 申し込 マ五8: +もうしこみ 申込 名1: +もうしこみしょ 申込書 名1: +もうしつけ 申しつけ 一段2: +もうしで 申し出 一段4: +もうしぶん 申し分 名1: +もうしょ 猛暑 名1: +もうしわけ 申し訳 代4: +もうしわけな 申し訳な 形2: +もうしわた 申し渡 サ五7: +もうしん 盲信 名6: +もうじゃ 亡者 名1: +もうじゅう 猛獣 名1: +もうじん 盲人 名1: +もうそう 妄想 名6: +もうちょう 盲腸 名1: +もうてん 盲点 名1: +もうで 詣で 一段3: +もうとう 毛頭 副1: +もうどく 猛毒 名8: +もうはつ 毛髪 名1: +もうひつ 毛筆 名1: +もうふ 毛布 名1: +もうまく 網膜 名1: +もうもく 盲目 名4: +もうら 網羅 名6: +もうり 毛利 苗字: +もうれつ 猛烈 名8: +もえ 燃え 一段1: +もえ 萌え 一段1: +もおか 真岡 地名: +もがみ 最上 苗字: +もがみ 最上 地名: +もぎ 模擬 名1: +もぎ 茂木 苗字: +もく 黙 サ変:サ五1: +もく 目 助数2:サ変:サ五1: +もく 木 代1: +もく 杢 単漢: +もくげき 目撃 名6: +もくさつ 黙殺 名6: +もくさん 目算 名6: +もくざい 木材 名1: +もくし 黙視 代4: +もくし 目視 代4: +もくじ 目次 名1: +もくせい 木星 名1: +もくぜん 目前 名1: +もくそく 目測 名6: +もくぞう 木造 名1: +もくたん 木炭 名1: +もくてき 目的 名1: +もくてきち 目的地 名1: +もくとう 黙祷 名6: +もくにん 黙認 名6: +もくば 木馬 名1: +もくひ 黙秘 代4: +もくひょう 目標 名1: +もくめ 木目 名1: +もくもく 黙々 形動2: +もくよう 木曜 名1: +もくようび 木曜日 名1: +もくれい 黙礼 代4: +もくろ 目論 マ五7: +もくろく 目録 名1: +もぐ 潜 ラ五7: +もぐりこ もぐり込 マ五7: +もけい 模型 名1: +もさく 模索 名6: +もし もし 副6: +もしか もしか 副4: +もしくは もしくは 接続: +もしもし もしもし 代1: +もしゃ 模写 名6: +もしや もしや 副4: +もしゅ 喪主 名1: +もしょう 喪章 名1: +もじ もじ ラ五7: +もじ 文字 名1: +もじ 文字 助数2: +もじ 門司 地名: +もじゅーる モジュール 名1: +もすくわ モスクワ 地名: +もず 百舌 代1: +もず 鵙 代1: +もせうし 妹背牛 地名: +もぞう 模造 代4: +もたげ もたげ 一段1: +もたら もたら サ五7: +もだえ 悶え 一段3: +もだん モダン 名8: +もち 餅 名2: +もち 勿 単漢: +もちーふ モチーフ 名1: +もちあげ 持ち上げ 一段3: +もちある 持ち歩 カ五7: +もちい 用い 一段1: +もちがせ 用瀬 地名: +もちこ 持ち越 サ五7: +もちこ 持ち込 マ五8: +もちさ 持ち去 ラ五5: +もちだ 持ち出 サ五7: +もちだ 持田 苗字: +もちづき 望月 苗字: +もちづき 望月 地名: +もちなお 持ち直 サ五7: +もちはこ 持ち運 バ五7: +もちまわ 持ち回 ラ五7: +もちゅう 喪中 名1: +もちよ 持ち寄 ラ五7: +もちろん もちろん 形動9: +もちろん 勿論 形動9: +もったい 勿体 名1: +もっと もっと 副1: +もっとー モットー 名1: +もっとも もっとも 副1:形動1: +もっとも 最も 副1: +もっとも 尤も 副1:形動1: +もっぱら もっぱら 副9: +もっぱら 専ら 副9: +もつれ もつれ 一段3: +もてあま 持て余 サ五7: +もてぎ 茂木 地名: +もでむ モデム 名1: +もでる モデル 名4: +もと もと 代1:ラ五1: +もと 下 代1: +もと 基 代1: +もと 元 接頭1:接尾1: +もと 素 代1: +もと 本 代1: +もとい 基 苗字: +もとき 本木 苗字: +もとこ 素子 名前: +もとじめ 元締め 代4: +もとす 本巣 地名: +もとせん 元栓 名1: +もとだ 元田 苗字: +もとちょう 元帳 名1: +もとづ 基づ カ五3: +もとで 元手 名1: +もとどおり 元通り 代6: +もとね 元値 名1: +もとの 本埜 地名: +もとはし 本橋 苗字: +もとぶ 本部 地名: +もとま 求ま ラ五1: +もとみや 本宮 苗字: +もとむ 求む 代1: +もとむら 本村 苗字: +もとめ 求め 一段4: +もともと もともと 代6: +もともと 元々 代6: +もとやま 本山 苗字: +もとやま 本山 地名: +もとゆき 基之 名前: +もとよし 本吉 地名: +もとよし 本吉 苗字: +もとろーら モトローラ 企業: +もど 戻 サ五8:ラ五8: +もにた モニタ 代4: +もにたー モニター 代4: +もの 者 接尾1: +もの 物 接尾1:サ変: +もの もの 代1: +もの モノ 代1: +ものう 桃生 地名: +ものおき 物置 名1: +ものおと 物音 名1: +ものがた 物語 ラ五1: +ものがたり 物語 名1: +ものがなし もの悲し 形3: +ものくろ モノクロ 代1: +ものごと 物事 名1: +ものさし 物差し 名1: +ものしり 物知り 名1: +ものずき 物好き 代5: +ものたりな 物足りな 形3: +もののけ もののけ 名1: +ものべ 物部 地名: +ものほし 物干し 名1: +もはや もはや 副1: +もはや 最早 副1: +もはん 模範 名4: +もばら 茂原 地名: +もふく 喪服 名1: +もほう 模倣 名6: +もみけ もみ消 サ五7: +もみじ 紅葉 代1: +もみじ 椛 単漢: +もめん 木綿 名1: +もも 桃 代1: +もも 股 代1: +もも 腿 代1: +もも 百 単漢: +ももいし 百石 地名: +ももせ 百瀬 苗字: +ももやま 桃山 苗字: +ももやま 桃山 地名: +もや 燃や サ五7: +もよう 模様 名6: +もよお 催 サ五7: +もより 最寄り 名1: +もら もら ワ五8: +もら 漏ら サ五3: +もら 貰 ワ五8: +もらる モラル 名1: +もり 森 苗字: +もり 森 代1: +もり 守 代1: +もり 杜 代1: +もりあが 盛り上が ラ五7: +もりあげ 盛り上げ 一段3: +もりおか 森岡 苗字: +もりおか 盛岡 地名: +もりかわ 森川 苗字: +もりぐち 守口 苗字: +もりぐち 守口 地名: +もりぐち 森口 苗字: +もりこ 盛り込 マ五7: +もりさき 森崎 苗字: +もりした 森下 苗字: +もりしま 森島 苗字: +もりた 盛田 苗字: +もりた 森田 苗字: +もりなが 森永 苗字: +もりの 森野 苗字: +もりひこ 守彦 名前: +もりひろ 守弘 名前: +もりもと 森本 苗字: +もりや 守屋 苗字: +もりや 守谷 苗字: +もりや 森谷 苗字: +もりやま 守山 苗字: +もりやま 守山 地名: +もりやま 森山 苗字: +もりよし 森吉 苗字: +もりよし 森吉 地名: +もるもっと モルモット 名1: +もれ 洩れ 一段4: +もろ 脆 形2: +もろ 諸 単漢: +もろつか 諸塚 地名: +もろどみ 諸富 地名: +もろぼし 諸星 苗字: +もろもろ 諸々 代6: +もろやま 毛呂山 地名: +もん 紋 代1: +もん 門 代1: +もん 文 助数2: +もん 問 助数: +もん 悶 代1: +もん 聞 単漢: +もんか 門下 名1: +もんがいかん 門外漢 代1: +もんきりがた 紋切り型 代5: +もんく 文句 名1: +もんげん 門限 名1: +もんしょう 紋章 名1: +もんしん 問診 名6: +もんすたー モンスター 名1: +もんぜん 門前 名1: +もんだい 問題 名1: +もんだいてん 問題点 名1: +もんちゃく 悶着 名6: +もんつき 紋付 名1: +もんてい 門弟 名1: +もんとりおーる モントリオール 地名: +もんどう 問答 代4: +もんばん 門番 名1: +もんぴょう 門標 名1: +もんぶ 文部 名1: +もんぶしょう 文部省 名1: +もんべつ 紋別 地名: +もんべつ 門別 地名: +もんめ 匁 助数2: +もんよう 文様 名1: +や や ラ五6:マ五1:形動1: +や 遣 ラ五5: +や 焼 カ五4: +や 病 マ五5: +や 矢 代1: +や 野 代1: +や 夜 助数: +や 屋 接尾1: +や 家 接尾1: +や 哉 単漢: +や 谷 単漢: +や 八 単漢: +や 也 単漢: +や 爺 単漢: +や 耶 単漢: +や 弥 単漢: +や 冶 単漢: +や 埜 単漢: +やーど ヤード 助数2: +やあ やあ 感動: +やいた 矢板 地名: +やいづ 焼津 地名: +やえこ 八重子 名前: +やえす 八重洲 地名: +やえば 八重歯 代1: +やえやま 八重山 地名: +やお 八尾 苗字: +やお 八尾 地名: +やおちょう 八百長 代4: +やおつ 八百津 地名: +やおもて 矢面 名1: +やおや 八百屋 代2: +やかげ 矢掛 地名: +やかた 屋形 代1: +やかた 館 代1: +やから 輩 代1: +やかん 夜間 名1: +やがい 野外 名1: +やがく 夜学 名1: +やがて やがて 代6: +やがみ 八神 苗字: +やきつ 焼き付 カ五1: +やきつけ 焼付け 名1: +やきにく 焼肉 名1: +やきもの 焼物 名1: +やきゅう 野球 代3: +やきん 夜勤 名6: +やきん 冶金 名1: +やぎ 山羊 代1: +やぎ 八木 苗字: +やぎ 八木 地名: +やぎざ 山羊座 代1: +やく 役 名2: +やく 訳 代1:サ変: +やく 訳 サ五5: +やく 約 接頭1:接頭4:サ変: +やく 薬 接尾1: +やく 厄 代1: +やく 屋久 地名: +やく 躍 代1: +やくいん 役員 代2: +やくがい 薬害 名1: +やくがく 薬学 名1: +やくがら 役柄 名1: +やくご 訳語 名1: +やくざい 薬剤 名1: +やくし 薬師 代2: +やくしまる 薬師丸 苗字: +やくしゃ 役者 名1: +やくしょ 役所 名2: +やくしょく 役職 名1: +やくしん 躍進 名6: +やくじょう 約定 代4: +やくすう 約数 名1: +やくそう 薬草 名1: +やくそく 約束 名5: +やくだ 役立 タ五1: +やくどう 躍動 名6: +やくどし 厄年 代1: +やくにん 役人 名2: +やくの 夜久野 地名: +やくば 役場 名1: +やくひん 薬品 名1: +やくぶつ 薬物 名1: +やくぶん 訳文 名1: +やくめ 役目 名2: +やくも 八雲 地名: +やくよう 薬用 名1: +やくわり 役割 名1: +やぐち 矢口 苗字: +やぐち 矢口 地名: +やぐら 櫓 代1: +やけ 焼け 一段3: +やけい 夜景 名1: +やけい 夜警 名1: +やけど 火傷 名6: +やこう 夜行 名1: +やこう 夜光 名1: +やごう 屋号 名1: +やさい 野菜 名2: +やさか 八坂 地名: +やさか 弥栄 地名: +やさき 矢先 名1: +やさく 矢作 名前: +やさし 優し 形9: +やさし やさし 形9: +やさし 易し 形9: +やさと 八郷 地名: +やざき 矢崎 苗字: +やざわ 矢沢 苗字: +やしお 八潮 地名: +やしき 屋敷 名2: +やしな 養 ワ五5: +やしま 矢島 地名: +やしょく 夜食 名1: +やしろ 社 代1: +やしん 野心 代1: +やじ 野次 名1:ラ五1: +やじま 矢島 苗字: +やじゅう 野獣 名1: +やじるし 矢印 名1: +やす 安 形10:接尾1: +やす 易 形9: +やす やす 形2: +やす 休 マ五4: +やす 夜須 地名: +やす 野洲 地名: +やす 康 単漢: +やす 泰 単漢: +やす 靖 単漢: +やすあがり 安上がり 代5: +やすい 安井 苗字: +やすうら 安浦 地名: +やすうり 安売り 名6: +やすお 安雄 名前: +やすお 康夫 名前: +やすお 康雄 名前: +やすお 保夫 名前: +やすお 保雄 名前: +やすお 靖夫 名前: +やすおか 泰阜 地名: +やすかわ 安川 苗字: +やすぎ 安来 地名: +やすこ 安子 名前: +やすこ 康子 名前: +やすこ 靖子 名前: +やすし 泰 名前: +やすし 靖 名前: +やすだ 安田 苗字: +やすづか 安塚 地名: +やすとみ 安富 苗字: +やすとみ 安富 地名: +やすね 安値 名1: +やすのり 安則 名前: +やすひこ 康彦 名前: +やすひこ 泰彦 名前: +やすひろ 安弘 名前: +やすひろ 康弘 名前: +やすひろ 泰弘 名前: +やすま 休ま ラ五7: +やすまさ 康正 名前: +やすみ 休み 名1: +やすもの 安物 名1: +やすゆき 康之 名前: +やすら 安ら ガ五7: +やすらか 安らか 形動4: +やず 八頭 地名: +やせ 痩せ 一段2: +やせい 野性 名1: +やせい 野生 名6: +やそうきょく 夜想曲 名1: +やた 矢田 地名: +やたい 屋台 名1: +やたべ 谷田部 苗字: +やたら やたら 形動1: +やたろう 弥太郎 名前: +やだ 矢田 苗字: +やだ 矢田 地名: +やちほ 八千穂 地名: +やちまた 八街 地名: +やちょう 野鳥 名1: +やちよ 八千代 地名:名前: +やちん 家賃 名1: +やっか 薬価 代1: +やっかい 厄介 名10: +やっき 躍起 名8: +やっきょく 薬局 名1: +やっこ 奴 代1: +やっつ 八つ 代6: +やっつけ やっつけ 一段1: +やっと やっと 副9: +やっぱり やっぱり 副8: +やつ やつ 代1:サ五1: +やつ 奴 代1: +やつ 八 単漢: +やつお 八尾 苗字: +やつお 八尾 地名: +やつか 八束 地名: +やつしろ 八代 苗字: +やつしろ 八代 地名: +やと 雇 ワ五8: +やといぬし 雇主 名1: +やとう 野党 名1: +やとみ 弥富 地名: +やど 宿 名2: +やど 宿 サ五1:ラ五1: +やな 梁 代1: +やない 柳井 苗字: +やない 柳井 地名: +やないづ 柳津 地名: +やながわ 柳川 苗字: +やながわ 柳川 地名: +やながわ 梁川 苗字: +やながわ 梁川 地名: +やなぎ 柳 代1: +やなぎさわ 柳沢 苗字: +やなぎだ 柳田 苗字: +やなぎはら 柳原 苗字: +やなぎもと 柳本 苗字: +やなだに 柳谷 地名: +やなはら 柵原 地名: +やぬし 家主 名1: +やね 屋根 名1: +やの 矢野 苗字: +やの 矢野 地名: +やはぎ 矢作 名前: +やはた 八幡 地名: +やはたにし 八幡西 地名: +やはたひがし 八幡東 地名: +やはば 矢巾 地名: +やはり やはり 副1: +やはん 夜半 名11: +やばけい 耶馬渓 地名: +やばん 野蛮 名8: +やひこ 弥彦 地名: +やぶ 破 ラ五1:カ五1: +やぶ 薮 名1: +やぶ 養父 地名: +やぶき 矢吹 苗字: +やぶき 矢吹 地名: +やぶさか やぶさか 形動3: +やぶづかほん 薮塚本 地名: +やぶれ 敗れ 一段3: +やべ 矢部 苗字: +やべ 矢部 地名: +やぼ 野暮 代5: +やぼう 野望 名1: +やぼった やぼった 形4: +やま 山 名2: +やま 耶麻 地名: +やまい 病 代1: +やまい 山井 苗字: +やまうち 山内 苗字: +やまうち 山内 地名: +やまえ 山江 地名: +やまおか 山岡 苗字: +やまおか 山岡 地名: +やまおく 山奥 代1: +やまかわ 山川 苗字: +やまかわ 山川 地名: +やまが 山鹿 地名: +やまが 山香 地名: +やまがた 山形 苗字: +やまがた 山形 地名: +やまがた 山県 苗字: +やまがた 山県 地名: +やまがた 山方 地名: +やまがみ 山上 苗字: +やまがわ 山側 名1: +やまがわ 山川 地名: +やまきた 山北 苗字: +やまきた 山北 地名: +やまぎし 山岸 苗字: +やまくずれ 山崩れ 代4: +やまくに 山国 地名: +やまぐち 山口 苗字: +やまぐち 山口 地名: +やまぐに 山国 名1: +やまこし 山越 地名: +やまこし 山古志 地名: +やまごや 山小屋 代1: +やまさき 山崎 苗字: +やまさき 山崎 地名: +やまざき 山崎 苗字: +やまざき 山崎 地名: +やまざくら 山桜 代1: +やまざと 山里 代1: +やました 山下 苗字: +やました 山下 地名: +やましな 山科 地名: +やましろ 山城 苗字: +やますそ 山裾 代1: +やまぞえ 山添 苗字: +やまぞえ 山添 地名: +やまだ 山田 苗字: +やまだ 山田 地名: +やまつり 矢祭 地名: +やまづみ 山積み 代4: +やまて 山手 名1: +やまと 大和 地名: +やまと 山門 地名: +やまと 山都 地名: +やまとこおりやま 大和郡山 地名: +やまとたかだ 大和高田 地名: +やまなか 山中 苗字: +やまなか 山中 地名: +やまなかこ 山中湖 地名: +やまなし 山梨 地名: +やまね 山根 苗字: +やまの 山野 苗字: +やまの 山野 地名: +やまのうち 山之内 苗字: +やまのうち 山ノ内 地名: +やまのくち 山之口 地名: +やまのて 山の手 名1: +やまのべ 山辺 地名: +やまのぼり 山登り 代4: +やまは ヤマハ 企業: +やまはだ 山肌 名1: +やまば 山場 名1: +やまべ 山辺 苗字: +やまむら 山村 苗字: +やまもと 山本 苗字: +やまもと 山本 地名: +やまもと 山元 苗字: +やまもと 山元 地名: +やまもり 山森 苗字: +やまもり 山盛り 代4: +やまやま 山々 代1: +やまわけ 山分け 名6: +やみ 闇 代1: +やみつき 病み付き 名1: +やむちゃ 飲茶 名1: +やむな やむな 形1: +やむをえず やむを得ず 副1: +やむをえな やむを得な 形1: +やめ 止め 一段4: +やめ 辞め 一段2: +やめ 八女 地名: +やもと 矢本 苗字: +やもと 矢本 地名: +やや やや 副1: +ややこし ややこし 形3: +やよい 弥生 名前: +やよい 弥生 地名: +やり 槍 代1: +やり 鑓 単漢: +やりがい やりがい 代1: +やりくり やりくり 代4: +やりだま やり玉 代1: +やりて やり手 代1: +やりとり やり取り 代4: +やりなお やり直 サ五7: +やろう 野郎 代1: +やわた 八幡 苗字: +やわた 八幡 地名: +やわたはま 八幡浜 地名: +やわはら 谷和原 地名: +やわら 和ら ガ五3: +やわらか 柔らか 形11:形動1: +やわらか 軟らか 形11:形動1: +やんぐ ヤング 名1: +ゆ 行 カ五8: +ゆ 逝 カ五7: +ゆ 往 カ五7: +ゆ 結 ワ五7: +ゆ 湯 代1: +ゆ 油 接尾1: +ゆ 愉 単漢: +ゆ 愈 単漢: +ゆ 癒 単漢: +ゆ 諭 単漢: +ゆ 輸 単漢: +ゆ 柚 単漢: +ゆ 由 単漢: +ゆ 喩 単漢: +ゆーくりっど ユークリッド 名1: +ゆーざ ユーザ 名1: +ゆーざー ユーザー 名1: +ゆーざーず ユーザーズ 名1: +ゆーてぃりてぃ ユーティリティ 名1: +ゆーもらす ユーモラス 代5: +ゆあさ 湯浅 苗字: +ゆあさ 湯浅 地名: +ゆい 唯 名前: +ゆい 由比 地名: +ゆい 遺 単漢: +ゆいいつ 唯一 名1: +ゆいがどくそん 唯我独尊 代1: +ゆいごん 遺言 名1: +ゆいしょ 由緒 名1: +ゆいのう 結納 名7: +ゆいぶつ 唯物 名1: +ゆう 優 代1:名前: +ゆう 夕 代1: +ゆう 有 サ変:サ五1: +ゆう 由宇 地名: +ゆう 友 代1: +ゆう 雄 代1: +ゆう 幽 代1: +ゆう 勇 代1: +ゆう 宥 単漢: +ゆう 佑 単漢: +ゆう 酉 単漢: +ゆう 右 単漢: +ゆう 悠 単漢: +ゆう 憂 単漢: +ゆう 揖 単漢: +ゆう 柚 単漢: +ゆう 湧 単漢: +ゆう 涌 単漢: +ゆう 猶 単漢: +ゆう 猷 単漢: +ゆう 由 単漢: +ゆう 祐 単漢: +ゆう 裕 単漢: +ゆう 誘 単漢: +ゆう 遊 単漢: +ゆう 邑 単漢: +ゆう 郵 単漢: +ゆう 融 単漢: +ゆうい 優位 名1: +ゆうい 有意 名8: +ゆういぎ 有意義 名8: +ゆういち 勇一 名前: +ゆういち 祐一 名前: +ゆういち 裕一 名前: +ゆういち 雄一 名前: +ゆういちろう 祐一郎 名前: +ゆううつ 憂鬱 名8: +ゆうえき 有益 名8: +ゆうえつ 優越 名6: +ゆうえんち 遊園地 名1: +ゆうか 有価 名1: +ゆうかい 誘拐 名6: +ゆうかい 融解 名6: +ゆうかい 有界 名1: +ゆうかん 勇敢 形動4: +ゆうかん 夕刊 名1: +ゆうが 優雅 名8: +ゆうがい 有害 名8: +ゆうがた 夕方 代6: +ゆうき 勇気 名1: +ゆうき 有機 名4: +ゆうき 結城 苗字: +ゆうき 結城 地名: +ゆうきち 勇吉 名前: +ゆうきゅう 有給 名1: +ゆうきゅう 有休 名1: +ゆうきゅう 遊休 名1: +ゆうきゅう 悠久 名1: +ゆうぐう 優遇 名6: +ゆうぐれ 夕暮れ 代1: +ゆうけんしゃ 有権者 名1: +ゆうげん 有限 名8: +ゆうげんがいしゃ 有限会社 名1: +ゆうこ 優子 名前: +ゆうこ 由子 名前: +ゆうこ 裕子 名前: +ゆうこう 友好 名4: +ゆうこう 有効 代5: +ゆうこく 夕刻 名1: +ゆうごう 融合 名6: +ゆうざい 有罪 名1: +ゆうし 融資 名7: +ゆうし 有志 名1: +ゆうしきしゃ 有識者 名1: +ゆうしゅう 優秀 名8: +ゆうしょう 優勝 名6: +ゆうしょう 有償 名1: +ゆうしょく 夕食 名1: +ゆうじ 雄二 名前: +ゆうじ 裕二 名前: +ゆうじ 勇二 名前: +ゆうじ 祐二 名前: +ゆうじ 裕司 名前: +ゆうじ 裕治 名前: +ゆうじ 勇次 名前: +ゆうじゅうふだん 優柔不断 代5: +ゆうじょう 友情 名1: +ゆうじろう 裕次郎 名前: +ゆうじろう 雄二郎 名前: +ゆうじん 友人 名3: +ゆうすう 有数 名1: +ゆうずう 融通 代4: +ゆうずうむげ 融通無碍 代1: +ゆうせい 郵政 名1: +ゆうせい 優勢 名8: +ゆうせいしょう 郵政省 名1: +ゆうせん 優先 名6: +ゆうせん 有線 名1: +ゆうぜい 遊説 名6: +ゆうぜい 有税 名1: +ゆうぜん 友禅 代1: +ゆうぜん 悠然 形動2: +ゆうそう 郵送 名7: +ゆうぞう 勇三 名前: +ゆうぞう 雄三 名前: +ゆうたい 優待 名7: +ゆうだい 雄大 名8: +ゆうだち 夕立ち 名1: +ゆうだん 勇断 名6: +ゆうち 誘致 名6: +ゆうちょう 悠長 形動4: +ゆうづう 融通 名7: +ゆうとう 優等 名8: +ゆうとう 雄踏 地名: +ゆうどう 誘導 名6: +ゆうどく 有毒 名8: +ゆうのう 有能 名8: +ゆうはん 夕飯 名1: +ゆうばり 夕張 地名: +ゆうひ 夕日 名1: +ゆうひ 夕陽 名1: +ゆうび 優美 名8: +ゆうびん 郵便 名1: +ゆうびんきょく 郵便局 名1: +ゆうびんぶつ 郵便物 名1: +ゆうふく 裕福 形動4: +ゆうふつ 勇払 地名: +ゆうべ 夕べ 代6: +ゆうべ 昨夜 代6: +ゆうべつ 湧別 地名: +ゆうべん 雄弁 名8: +ゆうほどう 遊歩道 名1: +ゆうぼう 有望 形動4: +ゆうぼく 遊牧 名6: +ゆうめい 有名 名8: +ゆうめし 夕飯 名1: +ゆうやけ 夕焼け 名1: +ゆうやみ 夕闇 名1: +ゆうゆうじてき 悠々自適 代4: +ゆうよ 猶予 名7: +ゆうよう 有用 形動1: +ゆうらくちょう 有楽町 地名: +ゆうらん 遊覧 名6: +ゆうり 有利 名8: +ゆうり 遊離 名6: +ゆうり 有理 名1: +ゆうりすう 有理数 名1: +ゆうりょ 憂慮 名6: +ゆうりょう 優良 名8: +ゆうりょう 有料 名1: +ゆうりょく 有力 名8: +ゆうれい 幽霊 名1: +ゆうれつ 優劣 名1: +ゆうわ 融和 代4: +ゆうわ 雄和 地名: +ゆうわく 誘惑 名6: +ゆえ 故 代1: +ゆか 床 名1: +ゆか 由佳 名前: +ゆか 由香 苗字: +ゆかい 愉快 名8: +ゆかうえ 床上 名1: +ゆかした 床下 名1: +ゆかた 浴衣 代1: +ゆかり ゆかり 代1: +ゆかわ 湯川 苗字: +ゆかわ 湯川 地名: +ゆが ゆが マ五7: +ゆが 歪 マ五7: +ゆがわ 湯川 苗字: +ゆがわ 湯川 地名: +ゆがわら 湯河原 地名: +ゆき 雪 名1: +ゆき 由紀 名前: +ゆき 由貴 名前: +ゆき 由岐 地名: +ゆき 湯来 地名: +ゆき 油木 地名: +ゆき 幸 単漢: +ゆき 之 単漢: +ゆきえ 雪絵 名前: +ゆきえ 由紀江 名前: +ゆきお 幸男 名前: +ゆきお 幸夫 名前: +ゆきお 幸雄 名前: +ゆきお 行夫 名前: +ゆきお 行雄 名前: +ゆきか 行き交 ワ五1: +ゆきき 行き来 代4: +ゆきぐに 雪国 名1: +ゆきこ 幸子 名前: +ゆきこ 雪子 名前: +ゆきこ 由紀子 名前: +ゆきち 諭吉 名前: +ゆきとど 行き届 カ五7: +ゆきどけ 雪解け 名1: +ゆくえ 行方 代1: +ゆくはし 行橋 地名: +ゆけつ 輸血 名6: +ゆげ 湯気 代1: +ゆげ 弓削 地名: +ゆさぶ 揺さぶ ラ五7: +ゆざわ 湯沢 苗字: +ゆざわ 湯沢 地名: +ゆし 油脂 名1: +ゆしゅつ 輸出 名6: +ゆしゅつにゅう 輸出入 名6: +ゆす ゆす ガ五7:ラ五8: +ゆす 濯 ガ五7: +ゆすはら 梼原 地名: +ゆず 譲 ラ五8: +ゆず 柚 単漢: +ゆずりあ 譲り合 ワ五7: +ゆずる 譲 名前: +ゆせい 油性 名1: +ゆそう 輸送 名6: +ゆたか 豊か 形動4: +ゆたか 豊 名前: +ゆたか 裕 名前: +ゆだ 湯田 苗字: +ゆだ 湯田 地名: +ゆだね 委ね 一段1: +ゆだん 油断 代4: +ゆちゃく 癒着 名6: +ゆっくり ゆっくり 副9: +ゆったり ゆったり 副9: +ゆづかみ 湯津上 地名: +ゆで ゆで 一段4: +ゆでん 油田 名1: +ゆとり ゆとり 代1: +ゆに 由仁 地名: +ゆにーく ユニーク 名8: +ゆにっくす ユニックス 名1: +ゆにっと ユニット 名1: +ゆにばーさる ユニバーサル 名8: +ゆにばーす ユニバース 名1: +ゆにふぉーむ ユニフォーム 名1: +ゆにゅう 輸入 名6: +ゆのたに 湯之谷 地名: +ゆのつ 温泉津 地名: +ゆのまえ 湯前 地名: +ゆのみ 湯飲み 名2: +ゆはら 湯原 苗字: +ゆはら 湯原 地名: +ゆばら 湯原 地名: +ゆび 指 代1: +ゆびさ 指さ サ五7: +ゆびさき 指先 名1: +ゆびわ 指輪 名1: +ゆふいん 湯布院 地名: +ゆみ 弓 代1: +ゆみ 由美 名前: +ゆみ 友美 名前: +ゆみこ 由美子 名前: +ゆみこ 弓子 名前: +ゆめ 夢 代1: +ゆめさき 夢前 地名: +ゆめみ 夢見 一段1: +ゆもと 湯本 苗字: +ゆや 油谷 地名: +ゆら 由良 地名: +ゆら 揺ら ガ五3:サ五5: +ゆらい 由来 代4: +ゆり 百合 名前: +ゆり 由利 苗字: +ゆり 由利 地名: +ゆりかご ゆりかご 代1: +ゆりこ 百合子 名前: +ゆりこ 由里子 名前: +ゆる 許 サ五8: +ゆる 緩 形2:マ五3: +ゆる 揺る ガ五5: +ゆるめ 緩め 一段3: +ゆるやか 緩やか 形動4: +ゆれ 揺れ 一段4: +ゆわえ 結わえ 一段1: +ゆわかし 湯沸し 名1: +よ よ 形2:サ五4:ラ五1: +よ 良 形2: +よ 好 形2: +よ 善 形2: +よ 止 サ五5: +よ 読 マ五8: +よ 詠 マ五8: +よ 寄 ラ五7: +よ 撚 ラ五7: +よ 依 ラ五1: +よ 因 ラ五1: +よ 選 ラ五1: +よ 呼 バ五8: +よ 酔 ワ五7: +よ 世 代1: +よ 夜 代1: +よ 代 代1: +よ 余 接尾1: +よ 予 代1: +よ 与 単漢: +よ 誉 単漢: +よ 輿 単漢: +よ 預 単漢: +よーぐると ヨーグルト 名1: +よーろっぱ ヨーロッパ 地名: +よあけ 夜明け 代1: +よい 宵 代1: +よいた 与板 地名: +よいち 余市 地名: +よいん 余韻 名1: +よう 様 形動1: +よう 用 名3:接尾3: +よう 陽 代1: +よう 幼 代1: +よう 要 代4:サ五1: +よう 洋 代1: +よう よう 代1: +よう 擁 サ変: +よう 葉 助数2: +よう 容 代1: +よう 曜 代1: +よう 傭 単漢: +よう 腰 単漢: +よう 妖 単漢: +よう 庸 単漢: +よう 揚 単漢: +よう 揺 単漢: +よう 楊 単漢: +よう 溶 単漢: +よう 熔 単漢: +よう 窯 単漢: +よう 羊 単漢: +よう 耀 単漢: +よう 蓉 単漢: +よう 謡 単漢: +よう 踊 単漢: +よう 遥 単漢: +よう 養 単漢: +よう 瘍 単漢: +よう 癰 単漢: +ようい 用意 名7: +ようい 容易 形動4: +よういく 養育 名6: +よういち 洋一 名前: +よういち 陽一 名前: +よういちろう 洋一郎 名前: +よういちろう 陽一郎 名前: +よういん 要因 名1: +よういん 要員 名1: +ようえき 溶液 名1: +ようか 八日 代6: +ようか 八鹿 地名: +ようかい 溶解 名6: +ようかいち 八日市 地名: +ようかいちば 八日市場 地名: +ようかん 洋館 名1: +ようが 洋画 名1: +ようが 用賀 地名: +ようき 容器 名1: +ようき 陽気 名8: +ようきゅう 要求 名6: +ようきょく 陽極 名1: +ようぎ 容疑 名1: +ようぐ 用具 名1: +ようけい 養鶏 代4: +ようけん 用件 名3: +ようけん 要件 名3: +ようげん 用言 代1: +ようこ 洋子 名前: +ようこ 陽子 名前: +ようこ 容子 名前: +ようこ 葉子 名前: +ようこう 要項 名1: +ようこう 陽光 名1: +ようこう 洋行 代4: +ようこうろ 溶鉱炉 名1: +ようご 用語 名1: +ようご 擁護 代4: +ようご 養護 代4: +ようさい 洋裁 名1: +ようさい 要塞 名1: +ようし 用紙 名1: +ようし 要旨 名1: +ようし 容姿 名1: +ようし 養子 名1: +ようし 陽子 名1: +ようしき 様式 名1: +ようしき 洋式 名1: +ようしつ 洋室 名1: +ようしゃ 容赦 名7: +ようしゅ 洋酒 名1: +ようしゅん 陽春 名1: +ようしょ 洋書 名1: +ようしょ 要所 名1: +ようしょう 幼少 名10: +ようしょう 要衝 名1: +ようしょく 養殖 名6: +ようしょく 洋食 名1: +ようしょく 要職 名1: +ようじ 用事 代3: +ようじ 幼児 名1: +ようじ 洋二 名前: +ようじょ 幼女 名1: +ようじょ 養女 名1: +ようじょう 養生 名7: +ようじょう 洋上 名1: +ようじん 用心 名7: +ようじん 要人 名1: +ようす 様子 名3: +ようすい 用水 名1: +ようせい 要請 名6: +ようせい 養成 名6: +ようせい 妖精 名1: +ようせい 陽性 名1: +ようせき 容積 名1: +ようせつ 溶接 名6: +ようせつ 夭折 名6: +ようそ 要素 名1: +ようそう 様相 名1: +ようだい 容体 名3: +ようち 用地 名1: +ようち 幼稚 名8: +ようちえん 幼稚園 名1: +ようちゅう 幼虫 名1: +ようてん 要点 名1: +ようと 用途 名1: +ようとん 養豚 名1: +ようど 用度 名1: +ようにん 容認 名6: +ようねん 幼年 名1: +ようひん 洋品 名1: +ようび 曜日 名1: +ようふ 養父 名1: +ようふう 洋風 名1: +ようふく 洋服 名2: +ようふぼ 養父母 名1: +ようぶん 養分 名1: +ようほう 用法 名1: +ようぼう 要望 名7: +ようま 洋間 名1: +ようむ 用務 名1: +ようめい 用命 名3: +ようもう 羊毛 名1: +ようやく 要約 名6: +ようやく ようやく 副1: +ようらん 要覧 名1: +ようりょう 容量 名1: +ようりょう 要領 名1: +ようれい 用例 名1: +ようれき 陽暦 名1: +ようろう 養老 名1: +ようろう 養老 地名: +よか 余暇 名1: +よかわ 吉川 地名: +よかん 予感 代4: +よき 予期 代4: +よきょう 余興 名1: +よきん 預金 名6: +よぎな 余儀な 形2: +よく よく 副1: +よく 欲 代1: +よく 慾 代1: +よく 翼 代1: +よく 浴 接尾1: +よく 翌 連体: +よく 抑 単漢: +よく 沃 単漢: +よくあつ 抑圧 名6: +よくげつ 翌月 名1: +よくし 抑止 代4: +よくしつ 浴室 名1: +よくしゅう 翌週 名1: +よくじつ 翌日 代6: +よくじょう 浴場 名1: +よくせい 抑制 名6: +よくそう 浴槽 名1: +よくちょう 翌朝 代6: +よくとし 翌年 代6: +よくねん 翌年 代6: +よくば 欲張 ラ五7: +よくぼう 欲望 名1: +よくよう 抑揚 名1: +よくよう 浴用 名1: +よくよく よくよく 副1: +よくよく 翌々 接頭1: +よくりゅう 抑留 名6: +よけ よけ 一段2: +よけい 余計 副1:形動1: +よげん 予言 名6: +よげん 預言 名6: +よこ 横 代1: +よこい 横井 苗字: +よこう 予行 名6: +よこう 予稿 名1: +よこお 横尾 苗字: +よこかわ 横河 苗字: +よこかわ 横川 苗字: +よこかわ 横川 地名: +よこがお 横顔 代1: +よこぎ 横切 ラ五7: +よこく 予告 名6: +よこごし 横越 地名: +よこしば 横芝 地名: +よこしま よこしま 代5: +よこしま 横島 苗字: +よこしま 横島 地名: +よこじま 横縞 名1: +よこすか 横須賀 地名: +よこせ 横瀬 苗字: +よこた 横田 苗字: +よこた 横田 地名: +よこたわ 横たわ ラ五3: +よこづな 横綱 代1: +よこて 横手 地名: +よこどり 横取り 代4: +よこなが 横長 名8: +よこはま 横浜 地名: +よこばい 横ばい 代4: +よこみぞ 横溝 苗字: +よこみち 横道 名1: +よこめ 横目 名1: +よこやま 横山 苗字: +よこやま 横山 地名: +よご 汚 サ五8: +よご 余呉 地名: +よごれ 汚れ 一段3: +よさ 与謝 地名: +よさそう 良さそう 形動4: +よさそう よさそう 形動4: +よさん 予算 名7: +よし 由 代1: +よし 葦 単漢: +よし 佳 単漢: +よし 義 単漢: +よし 吉 単漢: +よし 好 単漢: +よし 善 単漢: +よし 美 単漢: +よし 芳 単漢: +よし 良 単漢: +よしあき 義明 名前: +よしあき 吉明 名前: +よしあき 芳明 名前: +よしあき 良明 名前: +よしあし 善し悪し 代1: +よしい 吉井 苗字: +よしい 芳井 苗字: +よしい 芳井 地名: +よしうみ 吉海 地名: +よしお 嘉男 名前: +よしお 義雄 名前: +よしお 吉男 名前: +よしお 吉雄 名前: +よしお 好夫 名前: +よしお 善雄 名前: +よしお 芳夫 名前: +よしお 芳雄 名前: +よしお 良夫 名前: +よしお 良雄 名前: +よしおか 吉岡 苗字: +よしかず 義一 名前: +よしかず 義和 名前: +よしかず 良和 名前: +よしかわ 吉川 苗字: +よしき 吉城 地名: +よしき 吉敷 地名: +よしこ 佳子 名前: +よしこ 嘉子 名前: +よしこ 好子 名前: +よしこ 美子 名前: +よしこ 芳子 名前: +よしこ 良子 名前: +よしざき 吉崎 苗字: +よしざわ 吉沢 苗字: +よしずみ 吉住 苗字: +よしたか 義孝 名前: +よしだ 吉田 苗字: +よしだ 吉田 地名: +よしと 義人 名前: +よしとみ 吉富 苗字: +よしとみ 吉富 地名: +よしなが 吉永 苗字: +よしの 吉野 苗字: +よしの 吉野 地名: +よしのだに 吉野谷 地名: +よしのぶ 義信 名前: +よしのり 義則 名前: +よしひこ 義彦 名前: +よしひこ 吉彦 名前: +よしひこ 良彦 名前: +よしひさ 義久 名前: +よしひろ 義弘 名前: +よしまつ 吉松 苗字: +よしまつ 吉松 地名: +よしみ 義美 名前: +よしみ 吉見 苗字: +よしみ 吉見 地名: +よしみ 好美 名前: +よしみ 芳美 名前: +よしむら 吉村 苗字: +よしもと 吉本 苗字: +よしゅう 予習 名6: +よしゆき 義行 名前: +よしゆき 義之 名前: +よしろう 芳郎 名前: +よしわ 吉和 地名: +よしわら 吉原 苗字: +よしわら 吉原 地名: +よしん 余震 名1: +よじょう 余剰 名1: +よじょう 余情 名1: +よせ 寄席 名1: +よせ 寄せ 一段4: +よせい 余生 代1: +よせがき 寄書き 代1: +よせん 予選 名6: +よそ よそ 代1: +よそう 予想 名6: +よそうがい 予想外 名8: +よそお 装 ワ五7: +よそく 予測 名6: +よたく 預託 名6: +よだ 依田 苗字: +よだん 予断 代4: +よだん 余談 名1: +よち 予知 名6: +よち 余地 名1: +よちょきん 預貯金 名1: +よっか 四日 代6: +よっかいち 四日市 地名: +よっきゅう 欲求 名6: +よっつ 四つ 代6: +よっぱら 酔っ払 ワ五7: +よっぽど よっぽど 副7: +よつかいどう 四街道 地名: +よつかど 四つ角 名1: +よつや 四谷 苗字: +よつや 四谷 地名: +よつや 四ツ谷 地名: +よてい 予定 名7: +よとう 与党 名1: +よど 淀 マ五7:単漢: +よどえ 淀江 地名: +よどがわ 淀川 苗字: +よどがわ 淀川 地名: +よどやばし 淀屋橋 地名: +よなか 夜中 代1: +よなぐすく 与那城 地名: +よなぐに 与那国 地名: +よなご 米子 地名: +よなばる 与那原 地名: +よね 米 単漢: +よねきち 米吉 名前: +よねざき 米崎 苗字: +よねざわ 米沢 苗字: +よねざわ 米沢 地名: +よねだ 米田 苗字: +よねつ 余熱 名1: +よねやま 米山 苗字: +よねん 余念 名1: +よの 与野 地名: +よのうづ 米水津 地名: +よのなか 世の中 名1: +よは 余波 名1: +よはく 余白 名1: +よび 予備 名1: +よびかけ 呼びかけ 一段3: +よびこ 呼び込 マ五7: +よびこう 予備校 名1: +よびごえ 呼び声 代1: +よびだ 呼び出 サ五7: +よびだし 呼出し 名1: +よびもど 呼び戻 サ五7: +よびよせ 呼び寄せ 一段1: +よふけ 夜更け 名1: +よぶこ 呼子 地名: +よぶん 余分 名8: +よほう 予報 名6: +よほど よほど 副7: +よぼう 予防 名6: +よみあげ 読み上げ 一段3: +よみうり 読売 企業: +よみかき 読み書き 代4: +よみかた 読み方 名1: +よみがえ 蘇 ラ五7: +よみがえ 甦 ラ五7: +よみこ 読み込 マ五7: +よめ 嫁 代2: +よもぎ 蓬 代1: +よもぎた 蓬田 地名: +よやく 予約 名7: +よゆう 余裕 名1: +よよぎ 代々木 地名: +より より 代6: +よりい 寄居 地名: +よりかか 寄り掛か ラ五7: +よりこ 依子 名前: +よりこ 頼子 名前: +よりしま 寄島 地名: +よりそ 寄り添 ワ五5: +よりどころ 拠り所 名1: +よりみち 寄り道 代4: +よりょく 余力 名1: +よる 夜 代1 +よろい 鎧 代1: +よろく 余録 名1: +よろこ 喜 バ五8: +よろこ 慶 バ五8: +よろこ 歓 バ五8: +よろこ 悦 バ五8: +よろこばし 喜ばし 形9: +よろし よろし 形2: +よろし 宜し 形2: +よろず 万 代6: +よろん 世論 名1: +よろん 与論 地名: +よわ 弱 形9:ラ五7: +よわき 弱気 代5: +よわね 弱音 名1: +よわま 弱ま ラ五5: +よわみ 弱味 代1: +よわめ 弱め 一段3: +よわよわし 弱々し 形3: +ら ら 接尾1: +ら 等 接尾1: +ら 羅 単漢: +ら 螺 単漢: +ら 裸 単漢: +らーめん ラーメン 代1: +らい 来 接尾1: +らい 莱 単漢: +らい 頼 単漢: +らい 雷 単漢: +らい 磊 単漢: +らいう 雷雨 名1: +らいおん ライオン 名1: +らいか 来夏 名1: +らいかい 来会 代4: +らいかん 来館 名7: +らいき 来期 代6: +らいきゃく 来客 名1: +らいげつ 来月 名1: +らいこう 来航 名6: +らいこう 来校 名6: +らいさん 礼賛 名6: +らいしゃ 来社 名7: +らいしゅう 来週 代6: +らいしゅう 来秋 代1: +らいしゅう 来襲 代4: +らいしゅん 来春 名1: +らいしん 来診 名6: +らいしん 来信 名1: +らいじょう 来場 名7: +らいす ライス 名1: +らいせ 来世 名1: +らいせんす ライセンス 名1: +らいたー ライター 名1: +らいちょう 来聴 名7: +らいちょう 雷鳥 名1: +らいてぃんぐ ライティング 代1: +らいてん 来店 名7: +らいと ライト 名8: +らいにち 来日 名6: +らいねん 来年 代6: +らいねんど 来年度 名1: +らいはい 礼拝 名6: +らいばる ライバル 名1: +らいひん 来賓 名3: +らいふ ライフ 名1: +らいぶ ライブ 名1: +らいぶらり ライブラリ 名1: +らいほう 来訪 名7: +らいめい 雷鳴 名1: +らいん ライン 名1: +らうす 羅臼 地名: +らうんど ラウンド 名1: +らがん 裸眼 名1: +らく 楽 代5: +らく 酪 代1: +らく 洛 代1: +らく 絡 単漢: +らく 落 単漢: +らくえん 楽園 名1: +らくがき 落書 代4: +らくご 落語 名1: +らくご 落後 名6: +らくさ 落差 名1: +らくさつ 落札 名6: +らくしょう 楽勝 名6: +らくじつ 落日 名1: +らくせい 落成 名7: +らくせき 落石 名6: +らくせん 落選 名6: +らくたん 落胆 名7: +らくだい 落第 名6: +らくちゃく 落着 名6: +らくちょう 落丁 名1: +らくてん 楽天 名4: +らくのう 酪農 名1: +らくば 落馬 代4: +らくよう 洛陽 名1: +らくよう 落葉 代4: +らくらい 落雷 名1: +らぐびー ラグビー 名1: +らけっと ラケット 名1: +らじお ラジオ 名1: +らすと ラスト 名1: +らせん 螺旋 名1: +らっか 落下 代4: +らっかん 楽観 名6: +らっきー ラッキー 名8: +らっこ ラッコ 代1: +らっしゅ ラッシュ 名1: +らっち ラッチ 代1: +らっぱ ラッパ 名1: +らつ 辣 単漢: +らてん ラテン 名1: +らふぉーれ ラフォーレ 名1: +らぶ ラブ 名1: +らべる ラベル 名1: +らぼ ラボ 名1: +らりー ラリー 名1: +られつ 羅列 名6: +らん 欄 接尾1: +らん 乱 代1: +らん 蘭 代1: +らん 卵 代1: +らん 嵐 代1: +らん 濫 単漢: +らん 藍 単漢: +らん 覧 単漢: +らん 爛 単漢: +らん 鸞 単漢: +らんおう 卵黄 名1: +らんかく 乱獲 名6: +らんかん 欄干 名1: +らんがい 欄外 名1: +らんきりゅう 乱気流 名1: +らんく ランク 名6: +らんげーじ ランゲージ 代1: +らんこし 蘭越 地名: +らんざつ 乱雑 名8: +らんざん 嵐山 地名: +らんし 乱視 名1: +らんし 卵子 名1: +らんしゃ 乱射 名6: +らんじゅく 爛熟 名6: +らんすう 乱数 名1: +らんせん 乱戦 名1: +らんそう 卵巣 名1: +らんだむ ランダム 代5: +らんちょう 乱丁 名1: +らんちょん ランチョン 代1: +らんとう 乱闘 名6: +らんど ランド 名1: +らんどく 乱読 名6: +らんなー ランナー 名1: +らんにゅう 乱入 名6: +らんばつ 乱伐 名6: +らんぱく 卵白 名1: +らんぱつ 乱発 名6: +らんぴ 乱費 名6: +らんぶ 乱舞 名6: +らんぷ ランプ 名1: +らんぼう 乱暴 名8:サ変: +らんまん 爛漫 名1:形動2: +らんみゃく 乱脈 名8: +らんよう 乱用 名6: +らんよう 濫用 名6: +らんりつ 乱立 名6: +り 利 代4: +り 理 代1: +り 里 助数2: +り 裏 代1: +り 吏 代1: +り 痢 代1: +り 浬 単漢: +り 哩 単漢: +り 履 単漢: +り 李 単漢: +り 梨 単漢: +り 璃 単漢: +り 裡 単漢: +り 離 単漢: +りーぐ リーグ 名1: +りーじょん リージョン 代1: +りーす リース 名6: +りーずなぶる リーズナブル 名8: +りーだ リーダ 名1: +りーど リード 代4: +りありずむ リアリズム 名1: +りある リアル 代5: +りえ 理恵 名前: +りえき 利益 名3: +りか 理科 名1: +りかーしぶ リカーシブ 名1: +りかい 理解 名7: +りかばー リカバー 名6: +りがい 利害 名1: +りがく 理学 名1: +りき 力 代1:マ五1: +りきえん 力演 名6: +りきがく 力学 名1: +りきさく 力作 名1: +りきし 力士 名1: +りきせつ 力説 名6: +りきとう 力闘 名6: +りきゅう 離宮 名1: +りきりょう 力量 名1: +りく 陸 代1: +りくうん 陸運 名1: +りくえすと リクエスト 代4: +りくじょう 陸上 名1: +りくぜん 陸前 地名: +りくぜんたかた 陸前高田 地名: +りくち 陸地 名1: +りくつ 理屈 名1: +りくとう 陸稲 名1: +りくべつ 陸別 地名: +りくるーと リクルート 企業: +りくろ 陸路 名1: +りけん 利権 名1: +りこ 利己 名1: +りこー リコー 企業: +りこう 履行 代4: +りこう 理工 名1: +りこん 離婚 名6: +りごう 離合 代4: +りさーち リサーチ 名6: +りさいず リサイズ 名6: +りさん 離散 名6: +りざーぶ リザーブ 名6: +りざると リザルト 名1: +りし 利子 名1: +りしゅう 履修 名6: +りしょく 離職 名6: +りしり 利尻 地名: +りじ 理事 名1: +りじぇくと リジェクト 名6: +りじゅん 利潤 名1: +りす リス 代1: +りすく リスク 名1: +りすたーと リスタート 名6: +りすと リスト 名1: +りすとあ リストア 名6: +りずむ リズム 名1: +りせい 理性 名4: +りせっと リセット 名6: +りそーす リソース 代1: +りそう 理想 名4: +りそく 利息 名1: +りそん 離村 代4: +りぞーと リゾート 名1: +りぞっと リゾット 名1: +りた 利他 名1: +りたーん リターン 名6: +りたいあ リタイア 名6: +りだくしょん リダクション 代1: +りだつ 離脱 名6: +りち 理知 名4: +りちうむ リチウム 名1: +りちぎ 律義 名8: +りちゃくりく 離着陸 名6: +りっか 立夏 名1: +りっきゃく 立脚 名6: +りっきょう 陸橋 名1: +りっけん 立憲 名1: +りっこうほ 立候補 名6: +りっしゅう 立秋 名1: +りっしゅん 立春 名1: +りっしょう 立証 名6: +りっしょく 立食 名1: +りっしん 立身 名6: +りったい 立体 名4: +りっち リッチ 代5: +りっとう 立冬 名1: +りっとう 栗東 地名: +りっとる リットル 助数2: +りっぱ 立派 形動8: +りっぷく 立腹 名7: +りっぽう 立法 名6: +りっぽう 立方 代1:助数2: +りっぽうたい 立方体 名1: +りつ 率 接尾3: +りつ 律 接尾1: +りつ 立 代1: +りつ 葎 単漢: +りつ 慄 単漢: +りつあん 立案 名6: +りつこ 理津子 名前: +りつぞう 立像 名1: +りつどう 律動 名6: +りつめいかん 立命館 名1: +りつろん 立論 名6: +りてん 利点 名1: +りとう 離島 名6: +りとく 利得 名1: +りとる リトル 名1: +りにあ リニア 代5: +りにゅう 離乳 名6: +りねん 理念 名1: +りのう 離農 名6: +りはっちゃく 離発着 名6: +りはつ 理髪 名6: +りはつ 利発 名8: +りはびり リハビリ 名1: +りばーす リバース 代4: +りびじょん リビジョン 名1: +りぴーたー リピーター 名1: +りふ 利府 地名: +りふぁれんす リファレンス 代1: +りふじん 理不尽 名8: +りふと リフト 名6: +りぶーと リブート 名6: +りべつ 離別 名6: +りべん 利便 名1: +りぼん リボン 名1: +りぽーたー リポーター 名1: +りぽーと リポート 名6: +りまわり 利回り 名1: +りみったー リミッター 名1: +りみっと リミット 名1: +りめん 裏面 名1: +りもーと リモート 名1: +りもこん リモコン 名1: +りゃく 略 代4:サ五5: +りゃく 掠 単漢: +りゃくぎ 略儀 名1: +りゃくご 略語 名1: +りゃくしき 略式 名8: +りゃくしょう 略称 名6: +りゃくじ 略字 名1: +りゃくず 略図 名1: +りゃくそう 略装 名1: +りゃくだつ 略奪 名6: +りゃくひつ 略筆 名6: +りゃくれき 略歴 名1: +りゃっき 略記 名6: +りゅう 流 接尾1:助数2: +りゅう 竜 代1: +りゅう 龍 代1: +りゅう 粒 代1: +りゅう 柳 代1: +りゅう 留 代1: +りゅう 劉 単漢: +りゅう 溜 単漢: +りゅう 琉 単漢: +りゅう 硫 単漢: +りゅう 隆 単漢: +りゅう 瑠 単漢: +りゅうい 留意 名7: +りゅういき 流域 名1: +りゅういち 隆一 名前: +りゅういち 竜一 名前: +りゅういち 龍一 名前: +りゅうおう 竜王 地名: +りゅうか 硫化 名6: +りゅうかい 流会 名6: +りゅうかん 流感 名1: +りゅうがく 留学 名6: +りゅうがくせい 留学生 名1: +りゅうがさき 竜ヶ崎 地名: +りゅうがだけ 竜ヶ岳 地名: +りゅうき 隆起 名6: +りゅうぎ 流儀 名1: +りゅうけつ 流血 名6: +りゅうこう 流行 名6: +りゅうさん 硫酸 名1: +りゅうざん 流産 名6: +りゅうし 粒子 名1: +りゅうしつ 流失 名6: +りゅうしゅつ 流出 名6: +りゅうじん 龍神 地名: +りゅうすい 流水 名1: +りゅうすけ 隆介 名前: +りゅうせい 隆盛 名10: +りゅうそく 流速 名1: +りゅうぞう 隆三 名前: +りゅうたい 流体 名1: +りゅうち 留置 名6: +りゅうちょう 流暢 形動4: +りゅうつう 流通 名6: +りゅうどう 流動 名6: +りゅうにゅう 流入 名6: +りゅうにん 留任 名6: +りゅうねん 留年 名6: +りゅうは 流派 名1: +りゅうひょう 流氷 名1: +りゅうほ 留保 名6: +りゅうほく 竜北 地名: +りゅうよう 流用 名6: +りゅうよう 竜洋 地名: +りゅうりょう 流量 名1: +りゆう 理由 名1: +りょ 侶 単漢: +りょ 慮 単漢: +りょ 旅 単漢: +りょ 虜 単漢: +りょ 呂 単漢: +りょう 漁 代3: +りょう 猟 代3: +りょう 寮 代1: +りょう 量 代1:接尾1: +りょう 涼 代1: +りょう 良 代1: +りょう 両 接頭1:助数2: +りょう 料 接尾1: +りょう 陵 代1: +りょう 領 接尾1:サ変: +りょう 了 サ変: +りょう 諒 サ変: +りょう 梁 代1: +りょう 霊 代1: +りょう 糧 代1: +りょう 令 単漢: +りょう 綾 単漢: +りょう 菱 単漢: +りょう 椋 単漢: +りょう 亮 単漢: +りょう 僚 単漢: +りょう 凌 単漢: +りょう 療 単漢: +りょう 瞭 単漢: +りょう 稜 単漢: +りょう 遼 単漢: +りょう 嶺 単漢: +りょう 魎 単漢: +りょうあし 両足 名1: +りょういき 領域 名1: +りょういち 亮一 名前: +りょういち 良一 名前: +りょういん 両院 名1: +りょうえん 良縁 名3: +りょうかい 了解 名7: +りょうかい 領海 名1: +りょうかみ 両神 地名: +りょうかん 量感 名1: +りょうがえ 両替 名6: +りょうがわ 両側 名1: +りょうきち 良吉 名前: +りょうきょく 両極 名1: +りょうきん 料金 名1: +りょうくう 領空 名1: +りょうけ 両家 名3: +りょうけん 猟犬 名1: +りょうこう 良好 名8: +りょうこく 両国 名1: +りょうごく 両国 地名: +りょうさく 良策 名1: +りょうさん 量産 名6: +りょうし 漁師 代2: +りょうし 猟師 代2: +りょうし 量子 名1: +りょうし 両氏 名1: +りょうしき 良識 名1: +りょうしつ 良質 名8: +りょうしゃ 両社 名1: +りょうしゃ 両者 名1: +りょうしゅう 領収 名6: +りょうしょう 了承 名7: +りょうしん 両親 名3: +りょうしん 良心 名4: +りょうじ 療治 名6: +りょうじ 領事 名1: +りょうじ 良二 名前: +りょうじ 良治 名前: +りょうじつ 両日 名1: +りょうじゅう 猟銃 名1: +りょうせい 両性 名1: +りょうせい 良性 名1: +りょうせん 稜線 名1: +りょうぜん 霊山 地名: +りょうた 良太 名前: +りょうたん 両端 名1: +りょうち 領地 名1: +りょうつ 両津 苗字: +りょうつ 両津 地名: +りょうて 両手 名1: +りょうてい 料亭 名1: +りょうてき 量的 形動1: +りょうど 領土 名1: +りょうどう 糧道 名1: +りょうどう 両道 名1: +りょうない 領内 名1: +りょうなん 綾南 地名: +りょうにん 両人 名3: +りょうひ 良否 名1: +りょうぶん 領分 名1: +りょうへい 良平 名前: +りょうほう 両方 名1: +りょうほう 療法 名1: +りょうみ 涼味 名1: +りょうめ 両目 名1: +りょうめん 両面 名1: +りょうゆう 領有 代4: +りょうよう 療養 名7: +りょうよう 両様 名1: +りょうよう 両用 名1: +りょうり 料理 名5: +りょうりつ 両立 名6: +りょうろん 両論 名1: +りょかく 旅客 名1: +りょかん 旅館 名1: +りょく 力 接尾1: +りょく 緑 単漢: +りょくしょく 緑色 名1: +りょくち 緑地 名1: +りょくちゃ 緑茶 名1: +りょけん 旅券 名1: +りょこう 旅行 名7: +りょじょう 旅情 名1: +りょっか 緑化 名6: +りょてい 旅程 名1: +りょひ 旅費 名1: +りよう 利用 名7: +りよう 理容 名1: +りりーす リリース 名6: +りりく 離陸 名6: +りりし 凛々し 形3: +りりつ 利率 名1: +りれー リレー 名1: +りれき 履歴 名1: +りれきしょ 履歴書 名1: +りろん 理論 名4: +りん 燐 代1: +りん 倫 代1: +りん 鈴 代1: +りん 厘 代1:助数2: +りん 輪 助数2: +りん 林 接尾1: +りん 淋 単漢: +りん 琳 単漢: +りん 臨 単漢: +りん 隣 単漢: +りん 鱗 単漢: +りん 麟 単漢: +りん 稟 単漢: +りんか 隣家 名1: +りんかい 臨海 名1: +りんかい 臨界 名1: +りんかく 輪郭 名1: +りんかん 林間 名1: +りんきおうへん 臨機応変 代5: +りんぎ 稟議 名1: +りんぎょう 林業 名1: +りんく リンク 名6: +りんぐ リング 名1: +りんげつ 臨月 名1: +りんこう 輪講 名1: +りんご りんご 代1: +りんごく 隣国 名1: +りんしょう 臨床 名1: +りんじ 臨時 名1: +りんじゅう 臨終 名3: +りんじん 隣人 名1: +りんせき 臨席 名7: +りんせつ 隣接 名6: +りんどう 林道 代1: +りんどう 竜胆 代1: +りんぱ リンパ 名1: +りんや 林野 名1: +りんり 倫理 名1: +る 琉 単漢: +る 留 単漢: +る 屡 単漢: +る 瑠 単漢: +る 婁 単漢: +るーじゅ ルージュ 名1: +るーず ルーズ 代5: +るーちん ルーチン 名1: +るーと ルート 名1: +るーぶる ルーブル 助数2: +るーぷ ループ 代4: +るーまにあ ルーマニア 地名: +るーむ ルーム 名1: +るーる ルール 名1: +るい 類 代1:助数:サ変: +るい 塁 代1: +るい 累 代1: +るい 涙 単漢: +るいけい 累計 代4: +るいご 類語 代1: +るいさん 累算 代4: +るいしょ 類書 名1: +るいしょう 類焼 名6: +るいしん 累進 代4: +るいじ 類似 名6: +るいじ 類字 名1: +るいじょう 累乗 名1: +るいすい 類推 名6: +るいせき 累積 名6: +るいべつ 類別 名6: +るくす ルクス 助数2: +るす 留守 名2: +るすつ 留寿都 地名: +るすばん 留守番 名6: +るっくす ルックス 名1: +るてん 流転 名6: +るびー ルビー 名1: +るふ 流布 名6: +るべしべ 留辺蕊 地名: +るべつ 留別 地名: +るぽるたーじゅ ルポルタージュ 代1: +るみこ 留美子 名前: +るもい 留萌 地名: +るり 瑠璃 名1: +るろう 流浪 名6: +れーがん レーガン 代1: +れーざー レーザー 名1: +れーす レース 名1: +れーだー レーダー 名1: +れーと レート 名1: +れーべる レーベル 代1: +れーる レール 名1: +れい 例 代1:接尾1:助数2: +れい 礼 代3: +れい 霊 代1: +れい 零 代1: +れい 令 代1: +れい レイ 名1: +れい 鈴 代1: +れい 蛎 単漢: +れい 砺 単漢: +れい 戻 単漢: +れい 伶 単漢: +れい 冷 単漢: +れい 励 単漢: +れい 嶺 単漢: +れい 怜 単漢: +れい 玲 単漢: +れい 苓 単漢: +れい 隷 単漢: +れい 麗 単漢: +れい 齢 単漢: +れい 黎 単漢: +れいあうと レイアウト 名6: +れいえん 霊園 名1: +れいか 零下 名1: +れいか 冷夏 名1: +れいかい 例会 名1: +れいかん 霊感 名1: +れいがい 例外 名4: +れいがい 冷害 名1: +れいき 冷気 名1: +れいきゃく 冷却 名6: +れいきん 礼金 名1: +れいぎ 礼儀 名1: +れいぐう 冷遇 名6: +れいけつ 冷血 名8: +れいけつかん 冷血漢 名1: +れいこ 礼子 名前: +れいこ 令子 名前: +れいこ 玲子 名前: +れいこ 怜子 名前: +れいこう 励行 名6: +れいこく 冷酷 名8: +れいこん 霊魂 名1: +れいさい 零細 名8: +れいしょう 例証 名6: +れいしょう 冷笑 名6: +れいじ 例示 名6: +れいじ 零時 名1: +れいじ 玲二 名前: +れいじょう 令嬢 名3: +れいじょう 令状 名1: +れいじょう 礼状 名2: +れいすい 冷水 名1: +れいせい 冷静 名8: +れいせん 冷戦 名1: +れいぜん 霊前 名3: +れいそく 令息 名3: +れいぞうこ 冷蔵庫 名1: +れいたん 冷淡 名8: +れいだい 例題 名1: +れいとう 冷凍 名6: +れいど 零度 名1: +れいにゅう 戻入 名6: +れいねつ 冷熱 名1: +れいねん 例年 名1: +れいふく 礼服 名1: +れいぶん 例文 名1: +れいほう 礼法 名1: +れいほく 苓北 地名: +れいぼう 冷房 名6: +れいれいし 麗々し 形3: +れき 歴 接尾1: +れき 暦 接尾1: +れき 礫 単漢: +れきし 歴史 名4: +れきぜん 歴然 代1:形動2: +れきだい 歴代 名1: +れきほう 歴訪 名6: +れきれき 歴々 名5: +れぎゅらー レギュラー 名1: +れくいえむ レクイエム 名1: +れくちゃー レクチャー 名6: +れこーだ レコーダ 名1: +れこーでぃんぐ レコーディング 名6: +れこーど レコード 名1: +れしーと レシート 名1: +れしーば レシーバ 名1: +れじ レジ 名1: +れじすた レジスタ 名1: +れじゃー レジャー 名1: +れじゅめ レジュメ 名1: +れす レス 名1: +れすとらん レストラン 名1: +れすぽんす レスポンス 名1: +れすりんぐ レスリング 名1: +れせぷしょん レセプション 名1: +れたー レター 名1: +れっか 劣化 名6: +れっき 列記 名6: +れっきょ 列挙 名6: +れっこく 列国 名1: +れっしゃ 列車 名1: +れっしょう 裂傷 名1: +れっせい 劣勢 名8: +れっせい 劣性 名8: +れっせき 列席 名7: +れっとう 列島 名1: +れっとう 劣等 名1: +れっど レッド 名1: +れつ 列 代1:助数: +れつ 劣 代1: +れつ 烈 単漢: +れつ 裂 単漢: +れつあく 劣悪 代5: +れつでん 列伝 名1: +れとると レトルト 名1: +ればー レバー 名1: +れびゅー レビュー 名6: +れぶん 礼文 地名: +れべる レベル 名1: +れぽーと レポート 名6: +れもねーど レモネード 名1: +れもん レモン 代1: +れん 連 接尾1: +れん 鎌 単漢: +れん 廉 単漢: +れん 恋 単漢: +れん 憐 単漢: +れん 漣 単漢: +れん 煉 単漢: +れん 簾 単漢: +れん 練 単漢: +れん 聯 単漢: +れん 蓮 単漢: +れん 錬 単漢: +れんあい 恋愛 名6: +れんか 廉価 名8: +れんかん 連関 名6: +れんが 煉瓦 名1: +れんき 連記 名6: +れんきゅう 連休 名1: +れんきんじゅつ 錬金術 名1: +れんけい 連係 名6: +れんけい 連携 名6: +れんけつ 連結 名6: +れんこ 連呼 名6: +れんこう 連行 名6: +れんこん 蓮根 代1: +れんごう 連合 名6: +れんさ 連鎖 名1: +れんさい 連載 名6: +れんさく 連作 名6: +れんざ 連座 名6: +れんざん 連山 名1: +れんしゅう 練習 名6: +れんしょ 連署 名6: +れんしょう 連勝 名6: +れんじ レンジ 名1: +れんじつ 連日 代6: +れんせつ 連接 代4: +れんそう 連想 名6: +れんぞく 連続 名6: +れんたい 連帯 名6: +れんたい 連隊 名1:助数: +れんたい 連体 名1: +れんたつ 練達 名6: +れんたる レンタル 名6: +れんだ 連打 代4: +れんちゅう 連中 名1: +れんとう 連騰 代4: +れんとげん レントゲン 名1: +れんどう 連動 名6: +れんぱ 連破 名6: +れんぱい 連敗 名6: +れんぱつ 連発 名6: +れんぽう 連邦 名1: +れんぽう 連峰 名1: +れんめい 連盟 名1: +れんめい 連名 名1: +れんや 連夜 名1: +れんよう 連用 名6: +れんらく 連絡 名7: +れんりつ 連立 名6: +ろ 魯 代1: +ろ 櫓 代1: +ろ 路 接尾1: +ろ 炉 接尾1: +ろ 鷺 単漢: +ろ 櫨 単漢: +ろ 呂 単漢: +ろ 賂 単漢: +ろ 露 単漢: +ろ 蕗 単漢: +ろー ロー 名1: +ろーかる ローカル 名8: +ろーず ローズ 名1: +ろーど ロード 名6: +ろーま ローマ 地名: +ろーまじ ローマ字 名1: +ろーれべる ローレベル 名8: +ろーん ローン 名1: +ろう 労 代4:サ五1: +ろう 廊 代1: +ろう 弄 サ変:サ五1: +ろう 楼 代1: +ろう 漏 代1: +ろう 牢 代1: +ろう 老 代1:接頭1: +ろう 聾 代4: +ろう 蝋 代1: +ろう 滝 単漢: +ろう 糧 単漢: +ろう 婁 単漢: +ろう 朗 単漢: +ろう 榔 単漢: +ろう 浪 単漢: +ろう 狼 単漢: +ろう 篭 単漢: +ろう 郎 単漢: +ろう 籠 単漢: +ろうあ 聾唖 名1: +ろうえい 漏洩 名6: +ろうか 廊下 名1: +ろうか 老化 名6: +ろうがん 老眼 名1: +ろうきゅう 老朽 名6: +ろうきょく 浪曲 名1: +ろうく 労苦 名1: +ろうご 老後 名1: +ろうごく 牢獄 名1: +ろうさい 労災 名1: +ろうさく 労作 名6: +ろうし 労使 名1: +ろうしゅつ 漏出 名6: +ろうしょう 労相 名1: +ろうじゃく 老弱 名8: +ろうじん 老人 名1: +ろうすい 漏水 名6: +ろうすい 老衰 名6: +ろうそ 労組 名1: +ろうちん 労賃 名1: +ろうでん 漏電 名6: +ろうどう 労働 名6: +ろうどうしょう 労働省 名1: +ろうどく 朗読 名6: +ろうにゃく 老若 名1: +ろうにん 浪人 名1: +ろうはい 老廃 名6: +ろうば 老婆 名1: +ろうばい 狼狽 名6: +ろうひ 浪費 名6: +ろうほう 朗報 名3: +ろうむ 労務 名1: +ろうりょく 労力 名1: +ろうれい 老齢 名4: +ろうれん 老練 名8: +ろかた 路肩 名1: +ろく 録 接尾1:サ変: +ろく 禄 単漢: +ろく 漉 単漢: +ろく 鹿 単漢: +ろく 緑 単漢: +ろく 麓 単漢: +ろく 肋 単漢: +ろくおん 録音 名6: +ろくが 録画 名6: +ろくごう 六郷 地名: +ろくせい 鹿西 地名: +ろくな ろくな 連体: +ろくのへ 六戸 地名: +ろくまく 肋膜 名1: +ろくろ ろくろ 名1: +ろくろう 六郎 名前: +ろぐ ログ 名1: +ろぐいん ログイン 名6: +ろけっと ロケット 名1: +ろけん 露見 名6: +ろこつ 露骨 名8: +ろご ロゴ 名1: +ろさんぜるす ロサンゼルス 地名: +ろし 濾紙 名1: +ろしあ ロシア 地名: +ろしゅつ 露出 名6: +ろじ 路地 名1: +ろじ 露地 名1: +ろじっく ロジック 名1: +ろじょう 路上 名1: +ろせん 路線 名1: +ろっかー ロッカー 名1: +ろっきーど ロッキード 企業: +ろっく ロック 名6: +ろっこう 六甲 地名: +ろっこうさん 六甲山 代1: +ろっこつ 肋骨 名1: +ろって ロッテ 企業: +ろっぽう 六法 名1: +ろっぽんぎ 六本木 地名: +ろつかしょ 六ヶ所 地名: +ろてん 露天 名1: +ろてん 露店 名1: +ろばん 路盤 名1: +ろびんそん ロビンソン 名1: +ろぼっと ロボット 名4: +ろむ ロム 名1: +ろめん 路面 名1: +ろりこん ロリコン 名1: +ろん 論 接尾1:ザ変: +ろんがい 論外 名8: +ろんきゅう 論及 名6: +ろんきゅう 論究 名6: +ろんきょ 論拠 名1: +ろんぎ 論議 名6: +ろんぐ ロング 名8: +ろんこく 論告 名6: +ろんご 論語 名1: +ろんし 論旨 名1: +ろんしょう 論証 名6: +ろんじゅつ 論述 名6: +ろんそう 論争 名6: +ろんちょう 論調 名1: +ろんてん 論点 名1: +ろんどん ロンドン 地名: +ろんぴょう 論評 名6: +ろんぶん 論文 名1: +ろんぽう 論法 名1: +ろんり 論理 名4: +わ 沸 カ五3: +わ 湧 カ五1: +わ 涌 カ五1: +わ 割 ラ五4: +わ 和 代1: +わ 輪 代1: +わ 環 代1: +わ 話 助数: +わ 羽 助数2: +わ 把 助数2: +わ 我 代1: +わ 倭 代1: +わーく ワーク 名1: +わーど ワード 名1: +わーぷ ワープ 名6: +わーぷろ ワープロ 名1: +わーるど ワールド 名1: +わい 賄 単漢: +わい 歪 単漢: +わい 隈 単漢: +わいあー ワイアー 名1: +わいきょく 歪曲 名6: +わいしゃつ ワイシャツ 名1: +わいど ワイド 名8: +わいぱー ワイパー 名1: +わいや ワイヤ 名1: +わいやー ワイヤー 名1: +わいるど ワイルド 名8: +わいろ 賄賂 名1: +わいん ワイン 名1: +わか 若 接頭1:形10: +わか わか ラ五8: +わか 判 ラ五4: +わか 分か タ五7:ラ五4: +わか 沸か サ五3: +わか 和歌 名1: +わかい 和解 代4: +わかい 若井 苗字: +わかがえ 若返 ラ五7: +わかくさ 若草 名1: +わかこ 和歌子 名前: +わかさ 若桜 地名: +わかちがき わかち書き 名1: +わかつき 若月 苗字: +わかて 若手 名1: +わかば 若葉 名1: +わかばやし 若林 苗字: +わかまつ 若松 苗字: +わかまつ 若松 地名: +わかみ 若美 地名: +わかみや 若宮 苗字: +わかみや 若宮 地名: +わかめ 若布 代1: +わかもの 若者 名1: +わかやなぎ 若柳 地名: +わかやま 若山 苗字: +わかやま 和歌山 地名: +わかれ 別れ 一段4: +わかれ 分かれ 一段2: +わかわかし 若々し 形3: +わが わが 連体: +わが 我が 連体: +わが 和賀 地名: +わがくに 我が国 名1: +わがし 和菓子 名1: +わがまま わがまま 代5: +わがまま 我侭 代5: +わがや 我家 代1: +わき 脇 代1: +わきあいあい 和気藹々 形動2: +わきた 沸き立 タ五5: +わきのさわ 脇野沢 地名: +わきばら 脇腹 代1: +わきまえ 弁え 一段1: +わきみ わき見 名6: +わきみち 脇道 名1: +わぎ 和議 名1: +わぎ 和木 地名: +わぎゅう 和牛 名1: +わぎり 輪切り 名1: +わく 枠 代1: +わく 惑 単漢: +わくがい 枠外 名1: +わくぐみ 枠組 名1: +わくせい 惑星 名1: +わくちん ワクチン 代3: +わくない 枠内 名1: +わくや 涌谷 地名: +わけ わけ 代1: +わけ 分け 接尾1:一段2: +わけ 訳 代1: +わけ 和気 地名: +わけめ 分け目 名1: +わこーる ワコール 企業: +わこう 和光 地名: +わこうど 若人 名1: +わごう 和合 代4: +わごん ワゴン 名1: +わさい 和裁 名1: +わざ 技 代1: +わざ 業 代1: +わざ 術 単漢: +わざと わざと 副1: +わざわい 災い 代4: +わざわざ わざわざ 副1: +わし 鷲 代1: +わし 和紙 代1: +わしお 鷲尾 苗字: +わしき 和式 名1: +わしつ 和室 名1: +わしま 和島 地名: +わしみや 鷲宮 地名: +わしょく 和食 名1: +わしんとん ワシントン 地名: +わじき 鷲敷 地名: +わじま 輪島 苗字: +わじま 輪島 地名: +わすれ 忘れ 一段4: +わすれさ 忘れ去 ラ五5: +わずか わずか 形動9: +わずか 僅か 形動9: +わずら 患 ワ五7: +わずら 煩 ワ五7: +わずらわし 煩わし 形5: +わせ 早生 名1: +わせ 早稲 名1: +わせだ 早稲田 地名: +わた わた ラ五8: +わた 渡 サ五8:ラ五8: +わた 綿 代1: +わた 棉 単漢: +わたくし 私 代1: +わたくしごと 私事 名1: +わたし 私 代1: +わたし わたし 代1: +わたしたち 私たち 代1: +わたしども 私ども 代1: +わたしぶね 渡し船 代1: +わたなべ 渡辺 苗字: +わたなべ 渡辺 地名: +わたなべ 渡部 苗字: +わたぬき 綿貫 苗字: +わたべ 渡部 苗字: +わたらい 度会 地名: +わたり 亘理 地名: +わたりどり 渡り鳥 代1: +わたる 亘 名前: +わたる 亙 名前: +わだ 和田 苗字: +わだ 和田 地名: +わだい 話題 名1: +わだち 轍 代1: +わだやま 和田山 地名: +わち 和知 地名: +わっかない 稚内 地名: +わっさむ 和寒 地名: +わっと ワット 助数2: +わづか 和束 地名: +わどまり 和泊 地名: +わな 罠 代1: +わに 鰐 代1: +わのうち 輪之内 地名: +わび 詫び 一段4: +わふう 和風 名1: +わふく 和服 名1: +わぶん 和文 名1: +わへい 和平 名1: +わほう 話法 名1: +わぼく 和睦 名6: +わやく 和訳 名6: +わよう 和洋 名1: +わら 笑 ワ五8: +わら 藁 代1: +わら 和良 地名: +わら 稿 単漢: +わらび 蕨 地名: +わらべ 童 代1: +わり 割 助数2:接尾1: +わりあい 割合 名1: +わりあて 割り当て 一段3: +わりあて 割当 名1: +わりいん 割印 代4: +わりかん 割り勘 名1: +わりき 割り切 ラ五7: +わりこ 割り込 マ五7: +わりざん 割算 名1: +わりだか 割高 代5: +わりつけ 割り付け 一段3: +わりばし 割箸 代1: +わりび 割り引 カ五7: +わりびき 割引 名6:助数2: +わりふ 割り振 ラ五7: +わりまし 割増し 代4:助数2: +わりもど 割り戻 サ五7: +わりもどし 割戻し 名1: +わりやす 割安 代5: +わる 悪 代1:接頭1:形5: +わる ÷ 単漢: +わるぎ 悪気 代1: +わるくち 悪口 代1: +わるびれ 悪びれ 一段1: +わるもの 悪者 名1: +われ 割れ 一段3: +われ 我 代1: +われめ 割れ目 代1: +われら 我ら 代1: +われら われら 代1: +われわれ 我々 代1: +わん 湾 接尾1: +わん 椀 名2: +わん 碗 名2: +わん 腕 代1: +わんがん 湾岸 名1: +わんきょく 湾曲 名6: +わんしょう 腕章 名1: +わんたん ワンタン 代1: +わんない 湾内 名1: +わんぱく 腕白 名8: +わんまん ワンマン 名8: +わんりょく 腕力 名1: diff --git a/dict/include/sj_const.h b/dict/include/sj_const.h new file mode 100644 index 0000000..6462459 --- /dev/null +++ b/dict/include/sj_const.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_const.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:24 $ + */ + + + + + +#ifndef _CONST_ +#define _CONST_ + +#define MainSegmentLength 2048 +#define MainIndexLength 2048 +#define MainIndexNumber 512 + +#define MaxYomiLength 32 +#define MaxKanjiLength 32 +#define MaxHinsiNumber 16 +#define MaxAtrNumber 16 +#define MaxJosiNumber 16 + +#define MaxKnjAskNumber 16 +#define MaxYomiAskNumber 16 + +#define DouonBlkSizeNumber 3 + +#define DouonBlkTerm 0xff +#define HinsiBlkTerm 0xff + +#define NormalKanjiMask 0x7f +#define SS3Kanji 0x0080 +#define ZenHiraAssyuku 0x80 +#define OffsetAssyuku 0x90 +#define ZenKataAssyuku 0xa0 +#define AiAttribute 0xb0 +#define KanjiAssyuku 0xc0 +#define LeadingHankaku 0xd0 +#define KanjiStrEnd 0x00 +#define IsAssyuku 0x80 +#define AssukuUse2byte 0x90 +#define KnjAssyukuMask 0x0f +#define KanjiCodeMask 0x0f +#define KanjiModeMask 0xf0 +#define AtrMsKanjiOfs 0xc0c0 + + +#define MaxHindoNumber 2000 +#define MaxOffsetNumber 1000 + +#define IllegalFormat "\245\325\245\251\241\274\245\336\245\303\245\310\244\254\260\333\276\357\244\307\244\271" +#define TooLongYomi "\306\311\244\337\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271" +#define TooLongKanji "\264\301\273\372\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271" +#define TooLongHinsi "\311\312\273\354\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271" +#define TooLongGroup "\245\260\245\353\241\274\245\327\314\276\244\254\260\333\276\357\244\307\244\271" +#define TooLongJosi "\275\365\273\354\312\270\273\372\316\363\244\254\260\333\276\357\244\307\244\271" +#define BadHinsi "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\311\312\273\354\244\307\244\271" +#define BadGroup "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\245\260\245\353\241\274\245\327\244\307\244\271" +#define BadJosi "\305\320\317\277\244\265\244\354\244\306\244\244\244\312\244\244\275\365\273\354\244\307\244\271" +#define NoYomiString "\306\311\244\337\312\270\273\372\316\363\244\254\274\350\306\300\244\307\244\255\244\336\244\273\244\363" +#define NoKanjiString "\264\301\273\372\312\270\273\372\316\363\244\254\274\350\306\300\244\307\244\255\244\336\244\273\244\363" +#define TooManyAtr "\302\260\300\255\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271" +#define TooManyHinsi "\311\312\273\354\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271" +#define TooManyJosi "\275\365\273\354\244\316\277\364\244\254\302\277\244\271\244\256\244\336\244\271" +#define NoDataInMain "\245\341\245\244\245\363\274\255\275\361\244\313\302\270\272\337\244\267\244\336\244\273\244\363" +#define TooManyTarget "\311\312\273\354\244\362\243\261\244\304\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244" + +#define HinsiTankan cnvhinsi("\303\261\264\301") + +#define FALSE 0 +#define TRUE (!FALSE) + +#define DIVLIST 1 +#define ASSYUKUREC 2 +#define STRING 3 +#define HINDOREC 4 +#define OFFSETREC 5 +#define KANJIREC 6 +#define HINSIREC 7 +#define DOUONREC 8 + +#endif diff --git a/dict/include/sj_macro.h b/dict/include/sj_macro.h new file mode 100644 index 0000000..404ec91 --- /dev/null +++ b/dict/include/sj_macro.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_macro.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:25 $ + */ + + + + +#include +#include + +#ifndef _MACRO_ +#define _MACRO_ + +#define Isblank(c) ((c) == 0x20 || (c) == 0x09 || (c) == 0xa1a1) + +#define Isillegal(c) ((c) < 0x20) + +#endif diff --git a/dict/include/sj_struct.h b/dict/include/sj_struct.h new file mode 100644 index 0000000..5cd47c0 --- /dev/null +++ b/dict/include/sj_struct.h @@ -0,0 +1,102 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_struct.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:26 $ + */ + + + + +#include "sj_const.h" + +#ifndef _STRUCT_ +#define _STRUCT_ + + + +typedef struct kanji_rec { + int klen; + u_char *kptr; + int alen; + u_char *aptr; + struct kanji_rec *knext; +} KanjiRec; + + + +typedef struct hinsi_rec { + int hinsi; + KanjiRec *krec; + struct hinsi_rec *hnext; +} HinsiRec; + + + +typedef struct douon_rec { + u_char *yptr; + int dlen; + int hrec_num; + HinsiRec *hrec; + struct douon_rec *dnext; +} DouonRec; + + + +typedef struct hindo_rec { + int klen; + u_char *kptr; + int exist; + int hindo; + + int offset; + + struct hindo_rec *anext; + struct assyuku_rec *arec; +} HindoRec; + + + +typedef struct assyuku_rec { + int len; + HindoRec *nrec; + struct assyuku_rec *anext; +} AssyukuRec; + + + +typedef struct offset_rec { + int klen; + u_char *kptr; + int offset; +} OffsetRec; + +#endif diff --git a/dict/tool/GramTable b/dict/tool/GramTable new file mode 100644 index 0000000..fbe2fb0 --- /dev/null +++ b/dict/tool/GramTable @@ -0,0 +1,198 @@ +"カ五1", 91, +"カ五2", 101, +"カ五3", 131, +"カ五4", 141, +"カ五5", 111, +"カ五6", 121, +"カ五7", 151, +"カ五8", 161, +"カ五音便", 185, +"カ変仮", 181, +"カ変終体", 180, +"カ変未", 178, +"カ変命", 182, +"カ変用", 179, +"ガ五1", 92, +"ガ五2", 102, +"ガ五3", 132, +"ガ五4", 142, +"ガ五5", 112, +"ガ五6", 122, +"ガ五7", 152, +"ガ五8", 162, +"サ五1", 93, +"サ五2", 103, +"サ五3", 133, +"サ五4", 143, +"サ五5", 113, +"サ五6", 123, +"サ五7", 153, +"サ五8", 163, +"サ変", 80, +"サ変仮", 175, +"サ変終体", 174, +"サ変未1", 171, +"サ変未2", 172, +"サ変未用", 173, +"サ変命1", 176, +"サ変命2", 177, +"ザ変", 81, +"タ五1", 94, +"タ五2", 104, +"タ五3", 134, +"タ五4", 144, +"タ五5", 114, +"タ五6", 124, +"タ五7", 154, +"タ五8", 164, +"ナ五", 95, +"バ五1", 96, +"バ五2", 105, +"バ五3", 135, +"バ五4", 145, +"バ五5", 115, +"バ五6", 125, +"バ五7", 155, +"バ五8", 165, +"マ五1", 97, +"マ五2", 106, +"マ五3", 136, +"マ五4", 146, +"マ五5", 116, +"マ五6", 126, +"マ五7", 156, +"マ五8", 166, +"ラ五1", 98, +"ラ五2", 107, +"ラ五3", 137, +"ラ五4", 147, +"ラ五5", 117, +"ラ五6", 127, +"ラ五7", 157, +"ラ五8", 167, +"ワ五1", 99, +"ワ五2", 108, +"ワ五3", 138, +"ワ五4", 148, +"ワ五5", 118, +"ワ五6", 128, +"ワ五7", 158, +"ワ五8", 168, +"挨拶", 187, +"衣服", -11, +"一括", 200, +"一段1", 90, +"一段2", 100, +"一段3", 130, +"一段4", 140, +"雨", -21, +"音楽", -20, +"海", -31, +"開閉", -4, +"活動", -5, +"感動", 28, +"企業", 23, +"魚", -14, +"形1", 60, +"形10", 69, +"形11", 70, +"形2", 61, +"形3", 62, +"形4", 63, +"形5", 64, +"形6", 65, +"形7", 66, +"形8", 67, +"形9", 68, +"形動1", 71, +"形動2", 72, +"形動3", 73, +"形動4", 74, +"形動5", 75, +"形動6", 76, +"形動7", 77, +"形動8", 78, +"形動9", 79, +"建築", -13, +"県区", 25, +"湖", -33, +"国", -12, +"試合", -10, +"事件", -27, +"時", -25, +"酒", -23, +"州", -29, +"出版", -18, +"所", -2, +"助数", 29, +"助数2", 54, +"乗物", -17, +"植物", -6, +"食物", -16, +"身体", -8, +"人", -1, +"数詞", 30, +"数詞2", 55, +"接続", 27, +"接頭1", 31, +"接頭2", 32, +"接頭3", 33, +"接頭4", 34, +"接頭5", 35, +"接尾1", 36, +"接尾2", 37, +"接尾3", 38, +"接尾4", 39, +"接尾5", 40, +"接尾6", 41, +"接尾7", 42, +"接尾8", 43, +"接尾9", 44, +"川", -30, +"組織", -3, +"贈物", -26, +"代1", 12, +"代2", 13, +"代3", 14, +"代4", 15, +"代5", 16, +"代6", 17, +"単漢", 189, +"地位", -7, +"地名", 24, +"丁寧1", 183, +"丁寧2", 184, +"電車", -34, +"都市", -24, +"島", -32, +"動物", -9, +"特殊形容", 188, +"特殊副", 186, +"病気", -15, +"苗字", 21, +"副1", 45, +"副2", 46, +"副3", 47, +"副4", 48, +"副5", 49, +"副6", 50, +"副7", 51, +"副8", 52, +"副9", 53, +"文字", -19, +"法", -35, +"名1", 1, +"名10", 10, +"名11", 11, +"名2", 2, +"名20", 18, +"名3", 3, +"名4", 4, +"名5", 5, +"名6", 6, +"名7", 7, +"名8", 8, +"名9", 9, +"名前", 22, +"鳴物", -28, +"連体", 26 diff --git a/dict/tool/Imakefile b/dict/tool/Imakefile new file mode 100644 index 0000000..e6c22df --- /dev/null +++ b/dict/tool/Imakefile @@ -0,0 +1,79 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.4 $ + * $SonyDate: 1997/01/23 11:20:51 $ + */ + +/* + * Change some make rules. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#include "../../sj3.tmpl" + +INCLUDES = -I../include -I../../include + +INSTFLAGS = -o $(SJ3OWNER) -g $(SJ3GROUP) -m 755 + +SRCS = \ + char.c \ + cnvhinsi.c \ + file.c \ + global.c \ + hindo.c \ + knjcvt.c \ + makedict.c \ + makelist.c \ + makeseg.c \ + memory.c \ + offset.c \ + readline.c \ + string.c + +OBJS = \ + char.o \ + cnvhinsi.o \ + file.o \ + global.o \ + hindo.o \ + knjcvt.o \ + makedict.o \ + makelist.o \ + makeseg.o \ + memory.o \ + offset.o \ + readline.o \ + string.o + +AllTarget(sj3mkdic) +NormalProgramTarget(sj3mkdic,$(OBJS),,,) +DependTarget() +InstallProgramWithFlags(sj3mkdic,$(SJ3BINDIR),$(INSTFLAGS)) diff --git a/dict/tool/char.c b/dict/tool/char.c new file mode 100644 index 0000000..94e726c --- /dev/null +++ b/dict/tool/char.c @@ -0,0 +1,283 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: char.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:32 $ + */ + + +#include +#include +#include "sj_euc.h" +#include "sj_const.h" + + + +cnvyomi(code) +int code; +{ + register u_short hh; + register u_char high; + register u_char low; + + hh = ((code >> 16) & 0xffff); + high = ((code >> 8) & 0xff); + low = (code & 0xff); + + if (!hh) { + if (high == 0xa1) { + switch (low) { + case 0xbc: return 1; + case 0xf4: return 2; + case 0xf7: return 3; + case 0xa7: return 4; + } + } + else if (high == 0xa2) { + if (low == 0xa9) + return 4; + } + else if (high == 0xa3) { + if (low < 0xb0) + ; + else if (low <= 0xb9) + return(low - 0xb0 + 0x10); + else if (low < 0xc0) + ; + else if (low <= 0xda) + return(low - 0xc1 + 0x1A); + else if (low < 0xe1) + ; + else if (low <= 0xfa) + return(low - 0xe1 + 0x34); + } + else if (high == 0xa4) { + if (low < 0xa1) + ; + else if (low <= 0xf3) + return(low - 0xa1 + 0x4e); + } + else if (high == 0xa5) { + switch (low) { + case 0xf4: return 0xa1; + case 0xf5: return 0xa2; + case 0xf6: return 0xa3; + } + } + } + + return 0; +} + + + +h2kcode(code) +int code; +{ + register u_short hh; + register u_char high; + register u_char low; + + hh = ((code >> 16) & 0xffff); + high = ((code >> 8) & 0xff); + low = (code & 0xff); + + if (!hh) { + if (high != 0xa4) + return code; + else + return (code + 0x0100); + } +} + + + +codesize(code) +u_char code; +{ + switch (code&KanjiModeMask) { + case ZenHiraAssyuku: + case ZenKataAssyuku: + case KanjiAssyuku: + case KanjiStrEnd: + return 1; + case LeadingHankaku: + case OffsetAssyuku: + case AiAttribute: + return 2; + default: + return 2; + } +} + + + +output_knj(fp, p, l) +FILE *fp; +register u_char *p; +register int l; +{ + while (l > 0) { + switch (*p & KanjiModeMask) { + case ZenHiraAssyuku: + fprintf(fp, "\244\322%d", (*p++ & 0x0f) + 1); + l--; + break; + case ZenKataAssyuku: + fprintf(fp, "\245\253%d", (*p++ & 0x0f) + 1); + l--; + break; + case KanjiAssyuku: + fprintf(fp, "\260\265%1x", (*p++ & 0x0f)); + l--; + break; + case LeadingHankaku: +#ifndef UseHankakuInDict + l = 0; + fprintf(stderr, "\244\252\244\253\244\267\244\244"); +#else + fputc(*p++, fp); l--; + fputc(*p++, fp); l--; +#endif + break; + case OffsetAssyuku: + fprintf(fp, "ofs%1x", (*p++ & 0x0f)); + l--; + fprintf(fp, "%02x", *p++); l--; + break; + case AiAttribute: + fprintf(fp, "\302\260%1x", (*p++ & 0x0f)); + l--; + fprintf(fp, "%02x", *p++); l--; + break; + case KanjiStrEnd: + p++; l--; + break; + default: + if (p[1] & 0x80) + fputc(SS3, fp); + fputc((*p | 0x80), fp); l--; p++; + fputc((*p | 0x80), fp); l--; p++; + + } + } +} + + + +output_str(fp, p) +FILE *fp; +char *p; +{ + while (*p) { fputc(*p, fp); p++; } +} + + + +output_int(fp, p) +FILE *fp; +int *p; +{ + while (*p) { + if (*p < 0x100) { + fputc(*p, fp); p++; + } + else if (*p < 0x10000) { + fputc((*p >> 8) & 0xff, fp); + fputc(*p & 0xff, fp); p++; + } + else if (*p < 0x1000000) { + fputc((*p >> 16) & 0xff, fp); + fputc((*p >> 8) & 0xff, fp); + fputc(*p & 0xff, fp); p++; + } + else { + fputc((*p >> 24) & 0xff, fp); + fputc((*p >> 16) & 0xff, fp); + fputc((*p >> 8) & 0xff, fp); + fputc(*p & 0xff, fp); p++; + } + } +} + + + +yomi2zen(code) +int code; +{ + static char num[] = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' + }; + + switch (code) { + case 0x01: return 0xa1bc; + case 0x02: return 0xa1f4; + case 0x03: return 0xa1f7; + case 0x04: return 0xa2a9; + case 0xa1: return 0xa5f4; + case 0xa2: return 0xa5f5; + case 0xa3: return 0xa5f6; + default: break; + } + + if (code < 0x10) + ; + + else if (code < 0x1a) + return(0xa300 + code - 0x10 + 0xb0); + + else if (code < 0x34) + return(0xa300 + code - 0x1a + 0xc1); + + else if (code < 0x4e) + return(0xa300 + code - 0x34 + 0xe1); + + else if (code < 0xa1) + return(0xa400 + code - 0x4e + 0xa1); + + return ((num[(code >> 4) & 0x0f] << 8) | num[code & 0x0f]); +} + + + +output_yomi(fp, p) +FILE *fp; +u_char *p; +{ + int i; + + while (*p) { + i = yomi2zen(*p++); + fputc((i >> 8) & 0xff, fp); + fputc(i & 0xff, fp); + } +} diff --git a/dict/tool/cnvhinsi.c b/dict/tool/cnvhinsi.c new file mode 100644 index 0000000..02a178f --- /dev/null +++ b/dict/tool/cnvhinsi.c @@ -0,0 +1,118 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: cnvhinsi.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1996/05/27 06:59:47 $ + */ + + +#include +#include + + + +struct gram_code { + char *name; + int code; +} gramtbl[] = { + + +#include "GramTable" + +}; + +#define GramMax (sizeof(gramtbl)/sizeof(struct gram_code) - 1) + +int u_strcmp(a, b) +u_char *a, *b; +{ + if (!a || !b) return 0; + + while (*a && *b) { + if (*a < *b) return -1; + if (*a > *b) return 1; + a++; + b++; + } + if (!*a && !*b) return 0; + if (!*a) return -1; + return 1; +} + + +int cnvhinsi(buf) +u_char *buf; +{ + register int min; + register int max; + register int mid; + register int i; + + min = 0; + max = GramMax; + while (min <= max) { + + mid = (min + max) / 2; + + + i = u_strcmp(buf, gramtbl[mid].name); + + + if (i < 0) { + max = mid - 1; + } + + else if (i > 0) { + min = mid + 1; + } + + else { + return(gramtbl[mid].code); + } + } + + + return 0; +} + + + +char *hinsi_str(code) +int code; +{ + int i; + + for (i = 0 ; i <= GramMax ; i++) { + if (gramtbl[i].code == code) return gramtbl[i].name; + } + + return "Err"; +} diff --git a/dict/tool/file.c b/dict/tool/file.c new file mode 100644 index 0000000..2cf968b --- /dev/null +++ b/dict/tool/file.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: file.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1995/02/03 07:38:32 $ + */ + + +#include +#include +#include + +char *Malloc(); + +typedef struct filelist { + FILE *fp; + char *fname; + struct filelist *next; +} FileList; + +static FileList *flist = NULL; + +static char *get_fname(fp) +FILE *fp; +{ + FileList *p; + + for (p = flist ; p ; p = p -> next) + if (p -> fp == fp) return p -> fname; + return "some file"; +} + +FILE *Fopen(filename, type) +char *filename, *type; +{ + FILE *fp; + char *p; + FileList *fl; + + if (!(fp = fopen(filename, type))) { + fprintf(stderr, "Can't open %s mode \"%s\"\n", filename, type); + exit(1); + } + + fl = (FileList *)Malloc(sizeof(*fl)); + fl -> fname = Malloc(strlen(filename) + 1); + strcpy(fl -> fname, filename); + fl -> fp = fp; + fl -> next = flist; + + return fp; +} + +Fclose(fp) +FILE *fp; +{ + FileList *p, *q; + + if (fclose(fp) == EOF) { + fprintf(stderr, "Close error in %s\n", get_fname(fp)); + exit(1); + } + + for (p = flist, q = NULL ; p ; q = p, p = p -> next) { + if (p -> fp == fp) { + if (q) + q -> next = p -> next; + else + flist = p -> next; + free(p -> fname); + free(p); + break; + } + } +} + +Fseek(fp, ofs, ptr) +FILE *fp; +long ofs; +int ptr; +{ + if (fseek(fp, ofs, ptr) == 0) return 0; + + fprintf(stderr, "Seek error in %s\n", get_fname(fp)); + exit(1); +} + +Ftell(fp) +FILE *fp; +{ + return ftell(fp); +} + +Fsize(filename) +char *filename; +{ + struct stat buf; + +#if defined(__NetBSD__) || defined(__FreeBSD__) + if (stat(filename, &buf) == 0) return (long)buf.st_size; +#else + if (stat(filename, &buf) == 0) return buf.st_size; +#endif + + fprintf(stderr, "Stat error in %s\n", filename); + exit(1); +} + +Fread(p, s, n, fp) +char *p; +int s, n; +FILE *fp; +{ + if (fread(p, s, n, fp) == n) return n; + + fprintf(stderr, "Read error in %s\n", get_fname(fp)); + exit(1); +} + +Fwrite(p, s, n, fp) +char *p; +int s, n; +FILE *fp; +{ + if (fwrite(p, s, n, fp) == n) return n; + + fprintf(stderr, "Write error in %s\n", get_fname(fp)); + exit(1); +} + +Fgetc(fp) +FILE *fp; +{ + return fgetc(fp); +} + +Fflush(fp) +FILE *fp; +{ + fflush(fp); +} diff --git a/dict/tool/global.c b/dict/tool/global.c new file mode 100644 index 0000000..deeae75 --- /dev/null +++ b/dict/tool/global.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: global.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:35 $ + */ + + +#include +#include +#include "sj_struct.h" + +DouonRec *douon_ptr = NULL; +int douon_num = 0; +int yomi_len = 0; +int hinsi_num = 0; +int kanji_len = 0; + +HindoRec *hindo[MaxHindoNumber]; +int hindo_num = 0; + +OffsetRec *ofsrec[MaxOffsetNumber]; +int ofsrec_num = 0; + +AssyukuRec *assyuku = NULL; + +HindoRec *askknj[MaxKnjAskNumber]; +int askknj_num = 0; + +int kanji_num = 0; diff --git a/dict/tool/hindo.c b/dict/tool/hindo.c new file mode 100644 index 0000000..dd6694d --- /dev/null +++ b/dict/tool/hindo.c @@ -0,0 +1,643 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: hindo.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/08/17 01:50:26 $ + */ + + + + + +#include +#include +#include "sj_struct.h" + +extern HindoRec *hindo[]; +extern int hindo_num; +extern AssyukuRec *assyuku; +extern HindoRec *askknj[]; +extern int askknj_num; +extern int kanji_num; + +OffsetRec *real_ofsrec(); + + + +check_hindo(ptr, len) +u_char *ptr; +int len; +{ + int low, high, mid; + int i; + + + if (hindo_num <= 0) return 0; + + + low = 0; high = hindo_num - 1; + while (low <= high) { + mid = (low + high) / 2; + i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, ptr, len); + if (i > 0) + high = mid - 1; + else if (i < 0) + low = ++mid; + else + return(hindo[mid]->exist + hindo[mid]->hindo); + } + + return 0; +} + + + +static AssyukuRec *makeassyuku(num) +int num; +{ + AssyukuRec *arec; + + + arec = (AssyukuRec *)Malloc(sizeof(AssyukuRec)); + if (!arec) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n"); + exit(1); + } + + + arec -> len = num; + arec -> nrec = NULL; + arec -> anext = NULL; + + return arec; +} + + + +static assyuku_len(hrec) +HindoRec *hrec; +{ + int org; + int old; + int new; + OffsetRec *p; + + + if (((*(hrec->kptr) & KanjiModeMask) == OffsetAssyuku) && + (hrec->klen == 2)) { + + p = real_ofsrec(hrec -> kptr); + + + org = check_hindo(p -> kptr, p -> klen); + + + + old = p->klen * org + 2 * (hrec->exist + hrec->hindo); + + + + new = p->klen + (hrec->exist + hrec->hindo + org); + } + + else { + + old = hrec -> klen * (hrec -> exist + hrec -> hindo); + + + new = hrec -> klen + (hrec -> exist + hrec -> hindo); + } + + + return (old - new); +} + + + +static void set_assyuku(hrec) +HindoRec *hrec; +{ + register AssyukuRec *arec; + register AssyukuRec *aprev; + register int len; + + + len = assyuku_len(hrec); + + + if (len <= 0) return; + + + arec = assyuku; aprev = NULL; + while (arec) { + + if (arec -> len == len) { + + hrec -> arec = arec; + hrec -> anext = arec -> nrec; + arec -> nrec = hrec; + return; + } + + else if (arec -> len < len) + break; + + aprev = arec; + arec = arec -> anext; + } + + + arec = makeassyuku(len); + + + hrec -> anext = NULL; + hrec -> arec = arec; + arec -> nrec = hrec; + + + if (aprev) { + arec -> anext = aprev -> anext; + aprev -> anext = arec; + } + else { + arec -> anext = assyuku; + assyuku = arec; + } +} + + + +static void reset_assyuku(hrec) +HindoRec *hrec; +{ + AssyukuRec *arec; + AssyukuRec *aptr; + AssyukuRec *aprev; + HindoRec *hptr; + HindoRec *hprev; + + arec = hrec -> arec; + + + if (!arec) return; + hrec -> arec = NULL; + + + hptr = arec -> nrec; hprev = NULL; + while (hptr) { + if (hptr == hrec) break; + hprev = hptr; + hptr = hptr -> anext; + } + + + if (!hptr) return; + + + if (hprev) { + hprev -> anext = hrec -> anext; + hrec -> anext = NULL; + return; + } + + + if (hrec -> anext) { + arec -> nrec = hrec -> anext; + hrec -> anext = NULL; + return; + } + + + + + if (!assyuku) return; + aptr = assyuku; aprev = NULL; + while (aptr) { + if (aptr == arec) break; + aprev = aptr; + aptr = aptr -> anext; + } + + + if (!aptr) return; + + + if (aprev) + aprev -> anext = arec -> anext; + + else + assyuku = arec -> anext; + + + Free(arec); + + + hrec -> anext = NULL; +} + + + +static HindoRec *makehindo(ptr, len, alen) +u_char *ptr; +int len; +int alen; +{ + HindoRec *hrec; + u_char *p; + + + hrec = (HindoRec *)Malloc(sizeof(HindoRec)); + if (!hrec) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n"); + exit(1); + } + p = (u_char *)Malloc(len); + if (!p) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n"); + exit(1); + } + + hrec -> klen = len; + hrec -> kptr = p; + if (len == alen && len > 2) { + hrec -> hindo = 0; + hrec -> exist = 1; + hrec -> offset = ++kanji_num; + } + else { + hrec -> hindo = 1; + hrec -> exist = 0; + hrec -> offset = 0; + } + while (len-- > 0) *p++ = *ptr++; + hrec -> anext = NULL; + hrec -> arec = NULL; + + return hrec; +} + + + +static void set_hindo(ptr, len, alen) +u_char *ptr; +int len; +int alen; +{ + HindoRec *hrec; + int low, high, mid; + int i; + + + if (hindo_num <= 0) { + hrec = makehindo(ptr, len, alen); + hindo[0]= hrec; + hindo_num = 1; + + + set_assyuku(hrec); + + return; + } + + + low = 0; high = hindo_num - 1; + while (low <= high) { + mid = (low + high) / 2; + i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, ptr, len); + if (i > 0) + high = mid - 1; + else if (i < 0) + low = ++mid; + else + break; + } + + + if (i) { + if (hindo_num >= MaxHindoNumber) { + fprintf(stderr, "\311\321\305\331\245\306\241\274\245\326\245\353\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n"); + exit(1); + } + + + hrec = makehindo(ptr, len, alen); + + + for (i = hindo_num ; i > mid ; i--) hindo[i] = hindo[i - 1]; + hindo[mid] = hrec; + hindo_num++; + } + + else { + hrec = hindo[mid]; + + + reset_assyuku(hrec); + + + if (hrec -> exist > 0) + hrec -> exist += 1; + + + else if (len == alen && len > 2) { + hrec -> exist = 1; + hrec -> offset = ++kanji_num; + } + + + else + hrec -> hindo += 1; + } + + + set_assyuku(hrec); +} + + + +static void reset_hindo(p, l) +u_char *p; +int l; +{ + HindoRec *hrec; + int low, high, mid; + int i; + + + if (hindo_num <= 0) return; + + + low = 0; high = hindo_num - 1; + while (low <= high) { + mid = (low + high) / 2; + i = string_cmp(hindo[mid]->kptr, hindo[mid]->klen, p, l); + if (i > 0) + high = mid - 1; + else if (i < 0) + low = ++mid; + + else { + hrec = hindo[mid]; + + + reset_assyuku(hrec); + + if (hrec -> exist > 0) + hrec -> exist -= 1; + else if (hrec -> hindo > 0) + hrec -> hindo -= 1; + + + if (hrec -> exist + hrec -> hindo == 0) { + while (++mid < hindo_num) { + hindo[mid - 1] = hindo[mid]; + } + hindo_num--; + Free(hrec -> kptr); + Free(hrec); + } + else { + + set_assyuku(hrec); + } + + return; + break; + } + } +} + + + +knjhnd_set(p, l) +u_char *p; +int l; +{ + register u_char *kp1; + register u_char *kp2; + register int i; + register int kl1; + u_char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1]; + + for (kp1 = p, kl1 = l ; kl1 > 0 ; ) { + + + for (i = 0, kp2 = kp1 ; i < kl1 ; ) { + if (codesize(*kp2) == 1) { + tmp[i++] = *kp2++; + } + else if (codesize(*kp2) == 2) { + tmp[i++] = *kp2++; + tmp[i++] = *kp2++; + } else { + tmp[i++] = *kp2++; + tmp[i++] = *kp2++; + tmp[i++] = *kp2++; + } + set_hindo(tmp, i, l); + } + + + kl1 -= codesize(*kp1); + kp1 += codesize(*kp1); + } +} + + + +knjhnd_reset(p, l) +u_char *p; +int l; +{ + register u_char *kp1; + register u_char *kp2; + register int i; + register int kl1; + u_char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1]; + + for (kp1 = p, kl1 = l ; kl1 > 0 ; ) { + + + for (i = 0, kp2 = kp1 ; i < kl1 ; ) { + if (codesize(*kp2) == 1) { + tmp[i++] = *kp2++; + } + else if (codesize(*kp2) == 2) { + tmp[i++] = *kp2++; + tmp[i++] = *kp2++; + } else { + tmp[i++] = *kp2++; + tmp[i++] = *kp2++; + tmp[i++] = *kp2++; + } + reset_hindo(tmp, i); + } + + + kl1 -= codesize(*kp1); + kp1 += codesize(*kp1); + } +} + + + +static check_assyuku(p, q) +register HindoRec *p; +register HindoRec *q; +{ + u_char ptmp[128], qtmp[128]; + int plen; + int qlen; + + + plen = make_knjstr(p -> kptr, p -> klen, ptmp); + + + qlen = make_knjstr(q -> kptr, q -> klen, qtmp); + + + if (bubun_str(ptmp, plen, qtmp, qlen)) { + return -1; + } + + + if (overlap_str(ptmp, plen, qtmp, qlen)) + return -1; + + return 0; +} + + + +decide_knjask() +{ + int i, j; + AssyukuRec *p; + HindoRec *q; + u_char *r; + int len = 0; + + askknj_num = 0; + + + for (p = assyuku ; p ; p = p -> anext) { + + + if (p -> len <= 0) break; + + + for (q = p -> nrec ; q ; q = q -> anext) { + + + i = q -> klen; + r = q -> kptr; + if (i > 2) { + while (i > 0) { + if ((*r & KanjiModeMask) + == OffsetAssyuku) { + break; + } + j = codesize(*r); + i -= j; + r += j; + } + if (i) continue; + } + + if (askknj_num) { + + for (i = 0 ; i < askknj_num ; i++) { + if (check_assyuku(askknj[i], q)) + break; + } + + + if (i >= askknj_num) { + askknj[askknj_num++] = q; + len += p -> len; + if (askknj_num >= MaxKnjAskNumber) + goto end; + } + } + else { + askknj[askknj_num++] = q; + len += p -> len; + } + } + } +end: +{ + int i, j, len; + u_char *p; + + for (i = 0 ; i < askknj_num ; i++) { + len = askknj[i] -> klen; + p = askknj[i] -> kptr; + if (len <= 2) continue; + while (len > 0) { + if ((*p & KanjiModeMask) == OffsetAssyuku) { + printf("\245\252\245\325\245\273\245\303\245\310\260\265\275\314\244\362\264\336\244\340 %d\n", i); + } + j = codesize(*p); + len -= j; + p += j; + } + } +} + return len; +} + + + +clear_hindo() +{ + register int i; + + for (i = 0 ; i < hindo_num ; i++) { + Free(hindo[i]->kptr); + Free(hindo[i]); + } + hindo_num = 0; + kanji_num = 0; +} + + + +clear_assyuku() +{ + register AssyukuRec *p; + + while (assyuku) { + p = assyuku; + assyuku = assyuku -> anext; + Free(p); + } +} diff --git a/dict/tool/knjcvt.c b/dict/tool/knjcvt.c new file mode 100644 index 0000000..c4e423b --- /dev/null +++ b/dict/tool/knjcvt.c @@ -0,0 +1,276 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: knjcvt.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:37 $ + */ + + + + +#include +#include +#include "sj_const.h" +#include "sj_struct.h" + +typedef struct div_list { + int len; + u_char code[3]; + struct div_list *child; +} DivList; + +extern HindoRec *askknj[]; +extern int askknj_num; + + + +static free_divlist(p) +register DivList *p; +{ + register DivList *q; + + while (p) { + q = p -> child; + Free(p); + p = q; + } +} + + + +static DivList *make_divrec() +{ + register DivList *p; + + p = (DivList *)Malloc(sizeof(DivList)); + if (!p) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n"); + exit(1); + } + p -> child = NULL; + + return p; +} + + + +static make_divlist(parent, knj, len) +DivList *parent; +u_char *knj; +int len; +{ + int i, j; + int num; + int minlen; + int tmplen; + DivList tmprec; + DivList *minrec; + + + minrec = make_divrec(); + + + if (len == 0) { + free_divlist(minrec); + + parent -> child = NULL; + return 0; + } + + else if (len == 1) { + + minrec -> len = len; + minrec -> code[0] = *knj; + + parent -> child = minrec; + return len; + } + + + if (codesize(*knj) == 1) { + minrec -> len = 1; + minrec -> code[0] = *knj; + minlen = make_divlist(minrec, knj + 1, len - 1) + 1; + } + + else if (codesize(*knj) == 2) { + minrec -> len = 2; + minrec -> code[0] = *knj; + minrec -> code[1] = *(knj + 1); + minlen = make_divlist(minrec, knj + 2, len - 2) + 2; + } + + + for (i = 0 ; i < len ; i = j) { + + j = i + codesize(*(knj + i)); + + + if (j <= 2 || !(num = isknjexist(knj, j))) continue; + + + tmprec.len = 2; + tmprec.code[0] = (OffsetAssyuku | ((num >> 8) & 0xff)); + tmprec.code[1] = (num & 0xff); + tmprec.child = NULL; + tmplen = make_divlist(&tmprec, knj + j, len - j) + 2; + + + if (tmplen < minlen) { + + free_divlist(minrec -> child); + + + *minrec = tmprec; + minlen = tmplen; + } + else + free_divlist(tmprec.child); + } + + + for (i = 0 ; i < askknj_num ; i++) { + + if ((j = askknj[i] -> klen) > len) continue; + + + if (string_cmp(askknj[i]->kptr, j, knj, j)) continue; + + + tmprec.len = 1; + tmprec.code[0] = (KanjiAssyuku | i); + tmprec.child = NULL; + tmplen = make_divlist(&tmprec, knj + j, len - j) + 1; + + + if (tmplen < minlen) { + + free_divlist(minrec -> child); + + + *minrec = tmprec; + minlen = tmplen; + } + else + free_divlist(tmprec.child); + } + + + parent -> child = minrec; + + + return minlen; +} + + + +u_char *knjofscvt(ptr, len, ret) +u_char *ptr; +int len; +int *ret; +{ + int i; + u_char *p, *q; + DivList parent, *dl; + + + askknj_num = 0; + + + parent.child = NULL; + i = make_divlist(&parent, ptr, len); + *ret = i; + + + p = (u_char *)Malloc(i); + if (!p) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277"); + exit(1); + } + for (q = p, dl = parent.child ; dl ; dl = dl -> child) { + *q++ = dl -> code[0]; + if (dl -> len == 2) { + *q++ = dl -> code[1]; + } else if (dl -> len == 3) { + *q++ = dl -> code[1]; + *q++ = dl -> code[2]; + } + } + + free_divlist(parent.child); + + + return p; +} + + + +u_char *knjcvt(ptr, len, ret) +u_char *ptr; +int len; +int *ret; +{ + int i; + u_char *p, *q; + DivList parent, *dl; + + + parent.child = NULL; + i = make_divlist(&parent, ptr, len); + *ret = i; + + + p = (u_char *)Malloc(i); + if (!p) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277"); + exit(1); + } + for (q = p, dl = parent.child ; dl ; dl = dl -> child) { + *q++ = dl -> code[0]; + if (dl -> len == 2) { + *q++ = dl -> code[1]; + } else if (dl -> len == 3) { + *q++ = dl -> code[1]; + *q++ = dl -> code[2]; + } + } + + free_divlist(parent.child); + +if (i != q - p) { + printf("\244\263\244\263\n"); + exit(1); +} + + return p; +} + + diff --git a/dict/tool/makedict.c b/dict/tool/makedict.c new file mode 100644 index 0000000..9e43b10 --- /dev/null +++ b/dict/tool/makedict.c @@ -0,0 +1,241 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: makedict.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/12/09 11:27:05 $ + */ + + +#include "sj_sysvdef.h" + +#include +#include +#ifdef SVR4 +#include +#else +#include +#endif +#include +#include +#include +#include "sj_const.h" + +FILE *infp = NULL; +FILE *outfp = NULL; + +char *Zalloc(); +FILE *Fopen(); + +static char *idxtop = NULL; + + + +main(argc, argv) +int argc; +char **argv; +{ + int makelist(); + + + + + parse(argc, argv); + + while (readline()) setline(makelist); + flush_douon(); + makehead((u_char *)argv[2]); + + return 0; +} + + + +char *make_idxlist(name) +char *name; +{ + int i; + char *p; + + i = strlen(name); + p = Zalloc(i + 2); + strcpy(p, name); + return p; +} +char *get_idxlist(name) +char *name; +{ + FILE *fp; + int i; + char *p, *q, *r; + + + fp = Fopen(name, "r"); + + + i = Fsize(name); + + + p = Zalloc(i + 2); + Fseek(fp, 0L, 0); + Fread(p, 1, i, fp); + Fclose(fp); + + + for (q = r = p ; *q ; ) { + while (*q <= ' ') q++; + while (*q > ' ') *r++ = *q++; + *r++ = 0; + q++; + } + *r = 0; + + + i = 0; + for (q = p ; *q ; ) { + if (fp = fopen(q, "r")) + fclose(fp); + else { + fprintf(stderr, "Can't open %s mode \"r\"\n", q); + i++; + } + while (*q++) ; + } + if (i) exit(1); + + return p; +} + + + +parse(argc, argv) +int argc; +char **argv; +{ + int i; + char *progname = NULL; + char *p; + extern char *strrchr(); + + + if (progname = strrchr(argv[0], '/')) + progname++; + else + progname = argv[0]; + + + if (argc != 3) usage(progname); + + + p = argv[1]; + idxtop = (*p == '-') ? get_idxlist(p + 1) : make_idxlist(p); + + outfp = Fopen(argv[2], "w"); +} + + + +get_number(ptr) +register char *ptr; +{ + register int i = 0; + + while (*ptr >= '0' && *ptr <= '9') { + i = i * 10 + (*ptr++ - '0'); + } + + return(i); +} + + + +usage(name) +char *name; +{ + fprintf(stderr, "Usage: %s text_file binary_file\n", + name ? name : "encode"); + exit(0); +} + + + +int getch() +{ + if (infp) { + int c; + + if ((c = Fgetc(infp)) != EOF) return c; + + Fclose(infp); + infp = NULL; + + while (*idxtop++) ; + } + + if (*idxtop) { + infp = Fopen(idxtop, "r"); + + fprintf(stderr, "Reading %s\n", idxtop); + fflush(stderr); + + return getch(); + } + + return EOF; +} + + + +mark_file(out) +FILE *out; +{ + static char pathname[MAXPATHLEN]; + static long pos; + + if (out) { + FILE *fp; + int c; + + fprintf(out, "%s:\t", pathname); + fp = Fopen(pathname, "r"); + Fseek(fp, pos, 0); + c = Fgetc(fp); + while (c != EOF && c != '\n') { + fputc(c, out); + c = Fgetc(fp); + } + fputc('\n', out); + Fclose(fp); + } + else { + strcpy(pathname, idxtop); + pos = infp ? Ftell(infp) : 0; + } +} diff --git a/dict/tool/makelist.c b/dict/tool/makelist.c new file mode 100644 index 0000000..316b493 --- /dev/null +++ b/dict/tool/makelist.c @@ -0,0 +1,648 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: makelist.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:39 $ + */ + + +#include +#include +#include "sj_struct.h" + +#ifndef SS2 +#define SS2 0x8e +#endif + +extern DouonRec *douon_ptr; +extern int douon_num; +extern int yomi_len; +extern int hinsi_num; +extern int kanji_len; +extern HindoRec *hindo[]; +extern int hindo_num; +extern HindoRec *askknj[]; +extern int askknj_num; +extern HindoRec *assyuku; + +static DouonRec *drectmp = NULL; + + + +static clearklist(krec) +register KanjiRec *krec; +{ + register KanjiRec *p; + + + while (krec) { + + Free(krec -> kptr); + Free(krec -> aptr); + + + p = krec; + krec = krec -> knext; + + + Free(p); + } +} + + + +static clearhlist(hrec) +register HinsiRec *hrec; +{ + register HinsiRec *p; + + + while (hrec) { + + clearklist(hrec -> krec); + + + p = hrec; + hrec = hrec -> hnext; + + + Free(p); + } +} + + + +clear_list() +{ + register DouonRec *p; + register DouonRec *drec = douon_ptr; + + + while (drec) { + + Free(drec -> yptr); + + + clearhlist(drec -> hrec); + + + p = drec; + drec = drec -> dnext; + + + Free(p); + } + + douon_ptr = NULL; +} + + + +static u_char *makekanji(yomi, kanji, atr, len) +int *yomi; +int *kanji; +int *atr; +int *len; +{ + int kana[MaxYomiLength + 1]; + u_char ktmp[MaxKanjiLength * 3 + MaxAtrNumber * 2 + 1]; + register int i; + register int pos = 0; + int *p; + u_char *q; + + + for (p = yomi, i = 0 ; *p ; ) + kana[i++] = h2kcode(*p++); + kana[i] = 0; + + while (*atr) { + i = *atr; + atr++; +#ifndef NO_ATR + ktmp[pos++] = (AiAttribute | ((i >> 8) & 0xff)); + ktmp[pos++] = (i & 0xff); +#endif + } + + + if (i = top_strcmp(yomi, kanji)) { + kanji += i; + ktmp[pos++] = (ZenHiraAssyuku | (i - 1)); + } + + else if (i = top_strcmp(kana, kanji)) { + kanji += i; + ktmp[pos++] = (ZenKataAssyuku | (i - 1)); + } + + + while (*kanji) { + + if (i = last_strcmp(yomi, kanji)) { + kanji += i; + ktmp[pos++] = (ZenHiraAssyuku | (i - 1)); + } + + else if (i = last_strcmp(kana, kanji)) { + kanji += i; + ktmp[pos++] = (ZenKataAssyuku | (i - 1)); + } + + else if (((*kanji >> 8) & 0xff) == SS2 || *kanji < 0x100) { + ktmp[pos] = LeadingHankaku; + ktmp[pos + 1] = (*kanji & 0xff); + kanji++; + pos += 2; + } + + else { + if (*kanji < 0x10000) { + ktmp[pos] = ((*kanji >> 8) & NormalKanjiMask); + ktmp[pos + 1] = (*kanji & NormalKanjiMask); + kanji++; + pos += 2; + } else if (*kanji < 0x1000000) { + ktmp[pos] = ((*kanji >> 8) & NormalKanjiMask); + ktmp[pos + 1] = (*kanji & 0xff); + kanji++; + pos += 2; + } else { + fprintf(stderr, "Error: 4 byte code is found\n"); + exit(0); + } + } + } + *len = pos; + + + q = (u_char *)Malloc(pos); + if (!q) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277"); + exit(1); + } + memcpy(q, ktmp, pos); + + return q; +} + + + +static u_char *makeyomi(yomi) +int *yomi; +{ + u_char tmp[MaxYomiLength + 1]; + register int i; + register int j; + register int *y = yomi; + register u_char *p; + + + for (i = 0 ; *y ; ) { + j = cnvyomi(*y++); + if (j == 0) { + fprintf(stderr, "\311\324\300\265\244\312\312\270\273\372\244\254\306\311\244\337\244\313\273\310\244\357\244\354\244\306\244\244\244\336\244\271\n"); + output_int(stderr, yomi); fputc('\n', stderr); + exit(1); + } + tmp[i++] = j; + } + tmp[i++] = 0; + + + p = (u_char *)Malloc(i); + if (!p) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277"); + exit(1); + } + memcpy(p, tmp, i); + + return p; +} + + + +static KanjiRec *make_krec(kcode, klen) +u_char *kcode; +int klen; +{ + register KanjiRec *krec; + + + krec = (KanjiRec *)Malloc(sizeof(KanjiRec)); + if (!krec) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277"); + exit(1); + } + + + krec -> klen = klen; + krec -> kptr = kcode; + krec -> alen = 0; + krec -> aptr = NULL; + krec -> knext = NULL; + + return krec; +} + + + +static HinsiRec *make_hrec(hinsi) +int hinsi; +{ + register HinsiRec *hrec; + + + hrec = (HinsiRec *)Malloc(sizeof(HinsiRec)); + if (!hrec) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277"); + exit(1); + } + + + hrec -> hinsi = hinsi; + hrec -> krec = NULL; + hrec -> hnext = NULL; + + return hrec; +} + + + +static DouonRec *make_drec(ycode) +u_char *ycode; +{ + register DouonRec *drec; + + + drec = (DouonRec *)Malloc(sizeof(DouonRec)); + if (!drec) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\311\324\302\255\244\267\244\336\244\267\244\277"); + exit(1); + } + + + drec -> yptr = ycode; + drec -> hrec_num = 0; + drec -> hrec = NULL; + drec -> dnext = NULL; + + return drec; +} + + + +static diff_ylen(drec) +DouonRec *drec; +{ + register DouonRec *dptr; + register DouonRec *dprev; + register u_char *p1; + register u_char *p2; + register int ylen = 0; + + + dptr = douon_ptr; dprev = NULL; + while (dptr) { + dprev = dptr; + dptr = dptr -> dnext; + } + + if (dprev) { + + p1 = dprev -> yptr; p2 = drec -> yptr; + while (*p1 && (*p1 == *p2)) { p1++; p2++; } + + + if (*p1 == *p2) { + fprintf(stderr, "\305\371\244\267\244\244\306\311\244\337\244\316\306\261\262\273\270\354\245\326\245\355\245\303\245\257\244\254\244\242\244\353\n"); + output_yomi(stderr, dprev -> yptr); fputc('\n', stderr); + exit(1); + } + + else if (*p1 > *p2) { + fprintf(stderr, "\306\311\244\337\244\316\275\347\275\370\244\254\244\252\244\253\244\267\244\244\n"); + output_yomi(stderr, dprev->yptr); fputc('\n', stderr); + output_yomi(stderr, drec->yptr); fputc('\n', stderr); + exit(1); + } + + + while (*p2++) ylen++; + } + + return ylen; +} + + + +static douon_knj(drec) +DouonRec *drec; +{ + int i; + int len = 0; + u_char *p; + u_char *knjofscvt(); + HinsiRec *hrec; + KanjiRec *krec; + + + for (hrec = drec -> hrec ; hrec ; hrec = hrec -> hnext) { + + for (krec = hrec -> krec ; krec ; krec = krec -> knext) { + + p = knjofscvt(krec -> kptr, krec -> klen, &i); + + + len += i + 1; + + + knjhnd_set(p, i); + + + krec -> alen = i; + krec -> aptr = p; + + + set_ofsrec(krec -> kptr, krec -> klen, 0); + } + } + + + return len; +} + + + +static void make_d_list(drec) +DouonRec *drec; +{ + DouonRec *dptr, *dprev; + HinsiRec *hptr; + KanjiRec *kptr; + int ylen; + int klen; + int hnum; + int len; + int i; + +start: + + if (douon_ptr == NULL) { + douon_num = 0; + yomi_len = 0; + hinsi_num = 0; + kanji_len = 0; + assyuku = NULL; + } + + + klen = douon_knj(drec); + + + ylen = diff_ylen(drec); + + + hnum = drec -> hrec_num; + + + i = 1 + + MaxKnjAskNumber + + + douon_num * DouonBlkSizeNumber + DouonBlkSizeNumber + + yomi_len + ylen + + hinsi_num + hnum + + hinsi_num + hnum + + kanji_len + klen; + + + len = (i <= MainSegmentLength) ? 0 : decide_knjask(); + + + if ((i - len) <= MainSegmentLength) { + + if (douon_ptr) { + + dptr = douon_ptr; dprev = NULL; + while (dptr) { + dprev = dptr; + dptr = dptr -> dnext; + } + + + dprev -> dnext = drec; + } + + else { + + douon_ptr = drec; + } + drec -> dnext = NULL; + + + drec -> dlen = ylen; + + + douon_num += 1; + + + yomi_len += ylen; + + + hinsi_num += hnum; + + + kanji_len += klen; + + return; + } + + else if (douon_ptr == NULL) { + fprintf(stderr, "\243\261\306\261\262\273\270\354\245\326\245\355\245\303\245\257\244\254\302\347\244\255\244\271\244\256\244\336\244\271\n"); + exit(1); + } + + + for (hptr = drec -> hrec ; hptr ; hptr = hptr -> hnext) { + for (kptr = hptr -> krec ; kptr ; kptr = kptr -> knext) { + + + knjhnd_reset(kptr -> aptr, kptr -> alen); + + + Free(kptr -> aptr); + kptr -> aptr = NULL; + } + } + + + len = decide_knjask(); + + + makeseg(); + + + clear_list(); + + + clear_hindo(); + + + clear_ofsrec(); + + + askknj_num = 0; + + + clear_assyuku(); + + goto start; +} + + + +flush_douon() +{ + if (drectmp) { + + make_d_list(drectmp); + + drectmp = NULL; + } + + if (douon_ptr) { + + decide_knjask(); + + + makeseg(); + + + clear_list(); + + + clear_hindo(); + + + clear_ofsrec(); + + + askknj_num = 0; + } +} + + +void +makelist(yomi, kanji, hinsi, atr) +int *yomi; +int *kanji; +int hinsi; +int *atr; +{ + u_char *ycode; + u_char *kcode; + int klen; + HinsiRec *hrec; + KanjiRec *krec, *kprev; + + + ycode = makeyomi(yomi); + + + kcode = makekanji(yomi, kanji, atr, &klen); + + + if (drectmp && strcmp(ycode, drectmp -> yptr)) { + + make_d_list(drectmp); + + drectmp = NULL; + } + + + if (!drectmp) { + + drectmp = make_drec(ycode); + + + hrec = make_hrec(hinsi); + drectmp -> hrec = hrec; + drectmp -> hrec_num = 1; + + + krec = make_krec(kcode, klen); + hrec -> krec = krec; + + return; + } + + + for (hrec = drectmp -> hrec ; hrec -> hnext ; hrec = hrec -> hnext) + if (hrec -> hinsi == hinsi) break; + + + if (hrec -> hinsi == hinsi) { + + for (krec=hrec->krec ; krec ; krec=krec->knext) { + + if ((krec -> klen == klen) && + !memcmp(krec -> kptr, kcode, klen)) { + fprintf(stderr, "\306\261\260\354\244\316\275\317\270\354\244\254\302\270\272\337\244\267\244\277\n"); + fprintf(stderr, "\t\306\311\244\337:"); + output_int(stderr, yomi); + fprintf(stderr, "\n"); + fprintf(stderr, "\t\264\301\273\372:"); + output_int(stderr, kanji); + fprintf(stderr, "\n"); + + + Free(kcode); + + return; + } + kprev = krec; + } + + + kprev -> knext = make_krec(kcode, klen); + + return; + } + + + hrec -> hnext = make_hrec(hinsi); + hrec = hrec -> hnext; + drectmp -> hrec_num += 1; + + + krec = make_krec(kcode, klen); + hrec -> krec = krec; +} diff --git a/dict/tool/makeseg.c b/dict/tool/makeseg.c new file mode 100644 index 0000000..68b034b --- /dev/null +++ b/dict/tool/makeseg.c @@ -0,0 +1,429 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: makeseg.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/12/09 11:27:05 $ + */ + + +#include +#include +#include "sj_struct.h" +#include "../../include/Dict.h" + +extern HindoRec *askknj[]; +extern int askknj_num; +extern DouonRec *douon_ptr; +extern FILE *outfp; +extern int douon_num; + +static u_char index[MainSegmentLength]; +static int idxpos = 0; +static int idxnum = 0; + +OffsetRec *real_ofsrec(); +u_char *knjcvt(); + + + +static u_char *set_ofsask(src, dst) +u_char *src; +u_char *dst; +{ + int len; + u_char *ptr; + OffsetRec *ofsrec; + + + ofsrec = real_ofsrec(src); + + for (len = ofsrec->klen, ptr = ofsrec->kptr ; len > 0 ; ) { + switch (*ptr & KanjiModeMask) { + case ZenHiraAssyuku: + case ZenKataAssyuku: + case KanjiAssyuku: + *dst++ = *ptr++; + len -= 1; + break; + case LeadingHankaku: +#ifndef UseHankakuInDict + fprintf(stderr, "\302\260\300\255\245\263\241\274\245\311\241\246\245\250\245\351\241\274\n"); + exit(1); +#else + *dst++ = *ptr++; + *dst++ = *ptr++; + len -= 2; + break; +#endif + case OffsetAssyuku: + fprintf(stderr, "\306\363\275\305\244\313\245\252\245\325\245\273\245\303\245\310\244\254\273\262\276\310\244\265\244\354\244\306\244\244\244\353\n"); + exit(1); + case AiAttribute: + *dst++ = *ptr++; + *dst++ = *ptr++; + len -= 2; + break; + case KanjiStrEnd: + *dst++ = *ptr++; + len--; + break; + default: + *dst++ = *ptr++; + *dst++ = *ptr++; + len -= 2; + } + } + + return dst; +} + + + +make_knjstr(src, len, dst) +u_char *src; +int len; +u_char *dst; +{ + u_char *keep = dst; + + while (len > 0) { + switch (*src & KanjiModeMask) { + case ZenHiraAssyuku: + case ZenKataAssyuku: + case KanjiAssyuku: + *dst++ = *src++; + len -= 1; + break; + case LeadingHankaku: +#ifndef UseHankakuInDict + fprintf(stderr, "\302\260\300\255\245\263\241\274\245\311\241\246\245\250\245\351\241\274\n"); + exit(1); +#else + *dst++ = *src++; + *dst++ = *src++; + len -= 2; + break; +#endif + case OffsetAssyuku: + dst = set_ofsask(src, dst); + src += 2; + len -= 2; + break; + case AiAttribute: + *dst++ = *src++; + *dst++ = *src++; + len -= 2; + break; + case KanjiStrEnd: + *dst++ = *src++; + len--; + break; + default: + *dst++ = *src++; + *dst++ = *src++; + len -= 2; + } + } + return(dst - keep); +} + + + +static make_knjask() +{ + int i, j; + u_char *p; + u_char buf[128]; + int len; + int tlen = 0; + + + for (i = 0 ; i < askknj_num ; i++) { + + + len = make_knjstr(askknj[i] -> kptr, askknj[i] -> klen, buf); + + + Free(askknj[i] -> kptr); + + + p = (u_char *)Malloc(len); + if (!p) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363\n"); + exit(1); + } + + + memcpy(p, buf, len); + askknj[i] -> kptr = p; + askknj[i] -> klen = len; + + + tlen += len + 1; + } + + return tlen; +} + + +void +makeseg() +{ + u_char buf[MainSegmentLength]; + DouonRec *drec; + HinsiRec *hrec; + KanjiRec *krec; + int i, j, k; + int slen; + u_char *dst; + u_char *sdst; + u_char *p, *q; + +#ifndef HEHE +#define datset(i) { if (dst >= buf+sizeof(buf)) goto err; *dst++ = i; } +#else +#define datset(i) { *dst++; i; } +#endif + + + dst = buf; + + + i = make_knjask(); + if (i >= 0x100) { + fprintf(stderr, "\264\301\273\372\260\265\275\314\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\353\n"); + exit(1); + } + + + datset(i); + for (i = 0 ; i < askknj_num ; i++) { + p = askknj[i] -> kptr; + j = askknj[i] -> klen; + while (j > 0) { + k = codesize(*p); + datset(*p); p++; + if (k > 2) { + datset(*p); p++; + datset(*p); p++; + } else if (k > 1) { + datset(*p); p++; + } + j -= k; + } + datset(KanjiStrEnd); + } + + + clear_ofsrec(); + + + for (drec = douon_ptr ; drec ; drec = drec->dnext) { + + + sdst = dst; dst += DouonBlkSizeNumber; + + + p = drec -> yptr; + slen = strlen(p) - drec -> dlen; + p += slen; + for (i = drec -> dlen ; i > 0 ; i--) { + datset(*p); p++; + } + + for (hrec = drec->hrec ; hrec ; hrec = hrec->hnext) { + + + datset(hrec -> hinsi); + + + for (krec = hrec->krec ; krec ; krec = krec->knext) { + + + p = q = knjcvt(krec -> kptr, krec -> klen, &i); + + + set_ofsrec(krec->kptr, krec->klen, dst - buf); + + + while (i-- > 0) { + datset(*p); p++; + } + datset(KanjiStrEnd); + + Free(q); + } + + + datset(HinsiBlkTerm); + } + + + i = dst - sdst; + *sdst = ((i >> 8) & 0x0f); + *(sdst + 1) = (i & 0xff); + + + if (drec -> dlen > 0x0f) *sdst |= 0x40; + *(sdst + 2) = (drec -> dlen & 0x0f); + + + if (slen > 0x0f) *sdst |= 0x80; + *(sdst + 2) |= ((slen << 4) & 0xf0); + } + + if (dst < buf + sizeof(buf)) { + datset(DouonBlkTerm); + } + + + for (p = douon_ptr -> yptr ; ; ) { + if (idxpos < MainIndexLength) { + index[idxpos++] = *p; + } + else { + fprintf(stderr, "\245\244\245\363\245\307\245\303\245\257\245\271\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n"); + exit(1); + } + if (!*p++) break; + } + if (idxpos < MainIndexLength) { + index[idxpos] = 0; + } + else { + fprintf(stderr, "\245\244\245\363\245\307\245\303\245\257\245\271\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n"); + exit(1); + } + + + i = dst - buf; + + while (dst < buf + sizeof(buf)) *dst++ = DouonBlkTerm; + + + if (Fseek(outfp, + (long)(HeaderLength + CommentLength + MainIndexLength + + idxnum * MainSegmentLength), + 0) < 0) { + fprintf(stderr, "\275\320\316\317\245\325\245\241\245\244\245\353\244\307\245\267\241\274\245\257\245\250\245\351\241\274\n"); + exit(1); + } + if (Fwrite(buf, sizeof(buf), 1, outfp) != 1) { + fprintf(stderr, "\275\320\316\317\245\325\245\241\245\244\245\353\244\307\245\351\245\244\245\310\245\250\245\351\241\274\n"); + exit(1); + } + Fflush(outfp); + + + printf("\245\273\245\260\245\341\245\363\245\310\310\326\271\346:%d:", idxnum++); + output_yomi(stdout, douon_ptr -> yptr); + printf("\t\245\273\245\260\245\341\245\363\245\310\304\271:%d", i); + printf("\t\306\261\262\273\270\354\277\364:%d\n", douon_num); + printf("\264\301\273\372\260\265\275\314\312\270\273\372\316\363:"); + for (i = j = 0 ; i < askknj_num ; i++) { + putchar('\t'); + if (i && j == 0) putchar('\t'); + output_knj(stdout, askknj[i] -> kptr, askknj[i] -> klen); + printf(":%d", askknj[i] -> hindo + askknj[i] -> exist); + if (++j >= 4) { + putchar('\n'); + j = 0; + } + } + if (j) putchar('\n'); + putchar('\n'); + fflush(stdout); + + return; + +err: + fprintf(stderr, "\245\273\245\260\245\341\245\363\245\310\271\275\300\256\303\346\244\313\245\320\245\303\245\325\245\241\244\254\244\242\244\325\244\354\244\277\n"); + fprintf(stderr, "\245\273\245\260\245\341\245\363\245\310\300\350\306\254\244\316\306\311\244\337:"); + output_yomi(stderr, douon_ptr -> yptr); + fputc('\n', stderr); + + exit(1); +#undef datset +} + +static void put4byte(p, n) +u_char *p; +long n; +{ + p += 3; + *p-- = n; n >>= 8; + *p-- = n; n >>= 8; + *p-- = n; n >>= 8; + *p = n; +} +void makehead(dict_name) +u_char *dict_name; +{ + u_char header[HeaderLength + CommentLength]; + long i; + u_char *p; + +#define IndexPos (HeaderLength + CommentLength) + + memset(header, '\0', sizeof(header)); + put4byte(header + VersionPos, DictVersion); + time(&i); + p = header + CommentPos; + sprintf((char *)p, "%s : %s", dict_name, ctime(&i)); + while (*p) { + if (*p == '\n') { *p = 0; break; } + p++; +} + + i = IndexPos; + + put4byte(header + DictIdxPos, i); + put4byte(header + DictIdxLen, MainIndexLength); + i += MainIndexLength; + + put4byte(header + DictSegPos, i); + put4byte(header + DictSegLen, MainSegmentLength); + put4byte(header + DictSegMax, 0); + put4byte(header + DictSegNum, idxnum); + + put4byte(header + DictAIdxPos, 0); + put4byte(header + DictAIdxLen, 0); + + put4byte(header + DictASegPos, 0); + put4byte(header + DictASegLen, 0); + + Fseek(outfp, (long)HeaderPos, 0); + Fwrite(header, sizeof(header), 1, outfp); + Fseek(outfp, (long)IndexPos, 0); + Fwrite(index, MainIndexLength, 1, outfp); + +#undef IndexPos +} diff --git a/dict/tool/memory.c b/dict/tool/memory.c new file mode 100644 index 0000000..86af992 --- /dev/null +++ b/dict/tool/memory.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: memory.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:42 $ + */ + + +#include + +char *Malloc(size) +unsigned size; +{ + char *p; + char *malloc(); + + p = malloc(size); + if (p == NULL) { + fprintf(stderr, "\245\341\245\342\245\352\244\254\263\316\312\335\244\307\244\255\244\336\244\273\244\363\244\307\244\267\244\277\241\243\n"); + exit(1); + } + return p; +} + +char *Zalloc(size) +int size; +{ + char *p; + + p = Malloc(size); + memset(p, '\0', size); + return p; +} + +void Free(p) +char *p; +{ + free(p); +} diff --git a/dict/tool/offset.c b/dict/tool/offset.c new file mode 100644 index 0000000..7784935 --- /dev/null +++ b/dict/tool/offset.c @@ -0,0 +1,188 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: offset.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/08/17 01:50:26 $ + */ + + + + +#include +#include +#include "sj_struct.h" + +extern OffsetRec *ofsrec[]; +extern int ofsrec_num; + + + +static OffsetRec *makeoffset(ptr, len, ofs) +u_char *ptr; +int len; +int ofs; +{ + OffsetRec *orec; + u_char *p; + + + orec = (OffsetRec *)Malloc(sizeof(OffsetRec)); + + + p = (u_char *)Malloc(len); + memcpy(p, ptr, len); + + + orec -> kptr = p; + orec -> klen = len; + if (ofs) + orec -> offset = ofs; + else + orec -> offset = ofsrec_num + 1; + + return orec; +} + + +void +set_ofsrec(ptr, len, ofs) +u_char *ptr; +int len; +int ofs; +{ + OffsetRec *orec; + int low, high, mid; + int i; + + + if (ofsrec_num <= 0) { + orec = makeoffset(ptr, len, ofs); + ofsrec[0]= orec; + ofsrec_num++; + + return; + } + + + low = 0; high = ofsrec_num - 1; + while (low <= high) { + mid = (low + high) / 2; + i = string_cmp(ofsrec[mid]->kptr, ofsrec[mid]->klen, ptr, len); + if (i > 0) + high = mid - 1; + else if (i < 0) + low = ++mid; + else + break; + } + + + if (i) { + if (ofsrec_num >= MaxOffsetNumber) { + fprintf(stderr, "\245\252\245\325\245\273\245\303\245\310\241\246\245\306\241\274\245\326\245\353\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n"); + exit(1); + } + + + orec = makeoffset(ptr, len, ofs); + + + for (i = ofsrec_num ; i > mid ; i--) ofsrec[i] = ofsrec[i - 1]; + ofsrec[mid] = orec; + ofsrec_num++; + } +} + + + +isknjexist(knj, len) +u_char *knj; +int len; +{ + int low, high, mid; + int i; + + + if (ofsrec_num <= 0) return 0; + + + low = 0; high = ofsrec_num - 1; + while (low <= high) { + mid = (low + high) / 2; + i = string_cmp(ofsrec[mid]->kptr, ofsrec[mid]->klen, knj, len); + if (i > 0) + high = mid - 1; + else if (i < 0) + low = ++mid; + else + return ofsrec[mid] -> offset; + } + + return 0; +} + + + +clear_ofsrec() +{ + int i; + + for (i = 0 ; i < ofsrec_num ; i++) { + Free(ofsrec[i] -> kptr); + Free(ofsrec[i]); + } + + ofsrec_num = 0; +} + + + +OffsetRec *real_ofsrec(ptr) +u_char *ptr; +{ + int ofs; + int i; + OffsetRec **p; + + + ofs = (*ptr++ & KnjAssyukuMask); + ofs <<= 8; + ofs += *ptr; + + + for (i = ofsrec_num, p = ofsrec ; i-- > 0 ; p++) + if ((*p) -> offset == ofs) + return *p; + + + fprintf(stderr, "real_ofsrec() \244\307\260\333\276\357\244\312\276\365\302\326 %x\n", ofs); + exit(1); +} diff --git a/dict/tool/readline.c b/dict/tool/readline.c new file mode 100644 index 0000000..b7fc2ba --- /dev/null +++ b/dict/tool/readline.c @@ -0,0 +1,272 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: readline.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:44 $ + */ + + +#include +#include "sj_euc.h" +#include "sj_const.h" +#include "sj_macro.h" + + +static long lineloc; + + +static int yomi[MaxYomiLength + 1]; +static int kanji[MaxKanjiLength + 1]; +static int hinsi[MaxHinsiNumber + 1]; +static int atr[MaxAtrNumber + 1]; + + + +static error(s) +char *s; +{ + register int c; + + if (s) fprintf(stderr, "%s\n", s); + mark_file(stderr); + + exit(1); +} + + + +static readchar() +{ + register int c1; + register int c2; + + + c1 = getch(); if (c1 == EOF) return EOF; + + + if (c1 != SS3) { + if (c1 & 0x80) { + c2 = getch(); if (c2 == EOF) error(NULL); + c1 = ((c1 & 0xff) << 8) + (c2 & 0xff); + } + } else { + c2 = getch(); if (c2 == EOF) error(NULL); + c1 = ((c1 & 0xff) << 8) + (c2 & 0xff); + c2 = getch(); if (c2 == EOF) error(NULL); + c1 = ((c1 & 0xffff) << 8) + (c2 & 0xff); + } + + return c1; +} + + + +static skip_blank() +{ + register int c; + + c = readchar(); + while (Isblank(c)) c = readchar(); + + + return c; +} + + + +static readhinsi() +{ + static int c = 0; + register int i; + unsigned char hinsi[128]; + int flg; + +retry: + + if (c == '\n') { + c = 0; + return 0; + } + + + c = skip_blank(); + if (c == '\n') { + c = 0; + return 0; + } + + + for (i = 0 ; !Isblank(c) ; ) { + if (c == '\n' || c == ':') break; + if (Isillegal(c)) error(IllegalFormat); + if (c > 0xffffff) { + if (i >= 126) error(TooLongHinsi); + hinsi[i++] = ((c >> 24) & 0xff); + if (i >= 126) error(TooLongHinsi); + hinsi[i++] = ((c >> 16) & 0xff); + if (i >= 126) error(TooLongHinsi); + hinsi[i++] = ((c >> 8) & 0xff); + } else if (c > 0xffff) { + if (i >= 126) error(TooLongHinsi); + hinsi[i++] = ((c >> 16) & 0xff); + if (i >= 126) error(TooLongHinsi); + hinsi[i++] = ((c >> 8) & 0xff); + } else if (c > 0xff) { + if (i >= 126) error(TooLongHinsi); + hinsi[i++] = ((c >> 8) & 0xff); + } + if (i >= 127) error(TooLongHinsi); + hinsi[i++] = (c & 0xff); + c = readchar(); + } + + + if (i == 0) return 0; + + + if (hinsi[0] == '[' && hinsi[i - 1] == ']') { + hinsi[i - 1] = 0; + i = cnvhinsi(hinsi + 1); + if (i > 0) { + fprintf(stderr, "\311\312\273\354 \"%s\" \244\313\263\347\270\314\244\254\244\304\244\244\244\306\244\244\244\353\n", + hinsi + 1); + } + else if (!i) { + + fprintf(stderr, "\"%s\" \244\254\245\263\241\274\245\311\262\275\244\307\244\255\244\336\244\273\244\363\n", + hinsi + 1); + goto retry; + } + } + + else { + hinsi[i] = 0; + i = cnvhinsi(hinsi); + if (!i) { + + fprintf(stderr, "\"%s\" \244\254\245\263\241\274\245\311\262\275\244\307\244\255\244\336\244\273\244\363\n", hinsi); + goto retry; + } + } + + return i; +} + + + +int *readline() +{ + register int c; + register int i; + register int j; + + + for ( ; ; ) { + + mark_file(NULL); + + c = skip_blank(); + + + if (c == '#') { + while (c != '\n') c = skip_blank(); + } + + + if (c == EOF) return NULL; + + + if (c != '\n') break; + } + + + for (i = 0 ; !Isblank(c) ; ) { + if (Isillegal(c)) error(IllegalFormat); + if (i >= MaxYomiLength) error(TooLongYomi); + yomi[i++] = c; + c = readchar(); + } + yomi[i] = 0; + if (i == 0) error(NoYomiString); + + + c = skip_blank(); + + + if (c != '"') { + for (i = 0 ; !Isblank(c) ; ) { + if (Isillegal(c)) error(IllegalFormat); + if (i >= MaxKanjiLength) error(TooLongKanji); + kanji[i++] = c; + c = readchar(); + } + } + else { + c = readchar(); + for (i = 0 ; c != '"' ; ) { + if (Isillegal(c)) error(IllegalFormat); + if (i >= MaxKanjiLength) error(TooLongKanji); + kanji[i++] = c; + c = readchar(); + } + } + kanji[i] = 0; + if (i == 0) error(NoKanjiString); + + + i = j = 0; + while (c = readhinsi()) { + if (c < 0) { + if (i >= MaxAtrNumber) error(TooManyAtr); + atr[i++] = -c; + } + else { + if (j >= MaxHinsiNumber) error(TooManyHinsi); + hinsi[j++] = c; + } + } + atr[i] = 0; + if (j == 0) hinsi[j++] = HinsiTankan; + hinsi[j] = 0; + + + return yomi; +} + + + +setline(func) +int (*func)(); +{ + register int i; + + for (i = 0 ; hinsi[i] ; i++) (*func)(yomi, kanji, hinsi[i], atr); +} diff --git a/dict/tool/string.c b/dict/tool/string.c new file mode 100644 index 0000000..bcfb4eb --- /dev/null +++ b/dict/tool/string.c @@ -0,0 +1,232 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: string.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:45 $ + */ + + +#include +#include +#include "sj_const.h" + + + +bubun_str(p1, l1, p2, l2) +u_char *p1; +int l1; +u_char *p2; +int l2; +{ + register u_char *p; + register int l; + register int i; + + for (p = p1, l = l1 ; l > 0 ; ) { + + if (l < l2) break; + for (i = 0 ; i < l2 ; i++) + if (*(p + i) != *(p2 + i)) break; + + + if (i >= l2) return 1; + + i = codesize(*p); + p += i; + l -= i; + } + + for (p = p2, l = l2 ; l > 0 ; ) { + + if (l < l1) break; + for (i = 0 ; i < l1 ; i++) if (*(p + i) != *(p1 + i)) break; + + + if (i >= l1) return -1; + + i = codesize(*p); + p += i; + l -= i; + } + + + return 0; +} + + + +overlap_str(p1, l1, p2, l2) +u_char *p1; +u_char *p2; +int l1; +int l2; +{ + register u_char *p; + register int l; + register int i; + register int j; + u_char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2]; + + for (p = p1, l = l1 ; l > 0 ; ) { + + if (l < l2) { + for (i = 0 ; (i < l) && (*(p + i) == *(p2 + i)) ; i++) ; + + + if ((i >= l) && (l2 + l1 - l < sizeof(tmp))) { + + for (i = 0 ; i < l1 ; i++) + tmp[i] = *(p1 + i); + for (j = l ; j < l2 ; i++, j++) + tmp[i] = *(p2 + j); + + + if (check_hindo(tmp, i)) { + return -1; + } + } + } + + i = codesize(*p); + p += i; + l -= i; + } + + for (p = p2, l = l2 ; l > 0 ; ) { + + if (l < l1) { + for (i = 0 ; (i < l) && (*(p + i) == *(p1 + i)) ; i++) ; + + + if ((i >= l) && (l1 + l2 - l < sizeof(tmp))) { + + for (i = 0 ; i < l2 ; i++) + tmp[i] = *(p2 + i); + for (j = l ; j < l1 ; i++, j++) + tmp[i] = *(p1 + j); + + + if (check_hindo(tmp, i)) { + return -1; + } + } + } + + i = codesize(*p); + p += i; + l -= i; + } + + + return 0; +} + + + +istrlen(s) +int *s; +{ + register int *p; + + for (p = s ; *p ; p++) ; + + return(p - s); +} + + + +istrcmp(s, d) +register int *s; +register int *d; +{ + for ( ; *s && (*s == *d) ; s++, d++) ; + + return (*s - *d); +} + + + +top_strcmp(src, dst) +register int *src; +register int *dst; +{ + register int i = 0; + + + for (i = 0 ; *src && (*src == *dst) ; src++, dst++) + i++; + + + return (i > MaxYomiAskNumber) ? MaxYomiAskNumber : i; +} + + + +last_strcmp(src, dst) +int *src; +int *dst; +{ + int slen, dlen; + + + slen = istrlen(src); + dlen = istrlen(dst); + + + if (dlen > MaxYomiAskNumber) + return 0; + + + if (istrcmp(src + (slen - dlen), dst)) + return 0; + + + return dlen; +} + + + +string_cmp(p1, l1, p2, l2) +register u_char *p1; +register u_char *p2; +register int l1; +register int l2; +{ + while (l1 > 0 && l2 > 0) { + if (*p1 != *p2) return (*p1 - *p2); + p1++; l1--; + p2++; l2--; + } + + if (l1 == l2) return 0; + if (l1 > l2) return 1; + return -1; +} diff --git a/doc/Imakefile b/doc/Imakefile new file mode 100644 index 0000000..f5d54fb --- /dev/null +++ b/doc/Imakefile @@ -0,0 +1,46 @@ +/* + * Copyright (c) 1997 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:51 $ + */ + +/* + * Add make rules to install manpages and other documents. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#define IHaveSubdirs +#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' + +SUBDIRS = doc man + +MakeSubdirs($(SUBDIRS)) +DependSubdirs($(SUBDIRS)) diff --git a/doc/doc/Imakefile b/doc/doc/Imakefile new file mode 100644 index 0000000..42c2149 --- /dev/null +++ b/doc/doc/Imakefile @@ -0,0 +1,49 @@ +/* + * Copyright (c) 1997 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:51 $ + */ + +#include "../../sj3.tmpl" + +/* + * Add make rules to install other documents. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +CONFDIR = $(SJ3CONFDIR) +DOCLIST = Nihongo.ps.Z hinsi.ms makedict.ms sj3lib.ms sj3serv.ms + +all:: + +depend:: + +InstallMultiple($(DOCLIST),$(CONFDIR)) diff --git a/doc/doc/Nihongo.ps.Z b/doc/doc/Nihongo.ps.Z new file mode 100644 index 0000000000000000000000000000000000000000..94a1ea5f4cfef99707d8e680ff78895f4717b5bd GIT binary patch literal 150105 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⁢eS6KHS1=UcLx;m>eO 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 CEmuGQ literal 0 HcmV?d00001 diff --git a/doc/doc/hinsi.ms b/doc/doc/hinsi.ms new file mode 100644 index 0000000..ec0bd06 --- /dev/null +++ b/doc/doc/hinsi.ms @@ -0,0 +1,489 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"Author: Noriyuki Hosoe, Sony Corporation +.\" +.\"$SonyRCSfile: hinsi.ms,v $ +.\"$SonyRevision: 1.1 $ +.\"$SonyDate: 1994/06/03 08:00:46 $ +.\" +.TL +\fBsj3serv\fP で使用される品詞 +.RS +.LP +ここでは \fBsj3serv\fP で使用している品詞分けについて説明します。 +.RE + +.SH +**注意点** +.RS +.SH +上一段・下一段動詞の扱い +.RS +例えば、カ行上一段動詞 "起きる" の場合、 +.RS +語幹は     "お" +.br +活用語尾は   "き、きる、きれ、きろ、きよ" +.RE +となります。 +.br +活用語尾の1字目に注目すると、いずれの活用形においても共通なので、 +便宜的に "おき" までを語幹として扱うことにします。 +これによって "行" 及び "上下"の区別は必要なくなり、 +ただ "一段動詞" だけの分類分けで済ませています。 +.RE +.RE + +.NH +名詞 +.RS +.LP +固有名詞を除いた名詞です。 +.br +これらは複合名詞を作りやすいか否かによって2つに分けられます。 +.br +複合名詞を作りやすいか否かは、主観によって判断しています。 +.RE +.NH 2 +複合名詞を作りやすい名詞 +.RS +.IP 名1(MEISI_1) \w'            'u +他の分類に含まれない、複合名詞を作りやすい名詞 +.IP 名2(MEISI_2) +接頭語 "お" +.IP 名3(MEISI_3) +接頭語 "ご" +.IP 名4(MEISI_4) +接尾語 "的" "化" のどちらか +.IP 名5(MEISI_5) +名詞+サ変動詞、接頭語 "お" +.IP 名6(MEISI_6) +名詞+サ変動詞 +.IP 名7(MEISI_7) +名詞+サ変動詞、接頭語 "ご" +.IP 名8(MEISI_8) +名詞+形容動詞 +.IP 名9(MEISI_9) +名詞+形容動詞、接頭語 "お" +.IP 名10(MEISI_10) +名詞+形容動詞、接頭語 "ご" +.IP 名11(MEISI_11) +名詞+副詞 +.RE +.RE +.NH 2 +複合名詞を作りにくい名詞 +.RS +.IP 代1(D_MEISI_1) \w'            'u +他の分類に含まれない、複合名詞を作りにくい名詞 +.IP 代2(D_MEISI_2) +接尾語 "さん" +.IP 代3(D_MEISI_3) +"〜をする" +.IP 代4(D_MEISI_4) +名詞+サ変動詞 +.IP 代5(D_MEISI_5) +名詞+形容動詞 +.IP 代6(D_MEISI_6) +名詞+副詞 +.RE +.RE + +.NH +固有名詞 +.RS +.IP 苗字(MYOUJI) \w'            'u +人名の姓 +.IP 名前(NAMAE) +人名の名 +.IP 企業(KIGYOU) +企業名 +.IP 地名(TIMEI) +都道府県・区郡・市町村 および主要都市の駅名 +.IP 県区(KEN_KU) +都道府県・区の・・県(都,府,区)付き +.RE +.RE + +.NH +その他体言 +.RS +.IP 連体(RENTAISI) \w'            'u +連体詞 +.IP 接続(SETUZOKU) +接続詞 +.IP 感動(KANDOUSI) +感動詞 +.IP 助数(JOSUUSI1) +"第〜" が接続できる +.IP 助数2(JOSUUSI2) +"第〜”が接続できない +.IP 数詞(SUUSI) +数詞 +.RE +.RE + +.NH +接頭語 +.RS +.IP 接頭1(SETTOU_1) \w'            'u +名詞(サ変名詞・刑動名詞含む)に接続 +.IP 接頭2(SETTOU_2) +地名に接続(北、南、西、東 等) +.IP 接頭3(SETTOU_3) +人名に接続(故 など) +.IP 接頭4(SETTOU_4) +数詞に接続(第、計 等) +.IP 接頭5(SETTOU_5) +接頭1 より接続が強い +.RE +.RE + +.NH +接尾語 +.RS +.IP 接尾1(SETUBI_1) \w'            'u +名詞に接続、名詞扱い +.IP 接尾2(SETUBI_2) +名詞に接続、名詞扱い。ただし連濁形 +.IP 接尾3(SETUBI_3) +接尾1 より接続が強い +.IP 接尾4(SETUBI_4) +地名に接続、名詞扱い +.IP 接尾5(SETUBI_5) +名詞に接続、形容詞扱い +.IP 接尾6(SETUBI_6) +名詞に接続、形容動詞扱い +.IP 接尾7(SETUBI_7) +名詞に接続、サ変名詞扱い +.IP 接尾8(SETUBI_8) +名詞に接続、一段動詞扱い +.IP 接尾9(SETUBI_9) +接尾語+副詞 +.RE +.RE + +.NH +副詞 +.RS +.IP 副1(FUKUSI_1) \w'            'u +接続なし +.IP 副2(FUKUSI_2) +"〜と" 接続 +.IP 副3(FUKUSI_3) +"〜と", サ変動詞語尾が接続 +.IP 副4(FUKUSI_4) +サ変動詞語尾が接続 +.IP 副5(FUKUSI_5) +"〜に" 接続 +.IP 副6(FUKUSI_6) +"〜も" 接続 +.IP 副7(FUKUSI_7) +"〜の" 接続 +.IP 副8(FUKUSI_8) +"〜と", "〜です、〜だ" 接続 +.IP 副9(FUKUSI_9) +"〜と", サ変動詞語尾, "〜です、〜だ" 接続 +.RE +.RE + +.NH +形容詞 +.RS +.RS +.DS +[さ]  "さ" が接続して名詞化する +[げ]  "げ" が接続して形容動詞化する +[め]  "め" が接続して形容動詞化する +[み]  "み" が接続して名詞化する +[がる] "がる" が接続して動詞化する +.DE +.RE +.sp +.IP 形1(KEIYOUSI_1) \w'            'u +上記付属語接続なし +.IP 形2(KEIYOUSI_2) +[さ] +.IP 形3(KEIYOUSI_3) +[さ、げ] +.IP 形4(KEIYOUSI_4) +[さ、がる] +.IP 形5(KEIYOUSI_5) +[さ、げ、がる] +.IP 形6(KEIYOUSI_6) +[さ、め、げ] +.IP 形7(KEIYOUSI_7) +[さ、め、げ、がる] +.IP 形8(KEIYOUSI_8) +[さ、み、め、げ、がる] +.IP 形9(KEIYOUSI_9) +接頭語 "お", [さ、げ、がる] +.IP 形10(KEIYOUSI_10) +接頭語 "お", [さ、め、げ、がる] +.IP 形11(KEIYOUSI_11) +[さ、み、め] +.RE +.RE + +.NH +形容動詞 +.RS +.IP 形動1(KE_DOUSI_1) \w'            'u +ダ活用 +.IP 形動2(KE_DOUSI_2) +タリ活用 +.IP 形動3(KE_DOUSI_3) +ダ活用、語幹で連体修飾 +.IP 形動4(KE_DOUSI_4) +ダ活用、"〜さ" +.IP 形動5(KE_DOUSI_5) +ダ活用、"〜さ"、語幹で連体修飾 +.IP 形動6(KE_DOUSI_6) +ダ活用、接頭語 "お" が接続 +.IP 形動7(KE_DOUSI_7) +ダ活用、"〜さ"、接頭語 "お" が接続 +.IP 形動8(KE_DOUSI_8) +ダ活用、接頭語 "ご" が接続 +.IP 形動9(KE_DOUSI_9) +ダ活用、"〜の" +.RE +.RE + +.NH +動詞 +.RS +.IP サ変(DO_SAHEN) \w'            'u +サ変動詞、連用名詞扱いできない +.IP ザ変(DO_ZAHEN) +ザ変動詞。連用名詞扱いできない + +.IP 一段1(DO_1DAN_1) \w'            'u +連用名詞扱いできない +.IP 一段2(DO_1DAN_2) +連用名詞扱いできない、接頭語 "お" +.IP 一段3(DO_1DAN_3) +連用名詞扱いできる +.IP 一段4(DO_1DAN_4) +連用名詞扱いできる、接頭語 "お" + +.IP カ五1(DO_KAGO_1) \w'            'u +連用名詞扱いできない、 +.IP カ五2(DO_KAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP カ五3(DO_KAGO_3) +連用名詞扱いできる +.IP カ五4(DO_KAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP カ五5(DO_KAGO_5) +連用名詞扱いできない、[け、ける、けれ] +.IP カ五6(DO_KAGO_6) +連用名詞扱いできない、[け、ける、けれ]、接頭語 "お" +.IP カ五7(DO_KAGO_7) +連用名詞扱いできる、[け、ける、けれ] +.IP カ五8(DO_KAGO_8) +連用名詞扱いできる、[け、ける、けれ]、接頭語 "お" + +.IP ガ五1(DO_GAGO_1) \w'            'u +連用名詞扱いできない +.IP ガ五2(DO_GAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP ガ五3(DO_GAGO_3) +連用名詞扱いできる +.IP ガ五4(DO_GAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP ガ五5(DO_GAGO_5) +連用名詞扱いできない、[げ、げる、げれ] +.IP ガ五6(DO_GAGO_6) +連用名詞扱いできない、[げ、げる、げれ]、接頭語 "お" +.IP ガ五7(DO_GAGO_7) +連用名詞扱いできる、[げ、げる、げれ] +.IP ガ五8(DO_GAGO_8) +連用名詞扱いできる、[げ、げる、げれ]、接頭語 "お" + +.IP サ五1(DO_SAGO_1) \w'            'u +連用名詞扱いできない +.IP サ五2(DO_SAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP サ五3(DO_SAGO_3) +連用名詞扱いできる +.IP サ五4(DO_SAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP サ五5(DO_SAGO_5) +連用名詞扱いできない、[せ、せる、せれ] +.IP サ五6(DO_SAGO_6) +連用名詞扱いできない、[せ、せる、せれ]、接頭語 "お" +.IP サ五7(DO_SAGO_7) +連用名詞扱いできる、[せ、せる、せれ] +.IP サ五8(DO_SAGO_8) +連用名詞扱いできる、[せ、せる、せれ]、接頭語 "お" + +.IP タ五1(DO_TAGO_1) \w'            'u +連用名詞扱いできない +.IP タ五2(DO_TAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP タ五3(DO_TAGO_3) +連用名詞扱いできる +.IP タ五4(DO_TAGO_4) +連用名詞扱いできる、接頭語"お" +.IP タ五5(DO_TAGO_5) +連用名詞扱いできない、[て、てる、てれ] +.IP タ五6(DO_TAGO_6) +連用名詞扱いできない、[て、てる、てれ]、接頭語 "お" +.IP タ五7(DO_TAGO_7) +連用名詞扱いできる、[て、てる、てれ] +.IP タ五8(DO_TAGO_8) +連用名詞扱いできる、[て、てる、てれ]、接頭語 "お" + +.IP ナ五(DO_NAGO) \w'            'u +連用名詞扱いできない + +.IP バ五1(DO_BAGO_1) \w'            'u +連用名詞扱いできない +.IP バ五2(DO_BAGO_2) +連用名詞扱いできない、"お" +.IP バ五3(DO_BAGO_3) +連用名詞扱いできる +.IP バ五4(DO_BAGO_4) +連用名詞扱いできる、"お" +.IP バ五5(DO_BAGO_5) +連用名詞扱いできない、[べ、べる、べれ] +.IP バ五6(DO_BAGO_6) +連用名詞扱いできない、[べ、べる、べれ]、接頭語 "お" +.IP バ五7(DO_BAGO_7) +連用名詞扱いできる、[べ、べる、べれ] +.IP バ五8(DO_BAGO_8) +連用名詞扱いできる、[べ、べる、べれ]、接頭語 "お" + +.IP マ五1(DO_MAGO_1) \w'            'u +連用名詞扱いできない、 +.IP マ五2(DO_MAGO_2) +連用名詞扱いできない、"お" +.IP マ五3(DO_MAGO_3) +連用名詞扱いできる +.IP マ五4(DO_MAGO_4) +連用名詞扱いできる、"お" +.IP マ五5(DO_MAGO_5) +連用名詞扱いできない、[め、める、めれ] +.IP マ五6(DO_MAGO_6) +連用名詞扱いできない、[め、める、めれ]、接頭語 "お" +.IP マ五7(DO_MAGO_7) +連用名詞扱いできる、[め、める、めれ] +.IP マ五8(DO_MAGO_8) +連用名詞扱いできる、[め、める、めれ]、接頭語 "お" + +.IP ラ五1(DO_RAGO_1) \w'            'u +連用名詞扱いできない +.IP ラ五2(DO_RAGO_2) +連用名詞扱いできない、"お" +.IP ラ五3(DO_RAGO_3) +連用名詞扱いできる +.IP ラ五4(DO_RAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP ラ五5(DO_RAGO_5) +連用名詞扱いできない、[れ、れる、れれ] +.IP ラ五6(DO_RAGO_6) +連用名詞扱いできない、[れ、れる、れれ]、接頭語 "お" +.IP ラ五7(DO_RAGO_7) +連用名詞扱いできる、[れ、れる、れれ] +.IP ラ五8(DO_RAGO_8) +連用名詞扱いできる、[れ、れる、れれ]、接頭語 "お" + +.IP ワ五1(DO_WAGO_1) \w'            'u +連用名詞扱いできない +.IP ワ五2(DO_WAGO_1) +連用名詞扱いできない、"お" +.IP ワ五3(DO_WAGO_1) +連用名詞扱いできる +.IP ワ五4(DO_WAGO_1) +連用名詞扱いできる、接頭語 "お" +.IP ワ五5(DO_WAGO_1) +連用名詞扱いできない、[え、える、えれ] +.IP ワ五6(DO_WAGO_1) +連用名詞扱いできない、[え、える、えれ]、接頭語 "お" +.IP ワ五7(DO_WAGO_1) +連用名詞扱いできる、[え、える、えれ] +.IP ワ五8(DO_WAGO_1) +連用名詞扱いできる、[え、える、えれ]、接頭語 "お" +.RE +.RE + +.NH +特殊品詞 +.RS +分類不可能な語、特殊な活用をする語句など +.sp +.IP 単漢(TANKANJI) \w'            'u +単漢字 +.sp +.IP サ変未1(SP_SA_MI1) \w'            'u +さ +.IP サ変未2(SP_SA_MI2) +せ +.IP サ変未用(SP_SA_YOU) +し +.IP サ変終体(SP_SA_SYU) +する +.IP サ変仮(SP_SA_KAT) +すれ +.IP サ変命1(SP_SA_ME1) +しろ +.IP サ変命2(SP_SA_ME2) +せよ +.sp +.IP カ変未(SP_KA_MIZ) +こ +.IP カ変用(SP_KA_YOU) +き +.IP カ変終体(SP_KA_SYU) +くる +.IP カ変仮(SP_KA_KAT) +くれ +.IP カ変命(SP_KA_ME1) +こい +.sp +.IP 丁寧1(TEINEI1) +いらっしゃい、おっしゃい、ください、なさい +.IP 丁寧2(TEINEI2) +ござい +.sp +.IP カ五音便(SP_KA_ONB) +いっ +.sp +.IP 特殊副(SP_FUKUSI) +こう、そう、どう +.sp +.IP 挨拶(AISATU) +ありがとう、おめでとう、おはよう +.sp +.IP 特殊形容(SP_KEIYOUSI) +いい +.sp +.IP 一括(IKKATU) \w'            'u +文節変換では参照されない語。"関連辞書" で関連を定義するために存在する語。 +.RE +.RE diff --git a/doc/doc/makedict.ms b/doc/doc/makedict.ms new file mode 100644 index 0000000..35a5d09 --- /dev/null +++ b/doc/doc/makedict.ms @@ -0,0 +1,91 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"Author: Noriyuki Hosoe, Sony Corporation +.\" +.\"$SonyRCSfile: makedict.ms,v $ +.\"$SonyRevision: 1.1 $ +.\"$SonyDate: 1994/06/03 08:00:47 $ +.\" +.TL +辞書生成ツール makedict +.RS +.LP +\fBmakedict\fP は、仮名漢字変換サーバ \fBsj3serv\fP で使用する辞書を +作成するためのツールです。 +.sp +このツールを使用することにより、エディタで編集された辞書を \fBsj3serv\fP で +使用可能な形態に変換することが出来ます。 +.sp +編集可能ファイルは、以下のような形式をしています。 +.RS +.DS +あ           亜           接頭1: +あ           開           カ五2: +あ           空           カ五4: +あ           明           カ五2: +あ           飽           カ五3: +            : +.DE +.RE +それぞれのフィールドは以下の意味を持ちます。 +.RS +.DS +第1フィールド  読み(全角ひらがな) +第2フィールド  目的の出力 +第3フィールド  品詞の並び +.DE +.RE +ここで各フィールド間は、1つ以上のスペースあるいはタブで区切られている +必要があります。また各行は、読みでソートされていなければなりません。 +.sp +第3フィールド(品詞のフィールド)には、別紙で定義されている品詞を記述します。 +.sp +1つの熟語にたいして複数の品詞を指定するときには、以下のようにします。 +.RS +.DS +あい          愛           代4:サ五5: +あえ          あえ          ガ五3:一段1: +あお          青           代1:形11: +            : +.DE +.RE +なおこの辞書では、体言(名詞・副詞・連体詞など非活用のもの)については +熟語そのままを、用言(動詞・形容詞・形容動詞など活用するもの)に +関しては語幹のみを登録しなければなりません。 +.sp +このような編集可能ファイルから \fBsj3serv\fP で使用可能な辞書を生成するには、 +\fBmakedict\fP を使用して以下のようにします。 +.RS +.DS +makedict \fIsrc_file_name\fP \fIdst_file_name\fP +.DE +.RE +エラーがなく実行が終了したときには、\fIsrc_file_name\fP で指定された +編集可能ファイルが変換され、\fIdst_file_name\fP で指定されたファイルに +格納されています。 +.RE diff --git a/doc/doc/sj3lib.ms b/doc/doc/sj3lib.ms new file mode 100644 index 0000000..9a3ab76 --- /dev/null +++ b/doc/doc/sj3lib.ms @@ -0,0 +1,619 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"Author: Noriyuki Hosoe, Sony Corporation +.\"Modifier: Nobuyuki Tanaka, Sony Corporation +.\" +.\"$SonyRCSfile: sj3lib.ms,v $ +.\"$SonyRevision: 1.1 $ +.\"$SonyDate: 1994/06/03 08:00:48 $ +.\" +.TL +sj3lib ライブラリ +.AB +.LP +\fBsj3lib\fP は、ソニー(株)で開発された仮名漢字変換サーバ \fIsj3serv\fP と +通信し仮名漢字変換を行う、クライアント用ライブラリです。 +.sp +アプリケーションプログラムは、\fBsj3lib\fP を使用することにより +\& \fIsj3serv\fP を使用した仮名漢字変換を行うことが可能となります。 +.AE +.SH +はじめに +.RS +.IP ・ +\fBsj3lib\fP では、関数や変数に sj3_ で始まる名前を使用していますので、 +sj3_ で始まる関数名、変数名の使用はお避けください。 +.IP ・ +\fBsj3lib\fP で扱う文字コードは、関数名の最後に "_euc" がついているときは、 +EUC です。"_mb" がついている場合は、引数の文字コードがプログラム実行時の +ロケールに依存します。なにも付いてないときには、引数の文字コードにシフト +JIS を使用します。 +.IP ・ +メイン辞書、ユーザ辞書、学習ファイルは、接続するサーバの動作しているマシン上のものが使用されます。 +.br +これらのファイルは、デフォルトではディレクトリ \fB/usr/dict/sj3\fP の下におかれますが、サーバのセットアップファイルにより変更が可能です。 +.IP ・ +ユーザ辞書と学習ファイルは、関数 sj3_open で指定されたユーザ名を USER と +すれば、\fBuser/USER/private.dic\fP と \fBuser/USER/study.dat\fP です。 +.RE +.NH +サーバの使用開始 +.RS +.LP +.DS +sj3_open(hname, uname) +char *hname; /* ホスト名へのポインタ */ +char *uname; /* ユーザ名へのポインタ */ +.DE +.sp +文字列へのポインタ \fBhname\fP で指定されたホスト上のサーバ \fIsj3serv\fP に +対し、ユーザ名としてポインタ \fBuname\fP で指定される文字列を使用し、 +接続を試みます。 +.sp +接続には、ホスト名へのポインタ \fBhname\fP がナルポインタ、あるいは、 +空の文字列または文字列 unix へのポインタの時には AF_UNIX ソケットを、 +それ以外のときには AF_INET ソケットを使用します。 +.sp +接続できたときには、サーバの立ち上げ時に指定された辞書ディレクトリ内にある +メイン辞書 sj3main.dic、ユーザ辞書 user/\fBuname\fP/private.dic、 +学習ファイル user/\fBuname\fP/study.dat をオープンします。 +.br +指定されたユーザ用のディレクトリ、ユーザ辞書、学習ファイルが +存在しないときには、それらの生成を試みます。 +.sp +この関数は、かな漢字変換ルーチンを使用する以前に必ず呼ばなければなりません。 +.sp +サーバと正常に接続できたときには 0 を、何かエラーのあったときには 0 以外の +エラーステータスを返します。 +.sp +エラーステータスはヘッダファイル \fB/usr/include/sj3lib.h\fP で +定義されるビットアサインされた値で、詳細は以下のとおりです。 +.sp +.IP "\fBSJ3_SERVER_DEAD\fP +接続処理中にサーバがダウンしました。 +.IP "\fBSJ3_CONNECT_ERROR\fP +サーバがない、あるいは接続できません。 +.IP "\fBSJ3_ALREADY_CONNECTED\fP +すでにサーバと接続済です。 +.IP "\fBSJ3_CANNOT_OPEN_MDICT\fP +メイン辞書がオープンできません。 +.IP "\fBSJ3_CANNOT_OPEN_UDICT\fP +ユーザ辞書がオープンできません。 +.IP "\fBSJ3_CANNOT_OPEN_STUDY\fP +学習ファイルがオープンでいません。 +.IP "\fBSJ3_CANNOT_MAKE_UDIR\fP +個人ファイルのためのディレクトリが作成できません。 +.IP "\fBSJ3_CANNOT_MAKE_UDICT\fP +ユーザ辞書が作成できません。 +.IP "\fBSJ3_CANNOT_MAKE_STUDY\fP +学習ファイルが作成できません。 +.RE +.sp +エラーステータスには、これらのうち少なくとも 1 ビットが立っています。 +.br +エラーステータスのうち \fBSJ3_SERVER_DEAD\fP あるいは \fBSJ3_CONNECT_ERROR\fP が +返されたとき以外は、サーバとの接続が確立されています。 +.RE + +.NH +サーバの使用終了 +.RS +.LP +.DS +sj3_close() +.DE +.sp +\fIsj3_open\fP によって確立されたサーバとの接続を切り放します。 +.br +メイン辞書、ユーザ辞書、学習ファイルのすべてがオープンされているものとして、 +それらのクローズを試みます。 +.sp +この関数は、かな漢字変換ルーチンの使用を終えるときに呼ばなければなりません。 +.sp +サーバとの使用を正常に終了できたときには 0 を、 +何かエラーのあったときには 0 以外のエラーステータスを返します。 +.sp +エラーステータスはヘッダファイル \fB/usr/include/sj3lib.h\fP で +定義されるビットアサインされた値で、詳細は以下のとおりです。 +.sp +.IP "\fBSJ3_SERVER_DEAD\fP +切り放し処理中にサーバがダウンしました。 +.IP "\fBSJ3_DISCONNECT_ERROR\fP +サーバで内部エラーがありました。 +.IP "\fBSJ3_NOT_CONNECTED\fP +サーバと接続されていません。 +.IP "\fBSJ3_NOT_OPENED_MDICT\fP +メイン辞書がオープンされていません。 +.IP "\fBSJ3_NOT_OPENED_UDICT\fP +ユーザ辞書がオープンされていません。 +.IP "\fBSJ3_NOT_OPENED_STUDY\fP +学習ファイルがオープンされていません。 +.IP "\fBSJ3_CLOSE_MDICT_ERROR\fP +メイン辞書がクローズできません。 +.IP "\fBSJ3_CLOSE_UDICT_ERROR\fP +ユーザ辞書がクローズできません。 +.IP "\fBSJ3_CLOSE_STUDY_ERROR\fP +学習ファイルがクローズできません。 +.RE +.sp +エラーステータスには、これらのうち少なくとも 1 ビットが立っています。 +.br +どのエラーステータスが返っても、サーバとの接続は切れています。 +.RE + +.NH +文章一括変換 +.RS +.LP +.DS +sj3_getkan(yomi, bun, knjbuf, knjsiz) +sj3_getkan_euc(yomi, bun, knjbuf, knjsiz) +sj3_getkan_mb(yomi, bun, knjbuf, knjsiz) +unsigned char *yomi; /* 読み文字列へのポインタ */ +struct bunsetu bun[]; /* 文節構造体へのポインタ */ +unsigned char *knjbuf; /* 漢字文字列格納領域へのポインタ */ +int knjsiz; /* 漢字文字列格納領域の大きさ */ +.DE +.sp +与えられた読みを文章一括変換し、その結果を返します。 +.br +ポインタ \fByomi\fP で指定された読み文字列をかな漢字変換し、 +ポインタ \fBknjbuf\fP で示される大きさ \fBknjsiz\fP の領域に +変換結果の漢字文字列を、配列 \fBstruct bunsetu bun[]\fP に +各文節に関する情報をセットします。 +.br +\fBstruct bunsetu\fP はヘッダファイル \fB/usr/include/sj3lib.h\fP で +宣言されている以下のような構造体です。 +.sp +.RS +.DS +struct bunsetu { + int srclen; /* 読みの長さ */ + int destlen; /* 漢字の長さ */ + unsigned char *srcstr; /* 読みへのポインタ */ + unsigned char *deststr; /* 漢字へのポインタ */ + struct studyrec dcid; /* 学習のためのデータ */ +}; +.DE +.RE +.sp +読みが漢字文字列に変換できたときには、これらの要素はきちんと設定されますが、 +ポインタ \fBknjbuf\fP で示される領域の大きさ \fBbufsiz\fP が小さいなどの +原因で漢字文字列を返せない文節が生じたときには、その読み文字列への +ポインタを \fBsrcstr\fP に、またその長さを \fBsrclen\fP に持ち、 +\fBdestlen\fP が 0 で \fBdeststr\fP がナルポインタの構造体が生成されます。 +.sp +読みとして与えられる文字列は、 +シフト JIS または EUC の 2 バイトコードで構成されていることが原則ですが、 +1 バイトコードが混じっていてもかまいません。 +ただしその際には、1 バイトコードは漢字に変換されることはありません。 +.br +読み文字列はナルで終了していなければならず、 +最大でも 256 文字を越えてはなりません。 +.br +配列 \fBstruct bunsetu bun[]\fP の実体は、ユーザプログラム側で +取らなければなりません。 +その大きさは最大で読み文字数分必要となります。 +.br +変換時に必要とされるポインタ \fBknjbuf\fP で示される領域の大きさは、 +変換する文字数や登録されている単語の長さなどによって +変化します。最低でも 1024 バイト程度はあったほうが良いでしょう。 +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +読みがナル文字列だった、あるいは読みが長すぎたときには 0 が返されます。 +.br +正常終了したときには、配列 \fBstruct sj3bunsetu bun[]\fP にセットされた +文節数が返されます。 +.RE + +.NH +同音意義語数の取得 +.RS +.LP +.DS +sj3_douoncnt(yomi) +sj3_douoncnt_euc(yomi) +sj3_douoncnt_mb(yomi) +unsigned char *yomi; /* 読み文字列へのポインタ */ +.DE +.sp +与えられた読みを文節変換し、リターン値として同音意義語数を返します。 +.sp +ポインタ \fByomi\fP によって読みとして与えられる文字列は、 +シフト JIS または EUC の 2 バイトコードで構成されていることが原則ですが、 +1 バイトコードが混じっていてもかまいません。 +ただしその際には、1 バイトコードは漢字に変換されることはありません。 +.br +読み文字列はナルで終了していなければならず、 +最大でも 64 文字を越えてはなりません。 +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +読みがナル文字列だった、あるいは読みが長すぎた、または与えられた +読みで 1 文節が構成されなかったときには 0 が返されます。 +.br +正常終了したときには同音語数が返されます。 +.RE + +.NH +同音意義語の取得 +.RS +.LP +.DS +sj3_getdouon(yomi, dou) +sj3_getdouon_euc(yomi, dou) +sj3_getdouon_mb(yomi, dou) +unsigned char *yomi; /* 読み文字列へのポインタ */ +struct douon *dou; /* 同音意義語構造体へのポインタ */ +.DE +.sp +与えられた読みを文節変換し、同音意義語を与えられた構造体にセットす +るとともに、リターン値として同音意義語数を返します。 +.sp +ポインタ \fByomi\fP によって読みとして与えられる文字列は、 +シフト JIS または EUC の 2 バイトコードで構成されていることが原則ですが、 +1 バイトコードが混じっていてもかまいません。 +ただしその際には、1 バイトコードは漢字に変換されることはありません。 +.br +読み文字列はナルで終了していなければならず、 +最大でも 64 文字を越えてはなりません。 +.sp +配列 \fBstruct douon dou[]\fP には同音意義語に関する情報がセットされます。 +構造体 \fBstruct douon\fP は \fBsj3lib.h\fP で宣言されている +以下のような構造体です。 +.sp +.RS +.DS +struct douon { + unsigned char ddata[512]; /* 同音意義語のデータ */ + int dlen; /* 同音意義語の長さ */ + struct studyrec dcid; /* 学習のためのデータ */ +}; +.DE +.RE +.sp +配列 \fBstruct douon dou[]\fP の実体はユーザプログラム側で +取らなければなりません。 +.sp +構造体 \fBstruct douon\fP の \fBddata\fP は、ナルで終了する文字列です。 +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +読みがナル文字列だった、あるいは読みが長すぎた、または与えられた +読みで 1 文節が構成されなかったときには 0 が返されます。 +.br +正常終了したときには、配列 \fBstruct douon dou[]\fP に +セットされた同音語数が返されます。 +.RE + +.NH +文節学習 +.RS +.LP +.DS +sj_gakusyuu(dcid) +struct studyrec *dcid; /* 学習データへのポインタ */ +.DE +.sp +学習データへのポインタ \fBdcid\fP の示す、 +\fIsj3_getkan\fP や \fIsj_getdouon\fP により得られた学習データ +を使用して、文節学習を行います。 +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +正常に学習できたときには 0 が、学習できなかったときにはそれ以外の値が +返されます。 +.RE + +.NH +文節長学習 +.RS +.LP +.DS +sj_gakusyuu2(yomi1, yomi2, dcid) +sj_gakusyuu2_euc(yomi1, yomi2, dcid) +sj_gakusyuu2_mb(yomi1, yomi2, dcid) +unsigned char *yomi1; /* 第1文節の読み文字列へのポインタ */ +unsigned char *yomi2; /* 第2文節の読み文字列へのポインタ */ +struct studyrec *dcid; /* 第2文節の学習データへのポインタ */ +.DE +.sp +文節長学習を行います。 +.sp +1文節として変換された文字列が2文節に分けられたような場合、 +あるいは2文節の間でその境界が変更されたようなときには、 +\fByomi1\fP に新たな第1文節の読みへのポインタを、 +\fByomi2\fP に新たな第2文節の読みへのポインタを、 +\fBdcid\fP に新たな第2文節の学習データを与えることにより、 +文節長学習を行います。 +.sp +2文節として変換された文字列が1文節になった場合には、 +\fByomi1\fP に新たにできた1文節の読みへのポインタを、 +\fByomi2\fP にはナルポインタまたはナル文字列へのポインタを与えることにより、 +文節長学習を行います。このとき、\fBdcid\fP には設定すべきデータは +特にありません。 +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +正常に学習できたときには 0 が、学習できなかったときにはそれ以外の値が +返されます。 +.RE + +.NH +単語登録 +.RS +.LP +.DS +sj3_touroku(yomi, kanji, hinsi) +sj3_touroku_euc(yomi, kanji, hinsi) +sj3_touroku_mb(yomi, kanji, hinsi) +unsigned char *yomi; /* 読み文字列へのポインタ */ +unsigned char *kanji; /* 漢字文字列へのポインタ */ +int hinsi; /* 品詞コード */ +.DE +.sp +読み文字列へのポインタ \fByomi\fP、 +漢字文字列へのポインタ \fBkanji\fP、 +品詞コード \fBhinsi\fP で指定された語をユーザ辞書に登録します。 +.sp +読みは以下のシフト JIS または EUC コードで構成され、 +かつナルで終了していなければなりません。 +またその長さは、最大でも 31 文字を越えてはなりません。 +.sp +.RS +.DS +ー#@〒 +01234 56789 +ABCDE FGHIJ KLMNO PQRST UVWXY Z +abcde fghij klmno pqrst uvwxy z +あいうえお かきくけこ さしすせそ たちつてと なにぬねの +はひふへほ まみむめも や ゆ よ らりるれろ わゐ ゑを ん +がぎぐげご ざじずぜぞ だぢづでど ばびぶべぼ ぱぴぷぺぽ +ぁぃぅぇぉ   っ   ゃ ゅ ょ ゎ +ヴヵヶ +.DE +.RE +.sp +ただし以下の文字は読みの先頭になることが出来ません。 +.sp +.RS +.DS +ー を ぁぃぅぇぉ っ ゃゅょ ゎ ヵヶ +.DE +.RE +.sp +漢字はシフト JIS または EUC コードで構成され、かつナルで終了していなければ +なりません。 +またその長さは、最大でも 32 文字を越えてはなりません。 +.sp +品詞コードはヘッダファイル \fB/usr/include/sj3lib.h\fP で +定義される以下の品詞のうちの一つです。 +.sp +.RS +.DS +SJ3_H_NRMNOUN 普通名詞 SJ3_H_ADJVERB 形容動詞 +SJ3_H_PRONOUN 代名詞 SJ3_H_SILVERB サ変動詞 +SJ3_H_LNAME 苗字 SJ3_H_ZILVERB ザ変動詞 +SJ3_H_FNAME 名前 SJ3_H_ONEVERB 一段動詞 +SJ3_H_LOCNAME 地名 SJ3_H_KAVERB カ行五段動詞 +SJ3_H_PREFIC 県/区名 SJ3_H_GAVERB ガ行五段動詞 +SJ3_H_RENTAI 連体詞 SJ3_H_SAVERB サ行五段動詞 +SJ3_H_CONJUNC 接続詞 SJ3_H_TAVERB タ行五段動詞 +SJ3_H_SUBNUM 助数詞 SJ3_H_NAVERB ナ行五段動詞 +SJ3_H_NUMERAL 数詞 SJ3_H_BAVERB バ行五段動詞 +SJ3_H_PREFIX 接頭語 SJ3_H_MAVERB マ行五段動詞 +SJ3_H_POSTFIX 接尾語 SJ3_H_RAVERB ラ行五段動詞 +SJ3_H_ADVERB 副詞 SJ3_H_WAVERB ワ行五段動詞 +SJ3_H_ADJECT 形容詞 SJ3_H_SINGLE 単漢字 +.DE +.RE +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +登録できたときには 0 が、登録できなかったときにはそれ以外の +エラーステータスが返されます。 +.sp +エラーステータスはヘッダファイル \fB/usr/include/sj3lib.h\fP で +定義され、詳細は以下のとおりです。 +.sp +.IP "\fBSJ3_DICT_ERROR\fP +辞書が存在しない、あるいは登録できない辞書です。 +.IP "\fBSJ3_DICT_LOCKED\fP +辞書が読み出しのためにロックされています。 +.IP "\fBSJ3_BAD_YOMI_STR\fP +読み文字列が不正です。 +.IP "\fBSJ3_BAD_KANJI_STR\fP +漢字文字列が不正です。 +.IP "\fBSJ3_BAD_HINSI_CODE\fP +品詞コードが不正です。 +.IP "\fBSJ3_WORD_EXIST\fP +すでに登録済です。 +.IP "\fBSJ3_DOUON_FULL\fP +これ以上同音語を登録できません。 +.IP "\fBSJ3_DICT_FULL\fP +これ以上辞書に登録できません。 +.IP "\fBSJ3_INDEX_FULL\fP +これ以上インデックスに登録できません。 +.IP "\fBSJ3_TOUROKU_FAILED\fP +他の原因で辞書への登録を失敗しました。 +.RE +.RE + +.NH +単語削除 +.RS +.LP +.DS +sj3_syoukyo(yomi, kanji, hinsi) +sj3_syoukyo_euc(yomi, kanji, hinsi) +sj3_syoukyo_mb(yomi, kanji, hinsi) +unsigned char *yomi; /* 読み文字列へのポインタ */ +unsigned char *kanji; /* 漢字文字列へのポインタ */ +int hinsi; /* 品詞コード */ +.DE +.sp +ユーザ辞書に登録されている +読み文字列へのポインタ \fByomi\fP、 +漢字文字列へのポインタ \fBkanji\fP、 +品詞コード \fBhinsi\fP で指定された語を消去します。 +.sp +読みは以下のシフト JIS または EUC コードで構成され、 +かつナルで終了していなければなりません。 +またその長さは、最大でも 31 文字を越えてはなりません。 +.sp +.RS +.DS +ー#@〒 +01234 56789 +ABCDE FGHIJ KLMNO PQRST UVWXY Z +abcde fghij klmno pqrst uvwxy z +あいうえお かきくけこ さしすせそ たちつてと なにぬねの +はひふへほ まみむめも や ゆ よ らりるれろ わゐ ゑを ん +がぎぐげご ざじずぜぞ だぢづでど ばびぶべぼ ぱぴぷぺぽ +ぁぃぅぇぉ   っ   ゃ ゅ ょ ゎ +ヴヵヶ +.DE +.RE +.sp +ただし以下の文字は読みの先頭になることが出来ません。 +.sp +.RS +.DS +ー を ぁぃぅぇぉ っ ゃゅょ ゎ ヵヶ +.DE +.RE +.sp +漢字はシフト JIS または EUC コードで構成され、かつナルで終了していなければ +なりません。 +またその長さは、最大でも 32 文字を越えてはなりません。 +.sp +品詞コードは \fB/usr/include/sj3lib.h\fP で定義される以下の品詞の +うちの一つです。 +.sp +.RS +.DS +SJ3_H_NRMNOUN 普通名詞 SJ3_H_ADJVERB 形容動詞 +SJ3_H_PRONOUN 代名詞 SJ3_H_SILVERB サ変動詞 +SJ3_H_LNAME 苗字 SJ3_H_ZILVERB ザ変動詞 +SJ3_H_FNAME 名前 SJ3_H_ONEVERB 一段動詞 +SJ3_H_LOCNAME 地名 SJ3_H_KAVERB カ行五段動詞 +SJ3_H_PREFIC 県/区名 SJ3_H_GAVERB ガ行五段動詞 +SJ3_H_RENTAI 連体詞 SJ3_H_SAVERB サ行五段動詞 +SJ3_H_CONJUNC 接続詞 SJ3_H_TAVERB タ行五段動詞 +SJ3_H_SUBNUM 助数詞 SJ3_H_NAVERB ナ行五段動詞 +SJ3_H_NUMERAL 数詞 SJ3_H_BAVERB バ行五段動詞 +SJ3_H_PREFIX 接頭語 SJ3_H_MAVERB マ行五段動詞 +SJ3_H_POSTFIX 接尾語 SJ3_H_RAVERB ラ行五段動詞 +SJ3_H_ADVERB 副詞 SJ3_H_WAVERB ワ行五段動詞 +SJ3_H_ADJECT 形容詞 SJ3_H_SINGLE 単漢字 +.DE +.RE +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +削除できたときには 0 が、削除できなかったときにはそれ以外の +エラーステータスが返されます。 +.sp +エラーステータスは \fB/usr/include/sj3lib.h\fP で定義され、 +詳細は以下のとおりです。 +.sp +.IP "\fBSJ3_DICT_ERROR\fP +辞書が存在しない、あるいは登録できない辞書です。 +.IP "\fBSJ3_DICT_LOCKED\fP +辞書が読み出しのためにロックされています。 +.IP "\fBSJ3_BAD_YOMI_STR\fP +読み文字列が不正です。 +.IP "\fBSJ3_BAD_KANJI_STR\fP +漢字文字列が不正です。 +.IP "\fBSJ3_BAD_HINSI_CODE\fP +品詞コードが不正です。 +.IP "\fBSJ3_WORD_NOT_EXIST\fP +指定された語は登録されていません。 +.IP "\fBSJ3_SYOUKYO_FAILED\fP +他の原因で辞書からの消去を失敗しました。 +.RE +.RE + +.NH +辞書のロック +.RS +.LP +.DS +sj3_lockserv() +.DE +.sp +現在オープンされている辞書に単語を登録/削除できないようにロックします。 +.sp +学習IDは単語の辞書内での位置を示しています。このため、クライアントが +学習IDを保持している間に辞書登録/削除が行われると、クライアントの +保持している学習IDと辞書の間で不整合を起こす可能性があります。 +それを避けるために、クライアントが学習IDを保持している間は辞書ファイルを +ロックする必要があります。 +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +ロックできたときには 0 が、 +ロックできなかったときにはそれ以外の値が返されます。 +.RE + +.NH +辞書のアンロック +.RS +.LP +.DS +sj3_unlockserv() +.DE +.sp +sj3_lockserv 関数でロックされている辞書に単語を登録/削除できるように +アンロックします。 +.sp +学習IDは単語の辞書内での位置を示しています。このため、クライアントが +学習IDを保持している間に辞書登録/削除が行われると、クライアントの +保持している学習IDと辞書の間で不整合を起こす可能性があります。 +それを避けるために、クライアントが学習IDを保持している間は辞書ファイルを +ロックする必要があります。 +.br +クライアントが辞書をロックしている間は、辞書登録/削除することができません。 +クライアントは学習IDを保持する必要がなくなったときには、ただちに辞書を +アンロックするべきです。 +.sp +サーバと接続されていないとき、あるいはサーバがダウンしたときには \-1 が +返されます。 +.br +アンロックできたときには 0 が、 +アンロックできなかったときにはそれ以外の値が返されます。 +.RE diff --git a/doc/doc/sj3serv.ms b/doc/doc/sj3serv.ms new file mode 100644 index 0000000..6437171 --- /dev/null +++ b/doc/doc/sj3serv.ms @@ -0,0 +1,170 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"Author: Noriyuki Hosoe, Sony Corporation +.\"Modifier: Nobuyuki Tanaka, Sony Corporation +.\" +.\"$SonyRCSfile: sj3serv.ms,v $ +.\"$SonyRevision: 1.1 $ +.\"$SonyDate: 1994/06/03 08:00:49 $ +.\" +.TL +仮名漢字変換サーバ sj3serv +.SH +はじめに +.RS +\fBsj3serv\fP は、ソニー(株)で開発された仮名漢字変換サーバです。 +.br +クライアントはこのサーバと通信することにより、仮名漢字変換を行うことが +可能となります。 +.RE + +.NH +使用するポート +.RS +.LP +sj3serv は \fB/etc/servives\fP のエントリ sj3serv を参照して、通信で使用する +ポート番号を取得します。 +.RE + +.NH +セットアップファイル +.NH 2 +フォーマット +.RS +.LP +セットアップファイルの設定は、設定する機能毎のキーワードとその値により +行います。 +キーワードと値、値と値の区切りにはスペースあるいはタブを使用します。 +キーワードを構成するアルファベットは、大文字と小文字の区別を行いません。 +.br +各行の '#' 以降はコメントとして無視されます。'#' をコメントの開始記号としないためには '\\' を先行させます。 +.sp +.RS +.IP 例: +.DS +MaxClient 32 # 最大クライアント数 +DictDir /var/dict/\e#dict +.DE +.RE +.RE +.RE +.sp +.NH 2 +再設定可能な機能 +.RS +.LP +セットアップファイルでは、以下の動作を指定できます。 +.RE +.NH 3 +最大クライアント数の設定 +.RS +.LP +.RS +MaxClient \fInumber_of_client\fP +.RE +.sp +サーバーに接続してよいクライアントの数を10進数で指定します。 +ただし、いくら大きな値を設定しても、64を越えるクライアントから +接続されることはありません。 +また、システムで許される最大数を越えてファイルがオープンされることも +ありませんから、指定された最大数のクライアントが接続できないこともあります。 +.br +デフォルトは64です。 +.RE +.sp +.NH 3 +辞書ディレクトリの設定 +.RS +.LP +.RS +DictDir \fIdirectory_name\fP +.RE +.sp +辞書の存在するディレクトリを指定します。 +.br +クライアントから指定される辞書ファイル名が\'/\'で始まるときには、 +そのファイル名を絶対パスとして辞書にアクセスしますが、\'/\'以外のときには、 +ここで指定されるディレクトリからの相対パスとして辞書にアクセスします。 +.br +デフォルトは /usr/dict/sj3 です。 +.RE +.sp +.NH 3 +辞書の事前リード +.RS +.LP +.RS +ReadDict \fIdictionary_name\fP +.RE +.sp +サーバの立ち上がり時に読み込む辞書を指定します。 +.br +巨大な辞書は事前に読み込んでおくことにより、クライアントの立ち上がる時間を短縮することが出来ます。 +.br +事前に読み込んでおく辞書は、複数指定することが出来ますが、 +1行で指定できるのは1つの辞書名です。 +.br +デフォルトで読み込まれる辞書はありません。 +.RE +.sp +.NH 3 +エラー出力ファイルの指定 +.RS +.LP +.RS +ErrorOut \fIerror_out_filename\fP +.RE +.sp +エラーやワーニングを出力するファイルを指定します。 +.br +デフォルトは /dev/null です。 +.RE +.sp +.NH 3 +接続可能なユーザの指定 +.RS +.LP +.RS +AllowUser \fIusername\fP \fIhostname\fP +.RE +.sp +サーバに接続できるユーザを制限します。 +.br +この行を指定することにより、サーバに接続できるのはホスト \fIhostname\fP 上の +ユーザ \fIusername\fP だけに制限されます。 +.br +\fIhostname\fP は省略できますが、その場合にはユーザ名が \fIusername\fP であれば +どのホストからでも無条件で接続できることになります。 +\fIusername\fP、\fIhostname\fP を記述するときには、複数文字とマッチングする +\'*\'と1文字とマッチングする\'.\'を使うことが出来ます。 +.br +AllowUser は複数行書くことが出来ます。 +.br +デフォルトでは全てのユーザを許可しています。 +.RE +.sp diff --git a/doc/man/Imakefile b/doc/man/Imakefile new file mode 100644 index 0000000..010e4c0 --- /dev/null +++ b/doc/man/Imakefile @@ -0,0 +1,58 @@ +/* + * Copyright (c) 1997 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:52 $ + */ + +#include "../../sj3.tmpl" + +/* + * Add make rules to install manpages. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#ifndef JapaneseManLocale +#define JapaneseManLocale ja_JP.EUC +#endif +JMANLOCALE = JapaneseManLocale + +#ifndef JapaneseManDir +#define JapaneseManDir $(SJ3TOP)/man/$(JMANLOCALE)/man1 +#endif + +JMANDIR = JapaneseManDir +MANLIST = sj3.1 sj3dic.1 sj3mkdic.1 sj3serv.1 + +all:: + +depend:: + +InstallMultipleFlags($(MANLIST),$(JMANDIR),$(INSTMANFLAGS)) diff --git a/doc/man/sj3.1 b/doc/man/sj3.1 new file mode 100644 index 0000000..de06cbd --- /dev/null +++ b/doc/man/sj3.1 @@ -0,0 +1,121 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"$SonyRCSfile: sj3.1,v $ +.\"$SonyRevision: 1.1 $ +.\"$SonyDate: 1994/06/03 08:00:50 $ +.\" +.\" Japanese input frontend processor +.TH SJ3 1 "October 1990" +.SH 名称 +sj3 \- 日本語入力フロントエンドプロセッサ +.SH 形式 +.B sj3 +[ \fB\-f\fP shell ] [ \fB\-h\fP ] [ \fB\-H\fP hostname ...] [ \fB\-L\fP ] +[ \fB-o\fP ] [ \fB\-e\fP program [ arguments ...]] +.SH 解説 +.I sj3 +は、仮名漢字変換サーバ +.IR " sj3serv" (1) +とソケットを使用したプロセス間通信により仮名漢字変換を +行う日本語入力フロントエンドプロセッサです。 +.PP +.I sj3 +はターミナル上で起動し、ターミナルから入力されたローマ字もしくは +半角カタカナを仮名漢字変換します。そして変換結果を、 +.I sj3 +上で動かしているアプリケーションに渡します。 +.PP +.I sj3 +は起動時にホームディレクトリ内の‘.sjrc’というセットアップ +ファイルを読み込み、その設定に従って動作をします。このファイルがなければ +デフォルトの動作をします。 +また +.I " sj3 +のローマ字仮名変換は、ホームディレクトリ内の‘.sjrk’ファイルで定義されて +いる規則に従います。このファイルがなければ、デフォルトの定義ファイル +の規則に従います。 +.SH オプション +.TP +.BI \-f " shell" +このオプションは、 +.I sj3 +起動時に実行されるシェルを指定します。デフォルトは +.I " /bin/csh +です。 +.TP +.BI \-h +オプションの説明を表示し、 +.I sj3 +は起動しません。 +.TP +.BI \-H " hostname \.\.\." +このオプションは、接続するサーバとなるホスト名リストを指定します。 +サーバとなるホストを複数指定した場合、その順番に接続を試みます。 +このオプションが省略され、環境変数 +.B " SJ3SERV +もしくはセットアップファイル +でもサーバの指定がなければ、localhost 上のサーバとの接続を試みます。 +すべてのサーバとの接続が出来なかった場合でも +.I " sj3 +は起動しますが、仮名漢字変換はできません。 +.TP +.BI \-L +このオプションは、起動されるシェルをログインシェルとすることを示します。 +.TP +.BI \-o +このオプションは、使用しているキーボードが NWP-410 であることを示します。 +.TP +.BI \-e " program \[arguments \.\.\.\]" +このオプションは、 +.I sj3 +起動時に実行されるプログラム及びその引数を指定します。 +.ft B +これは、コマンド行上の最後のオプションでなければなりません。 +.SH 環境変数 +.TP 15 +.B SJ3SERV +接続するサーバとなるホスト名リストを取得します。 +.TP 15 +.B SJRC +セットアップファイルのファイル名を取得します。 +.TP 15 +.B SJRK +ローマ字仮名変換規則定義ファイルのファイル名を取得します。 +.SH 関連ファイル +.PD 0 +.TP 15 +/usr/dict/sj3/user/$USER/private.dic +仮名漢字変換ユーザ辞書 +.TP +/usr/dict/sj3/user/$USER/study.dat +仮名漢字変換学習ファイル +.TP +/usr/lib/sj3/sjrk +デフォルトローマ字仮名変換規則定義ファイル +.SH 関連事項 +sj3serv(1), sj3lib(3) diff --git a/doc/man/sj3dic.1 b/doc/man/sj3dic.1 new file mode 100644 index 0000000..babb659 --- /dev/null +++ b/doc/man/sj3dic.1 @@ -0,0 +1,141 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"Author: Noriyuki Hosoe, Sony Corporation +.\" +.\"$SonyRCSfile: sj3dic.1,v $ +.\"$SonyRevision: 1.1 $ +.\"$SonyDate: 1994/06/03 08:00:51 $ +.\" +.TH SJ3DIC 1 +.SH 名称 +sj3dic \- sj3 ユーザ辞書メンテナンスツール +.SH 形式 +\fBsj3dic\fP \fB\-text\fP [ \fB\-H\fP host_name ] [ output_file ] +.br +\fBsj3dic\fP \fB\-dict\fP [ \fB\-H\fP host_name ] [ input_file ] +.SH 解説 +\fIsj3dic\fP は、仮名漢字変換サーバ \fIsj3serv(1)\fP とソケットを +使用したプロセス間通信をすることにより、サーバの動作しているマシン上の +ユーザ辞書をメンテナンスするツールです。 +.sp +接続するホストは \fIhost_name\fP で指定します。このオプションが +省略され、環境変数 \fBSJ3SERV\fP もしくは \fIsj3(1)\fP のセットアップ +ファイルでもサーバの指定がないときには、localhost 上のサーバとの接続を +試みます。 +.sp +.in +.B 1)ビジュアル辞書ファイルの作成 +.sp +.in +0.2i + \fBsj3dic\fP \fB\-text\fP [ \fB\-H\fP host_name ] [ output_file ] +.sp +サーバマシン上のユーザ辞書の内容を編集可能なテキストに変換し +\fIoutput_file\fP に出力します。\fIoutput_file\fP が指定されないときには +標準出力に出力されます。 +.sp +ビジュアルファイルは以下のようなものです。 +.sp + うぃんどう ウィンドウ       名詞: +.br + そにー ソニー(株)      名詞: +.br + ゆーびん 〒           名詞: +.br + わーく ワークステーション   名詞: +.sp +各フィールドは以下のようになっています。 +.sp + 第一フィールド  読み(全角ひらがな) +.br + 第二フィールド  目的の出力 +.br + 第三フィールド  品詞 +.sp + ここで、フィールド間は、1個以上の半角スペースまたはタブで区切られます。 +また各フィールドには、半角スペースおよびタブを記述することは許されません。 +品詞のフィールド(第三フィールド)には、以下の品詞を記述します。 +.sp +  名詞:   苗字:   地名:   代名詞:  名前: +.br +  県/区名: 数詞:   接頭語:  接尾語:  助数詞: +.br +  副詞:   接続詞:  連体詞:  形容詞:  形容動詞: +.br +  動・サ変: 動・ザ変: 動・一段: 動・カ五: 動・ガ五: +.br +  動・サ五: 動・タ五: 動・ナ五: 動・バ五: 動・マ五: +.br +  動・ラ五: 動・ワ五: 単漢字: +.sp +.in +.B 2)ユーザ辞書ファイルへの追加登録 +.in +0.2i +.sp + \fBsj3dic\fP \fB\-dict\fP [ \fB\-H\fP host_name ] [ input_file ] +.sp +ビジュアル辞書ファイルである \fIinput_file\fP の内容をサーバマシン上の +ユーザ辞書に追加登録します。\fIinput_file\fP が指定されないときには +標準入力が読み込まれます。 +.in +.SH 関連ファイル +.PD 0 +.TP \w'\ \ \ \ user/\fIusername\fP/private.dic'u+2n +/usr/bin/sj3serv +かな漢字変換サーバ +.TP +/usr/lib/sj3/serverrc +かな漢字変換サーバ セットアップファイル +.TP +/usr/bin/sj3 +日本語入力フロントエンドプロセッサ +.TP +/usr/dict/sj3/ +かな漢字変換サーバ デフォルト辞書ディレクトリ +.TP + sj3main.dic +かな漢字変換メイン辞書 +.TP + user/\fIusername\fP/private.dic +かな漢字変換ユーザ辞書 +.TP + user/\fIusername\fP/study.dat +かな漢字変換学習ファイル +.TP +/usr/include/sj3lib.h +かな漢字変換ライブラリ用インクルードファイル +.TP +/usr/lib/libsj3lib.a +かな漢字変換ライブラリ +.\".TP +.\"/usr/sony/demo/sj3/* +.\"かな漢字変換ライブラリ 使用法サンプル + +.SH 関連事項 +sj3(1), sj3serv(1), sj3lib(3) + +.SH バグ diff --git a/doc/man/sj3mkdic.1 b/doc/man/sj3mkdic.1 new file mode 100644 index 0000000..e1d1c50 --- /dev/null +++ b/doc/man/sj3mkdic.1 @@ -0,0 +1,576 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"$SonyRCSfile: sj3mkdic.1,v $ +.\"$SonyRevision: 1.2 $ +.\"$SonyDate: 1996/09/05 12:08:20 $ +.\" +.TH SJ3MKDIC 1 +.SH 名前 +\f4sj3mkdic\f1 \- sj3 辞書変換ツール +.SH 形式 +.B sj3mkdic +.I word_dict_text +.I output.dic +.SH 機能説明 +.B sj3mkdic +は、EUC のテキスト単語辞書ファイルから +.BR "sj3serv" (1) +で使用できるバイナリ形式の辞書ファイルに変換するツールです。 +変換された辞書のファイル名は必ず ".dic" で終わるようにしてください。 +.sp +このツールを使用することにより、エディタで編集された辞書を \fBsj3serv\fP で +使用可能な形態に変換することが出来ます。 + +.PP +単語辞書のテキストファイルのフォーマットは以下のようになっています。 +.sp +.nf + あーかんそー アーカンソー 地名:[州]:[都市]:[所]: + あいらし 愛らし 形3: + あお あお ガ五5:ラ五5: + あがた 県 単漢: +.fi +.sp +各フィールドは以下のようになっています。 +.sp +.nf + 第一フィールド  読み(全角ひらがな) + 第二フィールド  目的の出力 + 第三フィールド  品詞の並び +.fi +.sp +ここで、フィールド間は、1 個以上の半角スペースまたはタブで区切られます。 +また各フィールドには、半角スペースおよびタブを記述することは許されません。 +また各行は、読みでソートされていなければなりません。 +なおこの辞書では、体言(名詞・副詞・連体詞など非活用のもの)については +熟語そのままを、用言(動詞・形容詞・形容動詞など活用するもの)に +関しては語幹のみを登録しなければなりません。 +品詞のフィールド(第三フィールド)には、以下の品詞を記述します。 +.sp +.nf + カ五1: カ五2: カ五3: カ五4: カ五5: + カ五6: カ五7: カ五8: カ五音便: カ変仮: + カ変終体: カ変未: カ変命: カ変用: ガ五1: + ガ五2: ガ五3: ガ五4: ガ五5: ガ五6: + ガ五7: ガ五8: サ五1: サ五2: サ五3: + サ五4: サ五5: サ五6: サ五7: サ五8: + サ変: サ変仮: サ変終体: サ変未1: サ変未2: + サ変未用: サ変命1: サ変命2: ザ変: タ五1: + タ五2: タ五3: タ五4: タ五5: タ五6: + タ五7: タ五8: ナ五: バ五1: バ五2: + バ五3: バ五4: バ五5: バ五6: バ五7: + バ五8: マ五1: マ五2: マ五3: マ五4: + マ五5: マ五6: マ五7: マ五8: ラ五1: + ラ五2: ラ五3: ラ五4: ラ五5: ラ五6: + ラ五7: ラ五8: ワ五1: ワ五2: ワ五3: + ワ五4: ワ五5: ワ五6: ワ五7: ワ五8: + 挨拶: 一括: 一段1: 一段2: 一段3: + 一段4: 感動: 企業: 形1: 形10: + 形11: 形2: 形3: 形4: 形5: + 形6: 形7: 形8: 形9: 形動1: + 形動2: 形動3: 形動4: 形動5: 形動6: + 形動7: 形動8: 形動9: 県区: 助数: + 助数2: 数詞: 数詞2: 接続: 接頭1: + 接頭2: 接頭3: 接頭4: 接頭5: 接尾1: + 接尾2: 接尾3: 接尾4: 接尾5: 接尾6: + 接尾7: 接尾8: 接尾9: 代1: 代2: + 代3: 代4: 代5: 代6: 単漢: + 地名: 丁寧1: 丁寧2: 特殊形容: 特殊副: + 苗字: 副1: 副2: 副3: 副4: + 副5: 副6: 副7: 副8: 副9: + 名1: 名10: 名11: 名2: 名20: + 名3: 名4: 名5: 名6: 名7: + 名8: 名9: 名前: 連体: +.fi +.sp +\f3品詞について\f1 +.SH +**注意点** +.RS +.SH +上一段・下一段動詞の扱い +.RS +例えば、カ行上一段動詞 "起きる" の場合、 +.RS +語幹は     "お" +.br +活用語尾は   "き、きる、きれ、きろ、きよ" +.RE +となります。 +.br +活用語尾の1字目に注目すると、いずれの活用形においても共通なので、 +便宜的に "おき" までを語幹として扱うことにします。 +これによって "行" 及び "上下"の区別は必要なくなり、 +ただ "一段動詞" だけの分類分けで済ませています。 +.RE +.RE +名詞 +.RS +.LP +固有名詞を除いた名詞です。 +.br +これらは複合名詞を作りやすいか否かによって2つに分けられます。 +.br +複合名詞を作りやすいか否かは、主観によって判断しています。 +.RE + +複合名詞を作りやすい名詞 +.RS +.IP 名1(MEISI_1) \w'            'u +他の分類に含まれない、複合名詞を作りやすい名詞 +.IP 名2(MEISI_2) +接頭語 "お" +.IP 名3(MEISI_3) +接頭語 "ご" +.IP 名4(MEISI_4) +接尾語 "的" "化" のどちらか +.IP 名5(MEISI_5) +名詞+サ変動詞、接頭語 "お" +.IP 名6(MEISI_6) +名詞+サ変動詞 +.IP 名7(MEISI_7) +名詞+サ変動詞、接頭語 "ご" +.IP 名8(MEISI_8) +名詞+形容動詞 +.IP 名9(MEISI_9) +名詞+形容動詞、接頭語 "お" +.IP 名10(MEISI_10) +名詞+形容動詞、接頭語 "ご" +.IP 名11(MEISI_11) +名詞+副詞 +.RE + +複合名詞を作りにくい名詞 +.RS +.IP 代1(D_MEISI_1) \w'            'u +他の分類に含まれない、複合名詞を作りにくい名詞 +.IP 代2(D_MEISI_2) +接尾語 "さん" +.IP 代3(D_MEISI_3) +"〜をする" +.IP 代4(D_MEISI_4) +名詞+サ変動詞 +.IP 代5(D_MEISI_5) +名詞+形容動詞 +.IP 代6(D_MEISI_6) +名詞+副詞 +.RE + +固有名詞 +.RS +.IP 苗字(MYOUJI) \w'            'u +人名の姓 +.IP 名前(NAMAE) +人名の名 +.IP 企業(KIGYOU) +企業名 +.IP 地名(TIMEI) +都道府県・区郡・市町村 および主要都市の駅名 +.IP 県区(KEN_KU) +都道府県・区の・・県(都,府,区)付き +.RE + +その他体言 +.RS +.IP 連体(RENTAISI) \w'            'u +連体詞 +.IP 接続(SETUZOKU) +接続詞 +.IP 感動(KANDOUSI) +感動詞 +.IP 助数(JOSUUSI1) +"第〜" が接続できる +.IP 助数2(JOSUUSI2) +"第〜”が接続できない +.IP 数詞(SUUSI) +数詞 +.RE + +接頭語 +.RS +.IP 接頭1(SETTOU_1) \w'            'u +名詞(サ変名詞・刑動名詞含む)に接続 +.IP 接頭2(SETTOU_2) +地名に接続(北、南、西、東 等) +.IP 接頭3(SETTOU_3) +人名に接続(故 など) +.IP 接頭4(SETTOU_4) +数詞に接続(第、計 等) +.IP 接頭5(SETTOU_5) +接頭1 より接続が強い +.RE + +接尾語 +.RS +.IP 接尾1(SETUBI_1) \w'            'u +名詞に接続、名詞扱い +.IP 接尾2(SETUBI_2) +名詞に接続、名詞扱い。ただし連濁形 +.IP 接尾3(SETUBI_3) +接尾1 より接続が強い +.IP 接尾4(SETUBI_4) +地名に接続、名詞扱い +.IP 接尾5(SETUBI_5) +名詞に接続、形容詞扱い +.IP 接尾6(SETUBI_6) +名詞に接続、形容動詞扱い +.IP 接尾7(SETUBI_7) +名詞に接続、サ変名詞扱い +.IP 接尾8(SETUBI_8) +名詞に接続、一段動詞扱い +.IP 接尾9(SETUBI_9) +接尾語+副詞 +.RE + +副詞 +.RS +.IP 副1(FUKUSI_1) \w'            'u +接続なし +.IP 副2(FUKUSI_2) +"〜と" 接続 +.IP 副3(FUKUSI_3) +"〜と", サ変動詞語尾が接続 +.IP 副4(FUKUSI_4) +サ変動詞語尾が接続 +.IP 副5(FUKUSI_5) +"〜に" 接続 +.IP 副6(FUKUSI_6) +"〜も" 接続 +.IP 副7(FUKUSI_7) +"〜の" 接続 +.IP 副8(FUKUSI_8) +"〜と", "〜です、〜だ" 接続 +.IP 副9(FUKUSI_9) +"〜と", サ変動詞語尾, "〜です、〜だ" 接続 +.RE + +形容詞 +.RS +.RS +.DS +[さ]  "さ" が接続して名詞化する +[げ]  "げ" が接続して形容動詞化する +[め]  "め" が接続して形容動詞化する +[み]  "み" が接続して名詞化する +[がる] "がる" が接続して動詞化する +.DE +.RE +.sp +.IP 形1(KEIYOUSI_1) \w'            'u +上記付属語接続なし +.IP 形2(KEIYOUSI_2) +[さ] +.IP 形3(KEIYOUSI_3) +[さ、げ] +.IP 形4(KEIYOUSI_4) +[さ、がる] +.IP 形5(KEIYOUSI_5) +[さ、げ、がる] +.IP 形6(KEIYOUSI_6) +[さ、め、げ] +.IP 形7(KEIYOUSI_7) +[さ、め、げ、がる] +.IP 形8(KEIYOUSI_8) +[さ、み、め、げ、がる] +.IP 形9(KEIYOUSI_9) +接頭語 "お", [さ、げ、がる] +.IP 形10(KEIYOUSI_10) +接頭語 "お", [さ、め、げ、がる] +.IP 形11(KEIYOUSI_11) +[さ、み、め] +.RE + +形容動詞 +.RS +.IP 形動1(KE_DOUSI_1) \w'            'u +ダ活用 +.IP 形動2(KE_DOUSI_2) +タリ活用 +.IP 形動3(KE_DOUSI_3) +ダ活用、語幹で連体修飾 +.IP 形動4(KE_DOUSI_4) +ダ活用、"〜さ" +.IP 形動5(KE_DOUSI_5) +ダ活用、"〜さ"、語幹で連体修飾 +.IP 形動6(KE_DOUSI_6) +ダ活用、接頭語 "お" が接続 +.IP 形動7(KE_DOUSI_7) +ダ活用、"〜さ"、接頭語 "お" が接続 +.IP 形動8(KE_DOUSI_8) +ダ活用、接頭語 "ご" が接続 +.IP 形動9(KE_DOUSI_9) +ダ活用、"〜の" +.RE + +動詞 +.RS +.IP サ変(DO_SAHEN) \w'            'u +サ変動詞、連用名詞扱いできない +.IP ザ変(DO_ZAHEN) +ザ変動詞。連用名詞扱いできない + +.IP 一段1(DO_1DAN_1) \w'            'u +連用名詞扱いできない +.IP 一段2(DO_1DAN_2) +連用名詞扱いできない、接頭語 "お" +.IP 一段3(DO_1DAN_3) +連用名詞扱いできる +.IP 一段4(DO_1DAN_4) +連用名詞扱いできる、接頭語 "お" + +.IP カ五1(DO_KAGO_1) \w'            'u +連用名詞扱いできない、 +.IP カ五2(DO_KAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP カ五3(DO_KAGO_3) +連用名詞扱いできる +.IP カ五4(DO_KAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP カ五5(DO_KAGO_5) +連用名詞扱いできない、[け、ける、けれ] +.IP カ五6(DO_KAGO_6) +連用名詞扱いできない、[け、ける、けれ]、接頭語 "お" +.IP カ五7(DO_KAGO_7) +連用名詞扱いできる、[け、ける、けれ] +.IP カ五8(DO_KAGO_8) +連用名詞扱いできる、[け、ける、けれ]、接頭語 "お" + +.IP ガ五1(DO_GAGO_1) \w'            'u +連用名詞扱いできない +.IP ガ五2(DO_GAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP ガ五3(DO_GAGO_3) +連用名詞扱いできる +.IP ガ五4(DO_GAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP ガ五5(DO_GAGO_5) +連用名詞扱いできない、[げ、げる、げれ] +.IP ガ五6(DO_GAGO_6) +連用名詞扱いできない、[げ、げる、げれ]、接頭語 "お" +.IP ガ五7(DO_GAGO_7) +連用名詞扱いできる、[げ、げる、げれ] +.IP ガ五8(DO_GAGO_8) +連用名詞扱いできる、[げ、げる、げれ]、接頭語 "お" + +.IP サ五1(DO_SAGO_1) \w'            'u +連用名詞扱いできない +.IP サ五2(DO_SAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP サ五3(DO_SAGO_3) +連用名詞扱いできる +.IP サ五4(DO_SAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP サ五5(DO_SAGO_5) +連用名詞扱いできない、[せ、せる、せれ] +.IP サ五6(DO_SAGO_6) +連用名詞扱いできない、[せ、せる、せれ]、接頭語 "お" +.IP サ五7(DO_SAGO_7) +連用名詞扱いできる、[せ、せる、せれ] +.IP サ五8(DO_SAGO_8) +連用名詞扱いできる、[せ、せる、せれ]、接頭語 "お" + +.IP タ五1(DO_TAGO_1) \w'            'u +連用名詞扱いできない +.IP タ五2(DO_TAGO_2) +連用名詞扱いできない、接頭語 "お" +.IP タ五3(DO_TAGO_3) +連用名詞扱いできる +.IP タ五4(DO_TAGO_4) +連用名詞扱いできる、接頭語"お" +.IP タ五5(DO_TAGO_5) +連用名詞扱いできない、[て、てる、てれ] +.IP タ五6(DO_TAGO_6) +連用名詞扱いできない、[て、てる、てれ]、接頭語 "お" +.IP タ五7(DO_TAGO_7) +連用名詞扱いできる、[て、てる、てれ] +.IP タ五8(DO_TAGO_8) +連用名詞扱いできる、[て、てる、てれ]、接頭語 "お" + +.IP ナ五(DO_NAGO) \w'            'u +連用名詞扱いできない + +.IP バ五1(DO_BAGO_1) \w'            'u +連用名詞扱いできない +.IP バ五2(DO_BAGO_2) +連用名詞扱いできない、"お" +.IP バ五3(DO_BAGO_3) +連用名詞扱いできる +.IP バ五4(DO_BAGO_4) +連用名詞扱いできる、"お" +.IP バ五5(DO_BAGO_5) +連用名詞扱いできない、[べ、べる、べれ] +.IP バ五6(DO_BAGO_6) +連用名詞扱いできない、[べ、べる、べれ]、接頭語 "お" +.IP バ五7(DO_BAGO_7) +連用名詞扱いできる、[べ、べる、べれ] +.IP バ五8(DO_BAGO_8) +連用名詞扱いできる、[べ、べる、べれ]、接頭語 "お" + +.IP マ五1(DO_MAGO_1) \w'            'u +連用名詞扱いできない、 +.IP マ五2(DO_MAGO_2) +連用名詞扱いできない、"お" +.IP マ五3(DO_MAGO_3) +連用名詞扱いできる +.IP マ五4(DO_MAGO_4) +連用名詞扱いできる、"お" +.IP マ五5(DO_MAGO_5) +連用名詞扱いできない、[め、める、めれ] +.IP マ五6(DO_MAGO_6) +連用名詞扱いできない、[め、める、めれ]、接頭語 "お" +.IP マ五7(DO_MAGO_7) +連用名詞扱いできる、[め、める、めれ] +.IP マ五8(DO_MAGO_8) +連用名詞扱いできる、[め、める、めれ]、接頭語 "お" + +.IP ラ五1(DO_RAGO_1) \w'            'u +連用名詞扱いできない +.IP ラ五2(DO_RAGO_2) +連用名詞扱いできない、"お" +.IP ラ五3(DO_RAGO_3) +連用名詞扱いできる +.IP ラ五4(DO_RAGO_4) +連用名詞扱いできる、接頭語 "お" +.IP ラ五5(DO_RAGO_5) +連用名詞扱いできない、[れ、れる、れれ] +.IP ラ五6(DO_RAGO_6) +連用名詞扱いできない、[れ、れる、れれ]、接頭語 "お" +.IP ラ五7(DO_RAGO_7) +連用名詞扱いできる、[れ、れる、れれ] +.IP ラ五8(DO_RAGO_8) +連用名詞扱いできる、[れ、れる、れれ]、接頭語 "お" + +.IP ワ五1(DO_WAGO_1) \w'            'u +連用名詞扱いできない +.IP ワ五2(DO_WAGO_1) +連用名詞扱いできない、"お" +.IP ワ五3(DO_WAGO_1) +連用名詞扱いできる +.IP ワ五4(DO_WAGO_1) +連用名詞扱いできる、接頭語 "お" +.IP ワ五5(DO_WAGO_1) +連用名詞扱いできない、[え、える、えれ] +.IP ワ五6(DO_WAGO_1) +連用名詞扱いできない、[え、える、えれ]、接頭語 "お" +.IP ワ五7(DO_WAGO_1) +連用名詞扱いできる、[え、える、えれ] +.IP ワ五8(DO_WAGO_1) +連用名詞扱いできる、[え、える、えれ]、接頭語 "お" +.RE + +特殊品詞 +.RS +分類不可能な語、特殊な活用をする語句など +.sp +.IP 単漢(TANKANJI) \w'            'u +単漢字 +.sp +.IP サ変未1(SP_SA_MI1) \w'            'u +さ +.IP サ変未2(SP_SA_MI2) +せ +.IP サ変未用(SP_SA_YOU) +し +.IP サ変終体(SP_SA_SYU) +する +.IP サ変仮(SP_SA_KAT) +すれ +.IP サ変命1(SP_SA_ME1) +しろ +.IP サ変命2(SP_SA_ME2) +せよ +.sp +.IP カ変未(SP_KA_MIZ) +こ +.IP カ変用(SP_KA_YOU) +き +.IP カ変終体(SP_KA_SYU) +くる +.IP カ変仮(SP_KA_KAT) +くれ +.IP カ変命(SP_KA_ME1) +こい +.sp +.IP 丁寧1(TEINEI1) +いらっしゃい、おっしゃい、ください、なさい +.IP 丁寧2(TEINEI2) +ござい +.sp +.IP カ五音便(SP_KA_ONB) +いっ +.sp +.IP 特殊副(SP_FUKUSI) +こう、そう、どう +.sp +.IP 挨拶(AISATU) +ありがとう、おめでとう、おはよう +.sp +.IP 特殊形容(SP_KEIYOUSI) +いい +.sp +.IP 一括(IKKATU) \w'            'u +文節変換では参照されない語。"関連辞書" で関連を定義するために存在する語。 +.RE +.SH ファイル +.PD 0 +.TP \w'\ \ \ \ user/\f2username\f1/private.dic'u+2n +.B /usr/bin/sj3serv +かな漢字変換サーバ +.TP +.B /usr/lib/sj3/serverrc +かな漢字変換サーバ セットアップファイル +.TP +.B /usr/bin/sj3 +日本語入力フロントエンドプロセッサ +.TP +.B /usr/dict/sj3/ +かな漢字変換サーバ デフォルト辞書ディレクトリ +.TP +.B " sj3main.dic +かな漢字変換メイン辞書 +.TP +.B " user/\f2username\f1/private.dic +かな漢字変換ユーザ辞書 +.TP +.B " user/\f2username\f1/study.dat +かな漢字変換学習ファイル +.TP +.B /usr/include/sj3lib.h +かな漢字変換ライブラリ用インクルードファイル +.TP +.B /usr/lib/libsj3lib.a +かな漢字変換ライブラリ +.TP +\f3/usr/demo/sj3/ *\f1 +かな漢字変換ライブラリ 使用法サンプル +.PD +.SH 関連項目 +\f4sj3\f1 (1), +\f4sj3serv\f1 (1), +\f4sj3dic\f1 (1), +\f4sj3lib\f1 (3) diff --git a/doc/man/sj3serv.1 b/doc/man/sj3serv.1 new file mode 100644 index 0000000..e8127a1 --- /dev/null +++ b/doc/man/sj3serv.1 @@ -0,0 +1,78 @@ +.\" +.\"Copyright (c) 1991-1994 Sony Corporation +.\" +.\"Permission is hereby granted, free of charge, to any person obtaining +.\"a copy of this software and associated documentation files (the +.\""Software"), to deal in the Software without restriction, including +.\"without limitation the rights to use, copy, modify, merge, publish, +.\"distribute, sublicense, and/or sell copies of the Software, and to +.\"permit persons to whom the Software is furnished to do so, subject to +.\"the following conditions: +.\" +.\"The above copyright notice and this permission notice shall be +.\"included in all copies or substantial portions of the Software. +.\" +.\"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +.\"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\"IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +.\"DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +.\"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +.\"THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.\"Except as contained in this notice, the name of Sony Corporation +.\"shall not be used in advertising or otherwise to promote the sale, use +.\"or other dealings in this Software without prior written authorization +.\"from Sony Corporation. +.\" +.\"Author: Noriyuki Hosoe, Sony Corporation +.\" +.\"$SonyRCSfile: sj3serv.1,v $ +.\"$SonyRevision: 1.1 $ +.\"$SonyDate: 1994/06/03 08:00:52 $ +.\" +.\" Server of Japanese input frontent processor +.TH SJ3SERV 1 "October 1990" +.SH 名称 +sj3serv \- 仮名漢字変換サーバ +.SH 形式 +.B sj3serv +[ \fB\-f\fP filename ] +.SH 解説 +\fIsj3serv\fP は、ソケットを使用したプロセス間通信により仮名漢字変換を +行なう、仮名漢字変換サーバです。 +.SH オプション +.TP +.BI \-f " filename" +このオプションは、\fIsj3serv\fP の読み込むセットアップファイルを指定します。 +.br +\fIsj3serv\fP はデフォルトではセットアップファイル +‘/usr/lib/sj3/serverrc’を読み込みますが、 +このオプションが指定されたときにはかわりに +コマンドラインで指定されたセットアップファイルを読み込みます。 +.br +.SH 関連ファイル +.PD 0 +.TP \w'\ \ \ \ user/\fIusername\fP/private.dic'u+2n +/usr/lib/sj3/serverrc +デフォルト仮名変換サーバ セットアップファイル +.TP +/usr/sony/dict/sj3/ +かな漢字変換サーバ デフォルト辞書ディレクトリ +.TP + sj3main.dic +仮名漢字変換メイン辞書 +.TP + user/\fIusername\fP/private.dic +仮名漢字変換ユーザ辞書 +.TP + user/\fIusername\fP/study.dat +仮名漢字変換学習ファイル + +.SH 関連事項 +sj3(1), sj3lib(3) + +.SH バグ +変換ルーチン内での辞書の識別には、辞書ファイルの inode 番号を +使用しています。コピーなどにより辞書ファイルの inode 番号が +変更されると、文節学習データは失われます。 diff --git a/include/Const.h b/include/Const.h new file mode 100644 index 0000000..4c3c8ac --- /dev/null +++ b/include/Const.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: Const.h,v $ + * $SonyRevision: 1.4 $ + * $SonyDate: 1997/01/23 11:20:52 $ + */ + +/* + * Change some default values. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#include "Paths.h" + +#define HostNameLen 128 +#define UserNameLen 128 +#define ProgNameLen 128 +#define PathNameLen 1024 +#define PassWordLen 16 + +#define YomiBufSize 1024 +#define KanjiBufSize 2048 + +#define MinIdxLen 512 +#define MinSegLen 512 +#define MinSegNum 1 +#define MinStyNum 512 +#define MaxStyNum 0x7fff +#define MinClStep 1 +#define MaxClStep 256 +#define MinClLen 512 +#define MaxClLen 0x7fff + +#define DebugOutFile NULL +#define DebugLevel 0 +#define ForkFlag 1 +#define MaxClientNum 512 +#define LogOutFile NULL +#define PortName "sj3" +#ifdef TLI +#define LocalHost "localhost" +#define ProtoName "tcp" +#define PortNumber "3000" +#else +#define PortNumber 3000 +#endif +#define DirectryMode 0755 +#define DictFileMode 0644 +#define MODE_MASK 0777 + +#define DefIdxLen 2048 +#define DefSegLen 2048 +#define DefSegNum 256 +#define DefStyNum 2048 +#define DefClStep 1 +#define DefClLen 2048 + +#define NotLocked -1 + +#define ERROR -1 + +#ifndef FALSE +# define TRUE -1 +# define FALSE (!TRUE) +#endif + diff --git a/include/Dict.h b/include/Dict.h new file mode 100644 index 0000000..1efae66 --- /dev/null +++ b/include/Dict.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: Dict.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:55 $ + */ + + + + +#define VersionPos 0 + +#define PasswdPos 16 +#define PasswdLen 16 + + +#define StdyNormPos 32 +#define StdyNormLen 36 +#define StdyNormNum 40 +#define StdyNormCnt 44 + +#define StdyClIdxPos 48 +#define StdyClIdxLen 52 +#define StdyClIdxStep 56 + +#define StdyClSegPos 64 +#define StdyClSegLen 68 + + +#define DictIdxPos 32 +#define DictIdxLen 36 + +#define DictSegPos 48 +#define DictSegLen 52 +#define DictSegNum 56 +#define DictSegMax 60 + +#define DictAIdxPos 64 +#define DictAIdxLen 68 + +#define DictASegPos 80 +#define DictASegLen 84 + + +#define HeaderPos 0 +#define HeaderLength 128 +#define CommentPos 128 +#define CommentLength 128 + + +#define Byte2Long(c3,c2,c1,c0) (((c3) << (8*3)) | ((c2) << (8*2)) | \ + ((c1) << (8*1)) | ((c0) << (8*0))) +#define StdyVersion Byte2Long('S', 2, 0, 0) +#define DictVersion Byte2Long('D', 2, 0, 0) diff --git a/include/Paths.h.in b/include/Paths.h.in new file mode 100644 index 0000000..42fd89b --- /dev/null +++ b/include/Paths.h.in @@ -0,0 +1,43 @@ +/* + * Copyright (c) 1997 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: Paths.h.in,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1997/01/23 11:20:55 $ + */ + +#define ErrorOutFile "/dev/console" + +#define SocketName "/tmp/sj3sock" +#define LockFile "/tmp/SJ3SERV.EXIST" + +#define MainDictionary "sj3main.dic" +#define UserDictionary "private.dic" +#define StudyFile "study.dat" diff --git a/include/Struct.h b/include/Struct.h new file mode 100644 index 0000000..fee6717 --- /dev/null +++ b/include/Struct.h @@ -0,0 +1,219 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: Struct.h,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1994/10/21 05:13:34 $ + */ + + + + +typedef struct global { + + + + JREC *Jmaxjptr; + CLREC *Jmaxclptr; + JREC *Jjrt1st; + CLREC *Jclt1st; + JREC *Jjrt2nd; + CLREC *Jclt2nd; + CLREC *Jselcl; + + + + Short Jselectid; + Short Jtrank; + Short Jnrank; + + + + Uchar *Jinputyomi; + Uchar *Jcnvstart; + Short Jcnvlen; + Uchar *Jystart; + Uchar Jhyomi[MaxPhInputLen+1]; + Uchar Jorgyomi[MaxClInputLen*2+1]; + + + + + Uchar Jkanjibuf[MinPhOutputLen]; + Uchar *Jkanjipos; + Uchar *Jkanjitmp; + Short Jkanjilen; + + + + + Uchar Jdicinl; + Uchar Jdicsaml; + TypeDicSeg Jprevseg; + + + + + Uchar Jfzkcount; + Uchar Jfzk_ka_flg; + FREC Jfzktbl[MAXFREC]; + + + + + Uchar Jheadcode; + Uchar Jheadlen; + + + + + Uchar Jgobilen; + + + + + TypeGram Jprevclgrm; + TypeCnct Jprevclrow; + Uchar Jnextcllen; + + + + + Short Jkhcount; + Short Jnkhcount; + KHREC Jkouhotbl[MaxKouhoNumber]; + STDYIN *Jstdytop; + + + + + DICT *Jcurdict; + DICTL *Jdictlist; + Uchar *Jdicbuf; + Uchar *Jidxbuf; + TypeIdxOfs *Jidxofs; + Uchar *Jaskknj[MaxKnjAskNumber]; + Uchar *Jaskknj_k[MaxKnjAskNumber]; + + STDY *Jcurstdy; + + + + Ushort Jsuuji_wbuf[NumWordBuf]; + Uchar Jsuuji_ubuf[NumKetaLength]; + TypeClass Jsuuji_class; + Uchar Jsuuji_comma; + Uchar Jsuuji_keta; + Uchar *Jsuuji_yptr; + Uchar Jsuuji_len; + Uchar Jsuuji_exit; + Ushort *Jsuuji_wkeep; + Uchar *Jsuuji_ukeep; + + + + + Uchar Jpeepyomi[MaxWdYomiLen * 2 + 1]; + Uchar Jpeepknj[MaxWdKanjiLen + 1]; + TypeGram Jpeepgrm; + Uchar *Jpeepdptr; + Uchar *Jpeephptr; + Uchar *Jpeepkptr; + TypeDicSeg Jpeepidx; + +} Global; + + + + +typedef struct dictfile { + DICT dict; + int refcnt; + fd_set lock; + FILE *fp; + int fd; + + Uchar *buffer; + long bufsiz; + + long idxstrt; + long segstrt; + + TypeIdxOfs *ofsptr; + + struct dictfile *link; +} DictFile; + + + + +typedef struct stdyfile { + STDY stdy; + int refcnt; + ino_t inode; + FILE *fp; + int fd; + + Uchar *header; + + struct stdyfile *link; +} StdyFile; + + + + +typedef struct workarea { + int refcnt; + int lock; + + struct workarea *link; + + Global global; +} WorkArea; + + + + +typedef struct client { + int fd; + char host[HostNameLen]; + char user[UserNameLen]; + char prog[ProgNameLen]; + + WorkArea *work; + StdyFile *stdy; + short version; + unsigned char def_char[2]; +#if (defined(TLI) && defined(SOCK_UNIX)) + int unix_flag; +#endif + uid_t uid; + struct client *next; +} Client; diff --git a/include/sj3cmd.h b/include/sj3cmd.h new file mode 100644 index 0000000..ed80664 --- /dev/null +++ b/include/sj3cmd.h @@ -0,0 +1,107 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3cmd.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:57 $ + */ + + + + + + + +#define SJ3SERV_VERSION_NO 2 + + + +#define SJ3_CONNECT 1 +#define SJ3_DISCONNECT 2 + +#define SJ3_OPENDICT 11 +#define SJ3_CLOSEDICT 12 + +#define SJ3_OPENSTDY 21 +#define SJ3_CLOSESTDY 22 +#define SJ3_STDYSIZE 23 + +#define SJ3_LOCK 31 +#define SJ3_UNLOCK 32 + +#define SJ3_PH2KNJ 41 + +#define SJ3_CL2KNJ 51 +#define SJ3_NEXTCL 52 +#define SJ3_PREVCL 53 +#define SJ3_CL2KNJ_ALL 54 +#define SJ3_CL2KNJ_CNT 55 + +#define SJ3_STUDY 61 +#define SJ3_CLSTUDY 62 + +#define SJ3_ADDDICT 71 +#define SJ3_DELDICT 72 + +#define SJ3_MAKEDICT 81 +#define SJ3_MAKESTDY 82 +#define SJ3_MAKEDIR 83 +#define SJ3_ACCESS 84 + +#define SJ3_GETDICT 91 +#define SJ3_NEXTDICT 92 +#define SJ3_PREVDICT 93 + +#define SJ3_WHO 100 +#define SJ3_QUIT 101 +#define SJ3_KILL 102 +#define SJ3_VERSION 103 +#define SJ3_DICTPASS 104 +#define SJ3_DICTCMNT 105 +#define SJ3_STDYPASS 106 +#define SJ3_STDYCMNT 107 + +#define SJ3_SETCVER 110 +#define SJ3_PH2KNJ_EUC 111 + +#define SJ3_CL2KNJ_EUC 112 +#define SJ3_NEXTCL_EUC 113 +#define SJ3_PREVCL_EUC 114 +#define SJ3_CL2KNJ_ALL_EUC 115 +#define SJ3_CL2KNJ_CNT_EUC 116 + +#define SJ3_CLSTUDY_EUC 117 + +#define SJ3_ADDDICT_EUC 118 +#define SJ3_DELDICT_EUC 119 + +#define SJ3_GETDICT_EUC 120 +#define SJ3_NEXTDICT_EUC 121 +#define SJ3_PREVDICT_EUC 122 diff --git a/include/sj3err.h b/include/sj3err.h new file mode 100644 index 0000000..8dc4af4 --- /dev/null +++ b/include/sj3err.h @@ -0,0 +1,107 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3err.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:58 $ + */ + + + + + +#define SJ3_InternalError -1 + +#define SJ3_NormalEnd 0 + +#define SJ3_ServerDown 1 +#define SJ3_OpenSocket 2 +#define SJ3_ConnectSocket 3 +#define SJ3_GetHostByName 4 +#define SJ3_NotOpened 5 +#define SJ3_NotEnoughMemory 6 +#define SJ3_IllegalCommand 7 + +#define SJ3_DifferentVersion 11 +#define SJ3_NoHostName 12 +#define SJ3_NoUserName 13 +#define SJ3_NotAllowedUser 14 +#define SJ3_AlreadyConnected 15 +#define SJ3_NotConnected 16 + +#define SJ3_TooLongParameter 21 +#define SJ3_IllegalParameter 22 + +#define SJ3_BadDictID 31 +#define SJ3_IllegalDictFile 32 +#define SJ3_IllegalStdyFile 33 +#define SJ3_IncorrectPasswd 34 +#define SJ3_FileNotExist 35 +#define SJ3_CannotAccessFile 36 +#define SJ3_CannotOpenFile 37 +#define SJ3_CannotCreateFile 38 +#define SJ3_FileReadError 39 +#define SJ3_FileWriteError 40 +#define SJ3_FileSeekError 41 + +#define SJ3_StdyAlreadyOpened 51 +#define SJ3_StdyFileNotOpened 52 +#define SJ3_TooSmallStdyArea 53 + +#define SJ3_LockedByOther 61 +#define SJ3_NotLocked 62 + +#define SJ3_NoSuchDict 71 +#define SJ3_ReadOnlyDict 72 +#define SJ3_DictLocked 73 +#define SJ3_BadYomiString 74 +#define SJ3_BadKanjiString 75 +#define SJ3_BadHinsiCode 76 + +#define SJ3_AddDictFailed 81 +#define SJ3_AlreadyExistWord 82 +#define SJ3_NoMoreDouonWord 83 +#define SJ3_NoMoreUserDict 84 +#define SJ3_NoMoreIndexBlock 85 + +#define SJ3_DelDictFailed 91 +#define SJ3_NoSuchWord 92 + +#define SJ3_DirAlreadyExist 101 +#define SJ3_CannotCreateDir 102 + +#define SJ3_NoMoreDictData 111 + +#define SJ3_UserConnected 121 + +#define SJ3_TooLongPasswd 131 +#define SJ3_TooLongComment 132 + +#define SJ3_CannotCodeConvert 133 diff --git a/include/sj3lowlib.h b/include/sj3lowlib.h new file mode 100644 index 0000000..f97d006 --- /dev/null +++ b/include/sj3lowlib.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3lowlib.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:00:59 $ + */ + + + + + + + +typedef struct sj3_client_env { + int fd; + int serv_dead_flg; + int stdy_size; + short svr_version; + short cli_version; + char default_char[2]; +} SJ3_CLIENT_ENV; + + + + +#ifndef SJ3_NAME_LENGTH +# define SJ3_NAME_LENGTH 128 +#endif +typedef struct sj3_who_struct { + int fd; + char hostname[SJ3_NAME_LENGTH]; + char username[SJ3_NAME_LENGTH]; + char progname[SJ3_NAME_LENGTH]; +} SJ3_WHO_STRUCT; + + +#define MBCODE_SJIS 1 +#define MBCODE_EUC 2 diff --git a/include/sj_connect.h b/include/sj_connect.h new file mode 100644 index 0000000..9523245 --- /dev/null +++ b/include/sj_connect.h @@ -0,0 +1,524 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_connect.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:00 $ + */ + + + + + +#ifndef _SJ_CONNECT + +#define _SJ_CONNECT + +#define wo_x 0 +#define ttatte_x 0 +#define ttara_x 0 +#define tte1_x 0 +#define tte2_x 0 +#define ppanasi_x 0 +#define ppoi_x 0 +#define ue_x 0 + +#define uti_x 0 +#define oite_x 0 +#define okeru_x 0 +#define ori_x 0 +#define ka1_x 0 +#define ka2_x 0 +#define kai_x 0 +#define kasira_x 0 + +#define katagata_x 0 +#define kadouka_x 0 +#define kana_x 0 +#define kane_x 0 +#define kamo_x 0 +#define kara1_x 0 +#define kara2_x 0 +#define ga1_x 0 + +#define ga2_x 0 +#define gatera_x 0 +#define kiri_x 0 +#define kuseni_x 0 +#define kurai_x 0 +#define gurumi_x 0 +#define kedo_x 0 +#define koso_x 0 + +#define koto_x 0 +#define sa2_x 0 +#define sae_x 0 +#define si2_x 0 +#define sika_x 0 +#define sura_x 0 +#define zutu_x 0 +#define zo_x 0 + +#define tame_x 0 +#define dake_x 0 +#define dano_x 0 +#define darake_x 0 +#define tuite_x 0 +#define tuki_x 0 +#define tutu_x 0 +#define tumori_x 0 + +#define te1_x 0 +#define te2_x 0 +#define teru_x 0 +#define dearou_x 0 +#define deru_x 0 +#define to1_x 0 +#define to2_x 0 +#define totte_x 0 + +#define toiu_x 0 +#define toori_x 0 +#define toki_x 0 +#define tokoro_x 0 +#define tote_x 0 +#define tohaie_x 0 +#define tomo_x 0 +#define do_x 0 + +#define doori_x 0 +#define dokoro_x 0 +#define dokoroka_x 0 +#define domo_x 0 +#define na1_x 0 +#define naa_x 0 +#define nagara_x 0 +#define nazo_x 0 + +#define nado_x 0 +#define nari_x 0 +#define nanka_x 0 +#define nanzo_x 0 +#define nante_x 0 +#define ni1_x 0 +#define ni2_x 0 +#define ni3_x 0 + +#define nite_x 0 +#define nimo_x 0 +#define ne1_x 0 +#define nee_x 0 +#define no1_x 0 +#define no2_x 0 +#define node_x 0 +#define noni_x 0 + +#define nomi_x 0 +#define nominrz_x 0 +#define ha_x 0 +#define hazu_x 0 +#define ba_x 0 +#define bakari_x 0 +#define he_x 0 +#define hou_x 0 + +#define hoka_x 0 +#define hodo_x 0 +#define made_x 0 +#define mama_x 0 +#define mo1_x 0 +#define mo2_x 0 +#define motte_x 0 +#define mono_x 0 + +#define ya1_x 0 +#define ya2_x 0 +#define yara_x 0 +#define yue_x 0 +#define yo_x 0 +#define yori_x 0 +#define wa_x 0 +#define wake_x 0 + +#define wane_x 0 +#define wayo_x 0 +#define nn1_x 0 +#define jya_x 0 +#define tya_x 0 +#define nagara2_x 0 +#define wo_s_x 0 + +#define ze_x 0 +#define kke_x 0 +#define n_si_x 0 +#define deha_x 0 + +#define gotosi_x 0 +#define saseru_x 0 +#define zaru_x 0 +#define zu_x 0 +#define zunba_x 0 +#define seru_x 0 +#define souda_x 0 +#define youtai_x 0 + +#define denbun_x 0 +#define ta_x 0 +#define tai_x 0 +#define tagaru_x 0 +#define taru_x 0 +#define da1_x 0 +#define da2_x 0 +#define daxtu_x 0 + +#define darou_x 0 +#define de_x 0 +#define desi_x 0 +#define desho_x 0 +#define desu_x 0 +#define na2_x 0 +#define nara_x 0 +#define nai_x 0 + +#define nu_x 0 +#define ne2_x 0 +#define nn2_x 0 +#define fuuda_x 0 +#define besi_x 0 +#define mai_x 0 +#define masu_x 0 +#define masure_x 0 + +#define mase_x 0 +#define mitaida_x 0 +#define you_x 0 +#define youda_x 0 +#define rasii_x 0 +#define rareru_x 0 +#define reru_x 0 +#define site_x 0 + +#define yougen_x 0 +#define aru_x 0 +#define ara_x 0 +#define ari1_x 0 +#define ari2_x 0 +#define ari3_x 0 +#define are1_x 0 +#define are2_x 0 + +#define arou_x 0 +#define ii_x 0 +#define itasi_x 0 +#define itadaku_x 0 +#define iru_x 0 +#define eru_x 0 +#define kakeru_x 0 +#define kaneru_x 0 + +#define karazu_x 0 +#define gatai_x 0 +#define gatida_x 0 +#define kudasaru_x 0 +#define gozai_x 0 +#define sa1_x 0 +#define si1_x 0 +#define siro_x 0 + +#define jyau_x 0 +#define jimau_x 0 +#define sugiru_x 0 +#define subesi_x 0 +#define suru_x 0 +#define sure_x 0 +#define se_x 0 +#define seyo_x 0 + +#define tamau_x 0 +#define tayu_x 0 +#define timau_x 0 +#define dekiru_x 0 +#define naru_x 0 +#define nasai_x 0 +#define nasaru_x 0 +#define nikui_x 0 + +#define yasui_x 0 +#define yoi_x 0 +#define yaru_x 0 +#ifdef HORI + \244\303\244\277\244\351\244\267\244\244\244\316 \244\316\276\360\312\363\244\362\304\311\262\303 1/31 +#endif + +#define ttarasii_x 0 + + +#define wo_o 0x80 +#define ttatte_o 0x40 +#define ttara_o 0x20 +#define tte1_o 0x10 +#define tte2_o 0x08 +#define ppanasi_o 0x04 +#define ppoi_o 0x02 +#define ue_o 0x01 + +#define uti_o 0x80 +#define oite_o 0x40 +#define okeru_o 0x20 +#define ori_o 0x10 +#define ka1_o 0x08 +#define ka2_o 0x04 +#define kai_o 0x02 +#define kasira_o 0x01 + +#define katagata_o 0x80 +#define kadouka_o 0x40 +#define kana_o 0x20 +#define kane_o 0x10 +#define kamo_o 0x08 +#define kara1_o 0x04 +#define kara2_o 0x02 +#define ga1_o 0x01 + +#define ga2_o 0x80 +#define gatera_o 0x40 +#define kiri_o 0x20 +#define kuseni_o 0x10 +#define kurai_o 0x08 +#define gurumi_o 0x04 +#define kedo_o 0x02 +#define koso_o 0x01 + +#define koto_o 0x80 +#define sa2_o 0x40 +#define sae_o 0x20 +#define si2_o 0x10 +#define sika_o 0x08 +#define sura_o 0x04 +#define zutu_o 0x02 +#define zo_o 0x01 + +#define tame_o 0x80 +#define dake_o 0x40 +#define dano_o 0x20 +#define darake_o 0x10 +#define tuite_o 0x08 +#define tuki_o 0x04 +#define tutu_o 0x02 +#define tumori_o 0x01 + +#define te1_o 0x80 +#define te2_o 0x40 +#define teru_o 0x20 +#define dearou_o 0x10 +#define deru_o 0x08 +#define to1_o 0x04 +#define to2_o 0x02 +#define totte_o 0x01 + +#define toiu_o 0x80 +#define toori_o 0x40 +#define toki_o 0x20 +#define tokoro_o 0x10 +#define tote_o 0x08 +#define tohaie_o 0x04 +#define tomo_o 0x02 +#define do_o 0x01 + +#define doori_o 0x80 +#define dokoro_o 0x40 +#define dokoroka_o 0x20 +#define domo_o 0x10 +#define na1_o 0x08 +#define naa_o 0x04 +#define nagara_o 0x02 +#define nazo_o 0x01 + +#define nado_o 0x80 +#define nari_o 0x40 +#define nanka_o 0x20 +#define nanzo_o 0x10 +#define nante_o 0x08 +#define ni1_o 0x04 +#define ni2_o 0x02 +#define ni3_o 0x01 + +#define nite_o 0x80 +#define nimo_o 0x40 +#define ne1_o 0x20 +#define nee_o 0x10 +#define no1_o 0x08 +#define no2_o 0x04 +#define node_o 0x02 +#define noni_o 0x01 + +#define nomi_o 0x80 +#define nominrz_o 0x40 +#define ha_o 0x20 +#define hazu_o 0x10 +#define ba_o 0x08 +#define bakari_o 0x04 +#define he_o 0x02 +#define hou_o 0x01 + +#define hoka_o 0x80 +#define hodo_o 0x40 +#define made_o 0x20 +#define mama_o 0x10 +#define mo1_o 0x08 +#define mo2_o 0x04 +#define motte_o 0x02 +#define mono_o 0x01 + +#define ya1_o 0x80 +#define ya2_o 0x40 +#define yara_o 0x20 +#define yue_o 0x10 +#define yo_o 0x08 +#define yori_o 0x04 +#define wa_o 0x02 +#define wake_o 0x01 + +#define wane_o 0x80 +#define wayo_o 0x40 +#define nn1_o 0x20 +#define jya_o 0x10 +#define tya_o 0x08 +#define nagara2_o 0x04 +#define wo_s_o 0x02 + +#define ze_o 0x80 +#define kke_o 0x40 +#define n_si_o 0x20 +#define deha_o 0x10 + + +#define gotosi_o 0x80 +#define saseru_o 0x40 +#define zaru_o 0x20 +#define zu_o 0x10 +#define zunba_o 0x08 +#define seru_o 0x04 +#define souda_o 0x02 +#define youtai_o 0x01 + +#define denbun_o 0x80 +#define ta_o 0x40 +#define tai_o 0x20 +#define tagaru_o 0x10 +#define taru_o 0x08 +#define da1_o 0x04 +#define da2_o 0x02 +#define daxtu_o 0x01 + +#define darou_o 0x80 +#define de_o 0x40 +#define desi_o 0x20 +#define desho_o 0x10 +#define desu_o 0x08 +#define na2_o 0x04 +#define nara_o 0x02 +#define nai_o 0x01 + +#define nu_o 0x80 +#define ne2_o 0x40 +#define nn2_o 0x20 +#define fuuda_o 0x10 +#define besi_o 0x08 +#define mai_o 0x04 +#define masu_o 0x02 +#define masure_o 0x01 + +#define mase_o 0x80 +#define mitaida_o 0x40 +#define you_o 0x20 +#define youda_o 0x10 +#define rasii_o 0x08 +#define rareru_o 0x04 +#define reru_o 0x02 +#define site_o 0x01 + +#define yougen_o 0x80 +#define aru_o 0x40 +#define ara_o 0x20 +#define ari1_o 0x10 +#define ari2_o 0x08 +#define ari3_o 0x04 +#define are1_o 0x02 +#define are2_o 0x01 + +#define arou_o 0x80 +#define ii_o 0x40 +#define itasi_o 0x20 +#define itadaku_o 0x10 +#define iru_o 0x08 +#define eru_o 0x04 +#define kakeru_o 0x02 +#define kaneru_o 0x01 + +#define karazu_o 0x80 +#define gatai_o 0x40 +#define gatida_o 0x20 +#define kudasaru_o 0x10 +#define gozai_o 0x08 +#define sa1_o 0x04 +#define si1_o 0x02 +#define siro_o 0x01 + +#define jyau_o 0x80 +#define jimau_o 0x40 +#define sugiru_o 0x20 +#define subesi_o 0x10 +#define suru_o 0x08 +#define sure_o 0x04 +#define se_o 0x02 +#define seyo_o 0x01 + +#define tamau_o 0x80 +#define tayu_o 0x40 +#define timau_o 0x20 +#define dekiru_o 0x10 +#define naru_o 0x08 +#define nasai_o 0x04 +#define nasaru_o 0x02 +#define nikui_o 0x01 + +#define yasui_o 0x80 +#define yoi_o 0x40 +#define yaru_o 0x20 + +#ifdef HORI + \244\303\244\277\244\351\244\267\244\244\244\316 \244\316\276\360\312\363\244\362\304\311\262\303 1/31 +#endif + +#define ttarasii_o 0x10 + + +#endif diff --git a/include/sj_const.h b/include/sj_const.h new file mode 100644 index 0000000..652425b --- /dev/null +++ b/include/sj_const.h @@ -0,0 +1,199 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_const.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:01 $ + */ + + + + + +#ifndef _SJ_CONST + +#define _SJ_CONST +#include "sj_euc.h" + + +#define MATCH 0 +#define OVER 1 +#define PARTLY 2 +#define CONT 3 +#define UNDER 4 + + + + +#define FALSE 0 +#define TRUE -1 + + + + +#define AD_Done 0x0000 +#define AD_NotUserDict 0x0001 +#define AD_BadYomi 0x0002 +#define AD_BadKanji 0x0004 +#define AD_BadHinsi 0x0008 + +#define AD_ArExist 0x0010 +#define AD_OvflwDouBlk 0x0020 +#define AD_OvflwDouNum 0x0040 +#define AD_OvflwUsrDic 0x0080 +#define AD_OvflwIndex 0x0100 + +#define AD_NoMidasi 0x0010 +#define AD_NoHinsi 0x0020 +#define AD_NoKanji 0x0040 + + + + +#define C_WAKACHI 0x00 +#define C_MINASI 0x01 +#define C_BUNSETU 0x02 +#define C_DICT 0x03 +#define C_N_ARABIA 0x04 +#define C_N_ARACMA 0x05 +#define C_N_KAZU 0x06 +#define C_N_SUUJI 0x07 +#define C_N_NANSUU 0x08 +#define C_N_KANKURA 0x09 +#define C_N_ARAKURA 0x0a +#define C_N_KAZULONG 0x0b +#define C_N_KAZULCMA 0x0c +#define C_N_SUUJILONG 0x0d + + + + +#define JFLAG_N10 (1 << 15) +#define JFLAG_N_1 (1 << 14) +#define JFLAG_NS1 (1 << 13) +#define JFLAG_N01 (1 << 12) +#define JFLAG_N23 (1 << 11) +#define JFLAG_NK2 (1 << 10) +#define JFLAG_NK4 (1 << 9) +#define JFLAG_NN0 (1 << 8) +#define JFLAG_NSN (1 << 7) +#define JFLAG_KA (1 << 0) + + + +#define DO_CLSTUDY 0x01 +#define DO_IKKATU 0x02 + + + + +#define K_DOUSHI 1 +#define K_YOUGEN 2 +#define K_TAIGEN 3 +#define K_FUKUSI 4 +#define K_RENTAISI 5 +#define K_SONOTA 6 + + + + + + +#define EUC_a1 (Uchar)0xa1 +#define EUC_a2 (Uchar)0xa2 +#define EUC_a3 (Uchar)0xa3 +#define EUC_a4 (Uchar)0xa4 +#define EUC_a5 (Uchar)0xa5 + + +#define EUC_START (Uchar)0xa1 +#define EUC_END (Uchar)0xfe +#define EUC_END_KIGOU (Uchar)0xae +#define EUC_0 (Uchar)0xb0 +#define EUC_END_0 (Uchar)0xb9 +#define EUC_A (Uchar)0xc1 +#define EUC_END_A (Uchar)0xda +#define EUC_a (Uchar)0xe1 +#define EUC_END_a (Uchar)0xfa +#define EUC_END_HIRA (Uchar)0xf3 +#define EUC_VU (Uchar)0xf4 +#define EUC_XKA (Uchar)0xf5 +#define EUC_XKE (Uchar)0xf6 + + +#define isknj1(c) (((c) == SS2) || (((c) & 0x80) && ((c) != SS3))) + + + + +#define SHU 0x01 +#define T_KANOU 0x80 +#define T_SHUUJO 0x40 + + + +#define DICTOP 0x01 +#define FZKTOP 0x02 +#define DEPEND 0x04 +#define NUMBER 0x08 +#define FZK_KGU 0x10 +#define TAI_KGU 0x20 +#define BEFORNUM 0x40 +#define MIDNUM 0x80 +#define NOTNRM 0xFE + + + + +#define CNJEND 0xff +#define TYOUONFLG 0x80 + + + + +#define MAXFREC 32 +#define MAXFLVL 10 +#define FZKEND 0xff + + + +#define SETTOU_O 1 +#define SETTOU_GO 2 +#define SETTOU_DAI 3 +#define SETTOU_KIGOU 4 + + + + +#define NumKetaLength 16 +#define NumWordBuf ((NumKetaLength+3)/4) + + +#endif diff --git a/include/sj_define.h b/include/sj_define.h new file mode 100644 index 0000000..e9918d6 --- /dev/null +++ b/include/sj_define.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_define.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:02 $ + */ + + + + + +#ifndef _SJ_DEFINE + +#define _SJ_DEFINE + +#ifndef Static +# define Static static +#endif + +#endif diff --git a/include/sj_dict.h b/include/sj_dict.h new file mode 100644 index 0000000..aed1d31 --- /dev/null +++ b/include/sj_dict.h @@ -0,0 +1,113 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_dict.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:03 $ + */ + + + + + +#ifndef _SJ_DICT + +#define _SJ_DICT + + + +#define DIC_MAIN 0 +#define DIC_USER 1 + + + + +#define DicSegBase 0 +#define MaxDouonBlk 0xfff +#define DouonBlkSizeNumber 3 +#define DicSegTerm 0xff +#define DouonBlkTerm 0xff +#define HinsiBlkTerm 0xff +#define MaxSegmentNumber 0xffff + + + +#define NormalKanjiMask 0x7f +#define SS3Kanji 0x0080 +#define ZenHiraAssyuku 0x80 +#define OffsetAssyuku 0x90 +#define ZenKataAssyuku 0xa0 +#define AiAttribute 0xb0 +#define KanjiAssyuku 0xc0 +#define LeadingHankaku 0xd0 +#define KanjiStrEnd 0x00 +#define IsAssyuku 0x80 +#define AssukuUse2byte 0x90 +#define KnjAssyukuMask 0x0f +#define KanjiCodeMask 0x0f +#define KanjiModeMask 0xf0 +#define AtrMsKanjiOfs 0xc0c0 + +#define MaxKnjAskNumber 16 +#define MaxYomiAskNumber 16 + +#define MaxWdYomiLen 31 +#define MaxWdKanjiLen 64 + +#define AssyukuYomiTop 0x80 +#define NokoriYomiTop 0x40 + + + + +#define getsize(p) (((Int)(*(p) & 0x0f) * 0x100) + *((p) + 1)) + + + +#define getntag(p) ((*(p) == DicSegTerm) ? (p) : (p) + getsize(p)) + + + +#define getplen(p) (((*(p) & AssyukuYomiTop)?0x10:0) + (*((p)+2) >> 4)) + + + +#define getnlen(p) (((*(p) & NokoriYomiTop)?0x10:0) + (*((p)+2) & 0x0f)) + + + +#define segtop() (dicbuf + *dicbuf + 1) + + + +#define segend(p) (*(p) == DicSegTerm || (p) >= dicbuf + curdict->seglen) + +#endif + diff --git a/include/sj_euc.h b/include/sj_euc.h new file mode 100644 index 0000000..e002055 --- /dev/null +++ b/include/sj_euc.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_euc.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:05 $ + */ + + + +#ifndef _SJ_EUC + +#define _SJ_EUC + +#include "sj_sysvdef.h" + +#ifdef SVR4 +#include +#else +#ifndef SS2 +#define SS2 0x8e +#endif +#ifndef SS3 +#define SS3 0x8f +#endif +#endif + +#endif diff --git a/include/sj_global.h b/include/sj_global.h new file mode 100644 index 0000000..6d7cf42 --- /dev/null +++ b/include/sj_global.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_global.h,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/12/09 11:27:06 $ + */ + + + +extern Global *global_work_base; + + + +extern Global *work_base; + + + +extern STDY *stdy_base; diff --git a/include/sj_hinsi.h b/include/sj_hinsi.h new file mode 100644 index 0000000..101125f --- /dev/null +++ b/include/sj_hinsi.h @@ -0,0 +1,231 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_hinsi.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:07 $ + */ + + + + + +#ifndef _SJ_HINSHI + +#define _SJ_HINSHI + +#define MEISI_1 1 +#define MEISI_2 2 +#define MEISI_3 3 +#define MEISI_4 4 +#define MEISI_5 5 +#define MEISI_6 6 +#define MEISI_7 7 +#define MEISI_8 8 +#define MEISI_9 9 +#define MEISI_10 10 +#define MEISI_11 11 +#define D_MEISI_1 12 +#define D_MEISI_2 13 +#define D_MEISI_3 14 +#define D_MEISI_4 15 +#define D_MEISI_5 16 +#define D_MEISI_6 17 +#define MEISI_20 18 + +#define MYOUJI 21 +#define NAMAE 22 +#define KIGYOU 23 +#define TIMEI 24 +#define KEN_KU 25 +#define RENTAISI 26 +#define SETUZOKU 27 +#define KANDOUSI 28 +#define JOSUUSI 29 +#define SUUSI 30 +#define SETTOU_1 31 +#define SETTOU_2 32 +#define SETTOU_3 33 +#define SETTOU_4 34 +#define SETTOU_5 35 +#define SETUBI_1 36 +#define SETUBI_2 37 +#define SETUBI_3 38 +#define SETUBI_4 39 +#define SETUBI_5 40 +#define SETUBI_6 41 +#define SETUBI_7 42 +#define SETUBI_8 43 +#define SETUBI_9 44 +#define FUKUSI_1 45 +#define FUKUSI_2 46 +#define FUKUSI_3 47 +#define FUKUSI_4 48 +#define FUKUSI_5 49 +#define FUKUSI_6 50 +#define FUKUSI_7 51 +#define FUKUSI_8 52 +#define FUKUSI_9 53 +#define JOSUUSI2 54 + + +#define KEIYOUSI_1 60 +#define KEIYOUSI_2 61 +#define KEIYOUSI_3 62 +#define KEIYOUSI_4 63 +#define KEIYOUSI_5 64 +#define KEIYOUSI_6 65 +#define KEIYOUSI_7 66 +#define KEIYOUSI_8 67 +#define KEIYOUSI_9 68 +#define KEIYOUSI_10 69 +#define KEIYOUSI_11 70 +#define KE_DOUSI_1 71 +#define KE_DOUSI_2 72 +#define KE_DOUSI_3 73 +#define KE_DOUSI_4 74 +#define KE_DOUSI_5 75 +#define KE_DOUSI_6 76 +#define KE_DOUSI_7 77 +#define KE_DOUSI_8 78 +#define KE_DOUSI_9 79 + +#define DO_SAHEN 80 +#define DO_ZAHEN 81 + + +#define DO_1DAN_1 90 +#define DO_KAGO_1 91 +#define DO_GAGO_1 92 +#define DO_SAGO_1 93 +#define DO_TAGO_1 94 +#define DO_NAGO_1 95 +#define DO_BAGO_1 96 +#define DO_MAGO_1 97 +#define DO_RAGO_1 98 +#define DO_WAGO_1 99 + +#define DO_1DAN_2 100 +#define DO_KAGO_2 101 +#define DO_GAGO_2 102 +#define DO_SAGO_2 103 +#define DO_TAGO_2 104 +#define DO_BAGO_2 105 +#define DO_MAGO_2 106 +#define DO_RAGO_2 107 +#define DO_WAGO_2 108 + + +#define DO_KAGO_5 111 +#define DO_GAGO_5 112 +#define DO_SAGO_5 113 +#define DO_TAGO_5 114 +#define DO_BAGO_5 115 +#define DO_MAGO_5 116 +#define DO_RAGO_5 117 +#define DO_WAGO_5 118 + + +#define DO_KAGO_6 121 +#define DO_GAGO_6 122 +#define DO_SAGO_6 123 +#define DO_TAGO_6 124 +#define DO_BAGO_6 125 +#define DO_MAGO_6 126 +#define DO_RAGO_6 127 +#define DO_WAGO_6 128 + + +#define DO_1DAN_3 130 +#define DO_KAGO_3 131 +#define DO_GAGO_3 132 +#define DO_SAGO_3 133 +#define DO_TAGO_3 134 +#define DO_BAGO_3 135 +#define DO_MAGO_3 136 +#define DO_RAGO_3 137 +#define DO_WAGO_3 138 + + +#define DO_1DAN_4 140 +#define DO_KAGO_4 141 +#define DO_GAGO_4 142 +#define DO_SAGO_4 143 +#define DO_TAGO_4 144 +#define DO_BAGO_4 145 +#define DO_MAGO_4 146 +#define DO_RAGO_4 147 +#define DO_WAGO_4 148 + + +#define DO_KAGO_7 151 +#define DO_GAGO_7 152 +#define DO_SAGO_7 153 +#define DO_TAGO_7 154 +#define DO_BAGO_7 155 +#define DO_MAGO_7 156 +#define DO_RAGO_7 157 +#define DO_WAGO_7 158 + + +#define DO_KAGO_8 161 +#define DO_GAGO_8 162 +#define DO_SAGO_8 163 +#define DO_TAGO_8 164 +#define DO_BAGO_8 165 +#define DO_MAGO_8 166 +#define DO_RAGO_8 167 +#define DO_WAGO_8 168 + + +#define SP_SA_MI1 171 +#define SP_SA_MI2 172 +#define SP_SA_YOU 173 +#define SP_SA_SYU 174 +#define SP_SA_KAT 175 +#define SP_SA_ME1 176 +#define SP_SA_ME2 177 +#define SP_KA_MIZ 178 +#define SP_KA_YOU 179 +#define SP_KA_SYU 180 +#define SP_KA_KAT 181 +#define SP_KA_MEI 182 +#define TEINEI1 183 + +#define TEINEI2 184 +#define SP_KA_ONB 185 +#define SP_FUKUSI 186 +#define AISATU 187 +#define SP_KEIYOUSI 188 +#define TANKANJI 189 + +#define IKKATU 200 + +#endif diff --git a/include/sj_kcnv.h b/include/sj_kcnv.h new file mode 100644 index 0000000..848407d --- /dev/null +++ b/include/sj_kcnv.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_kcnv.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:10 $ + */ + + + + + +#include +#include +#include "sj_typedef.h" +#include "sj_rename.h" +#include "sj_const.h" +#include "sj_var.h" +#include "sj_dict.h" +#include "sj_study.h" +#include "sj_table.h" +#include "sj_struct.h" +#include "Const.h" +#include "Struct.h" +#include "sj_global.h" +#include "sj_define.h" diff --git a/include/sj_left.h b/include/sj_left.h new file mode 100644 index 0000000..4b86da8 --- /dev/null +++ b/include/sj_left.h @@ -0,0 +1,286 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_left.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:12 $ + */ + + + + + +#ifndef _SJ_LEFT + +#define _SJ_LEFT + + + + +#define L_WO 0x01 +#define L_TTATTE 0x02 +#define L_TTARA 0x03 +#define L_TTE1 0x04 +#define L_TTE2 0x05 +#define L_PPANASI 0x06 +#define L_PPOI 0x07 +#define L_UE 0x08 + +#define L_UTI 0x09 +#define L_OITE 0x0a +#define L_OKERU 0x0b +#define L_ORI 0x0c +#define L_KA1 0x0d +#define L_KA2 0x0e +#define L_KAI 0x0f +#define L_KASIRA 0x10 + +#define L_KATAGATA 0x11 +#define L_KADOUKA 0x12 +#define L_KANA 0x13 +#define L_KANE 0x14 +#define L_KAMO 0x15 +#define L_KARA1 0x16 +#define L_KARA2 0x17 +#define L_GA1 0x18 + +#define L_GA2 0x19 +#define L_GATERA 0x1a +#define L_KIRI 0x1b +#define L_KUSENI 0x1c +#define L_KURAI 0x1d +#define L_GURUMI 0x1e +#define L_KEDO 0x1f +#define L_KOSO 0x20 + +#define L_KOTO 0x21 +#define L_SA2 0x22 +#define L_SAE 0x23 +#define L_SI2 0x24 +#define L_SIKA 0x25 +#define L_SURA 0x26 +#define L_ZUTU 0x27 +#define L_ZO 0x28 + +#define L_TAME 0x29 +#define L_DAKE 0x2a +#define L_DANO 0x2b +#define L_DARAKE 0x2c +#define L_TUITE 0x2d +#define L_TUKI 0x2e +#define L_TUTU 0x2f +#define L_TUMORI 0x30 + +#define L_TE1 0x31 +#define L_TE2 0x32 +#define L_TERU 0x33 +#define L_DEAROU 0x34 +#define L_DERU 0x35 +#define L_TO1 0x36 +#define L_TO2 0x37 +#define L_TOTTE 0x38 + +#define L_TOIU 0x39 +#define L_TOORI 0x3a +#define L_TOKI 0x3b +#define L_TOKORO 0x3c +#define L_TOTE 0x3d +#define L_TOHAIE 0x3e +#define L_TOMO 0x3f +#define L_DO 0x40 + +#define L_DOORI 0x41 +#define L_DOKORO 0x42 +#define L_DOKOROKA 0x43 +#define L_DOMO 0x44 +#define L_NA1 0x45 +#define L_NAA 0x46 +#define L_NAGARA 0x47 +#define L_NAZO 0x48 + +#define L_NADO 0x49 +#define L_NARI 0x4a +#define L_NANKA 0x4b +#define L_NANZO 0x4c +#define L_NANTE 0x4d +#define L_NI1 0x4e +#define L_NI2 0x4f +#define L_NI3 0x50 + +#define L_NITE 0x51 +#define L_NIMO 0x52 +#define L_NE1 0x53 +#define L_NEE 0x54 +#define L_NO1 0x55 +#define L_NO2 0x56 +#define L_NODE 0x57 +#define L_NONI 0x58 + +#define L_NOMI 0x59 +#define L_NOMINRZ 0x5a +#define L_HA 0x5b +#define L_HAZU 0x5c +#define L_BA 0x5d +#define L_BAKARI 0x5e +#define L_HE 0x5f +#define L_HOU 0x60 + +#define L_HOKA 0x61 +#define L_HODO 0x62 +#define L_MADE 0x63 +#define L_MAMA 0x64 +#define L_MO1 0x65 +#define L_MO2 0x66 +#define L_MOTTE 0x67 +#define L_MONO 0x68 + +#define L_YA1 0x69 +#define L_YA2 0x6a +#define L_YARA 0x6b +#define L_YUE 0x6c +#define L_YO 0x6d +#define L_YORI 0x6e +#define L_WA 0x6f +#define L_WAKE 0x70 + +#define L_WANE 0x71 +#define L_WAYO 0x72 +#define L_NN1 0x73 +#define L_JYA 0x74 +#define L_TYA 0x75 +#define L_NAGARA2 0x76 +#define L_WO_S 0x77 + +#define L_ZE 0x79 +#define L_KKE 0x7a +#define L_N_SI 0x7b +#define L_DEHA 0x7c + + + +#define L_GOTOSI 0x81 +#define L_SASERU 0x82 +#define L_ZARU 0x83 +#define L_ZU 0x84 +#define L_ZUNBA 0x85 +#define L_SERU 0x86 +#define L_SOUDA 0x87 +#define L_YOUTAI 0x88 + +#define L_DENBUN 0x89 +#define L_TA 0x8a +#define L_TAI 0x8b +#define L_TAGARU 0x8c +#define L_TARU 0x8d +#define L_DA1 0x8e +#define L_DA2 0x8f +#define L_DAXTU 0x90 + +#define L_DAROU 0x91 +#define L_DE 0x92 +#define L_DESI 0x93 +#define L_DESHO 0x94 +#define L_DESU 0x95 +#define L_NA2 0x96 +#define L_NARA 0x97 +#define L_NAI 0x98 + +#define L_NU 0x99 +#define L_NE2 0x9a +#define L_NN2 0x9b +#define L_FUUDA 0x9c +#define L_BESI 0x9d +#define L_MAI 0x9e +#define L_MASU 0x9f +#define L_MASURE 0xa0 + +#define L_MASE 0xa1 +#define L_MITAIDA 0xa2 +#define L_YOU 0xa3 +#define L_YOUDA 0xa4 +#define L_RASII 0xa5 +#define L_RARERU 0xa6 +#define L_RERU 0xa7 +#define L_SITE 0xa8 + + + + +#define L_YOUGEN 0xa9 +#define L_ARU 0xaa +#define L_ARA 0xab +#define L_ARI1 0xac +#define L_ARI2 0xad +#define L_ARI3 0xae +#define L_ARE1 0xaf +#define L_ARE2 0xb0 + +#define L_AROU 0xb1 +#define L_II 0xb2 +#define L_ITASI 0xb3 +#define L_ITADAKU 0xb4 +#define L_IRU 0xb5 +#define L_ERU 0xb6 +#define L_KAKERU 0xb7 +#define L_KANERU 0xb8 + +#define L_KARAZU 0xb9 +#define L_GATAI 0xba +#define L_GATIDA 0xbb +#define L_KUDASARU 0xbc +#define L_GOZAI 0xbd +#define L_SA1 0xbe +#define L_SI1 0xbf +#define L_SIRO 0xc0 + +#define L_JYAU 0xc1 +#define L_JIMAU 0xc2 +#define L_SUGIRU 0xc3 +#define L_SUBESI 0xc4 +#define L_SURU 0xc5 +#define L_SURE 0xc6 +#define L_SE 0xc7 +#define L_SEYO 0xc8 + +#define L_TAMAU 0xc9 +#define L_TYAU 0xca +#define L_TIMAU 0xcb +#define L_DEKIRU 0xcc +#define L_NARU 0xcd +#define L_NASAI 0xce +#define L_NASARU 0xcf +#define L_NIKUI 0xd0 + +#define L_YASUI 0xd1 +#define L_YOI 0xd2 +#define L_YORU 0xd3 +#define L_TTARASII 0xd4 + +#endif diff --git a/include/sj_prty.h b/include/sj_prty.h new file mode 100644 index 0000000..243d2d4 --- /dev/null +++ b/include/sj_prty.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_prty.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:13 $ + */ + + + + + +#ifndef _SJ_PRIORITY + +#define _SJ_PRIORITY + + + + +#define RENTAI 0x10 +#define GETPRI 0x0f + +#define P_FUKA 1 +#define P_TANKAN 1 +#define P_SHUUSI 2 +#define P_MEIREI 2 +#define P_KATEI 2 +#define P_KAMEI 2 + +#define P_DAIMEISI 4 +#define P_MEISI 6 +#define P_KEISIKI 4 +#define P_RENYOU_F 3 +#define P_RENYOU_J 11 +#define P_RENYOU_M 12 +#define P_JOSHI_F 3 +#define P_JOSHI_E 4 +#define P_JOSHI_D 6 +#define P_JOSHI_C 7 +#define P_JOSHI_B 8 +#define P_JOSHI_A 9 + +#define P_SETTOU 6 +#define P_SETUBI 6 +#define P_SUUSI 4 +#define P_FUKUSI 13 +#define P_F_FUKUSI 10 +#define P_RENTAISI 10 +#define P_KANDOU 6 +#define P_SETUZOKU 14 +#define P_FZKKGU 9 +#define P_JOSUUSI 10 + +#endif diff --git a/include/sj_rename.h b/include/sj_rename.h new file mode 100644 index 0000000..b7b5996 --- /dev/null +++ b/include/sj_rename.h @@ -0,0 +1,573 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_rename.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:14 $ + */ + + + + +#ifndef _SJ_RENAME + +#define _SJ_RENAME + + + +#define adddic Jadddic +#define checksub Jchecksub +#define checkdict Jcheckdict +#define cal_nextym Jcal_nextym +#define cmpknj Jcmpknj +#define usr_freelen Jusr_freelen +#define sprt_seg Jsprt_seg +#define apnd_uidx Japnd_uidx + + + +#define set_size Jset_size +#define isvyomi Jisvyomi +#define isvknj Jisvknj +#define isgrm Jisgrm +#define addel_arg Jaddel_arg +#define yomi2kata Jyomi2kata +#define top_strcmp Jtop_strcmp +#define last_strcmp Jlast_strcmp +#define cvtknj Jcvtknj +#define srchkana Jsrchkana +#define srchgram Jsrchgram +#define srchkanji Jsrchkanji +#define count_uidx Jcount_uidx +#define chg_uidx Jchg_uidx + + + +#define cl2knj Jcl2knj +#define nextcl Jnextcl +#define nextrecblk Jnextrecblk +#define prevcl Jprevcl +#define prevrecblk Jprevrecblk +#define initkbuf Jinitkbuf +#define selectnum Jselectnum +#define kouhonum Jkouhonum + + + +#define clstudy Jclstudy +#define delcldata Jdelcldata +#define delclsub Jdelclsub +#define delclold Jdelclold +#define srchclpos Jsrchclpos +#define mkclidx Jmkclidx + + + +#define cvtclknj Jcvtclknj + + + +#define cvtdict Jcvtdict +#define cvtminasi Jcvtminasi +#define cvtwakachi Jcvtwakachi + + + +#define cvtphknj Jcvtphknj +#define cvtkouho Jcvtkouho +#define setstyrec Jsetstyrec + + + +#define deldic Jdeldic +#define del_douon Jdel_douon +#define del_segment Jdel_segment +#define del_uidx Jdel_uidx +#define del_stdy Jdel_stdy + + + +#define get_askknj Jget_askknj +#define seldict Jseldict +#define sel_udict Jsel_udict +#define get_idxofs Jget_idxofs +#define get_idxptr Jget_idxptr + + + +#define fzkstrcmp Jfzkstrcmp +#define setclrec Jsetclrec +#define fzkcnct Jfzkcnct +#define srchfzk Jsrchfzk + + + +#define getkan_none Jgetkan_none +#define getkan_hira Jgetkan_hira +#define getkan_kata Jgetkan_kata +#define getkan_knj Jgetkan_knj +#define getkan_ofs Jgetkan_ofs +#define getkan_norm Jgetkan_norm +#define code2kanji Jcode2kanji +#define getkanji Jgetkanji + + + +#define getrank Jgetrank +#define setstynum Jsetstynum +#define setnspr Jsetnspr +#define regetrank Jregetrank + + + +#define work_base Jwork_base +#define stdy_base Jstdy_base + + +#define maxjptr (work_base -> Jmaxjptr) +#define maxclptr (work_base -> Jmaxclptr) +#define jrt1st (work_base -> Jjrt1st) +#define clt1st (work_base -> Jclt1st) +#define jrt2nd (work_base -> Jjrt2nd) +#define clt2nd (work_base -> Jclt2nd) +#define selcl (work_base -> Jselcl) +#define selectid (work_base -> Jselectid) +#define trank (work_base -> Jtrank) +#define nrank (work_base -> Jnrank) +#define buninf (work_base -> Jbuninf) +#define buncnt (work_base -> Jbuncnt) +#define knjnew (work_base -> Jknjnew) +#define knjidx (work_base -> Jknjidx) +#define knjmax (work_base -> Jknjmax) +#define score (work_base -> Jscore) +#define pathnum (work_base -> Jpathnum) +#define usedpath (work_base -> Jusedpath) +#define inputyomi (work_base -> Jinputyomi) +#define cnvstart (work_base -> Jcnvstart) +#define cnvlen (work_base -> Jcnvlen) +#define ystart (work_base -> Jystart) +#define hyomi (work_base -> Jhyomi) +#define orgyomi (work_base -> Jorgyomi) +#define kanjibuf (work_base -> Jkanjibuf) +#define kanjipos (work_base -> Jkanjipos) +#define kanjitmp (work_base -> Jkanjitmp) +#define kanjilen (work_base -> Jkanjilen) +#define dicinl (work_base -> Jdicinl) +#define dicsaml (work_base -> Jdicsaml) +#define prevseg (work_base -> Jprevseg) +#define fzkcount (work_base -> Jfzkcount) +#define fzk_ka_flg (work_base -> Jfzk_ka_flg) +#define fzktbl (work_base -> Jfzktbl) +#define headcode (work_base -> Jheadcode) +#define headlen (work_base -> Jheadlen) +#define gobilen (work_base -> Jgobilen) +#define prevclgrm (work_base -> Jprevclgrm) +#define prevclrow (work_base -> Jprevclrow) +#define nextcllen (work_base -> Jnextcllen) +#define khcount (work_base -> Jkhcount) +#define nkhcount (work_base -> Jnkhcount) +#define kouhotbl (work_base -> Jkouhotbl) +#define stdytop (work_base -> Jstdytop) +#define curdict (work_base -> Jcurdict) +#define dictlist (work_base -> Jdictlist) +#define dicbuf (work_base -> Jdicbuf) +#define idxbuf (work_base -> Jidxbuf) +#define idxofs (work_base -> Jidxofs) +#define askknj (work_base -> Jaskknj) +#define askknj_k (work_base -> Jaskknj_k) + +#define grp_ptr (work_base -> Jgrp_ptr) +#define grp_seg (work_base -> Jgrp_seg) +#define grp_grp (work_base -> Jgrp_grp) +#define suuji_wbuf (work_base -> Jsuuji_wbuf) +#define suuji_ubuf (work_base -> Jsuuji_ubuf) +#define suuji_class (work_base -> Jsuuji_class) +#define suuji_comma (work_base -> Jsuuji_comma) +#define suuji_keta (work_base -> Jsuuji_keta) +#define suuji_yptr (work_base -> Jsuuji_yptr) +#define suuji_len (work_base -> Jsuuji_len) +#define suuji_exit (work_base -> Jsuuji_exit) +#define suuji_wkeep (work_base -> Jsuuji_wkeep) +#define suuji_ukeep (work_base -> Jsuuji_ukeep) +#define peepyomi (work_base -> Jpeepyomi) +#define peepknj (work_base -> Jpeepknj) +#define peepgrm (work_base -> Jpeepgrm) +#define peepdptr (work_base -> Jpeepdptr) +#define peephptr (work_base -> Jpeephptr) +#define peepkptr (work_base -> Jpeepkptr) +#define peepidx (work_base -> Jpeepidx) + + + +#define seg_count Jseg_count +#define mkidxtbl Jmkidxtbl +#define initwork Jinitwork + + + +#define free_jlst Jfree_jlst +#define free_clst Jfree_clst +#define free_clall Jfree_clall +#define free_jall Jfree_jall +#define freework Jfreework +#define free_kjall Jfree_kjall + + + +#define set2nd Jset2nd +#define mk2claus Jmk2claus + + + +#define mkbunsetu Jmkbunsetu +#define argclrec Jargclrec + + + +#define mkjiritu Jmkjiritu +#define dic_mu Jdic_mu +#define argjrec Jargjrec +#define dic_cl Jdic_cl + + + +#define mkkouho Jmkkouho +#define getkhtbl Jgetkhtbl +#define cl_kanji Jcl_kanji +#define sameknj Jsameknj +#define skipatr Jskipatr +#define diffknj Jdiffknj +#define chrck_numtbl Jchrck_numtbl +#define sel_sjmode Jsel_sjmode +#define cl_numcmn Jcl_numcmn + + + +#define word2char Jword2char +#define words2num Jwords2num +#define num_type00 Jnum_type00 +#define num_type01 Jnum_type01 +#define num_type02 Jnum_type02 +#define num_type03 Jnum_type03 +#define num_type04 Jnum_type04 +#define num_type05 Jnum_type05 +#define num_type06 Jnum_type06 +#define num_type07 Jnum_type07 +#define kan_num Jkan_num +#define num_type08 Jnum_type08 +#define num_type09 Jnum_type09 +#define num_type10 Jnum_type10 +#define num_type11 Jnum_type11 +#define num_type12 Jnum_type12 +#define num_kurai Jnum_kurai +#define num_type13 Jnum_type13 +#define num_type14 Jnum_type14 + + + +#define getusr Jgetusr +#define nextusr Jnextusr +#define prevusr Jprevusr +#define set_kanji Jset_kanji +#define set_buf Jset_buf +#define prev_kanji Jprev_kanji +#define prev_hinsi Jprev_hinsi +#define prev_douon Jprev_douon +#define next_kanji Jnext_kanji +#define next_hinsi Jnext_hinsi +#define next_douon Jnext_douon +#define add_yomi Jadd_yomi +#define cd2sjh_chr Jcd2sjh_chr + + + +#define ph2knj Jph2knj + + + +#define ph_setsty Jph_setsty +#define nextkptr Jnextkptr +#define maxpset Jmaxpset +#define mkknjmax Jmkknjmax +#define ph_khtbl Jph_khtbl + + + +#define isfukusi Jisfukusi +#define istaigen Jistaigen +#define taicnt Jtaicnt +#define sttcnt Jsttcnt +#define priority Jpriority +#define pritiny Jpritiny + + + +#define selclrec Jselclrec + + + +#define initknjall Jinitknjall +#define knjtouroku Jknjtouroku +#define knjitti Jknjitti +#define hikakusub Jhikakusub +#define knjhikaku Jknjhikaku +#define setgroupai Jsetgroupai +#define select_dsub Jselect_dsub +#define select_tsub Jselect_tsub +#define select_ysub Jselect_ysub +#define selectknj Jselectknj +#define selknj Jselknj + + + +#define cnjstrcmp Jcnjstrcmp +#define cnvrow Jcnvrow +#define setconj Jsetconj + + + +#define setj_atrb Jsetj_atrb +#define setj_ofs Jsetj_ofs +#define setj_knj Jsetj_knj +#define setj_norm1 Jsetj_norm1 +#define setj_norm2 Jsetj_norm2 +#define chkhead Jchkhead +#define setjrec Jsetjrec +#define setnumrec Jsetnumrec +#define setcrec Jsetcrec + + + +#define setkouho Jsetkouho +#define ph_setkouho Jph_setkouho +#define hiraknj Jhiraknj +#define hiraknj_atrb Jhiraknj_atrb +#define hiraknj_ofs Jhiraknj_ofs +#define hiraknj_knj Jhiraknj_knj +#define hiraknj_hask Jhiraknj_hask +#define hiraknj_kask Jhiraknj_kask +#define hiraknj_norm Jhiraknj_norm +#define hiraknj_hira Jhiraknj_hira + + + +#define getstb Jgetstb +#define setubi Jsetubi + + + +#define sj2cd_chr Jsj2cd_chr +#define sj2cd_str Jsj2cd_str + + + +#define retaiofs Jretaiofs +#define srchai2nd Jsrchai2nd +#define srchai1st Jsrchai1st +#define srchai4th Jsrchai4th +#define srchai3rd Jsrchai3rd +#define srchai6th Jsrchai6th +#define srchai5th Jsrchai5th + + + +#define yomicmp_sub Jyomicmp_sub +#define yomicmp Jyomicmp +#define srchdict Jsrchdict + + + +#define srchg_atrb Jsrchg_atrb +#define srchg_ofs Jsrchg_ofs +#define srchg_knj Jsrchg_knj +#define srchg_norm1 Jsrchg_norm1 +#define srchg_norm2 Jsrchg_norm2 +#define srchgrp2nd Jsrchgrp2nd +#define srchgrp1st Jsrchgrp1st + + + +#define srchhead Jsrchhead + + + +#define srchidx Jsrchidx + + + +#define srch_josuu_sub Jsrch_josuu_sub +#define srch_josuu Jsrch_josuu +#define setnrec_sub Jsetnrec_sub +#define setnrec Jsetnrec +#define srchtbl Jsrchtbl +#define isconnect Jisconnect +#define string_cmp Jstring_cmp +#define check_num Jcheck_num +#define srch_number1 Jsrch_number1 +#define srch_kurai1 Jsrch_kurai1 +#define srch_kurai2 Jsrch_kurai2 +#define srch_number2 Jsrch_number2 +#define srchnum_sub Jsrchnum_sub +#define srchnum Jsrchnum +#define setwdnum Jsetwdnum +#define setucnum Jsetucnum + + + +#define study Jstudy +#define srchstdy Jsrchstdy + + + +#define terminate Jterminate + + + +#define wakachi Jwakachi + + + + +#define cmpstr Jcmpstr + + + +#define hzstrlen Jhzstrlen + + + +#define istrcmp Jistrcmp + + + +#define memcpy Jmemcpy +#define sstrncpy Jsstrncpy + + + +#define memset Jmemset + + + +#define mvmemd Jmvmemd + + + +#define mvmemi Jmvmemi + + + +#define skiphblk Jskiphblk + + + +#define skipkstr Jskipkstr + + + +#define sstrcmp Jsstrcmp + + + +#define sstrlen Jsstrlen + + + +#define sstrncmp Jsstrncmp + + + + +#define charsize Jcharsize + + + +#define chrtbl Jchrtbl + + + +#define conjadr Jconjadr + + + +#define connadr Jconnadr +#define rigtadr Jrigtadr + + + +#define cvtnum_func Jcvtnum_func +#define getkan_func Jgetkan_func +#define setjrec_func Jsetjrec_func +#define srchg_func Jsrchg_func +#define hiraknj_func Jhiraknj_func + + + +#define fzkadr Jfzkadr + + + +#define taipri Jtaipri +#define sttpri Jsttpri + + + +#define kigou Jkigou + + + +#define selsjadrs Jselsjadrs + + + +#define stbadr Jstbadr + + + +#define settou_ptr Jsettou_ptr +#define scncttbl Jscncttbl + + + +#define suuji_tbl Jsuuji_tbl +#define kurai1_tbl Jkurai1_tbl +#define kurai2_tbl Jkurai2_tbl +#define num1tbl Jnum1tbl +#define num2tbl Jnum2tbl +#define num3tbl Jnum3tbl +#define num4tbl Jnum4tbl +#define num5tbl Jnum5tbl +#define num6tbl Jnum6tbl + + + +#define termtbl Jtermtbl + +#endif diff --git a/include/sj_right.h b/include/sj_right.h new file mode 100644 index 0000000..e67af14 --- /dev/null +++ b/include/sj_right.h @@ -0,0 +1,373 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_right.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:15 $ + */ + + + + + +#ifndef _SJ_RIGHT + +#define _SJ_RIGHT + +#define R_DE 1 +#define R_WO 2 +#define R_KARA1 3 +#define R_GA1 4 +#define R_TO1 5 +#define R_NI1 6 +#define R_NO1 7 +#define R_HA 8 +#define R_HE 9 +#define R_MO1 10 +#define R_YA1 11 +#define R_YORI1 12 +#define R_SAE 13 +#define R_SIKA 14 +#define R_DAKE 15 + +#define R_I 16 +#define R_E 17 +#define R_KAKE 18 +#define R_KANE2 19 +#define R_SUGI 20 +#define R_DEKI 21 +#define R_MI 22 +#define R_SASE 23 +#define R_RARE 24 + + + + +#define R_ITADAKE 25 + + + + +#define R_EXP 26 + + + + +#define R_RENYOU1 27 +#define R_RENYOU5 28 +#define R_SA5RENYOU1 29 + +#define R_RENYOU3 30 +#define R_RENYOU7 31 +#define R_SA5RENYOU3 32 +#define R_RENYOU4 33 +#define R_RENYOU8 34 +#define R_SA5RENYOU4 35 + +#define R_KRENYOU 39 +#define R_DRENYOU1 40 +#define R_DRENYOU2 41 +#define R_DRENYOU3 42 +#define R_ONBIN1 43 +#define R_ONBIN2 44 +#define R_ONBIN3 45 + +#define R_DESHI 46 +#define R_AXTU 47 +#define R_ONBIN6 48 +#define R_ONBIN8 49 +#define R_ARI1 50 +#define R_ARI2 51 +#define R_ARI3 52 +#define R_IKI 53 +#define R_ITASI 54 +#define R_ITADAKI 55 +#define R_ORI2 56 +#define R_GATAKU 57 +#define R_KI 58 +#define R_KUDASAI 59 +#define R_GOZAI 60 +#define R_GOTOKU 61 +#define R_BEKU 62 +#define R_SOUDE 63 +#define R_SOUNI 64 +#define R_TAGARI 65 +#define R_TAKU 66 +#define R_MIZEN1 67 +#define R_NAIDE 68 +#define R_NAKU 69 +#define R_NASAI 70 +#define R_FUUNI 71 +#define R_YORI2 72 +#define R_RASHUU 73 + + + + +#define R_DSHUUSI1 74 +#define R_DSHUUSI2 75 +#define R_GOTOSI 76 +#define R_BESI 77 +#define R_ZU 78 +#define R_SOUDA 79 +#define R_MAI 80 +#define R_MITAIDA 81 + + + + +#define R_SHUUSI 82 +#define R_KSHUUSI 83 +#define R_ZARU 84 +#define R_SOUDESU 85 +#define R_TA 86 +#define R_TAI 87 +#define R_DESU 88 +#define R_NAI 89 +#define R_NU 90 +#define R_MASU 91 +#define R_NN2 92 +#define R_RASII 93 + + + + +#define R_DRENTAI1 94 +#define R_DRENTAI2 95 +#define R_DRENTAI3 96 +#define R_KRENTAI 97 +#define R_GOTOKI 98 +#define R_BEKI 99 +#define R_SOUNA1 100 +#define R_SOUNA2 101 +#define R_NA2 102 + + + + +#define R_KATEI1 103 +#define R_KATEI2 104 +#define R_KATEI3 105 + + + + + +#define R_KAMEI 106 + + + + +#define R_IKE 107 + + + + +#define R_KURE 108 + + + + +#define R_MEIREI1 109 +#define R_MEIREI2 110 + + + + +#define R_DGOKAN 111 +#define R_KGOKAN 112 +#define R_SGOKAN 113 +#define R_GATI 114 +#define R_JYA 115 +#define R_SOU 116 +#define R_MITAI 117 +#define R_YOTTE 118 +#define R_YOU2 119 +#define R_SHO 120 + + + + +#define R_FZKMEISI 121 + + + + +#define R_AISATU 122 +#define R_KOSODO 123 + +#define R_YOU1 124 +#define R_HASI 125 + +#define R_DAIMEISI 126 +#define R_DAIMEISI6 127 + +#define R_FZKKI 128 +#define R_DEHA 129 +#define R_NAGARA2 130 +#define R_WO_S 131 +#define R_WO_MEISI 132 +#define R_SITE 133 +#define R_N_SI 134 +#define R_F_FUKUSI 135 +#define R_CUT 137 + + +#define R_MIZEN2 140 +#define R_MIZEN3 141 +#define R_MIZEN4 142 +#define R_SI1 143 +#define R_JI 144 +#define R_AGE 145 +#define R_MIZEN5 146 +#define R_AROU 147 +#define R_KAROU 148 +#define R_DAROU 149 +#define R_DESHOU 150 +#define R_KO 151 +#define R_BEKARA 152 +#define R_TAGARA 153 + +#define R_SHUUJO 154 +#define R_TTATTE 155 +#define R_TTARA 156 +#define R_TTE1 157 +#define R_TTE2 158 +#define R_PPANASI 159 + +#define R_PPOI 160 +#define R_UE 161 +#define R_UTI 162 +#define R_OITE 163 +#define R_OKERU 164 +#define R_ORI1 165 +#define R_KA1 166 +#define R_KA2 167 +#define R_KATAGATA 168 +#define R_KADOUKA 169 + +#define R_KAMO 170 +#define R_KARA2 171 +#define R_GA2 172 +#define R_GATERA 173 +#define R_KIRI 174 +#define R_KUSENI 175 +#define R_KURAI 176 +#define R_GURUMI 177 +#define R_KEDO 178 +#define R_KOSO 179 + +#define R_KOTO 180 +#define R_SI2 181 +#define R_SURA 182 +#define R_ZUTU 183 +#define R_TAME 184 +#define R_TARI 185 +#define R_DANO 186 +#define R_DARAKE 187 +#define R_TUITE 188 +#define R_TUKI 189 + +#define R_TUTU 190 +#define R_TUMORI 191 +#define R_TE1 192 +#define R_TE2 193 +#define R_TERU 194 +#define R_TO2 195 +#define R_TOTTE 196 +#define R_TOIU 197 +#define R_TOORI 198 +#define R_TOKI 199 + +#define R_TOKORO 200 +#define R_TOTE 201 +#define R_TOHAIE 202 +#define R_TOMO 203 +#define R_DO 204 +#define R_DOORI 205 +#define R_DOKORO 206 +#define R_DOKOROKA 207 +#define R_DOMO 208 +#define R_NAGARA 209 + +#define R_NAZO 210 +#define R_NADO 211 +#define R_NARI 212 +#define R_NANKA 213 +#define R_NANZO 214 +#define R_NANTE 215 +#define R_NI2 216 +#define R_NI3 217 +#define R_NITE 218 +#define R_NIMO 219 + +#define R_NO2 220 +#define R_NODE 221 +#define R_NONI 222 +#define R_NOMI 223 +#define R_NOMINRZ 224 +#define R_HAZU 225 +#define R_BA 226 +#define R_BAKARI 227 +#define R_HOU 228 +#define R_HOKA 229 + +#define R_HODO 230 +#define R_MADE 231 +#define R_MAMA 232 +#define R_MO2 233 +#define R_MOTTE 234 +#define R_MONO 235 +#define R_YA2 236 +#define R_YARA 237 +#define R_YUE 238 +#define R_WAKE 239 + +#define R_NN1 240 + + + +#define R_SUUSI 241 +#define R_SETUZOKU 242 +#define R_KANDOU 243 +#define R_SETTOU 244 +#define R_FUKUSI 245 +#define R_FZKKGU 246 +#define R_MEISI 247 +#define R_DMEISI 248 +#define R_SMEISI1 249 +#define R_SMEISI2 250 +#define R_KSTB 251 +#define R_ICHISETUBI 252 +#define R_JOSUUSI 253 +#define R_RENTAISI 254 +#define R_TANKAN 255 + +#endif diff --git a/include/sj_struct.h b/include/sj_struct.h new file mode 100644 index 0000000..dd5ec45 --- /dev/null +++ b/include/sj_struct.h @@ -0,0 +1,200 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_struct.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:16 $ + */ + + + + + +#ifndef _SJ_STRUCT + +#define _SJ_STRUCT + + + +typedef struct jiritu { + struct jiritu *jsort; + TypeDicSeg jseg; + TypeDicOfs jofsst; + TypeDicOfs jofsed; + Ushort flags; + TypeClass class; + TypeDicID dicid; + Uchar jlen; + TypeGram hinsi; + Uchar sttofs; + Uchar stbofs; + Uchar count; + Uchar numlen; +} JREC; + + + + +typedef struct bunsetu { + JREC *jnode; + struct bunsetu *clsort; + Uchar gobiln; + Uchar cllen; + + TypeCnct right; + Uchar cl2len; + Uchar kubun; +#if __STDC__ + unsigned fzk_ka : 1; +#else + Uchar fzk_ka : 1; +#endif +} CLREC; + + + + +typedef struct kouho { + CLREC *clrec; + TypeDicOfs offs; + TypeStyNum styno; + Uchar rank; +#if __STDC__ + unsigned sttfg : 1; + unsigned sttkj : 1; + unsigned ka_fg : 1; + unsigned ka_kj : 1; + unsigned mode : 4; +#else + Uchar sttfg : 1; + Uchar sttkj : 1; + Uchar ka_fg : 1; + Uchar ka_kj : 1; + Uchar mode : 4; +#endif +} KHREC; + + + + +typedef struct conj { + Uchar len; + TypeCnct right; +} CREC; + + + + +typedef struct fuzoku { + Uchar *yomip; + Uchar TFar *fzkp; + +} FREC; + + + +typedef struct study_in { + TypeDicOfs offset; + TypeDicSeg seg; + TypeStyNum styno; + TypeDicID dicid; +#if __STDC__ + unsigned sttkj : 1; + unsigned ka_kj : 1; + unsigned nmflg : 1; +#else + Uchar sttkj : 1; + Uchar ka_kj : 1; + Uchar nmflg : 1; +#endif +} STDYIN; + + + + +typedef struct study_out { + STDYIN stdy1; + TypeGram hinshi; + Uchar len; +#if __STDC__ + unsigned sttlen : 2; + unsigned sttfg : 1; + unsigned ka_fg : 1; +#else + Uchar sttlen : 2; + Uchar sttfg : 1; + Uchar ka_fg : 1; +#endif +} STDYOUT; + + + + +typedef struct dict { + TypeDicID dicid; + + TypeIdxOfs idxlen; + + TypeDicOfs seglen; + TypeDicSeg segunit; + TypeDicSeg maxunit; + + IFunc getofs; + IFunc getidx; + IFunc getdic; + IFunc putidx; + IFunc putdic; + IFunc rszdic; +} DICT; + + + + +typedef struct dictl { + DICT *dict; + struct dictl *next; +} DICTL; + + + + +typedef struct stdy { + Short stdycnt; + Short stdymax; + STDYIN *stdydic; + + Short clstdystep; + Ushort *clstdyidx; + + Short clstdylen; + Uchar *clstdydic; +} STDY; + +#endif diff --git a/include/sj_study.h b/include/sj_study.h new file mode 100644 index 0000000..4b5f325 --- /dev/null +++ b/include/sj_study.h @@ -0,0 +1,121 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_study.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:18 $ + */ + + + + + +#ifndef _SJ_STUDY + +#define _SJ_STUDY + +#define StudyExist() (stdy_base) + +#define StudyCount (stdy_base -> stdycnt) +#define StudyMax (stdy_base -> stdymax) +#define StudyDict (stdy_base -> stdydic) + +#define ClStudyIdx (stdy_base -> clstdyidx) +#define ClStudyStep (stdy_base -> clstdystep) +#define ClStudyLen (stdy_base -> clstdylen) +#define ClStudyDict (stdy_base -> clstdydic) + +#define StudyTail (StudyDict + StudyMax) +#define StudyRecSize (sizeof(STDYIN)) + +#define ClStudyTail (ClStudyDict + ClStudyLen) + + + +#define StudyNormEnd 0 +#define StudyNoDict 1 +#define StudyFullArea 2 +#define StudyNotStudy 3 +#define StudyError 4 + + + + +#define CLSTDY_TMPLEN 256 +#define ClstudyNormEnd 0 +#define ClstudyNoDict 1 +#define ClstudyParaErr 2 +#define ClstudyYomiErr 3 +#define ClstudyNoArea 4 + +#define CL_YLEN 0 +#define CL_GRAM2 1 +#define CL_Y1LEN 2 +#define CL_NUMH 3 +#define CL_NUML 4 +#define CL_YDATA 5 +#define CL_HDLEN 5 + + + +#define iseocl(p) ( !ClYomiLen(p) || (Uchar *)(p) >= ClStudyTail ) + + + +#define ClGramCode(p) *((p) + CL_GRAM2) + + + +#define ClYomiLen(p) *((p) + CL_YLEN) + + + +#define ClYomi1Len(p) *((p) + CL_Y1LEN) + + + +#define ClHighNum(p) *(p + CL_NUMH) +#define ClLowNum(p) *(p + CL_NUML) +#define ClGetNum(p) (ClHighNum(p) * 0x100 + ClLowNum(p)) +#define ClSetNum(p, n) (ClHighNum(p)=(Uchar)((n) >> 8), ClLowNum(p)=(Uchar)(n)) + + + +#define ClYomiPos(p) ((p) + CL_YDATA) + + + +#define ClBlkLen(p) (ClYomiLen(p) + CL_HDLEN) + + + +#define ClNextTag(p) ((p) + ClBlkLen(p)) + +#endif diff --git a/include/sj_suuji.h b/include/sj_suuji.h new file mode 100644 index 0000000..a721386 --- /dev/null +++ b/include/sj_suuji.h @@ -0,0 +1,146 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_suuji.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:19 $ + */ + + + + + +#ifndef _SJ_SUUJI + +#define _SJ_SUUJI + + + +#define SjTblRecLen 6 +#define SjTblRecNum 34 +#define SjTblYPos(p) (p) +#define SjTblYLen 3 +#define SjTblModeP(p) (p + 3) +#define SjTblNumber(md) ((md) & 0x0f) +#define SjTblNArabiaF 0x80 +#define SjTblNYomiF 0x40 +#define SjTblNNarabiF 0x20 +#define SjTblNNanSuuF 0x10 +#define SjTblNCont(md) (md & SjTblNContF) +#define SjTblCnctP(p) (p + 4) + + + +#define Kr1TblRecLen 5 +#define Kr1TblRecNum 10 +#define Kr1TblYPos(p) (p) +#define Kr1TblYLen 3 +#define Kr1TblModeP(p) (p + 3) +#define Kr1TblTopF 0x80 +#define Kr1TblTop(md) (md & Kr1TblTopF) +#define Kr1TblKeta(md) (((md) >> 4) & 7) +#define Kr1TblCnct(md) ((md) & 0x0f) +#define Kr1TblCnctP(p) (p + 3) + + + +#define Kr2TblRecLen 4 +#define Kr2TblRecNum 3 +#define Kr2TblYPos(p) (p) +#define Kr2TblYLen 3 +#define Kr2TblModeP(p) (p + 3) +#define Kr2TblCnct(md) ((md) & 0x0f) +#define Kr2TblKeta(md) (((md) >> 4) & 0x0f) + +#define _Num0 0x01 +#define _Num1 0x02 +#define _Num2 0x03 +#define _Num3 0x04 +#define _Num4 0x05 +#define _Num5 0x06 +#define _Num6 0x07 +#define _Num7 0x08 +#define _Num8 0x09 +#define _Num9 0x0a +#define _Num1S 0x0b +#define _NumS 0x0c +#define _NumN 0x0d + +#define CommaHigh 0xa1 +#define CommaLow 0xa4 + + + + +#define SelArb 1 +#define SelArb0 2 +#define SelArbCma 3 +#define SelKanSj0 5 +#define SelKanSj20 8 +#define SelKanSjYm 9 +#define SelKanSjYm2 10 +#define SelLongArb 11 +#define SelLongArbCma 12 +#define SelLongSj 13 +#define SelArbKr 14 +#define SelKanSjKr 15 +#define SelNumTerm 0xffff + +#define SelKanSj 4 +#define SelKanSj2 7 +#define SelKanSjCma 6 + + + +#define SelNum0123 (JFLAG_N01 | JFLAG_N23) +#define SelNum1_23_10_1 (JFLAG_N_1 | JFLAG_N23 | JFLAG_N10 | JFLAG_NS1) +#define SelNumMust (JFLAG_NK2 | JFLAG_NK4 | JFLAG_NN0 | JFLAG_NSN) +#define SelNumALL (JFLAG_N10 | JFLAG_N_1 | JFLAG_NS1 | JFLAG_N01 \ + | JFLAG_N23 | JFLAG_NK2 | JFLAG_NK4 \ + | JFLAG_NN0 | JFLAG_NSN) + + + +#define SelNumFunc(c) ((c) & (~SelNumALL)) +#define SelNumCond(c) ((c) & SelNumALL) + + + +#define Number123456789NS ((1<<_Num1)|(1<<_Num2)|(1<<_Num3)|(1<<_Num4) \ + |(1<<_Num5)|(1<<_Num6)|(1<<_Num7)|(1<<_Num8) \ + |(1<<_Num9)|(1<<_Num1S)\ + |(1<<_NumN)|(1<<_NumS)) +#define Number0 (1<<_Num0) +#define Number1 ((1<<_Num1)|(1<<_Num1S)) +#define NumberS1 (1<<_Num1S) +#define Number01 (Number0|Number1) +#define Number23 ((1<<_Num2)|(1<<_Num3)) + +#endif diff --git a/include/sj_sysvdef.h b/include/sj_sysvdef.h new file mode 100644 index 0000000..ebd0f54 --- /dev/null +++ b/include/sj_sysvdef.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_sysvdef.h,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1995/02/10 06:02:25 $ + */ + + + +#ifndef _SJ_SYSVDEF +#define _SJ_SYSVDEF + +#ifdef SYSV +#ifndef SVR4 +#define SVR4 +#endif +#endif + +#ifdef SYSTYPE_SYSV +#ifndef SVR4 +#define SVR4 +#endif +#endif + +#ifdef SVR4 +#define SYSV_TERMIOS +#define SIGTYPE_VOID +#endif /* SVR4 */ + +#ifdef linux +#if !(defined (__GLIBC__) && (__GLIBC__ >= 2)) +#define LACKOF_SETLOCALE +#endif +#define SYSV_TERMIOS +#define SYSV_UTMP +#define SIGTYPE_VOID +#endif /* linux */ + +#endif diff --git a/include/sj_table.h b/include/sj_table.h new file mode 100644 index 0000000..dc02e60 --- /dev/null +++ b/include/sj_table.h @@ -0,0 +1,138 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_table.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:21 $ + */ + + + + + +#ifndef _SJ_TABLE + +#define _SJ_TABLE + + +#define isdpnd(c) (Chrtbl[c] & DEPEND) + + +#define CnjAskLen(p) (((unsigned int) *(p) & 0x70) >> 4) + + +#define CnjNkrLen(p) (*(p) & 0x0f) + + +#define CnjRight(p) *(p + CnjNkrLen(p) + 1) + + +#define CnjRecLen(p) (CnjNkrLen(p) + 2) + + +#define FzkAskLen(p) ((unsigned int) *(p) >> 5) + + +#define FzkNkrLen(p) (*(p) & 0x07) + + +#define FzkStrKa(p) (((unsigned int) *(p) >> 3) & 1) + + +#define FzkHasCode(p) (*(p) & 0x10) + + +#define FzkLeft(p) (*((p) + nlen + 1)) + + +#define FzkRight(p) (*((p) + nlen + 2)) + + +#define SttYomiLen(p) (*(p) & 0x0f) + + +#define SttHiraKnj(p) (*(p) & 0x80) + + +#define StbKnjLen(p) (*(p) & 0x07) + + +#define StbYomiLen(p) (*(p) >> 4) + + +#define StbYomiTop(p) ((p) + 2) + + +#define StbBakeru(p) (*(p) & 0x08) + + +#define StbHinsi(p) (*((p) + 1)) + +extern Uchar charsize[], chrtbl[], *conjadr[], connadr[]; +extern Uchar *fzkadr[], kigou[], kurai1_tbl[], kurai2_tbl[]; +extern Uchar num1tbl[], num2tbl[], num3tbl[], num4tbl[]; +extern Uchar num5tbl[], num6tbl[], *rigtadr[], scncttbl[2][24]; +extern Uchar *settou_ptr[], *stbadr[], sttpri[5][31]; +extern Uchar suuji_tbl[], taipri[7][45], termtbl[]; +extern Ushort *selsjadrs[]; +extern UCPFunc getkan_func[], makekan_func[]; +extern VFunc cvtnum_func[]; +extern IFunc hiraknj_func[], setjrec_func[], srchg_func[]; +#define Charsize charsize +#define Chrtbl chrtbl +#define Conjadr(i) conjadr[i] +#define Connadr connadr +#define Cvtnum_func cvtnum_func +#define Fzkadr(i) fzkadr[i] +#define Getkan_func getkan_func +#define Hiraknj_func hiraknj_func +#define Kigou kigou +#define Kurai1_tbl kurai1_tbl +#define Kurai2_tbl kurai2_tbl +#define Makekan_func makekan_func +#define Num1tbl num1tbl +#define Num2tbl num2tbl +#define Num3tbl num3tbl +#define Num4tbl num4tbl +#define Num5tbl num5tbl +#define Num6tbl num6tbl +#define Rigtadr(i) rigtadr[i] +#define Scncttbl(i, j) scncttbl[i][j] +#define Selsjadrs(i) selsjadrs[i] +#define Setjrec_func setjrec_func +#define Settou_ptr(i) settou_ptr[i] +#define Srchg_func srchg_func +#define Stbadr(i) stbadr[i] +#define Sttpri(i, j) sttpri[i][j] +#define Suuji_tbl suuji_tbl +#define Taipri(i, j) taipri[i][j] +#define Termtbl termtbl + +#endif diff --git a/include/sj_typedef.h b/include/sj_typedef.h new file mode 100644 index 0000000..cc88d00 --- /dev/null +++ b/include/sj_typedef.h @@ -0,0 +1,88 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_typedef.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:22 $ + */ + + + +#ifndef _SJ_TYPEDEF + +#define _SJ_TYPEDEF + +#define RECURS + +#define TFar +#define Far +#define Reg1 register +#define Reg2 register +#define Reg3 register +#define Reg4 register +#define Reg5 register +#define Reg6 register +#define Reg7 register +#define Reg8 register + +#define Void void +#define Char char +#define Uchar unsigned char +#define Short short +#define Ushort unsigned short +#define Int int +#define Uint unsigned int +#define Long long +#define Ulong unsigned long + +typedef Void (*VFunc)(); +typedef Uchar *(*UCPFunc)(); +typedef Int (*IFunc)(); + + +#include + +typedef Uchar TypeGroup; +typedef Uchar TypeGram; +typedef Ushort TypeIdxOfs; +typedef Short TypeDicSeg; +typedef Ushort TypeDicOfs; +typedef ino_t TypeDicID; +typedef Uchar TypeCnct; +typedef Ushort TypeStyNum; +typedef Uchar TypeClass; +typedef Uchar TypeBunNum; + +#ifndef NULL +# define NULL 0 +#endif + +#endif + diff --git a/include/sj_var.h b/include/sj_var.h new file mode 100644 index 0000000..f9e9fb5 --- /dev/null +++ b/include/sj_var.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_var.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:23 $ + */ + + + + + +#ifndef _SJ_VAR + +#define _SJ_VAR + + + +#define MaxKouhoNumber 255 + + + + +#define MaxPhInputLen 256 +#define MaxClInputLen 64 + + + + +#define MinClOutputLen 512 + + + + +#define MinPhOutputLen 288 + +#endif diff --git a/include/sj_yomi.h b/include/sj_yomi.h new file mode 100644 index 0000000..79f507a --- /dev/null +++ b/include/sj_yomi.h @@ -0,0 +1,217 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj_yomi.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:24 $ + */ + + + + + +#ifndef _SJ_YOMICODE + +#define _SJ_YOMICODE + +#define _TYOUON 0x01 +#define _IGETA 0x02 +#define _ATTO 0x03 +#define _YUUBIN 0x04 + +#define N_0 0x10 +#define N_1 0x11 +#define N_2 0x12 +#define N_3 0x13 +#define N_4 0x14 +#define N_5 0x15 +#define N_6 0x16 +#define N_7 0x17 +#define N_8 0x18 +#define N_9 0x19 + +#define A_A 0x1A +#define A_B 0x1B +#define A_C 0x1C +#define A_D 0x1D +#define A_E 0x1E +#define A_F 0x1F +#define A_G 0x20 +#define A_H 0x21 +#define A_I 0x22 +#define A_J 0x23 +#define A_K 0x24 +#define A_L 0x25 +#define A_M 0x26 +#define A_N 0x27 +#define A_O 0x28 +#define A_P 0x29 +#define A_Q 0x2A +#define A_R 0x2B +#define A_S 0x2C +#define A_T 0x2D +#define A_U 0x2E +#define A_V 0x2F +#define A_W 0x30 +#define A_X 0x31 +#define A_Y 0x32 +#define A_Z 0x33 + +#define A_a 0x34 +#define A_b 0x35 +#define A_c 0x36 +#define A_d 0x37 +#define A_e 0x38 +#define A_f 0x39 +#define A_g 0x3A +#define A_h 0x3B +#define A_i 0x3C +#define A_j 0x3D +#define A_k 0x3E +#define A_l 0x3F +#define A_m 0x40 +#define A_n 0x41 +#define A_o 0x42 +#define A_p 0x43 +#define A_q 0x44 +#define A_r 0x45 +#define A_s 0x46 +#define A_t 0x47 +#define A_u 0x48 +#define A_v 0x49 +#define A_w 0x4A +#define A_x 0x4B +#define A_y 0x4C +#define A_z 0x4D + +#define _XA 0x4E +#define _A 0x4F +#define _XI 0x50 +#define _I 0x51 +#define _XU 0x52 +#define _U 0x53 +#define _XE 0x54 +#define _E 0x55 +#define _XO 0x56 +#define _O 0x57 +#define _KA 0x58 +#define _GA 0x59 +#define _KI 0x5A +#define _GI 0x5B +#define _KU 0x5C +#define _GU 0x5D +#define _KE 0x5E +#define _GE 0x5F +#define _KO 0x60 +#define _GO 0x61 +#define _SA 0x62 +#define _ZA 0x63 +#define _SI 0x64 +#define _ZI 0x65 +#define _SU 0x66 +#define _ZU 0x67 +#define _SE 0x68 +#define _ZE 0x69 +#define _SO 0x6A +#define _ZO 0x6B +#define _TA 0x6C +#define _DA 0x6D +#define _TI 0x6E +#define _DI 0x6F +#define _XTU 0x70 +#define _TU 0x71 +#define _DU 0x72 +#define _TE 0x73 +#define _DE 0x74 +#define _TO 0x75 +#define _DO 0x76 +#define _NA 0x77 +#define _NI 0x78 +#define _NU 0x79 +#define _NE 0x7A +#define _NO 0x7B +#define _HA 0x7C +#define _BA 0x7D +#define _PA 0x7E +#define _HI 0x7F +#define _BI 0x80 +#define _PI 0x81 +#define _HU 0x82 +#define _BU 0x83 +#define _PU 0x84 +#define _HE 0x85 +#define _BE 0x86 +#define _PE 0x87 +#define _HO 0x88 +#define _BO 0x89 +#define _PO 0x8A +#define _MA 0x8B +#define _MI 0x8C +#define _MU 0x8D +#define _ME 0x8E +#define _MO 0x8F +#define _XYA 0x90 +#define _YA 0x91 +#define _XYU 0x92 +#define _YU 0x93 +#define _XYO 0x94 +#define _YO 0x95 +#define _RA 0x96 +#define _RI 0x97 +#define _RU 0x98 +#define _RE 0x99 +#define _RO 0x9A +#define _XWA 0x9B +#define _WA 0x9C +#define _WI 0x9D +#define _WE 0x9E +#define _WO 0x9F +#define _NN 0xA0 +#define _VU 0xA1 +#define _XKA 0xA2 +#define _XKE 0xA3 + +#define Y_KUTEN 0xF2 +#define Y_TOUTEN 0xF3 +#define Y_COMMA 0xF4 +#define Y_PERIOD 0xF5 +#define Y_QUOTA 0xF6 +#define Y_BIKKURI 0xF7 +#define Y_S_KIGOU1 0xF8 +#define Y_S_KIGOU2 0xF9 +#define Y_L_KAKKO 0xFA +#define Y_R_KAKKO 0xFB +#define Y_KIGOU 0xFC +#define Y_HANKAKU 0xFD +#define Y_ZENKAKU 0xFE + +#define _NIL 0 + +#endif diff --git a/kanakan/Imakefile b/kanakan/Imakefile new file mode 100644 index 0000000..05434cd --- /dev/null +++ b/kanakan/Imakefile @@ -0,0 +1,172 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:25 $ + */ + +INCLUDES = -I../include + +SRCS = \ + adddic.c \ + addelcmn.c \ + alloc.c \ + charsize.c \ + chrtbl.c \ + cl2knj.c \ + clstudy.c \ + cmpstr.c \ + conjunc.c \ + connect.c \ + cvtclknj.c \ + cvtdict.c \ + cvtkanji.c \ + deldic.c \ + depend.c \ + dict.c \ + functbl.c \ + fuzoku.c \ + fzkyomi.c \ + getkanji.c \ + getrank.c \ + global.c \ + hzstrlen.c \ + init.c \ + istrcmp.c \ + memcpy.c \ + memory.c \ + memset.c \ + mk2claus.c \ + mkbunset.c \ + mkjiritu.c \ + mkkouho.c \ + mknumber.c \ + mvmemd.c \ + mvmemi.c \ + peepdic.c \ + ph2knj.c \ + ph_khtbl.c \ + priority.c \ + prtytbl.c \ + s2ctbl.c \ + selclrec.c \ + selsuuji.c \ + setconj.c \ + setjrec.c \ + setkouho.c \ + setubi.c \ + sj2code.c \ + skiphblk.c \ + skipkstr.c \ + srchdict.c \ + srchhead.c \ + srchidx.c \ + srchnum.c \ + sstrcmp.c \ + sstrlen.c \ + sstrncmp.c \ + stbtbl.c \ + stttbl.c \ + study.c \ + suujitbl.c \ + terminat.c \ + termtbl.c \ + wakachi.c + +OBJS = \ + adddic.o \ + addelcmn.o \ + alloc.o \ + charsize.o \ + chrtbl.o \ + cl2knj.o \ + clstudy.o \ + cmpstr.o \ + conjunc.o \ + connect.o \ + cvtclknj.o \ + cvtdict.o \ + cvtkanji.o \ + deldic.o \ + depend.o \ + dict.o \ + functbl.o \ + fuzoku.o \ + fzkyomi.o \ + getkanji.o \ + getrank.o \ + global.o \ + hzstrlen.o \ + init.o \ + istrcmp.o \ + memcpy.o \ + memory.o \ + memset.o \ + mk2claus.o \ + mkbunset.o \ + mkjiritu.o \ + mkkouho.o \ + mknumber.o \ + mvmemd.o \ + mvmemi.o \ + peepdic.o \ + ph2knj.o \ + ph_khtbl.o \ + priority.o \ + prtytbl.o \ + s2ctbl.o \ + selclrec.o \ + selsuuji.o \ + setconj.o \ + setjrec.o \ + setkouho.o \ + setubi.o \ + sj2code.o \ + skiphblk.o \ + skipkstr.o \ + srchdict.o \ + srchhead.o \ + srchidx.o \ + srchnum.o \ + sstrcmp.o \ + sstrlen.o \ + sstrncmp.o \ + stbtbl.o \ + stttbl.o \ + study.o \ + suujitbl.o \ + terminat.o \ + termtbl.o \ + wakachi.o + +NormalLibraryObjectRule() +NormalLibraryTarget(kanakan,$(OBJS)) +DependTarget() + diff --git a/kanakan/adddic.c b/kanakan/adddic.c new file mode 100644 index 0000000..7402cd1 --- /dev/null +++ b/kanakan/adddic.c @@ -0,0 +1,616 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: adddic.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:26 $ + */ + + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" + + + +Uchar *srchdict(), *skipkstr(), *get_idxptr(); +Int sstrncmp(), study(), cmpstr(); +Int cvtknj(); +Int srchkana(), srchgram(), getkanji(); +Int sstrlen(), srchkanji(); +Uint addel_arg(); +Void memset(), mvmemi(), mkclidx(), mkidxtbl(); +Void mvmemd(), set_size(), delclsub(); +TypeDicSeg srchidx(); +TypeIdxOfs count_uidx(); + + + +Void chg_uidx(); +Static Void sprt_seg(), apnd_uidx(); + +Static Int cal_nextym(), usr_freelen(); +Static Uint checkdict(); + + + +Uint adddic(yomi, kanji, hinsi) +Uchar *yomi; +Uchar *kanji; +TypeGram hinsi; +{ + Uint err; + Uchar yptr[MaxWdYomiLen+1]; + Uchar kptr[MaxWdKanjiLen+1]; + Int klen; + TypeDicSeg segnum; + Int saml; + TypeDicOfs dstofs; + TypeDicOfs douofs; + TypeDicOfs hnsofs; + TypeDicOfs knjofs; + TypeDicOfs nxtask; + TypeDicOfs newsiz; + TypeDicOfs oldsiz; + TypeDicOfs fresiz; + TypeIdxOfs freidx; + Uchar *douptr; + Uchar *dstptr; + TypeDicOfs pos; + Uchar *p1; + Int i; + Int nlen, plen; + Int size; + STDYIN *stdy; + STDYOUT stdydat; + + + if (err = addel_arg(yomi, kanji, hinsi, yptr, sizeof(yptr))) + return err; + + + inputyomi = yomi; + cnvstart = ystart = yptr; + cnvlen = sstrlen(yptr); + + + if (err = checkdict(kanji, hinsi)) return err; + + + if (!curdict -> maxunit) return AD_NotUserDict; + + + klen = cvtknj(yomi, kanji, kptr); + + + newsiz = DouonBlkSizeNumber + cnvlen + (klen !=0 ? klen+1 : 0) + 2; + + + if (newsiz > MaxDouonBlk) return AD_OvflwDouBlk; + if (newsiz > curdict->seglen) return AD_OvflwDouBlk; + + + segnum = srchidx((TypeDicSeg)DicSegBase, cnvlen); + + for ( ; ; ) { + + (*curdict->getdic)(curdict, segnum); + i = srchkana(&p1, &saml); + dstofs = douofs = p1 - dicbuf; + hnsofs = knjofs = 0; + if (i) { + + i = srchgram(p1, &p1, hinsi); + dstofs = hnsofs = p1 - dicbuf; + if (i) { + + srchkanji(&p1, kptr, klen); + if (*p1 != HinsiBlkTerm) return AD_ArExist; + dstofs = knjofs = p1 - dicbuf; + } + } + + p1 = dicbuf + douofs; + + + if (!hnsofs) { + oldsiz = 0; + nlen = cnvlen - saml; + newsiz = DouonBlkSizeNumber + nlen; + + + nxtask = cal_nextym(p1); + } + else { + oldsiz = newsiz = getsize(p1); + nxtask = 0; + } + if (!knjofs) newsiz += 2; + + newsiz += (klen != 0 ? klen+1 : 0); + + + fresiz = usr_freelen(); + + + if ((unsigned int) (newsiz - oldsiz - nxtask) <= + (unsigned int) fresiz) break; + + + if (segend(p1) && (segnum + 1 < curdict->segunit)) { + + segnum++; + continue; + } + + + if (curdict->segunit >= curdict->maxunit) + return AD_OvflwUsrDic; + + + freidx = count_uidx(); + + + if ((unsigned int) (douofs + newsiz) <= curdict->seglen) { + + if (hnsofs) p1 = getntag(p1); + pos = p1 - dicbuf; + + + nlen = getnlen(p1); + if ((unsigned int) freidx < getplen(p1) + nlen + 1) + return AD_OvflwIndex; + + + if ((*curdict->putdic)(curdict, curdict->segunit)) + return AD_OvflwUsrDic; + + + sprt_seg(segnum, pos); + + + nxtask = 0; + break; + } + + + if (segend(p1)) { + + if ((unsigned int) freidx < cnvlen + 1) return AD_OvflwIndex; + + + if ((*curdict->putdic)(curdict, curdict->segunit)) + return AD_OvflwUsrDic; + curdict->segunit++; + + + (*curdict->getdic)(curdict, curdict->segunit - 1); + memset(dicbuf, DicSegTerm, (Int)curdict->seglen); + dicbuf[0] = 0; + (*curdict->putdic)(curdict, curdict->segunit - 1); + (*curdict->rszdic)(curdict, curdict->segunit); + mkidxtbl(curdict); + + + segnum++; + } + + + else { + + nlen = getnlen(p1); + if ((unsigned int) freidx < getplen(p1) + nlen + 1) + return AD_OvflwIndex; + + if ((*curdict->putdic)(curdict, curdict->segunit)) + return AD_OvflwUsrDic; + + + sprt_seg(segnum, douofs); + + + segnum++; + } + } + + douptr = dicbuf + douofs; + + + if (nxtask) { + Uchar *tp; + + + size = getsize(douptr) - nxtask; + plen = getplen(douptr) + nxtask; + nlen = getnlen(douptr) - nxtask; + *douptr = (size >> 8); + if (nlen & 0x10) *douptr |= NokoriYomiTop; + if (plen & 0x10) *douptr |= AssyukuYomiTop; + *(douptr + 1) = size; + *(douptr + 2) = ((nlen & 0x0f) | ((plen & 0x0f) << 4)); + + + p1 = douptr + DouonBlkSizeNumber; + tp = p1 + nxtask; + mvmemi(tp, p1, dicbuf + curdict->seglen - tp); + } + + + dstptr = dicbuf + dstofs; + size = newsiz - oldsiz; + p1 = dicbuf + curdict->seglen; + mvmemd(p1 - size, p1, p1 - dstptr - size); + + + if (!hnsofs) { + + if (douofs == segtop() - dicbuf) { + + chg_uidx(segnum, yptr, cnvlen); + } + + + *dstptr = 0; + nlen = cnvlen - saml; + if (nlen & 0x10) *dstptr |= NokoriYomiTop; + if (saml & 0x10) *dstptr |= AssyukuYomiTop; + *dstptr++ |= (size >> 8); + *dstptr++ = size; + *dstptr++ = ((nlen&0x0f)|((saml&0x0f)<<4)); + + + while (saml < cnvlen) *dstptr++ = yptr[saml++]; + } + + else { + plen = getplen(douptr); + nlen = getnlen(douptr); + *douptr = (newsiz >> 8); + if (nlen & 0x10) *douptr |= NokoriYomiTop; + if (plen & 0x10) *douptr |= AssyukuYomiTop; + *(douptr + 1) = newsiz; + *(douptr + 2) = ((nlen & 0x0f) | ((plen & 0x0f) << 4)); + } + + + if (!knjofs) *dstptr++ = hinsi; + + + stdydat.stdy1.offset = dstptr - dicbuf; + for (saml = 0 ; saml < klen ; ) *dstptr++ = kptr[saml++]; + if (klen > 0) *dstptr++ = KanjiStrEnd; + + + if (!knjofs) *dstptr++ = HinsiBlkTerm; + + + (*curdict->putdic)(curdict, segnum); + + if (StudyExist()) { + + size -= nxtask; + for (i = StudyCount, stdy = StudyDict ; i-- ; stdy++) { + if (stdy -> dicid != curdict->dicid) continue; + if (stdy -> seg != segnum) continue; + if (stdy -> offset >= dstofs) stdy -> offset += size; + } + + + for (p1 = ClStudyDict ; !iseocl(p1) ; p1 = ClNextTag(p1)) { + err = sstrncmp(yptr, (Uchar TFar *)ClYomiPos(p1), + (Int)ClYomiLen(p1)); + if (err == MATCH) { + delclsub(p1); + mkclidx(); + putcldic(); + break; + } + else if (err == OVER) + break; + } + } + + + stdydat.stdy1.seg = segnum; + stdydat.stdy1.dicid = curdict->dicid; + stdydat.stdy1.styno = 0; + stdydat.stdy1.sttkj = 0; + stdydat.stdy1.ka_kj = 0; + stdydat.stdy1.nmflg = 0; + stdydat.hinshi = hinsi; + stdydat.len = cnvlen; + stdydat.sttlen = 0; + stdydat.sttfg = 0; + stdydat.ka_fg = 0; + (Void)study(&stdydat); + + return AD_Done; +} + + + +Static Int checksub(kanji, grm) +Uchar *kanji; +TypeGram grm; +{ + Reg1 Uchar *tagp; + Reg2 Uchar *ptr; + Reg3 Uchar *endp; + Int flg, nlen; + Int dounum; + Uchar buf[MaxWdKanjiLen + 1]; + + + dicinl = cnvlen; + dicsaml = 0; + prevseg = (TypeDicSeg)-1; + for (;;) { + if (!(tagp = srchdict(tagp))) return 0; + if (cnvlen == getnlen(tagp) + getplen(tagp)) + break; + } + + + dounum = 0; + + + nlen = getnlen(tagp); + ptr = tagp + DouonBlkSizeNumber + nlen; + + + endp = tagp + getsize(tagp); + + + while (ptr < endp) { + + + flg = (grm == *ptr++); + while (*ptr != HinsiBlkTerm) { + + + if (flg) { + + + buf[getkanji(inputyomi, cnvlen, ptr, buf)] = 0; + + + if (cmpstr(kanji, buf)) return -1; + } + + + dounum++; + ptr = skipkstr(ptr); + } + + + ptr++; + } + + + return dounum; +} + + + +Static Uint checkdict(kanji, grm) +Uchar *kanji; +TypeGram grm; +{ + Reg1 DICTL *dp; + Reg2 Int dounum = 0; + Reg3 Int tmp; + DICT *tmpdict; + + tmpdict = curdict; + for (dp = dictlist ; dp ; dp = dp -> next) { + + curdict = dp -> dict; + + + if ((tmp = checksub(kanji, grm)) < 0) { + curdict = tmpdict; + return AD_ArExist; + } + + dounum += tmp; + } + curdict = tmpdict; + + + if (MaxKouhoNumber <= dounum) return AD_OvflwDouNum; + + return 0; +} + + + +Static Int cal_nextym(ptr) +Reg1 Uchar *ptr; +{ + Reg2 Int count = 0; + Reg3 Uchar *src; + Reg4 Int len; + + + if (!segend(ptr)) { + + + src = cnvstart + getplen(ptr); + + + len = getnlen(ptr); + ptr += DouonBlkSizeNumber; + + + while (len--) { + if (*ptr++ == *src++) + count++; + else + break; + } + } + + + return count; +} + + + +Static Int usr_freelen() +{ + Reg1 Uchar *ptr; + + + ptr = segtop(); + while (!segend(ptr)) ptr += getsize(ptr); + + + return(curdict->seglen - (ptr - dicbuf)); +} + + + +Static Void sprt_seg(seg, ofs) +TypeDicSeg seg; +TypeDicOfs ofs; +{ + Reg3 TypeDicSeg s; + Uchar *pos; + Reg1 Uchar *p; + Reg2 Uchar *q; + Int i; + Int j; + Int ylen, nlen; + TypeDicID dicid; + Uchar yomi[MaxWdYomiLen]; + STDYIN *stdy; + + for (s = curdict->segunit - 1 ; s >= seg ; s--) { + (*curdict->getdic)(curdict, s); + (*curdict->putdic)(curdict, s + 1); + } + curdict->segunit++; + (*curdict->rszdic)(curdict, curdict->segunit); + + + (*curdict->getdic)(curdict, seg + 1); + + + pos = dicbuf + ofs; + + + for (p = segtop() ; (p <= pos) && !segend(p) ; p = q) { + q = getntag(p); + i = getplen(p); + nlen = getnlen(p); + j = (nlen != 0) ? nlen+1: 0; + p += DouonBlkSizeNumber; + while (j-- > 0) yomi[i++] = *p++; + } + + + nlen = getnlen(pos); + ylen = (i = getplen(pos)) + (j = nlen); + + + apnd_uidx(seg, yomi, ylen); + + + set_size(segtop(), getsize(pos) + i, 0, ylen); + + + mvmemi(yomi, (p = segtop() + DouonBlkSizeNumber), ylen); + + + q = pos + DouonBlkSizeNumber + j; + i = dicbuf + curdict->seglen - q; + mvmemi(q, p += ylen, i); + j = q - p; + + + p += i; + memset(p, DicSegTerm, (dicbuf + curdict->seglen - p)); + + + (*curdict->putdic)(curdict, seg + 1); + + if (StudyExist()) { + + dicid = curdict -> dicid; + for (i = StudyCount, stdy = StudyDict ; i-- > 0 ; stdy++) { + if (stdy -> dicid != dicid) + continue; + else if (stdy -> seg < seg) + continue; + else if (stdy -> seg > seg) + stdy -> seg += 1; + else if (stdy -> offset >= ofs) { + stdy -> seg += 1; + stdy -> offset -= j; + } + } + } + + + (*curdict->getdic)(curdict, seg); + memset(dicbuf + ofs, DicSegTerm, (Int)(curdict->seglen - ofs)); + (*curdict->putdic)(curdict, seg); +} + + + +Static Void apnd_uidx(seg, yomi, len) +TypeDicSeg seg; +Uchar *yomi; +Int len; +{ + Reg1 Uchar *p; + Reg1 Uchar *q; + + + p = get_idxptr(seg); + while (*p++) ; + + + q = idxbuf + curdict->idxlen; + mvmemd(q - (len + 1), q, (Int)(q - (len + 1) - p)); + + + while (len--) *p++ = *yomi++; + *p = 0; + + + (*curdict->putidx)(curdict, 0); + + + mkidxtbl(curdict); +} diff --git a/kanakan/addelcmn.c b/kanakan/addelcmn.c new file mode 100644 index 0000000..998d27e --- /dev/null +++ b/kanakan/addelcmn.c @@ -0,0 +1,502 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: addelcmn.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:27 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" +#include "sj_hinsi.h" +#include "sj_yomi.h" + + + +Uchar *get_idxptr(); +Int sj2cd_str(), yomicmp(), codesize(); +Int sstrlen(), sstrcmp(); +Void mvmemi(), mvmemd(), mkidxtbl(); + + + +Void set_size(p, size, plen, nlen) +Reg1 Uchar *p; +Int size; +Int plen; +Int nlen; +{ + *p = (Uchar)(size >> 8); + if (nlen & 0x10) *p |= NokoriYomiTop; + if (plen & 0x10) *p |= AssyukuYomiTop; + *(p + 1) = (Uchar)size; + *(p + 2) = (Uchar)((nlen & 0x0f) | ((plen & 0x0f) << 4)); +} + + + +Static Int isvyomi(yp) +Reg1 Uchar *yp; +{ + Reg2 Int len; + + if (!*yp) return FALSE; + + + if (!(Chrtbl[*yp] & DICTOP)) return FALSE; + + for (len = 0 ; *yp ; yp++) { + + if (!(Chrtbl[*yp]) || (*yp >= Y_KUTEN)) return FALSE; + + + if (++len > MaxWdYomiLen) return FALSE; + } + + return TRUE; +} + + + +Static Int isvknj(kanji) +Reg1 Uchar *kanji; +{ + Reg2 Int len; + + if (!*kanji) return FALSE; + + + for (len = 0 ; *kanji ; ) { + if (*kanji == SS3) { + kanji += 3; + len += 2; + } else + + if (isknj1(*kanji)) { + kanji += 2; + len += 2; + } + + else { + kanji++; + len += 2; + } + + if (len > MaxWdKanjiLen) return FALSE; + } + + return TRUE; +} + + + +Static Int isgrm(gram) +TypeGram gram; +{ + Reg1 Int grm = gram; + + if (MEISI_1 <= grm && grm <= D_MEISI_6) return TRUE; + if (MYOUJI <= grm && grm <= JOSUUSI2) return TRUE; + if (KEIYOUSI_1 <= grm && grm <= DO_ZAHEN) return TRUE; + if (DO_1DAN_1 <= grm && grm <= DO_WAGO_2) return TRUE; + if (DO_KAGO_5 <= grm && grm <= DO_WAGO_5) return TRUE; + if (DO_KAGO_6 <= grm && grm <= DO_WAGO_6) return TRUE; + if (DO_1DAN_3 <= grm && grm <= DO_WAGO_3) return TRUE; + if (DO_1DAN_4 <= grm && grm <= DO_WAGO_4) return TRUE; + if (DO_KAGO_7 <= grm && grm <= DO_WAGO_7) return TRUE; + if (DO_KAGO_8 <= grm && grm <= DO_WAGO_8) return TRUE; + if (SP_SA_MI1 <= grm && grm <= TANKANJI) return TRUE; + + return FALSE; +} + + + +Uint addel_arg(yp, kp, grm, nyp, len) +Uchar *yp; +Uchar *kp; +TypeGram grm; +Uchar *nyp; +Int len; +{ + Reg1 Ushort err = 0; + + + if (!sj2cd_str(yp, nyp, len)) err |= AD_BadYomi; + + + if (!isvyomi(nyp)) err |= AD_BadYomi; + + + if (!isvknj(kp)) err |= AD_BadKanji; + + + if (!isgrm(grm)) err |= AD_BadHinsi; + + return err; +} + + + +Static Void yomi2kata(src, dst) +Reg2 Uchar *src; +Reg1 Uchar *dst; +{ + Reg3 Int first; + Reg4 Int second; + + while (first = *src++) { + second = *src++; + + + if (first != 0xa4) { + *dst++ = first; + *dst++ = second; + } + + + else { + *dst++ = 0xa5; + *dst++ = second; + } + } + + *dst = 0; +} + + + +Static Int top_strcmp(src, dst) +Reg1 Uchar *src; +Reg3 Uchar *dst; +{ + Reg2 Int i; + + + for (i = 0 ; *src && (*src == *dst) ; src++, dst++) i++; + + + i /= 2; + + + return (i > MaxYomiAskNumber) ? MaxYomiAskNumber : i; +} + + + +Static Int last_strcmp(src, dst) +Uchar *src; +Uchar *dst; +{ + Int slen; + Reg1 Int dlen; + + + slen = sstrlen(src); + dlen = sstrlen(dst); + + + if (dlen > MaxYomiAskNumber * 2) return 0; + + + if (sstrcmp(src + (slen - dlen), dst)) return 0; + + + return (dlen / 2); +} + + + +Int cvtknj(yomi, knj, dst) +Uchar *yomi; +Uchar *knj; +Reg1 Uchar *dst; +{ + Uchar kana[MaxWdYomiLen * 2 + 1]; + Reg2 Int len; + Uchar *keep; + + keep = dst; + yomi2kata(yomi, kana); + + + if (len = top_strcmp(yomi, knj)) { + *dst = (Uchar)(ZenHiraAssyuku | (len - 1)); + } + + else if (len = top_strcmp(kana, knj)) { + *dst = (Uchar)(ZenKataAssyuku | (len - 1)); + } + + if (len) { + + knj += len * 2; + dst++; + + } + + if (*knj) { + + for ( ; ; ) { + + if (len = last_strcmp(yomi, knj)) { + *dst++ = (Uchar)(ZenHiraAssyuku | (len - 1)); + break; + } + + + else if (len = last_strcmp(kana, knj)) { + *dst++ = (Uchar)(ZenKataAssyuku | (len - 1)); + break; + } + else if (*knj == SS2) { + knj++; + *dst++ = (Uchar)LeadingHankaku; + *dst++ = *knj++; + } else if (*knj == SS3) { + knj++; + *dst++ = (*knj & NormalKanjiMask); knj++; + *dst++ = *knj++; + + } else if (*knj & 0x80) { + *dst++ = (*knj & NormalKanjiMask); knj++; + *dst++ = (*knj & NormalKanjiMask); knj++; + } + + else { + *dst++ = (Uchar)LeadingHankaku; + *dst++ = *knj++; + } + + + if (!*knj) { + break; + } + } + } + + + *dst = 0; + + + return (dst - keep); +} + + + +Int srchkana(ptr, saml) +Uchar **ptr; +Int *saml; +{ + Uchar *p; + Int cmp; + Int cnt = 0; + Uchar same; + Reg1 Int flg = 0; + + + same = 0; + + + p = segtop(); + + + while (!segend(p)) { + + + if (flg == 0) { + + + cmp = yomicmp(cnvstart, p, &same); + + + if (cmp == OVER) break; + + + if (cmp == MATCH && *(cnvstart + same) == 0) { + *ptr = p; + *saml = same; + flg = 1; + } + } + + + p = getntag(p); + cnt++; + } + + + if (flg != 0) return cnt; + + + *ptr = p; + *saml = same; + return 0; +} + + + +Int srchgram(ptr, dst, hinsi) +Reg1 Uchar *ptr; +Uchar **dst; +TypeGram hinsi; +{ + Uchar *endp; + Int cnt = 0, nlen; + Int flg = FALSE; + + + endp = getntag(ptr); + + + nlen = getnlen(ptr); + + ptr += DouonBlkSizeNumber + nlen; + while (ptr < endp) { + + if (*ptr == hinsi) { + *dst = ptr; + flg = TRUE; + } + + + do { + ptr += codesize(*ptr); + } while (*ptr != HinsiBlkTerm); + ptr++; + cnt++; + } + + + if (flg) return cnt; + + + *dst = ptr; + return 0; +} + + + +Int srchkanji(dst, knj, klen) +Uchar **dst; +Uchar *knj; +Int klen; +{ + Reg1 Uchar *ptr; + Uchar *p, *q; + Int len; + Int flg = FALSE; + Int cnt = 0; + + + ptr = *dst + 1; + + + while (*ptr != HinsiBlkTerm) { + + for (p = ptr, q = knj, len = klen ; len ; len--) + if (*p++ != *q++) break; + + + if (!len) { + *dst = ptr; + flg = TRUE; + } + + + while (!(*ptr == KanjiStrEnd)) { + ptr += codesize(*ptr); + } + ptr++; + cnt++; + } + + + if (!flg) *dst = ptr; + + + return cnt; +} + + + +TypeIdxOfs count_uidx() +{ + Uchar *p; + + + p = get_idxptr(curdict->segunit - 1); + while (*p++) ; + + + return (curdict->idxlen - (p - idxbuf)); +} + + + +Void chg_uidx(seg, yomi, len) +TypeDicSeg seg; +Uchar *yomi; +Int len; +{ + Uchar *p, *q; + Int olen; + + + p = get_idxptr(seg); + + + olen = sstrlen(p); + + q = idxbuf + curdict->idxlen; + + + if (len > olen) { + + mvmemd(q - (len-olen), q, (Int)(q - (len-olen) - p)); + } + + else { + + mvmemi(p + (olen-len), p, (Int)(q - (p + (olen-len)))); + } + + + while (len--) *p++ = *yomi++; + + + (*curdict->putidx)(curdict, 0); + + + mkidxtbl(curdict); +} diff --git a/kanakan/alloc.c b/kanakan/alloc.c new file mode 100644 index 0000000..dcda65c --- /dev/null +++ b/kanakan/alloc.c @@ -0,0 +1,103 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: alloc.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:28 $ + */ + + + +#include +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" +#include "sj_var.h" +#include "sj_struct.h" + +#define JREC_NUM 128 +#define CLREC_NUM 128 + +static JREC *jrec = NULL; +static CLREC *clrec = NULL; + +JREC *alloc_jrec() +{ + register JREC *p; + register int i; + + if (jrec == NULL) { + jrec = (JREC *)malloc(sizeof(JREC) * JREC_NUM); + if (jrec == NULL) return (JREC *)malloc(sizeof(JREC)); + for (i = 0, p = jrec ; i < JREC_NUM - 1 ; i++, p++) + p -> jsort = p + 1; + p -> jsort = NULL; + } + p = jrec; + jrec = jrec -> jsort; + + return p; +} + +Void free_jrec(p) +JREC *p; +{ + if (p != NULL) { + p -> jsort = jrec; + jrec = p; + } +} + +CLREC *alloc_clrec() +{ + register CLREC *p; + register int i; + + if (clrec == NULL) { + clrec = (CLREC *)malloc(sizeof(CLREC) * CLREC_NUM); + if (clrec == NULL) return (CLREC *)malloc(sizeof(CLREC)); + for (i = 0, p = clrec ; i < CLREC_NUM - 1 ; i++, p++) + p -> clsort = p + 1; + p -> clsort = NULL; + } + p = clrec; + clrec = clrec -> clsort; + + return p; +} + +Void free_clrec(p) +CLREC *p; +{ + if (p != NULL) { + p -> clsort = clrec; + clrec = p; + } +} diff --git a/kanakan/charsize.c b/kanakan/charsize.c new file mode 100644 index 0000000..671d097 --- /dev/null +++ b/kanakan/charsize.c @@ -0,0 +1,62 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: charsize.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:29 $ + */ + + + + +#include "sj_euc.h" +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_dict.h" + + +codesize(code) +u_char code; +{ + switch (code & KanjiModeMask) { + case ZenHiraAssyuku: + case ZenKataAssyuku: + case KanjiAssyuku: + case KanjiStrEnd: + return 1; + case LeadingHankaku: + case OffsetAssyuku: + case AiAttribute: + return 2; + default: + return 2; + } +} + diff --git a/kanakan/chrtbl.c b/kanakan/chrtbl.c new file mode 100644 index 0000000..99d7b0a --- /dev/null +++ b/kanakan/chrtbl.c @@ -0,0 +1,303 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: chrtbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:30 $ + */ + + + + +#include "sj_const.h" +#include "sj_rename.h" +#include "sj_typedef.h" + + + +Uchar chrtbl[256] = +{ + 0, + FZKTOP, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU + BEFORNUM, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + NUMBER, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DICTOP + TAI_KGU, + DEPEND, + DICTOP, + DEPEND, + DICTOP, + DEPEND, + DICTOP, + DEPEND, + DICTOP, + DEPEND, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + FZKTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DEPEND, + DICTOP, + DEPEND, + DICTOP, + DEPEND, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DICTOP, + DEPEND, + DICTOP, + DICTOP, + DICTOP, + FZKTOP, + DICTOP, + DICTOP, + DEPEND, + DEPEND, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + FZK_KGU, + FZK_KGU, + FZK_KGU + MIDNUM, + FZK_KGU + MIDNUM, + FZK_KGU + TAI_KGU, + FZK_KGU + TAI_KGU, + TAI_KGU + BEFORNUM, + TAI_KGU, + FZK_KGU, + TAI_KGU, + TAI_KGU, + TAI_KGU, + TAI_KGU, + 0 +}; diff --git a/kanakan/cl2knj.c b/kanakan/cl2knj.c new file mode 100644 index 0000000..6b99175 --- /dev/null +++ b/kanakan/cl2knj.c @@ -0,0 +1,279 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: cl2knj.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:31 $ + */ + + + + + +#include "sj_kcnv.h" + + + +Int sj2cd_chr(), hzstrlen(), sstrlen(); +Void sstrncpy(), mkjiritu(), mkbunsetu(), wakachi(); +Void mkkouho(), getrank(), cvtclknj(), freework(); +Void memset(); + + + +Static CLREC *nextrecblk(), *prevrecblk(); +Static Void initkbuf(); + + + +Int cl2knj(yomi, len, kouho) +Uchar *yomi; +Reg4 Int len; +Uchar *kouho; +{ + Reg1 Uchar *ptr1; + Reg2 Uchar *ptr2; + Reg3 Int i; + + + khcount = nkhcount = 0; + + + initkbuf(kouho); + + + if (len > MaxClInputLen * 2) len = MaxClInputLen * 2; + + + ptr1 = yomi; ptr2 = hyomi; + for (i = 0 ; i < len ; i++) { + if (isknj1(*ptr1)) { + if (++i >= len) break; + } + ptr1 += sj2cd_chr(ptr1, ptr2++); + } + *ptr2 = 0; + + + sstrncpy(yomi, orgyomi, (Int)(ptr1 - yomi)); + + + if (!hyomi[0]) return 0; + + + freework(); + + + inputyomi = orgyomi; + cnvstart = ystart = hyomi; + cnvlen = sstrlen(hyomi); + + + mkjiritu(0); + + + mkbunsetu(); + + + if (!maxclptr) wakachi(); + + + jrt1st = maxjptr; + clt1st = maxclptr; + + + mkkouho(); + + + getrank(); + + + selectid = 1; + + + cvtclknj(); + + + return hzstrlen(inputyomi, (Int)clt1st -> cllen); +} + + + +Int nextcl(kouho, mode) +Uchar *kouho; +Int mode; + +{ + CLREC *clptr; + + + initkbuf(kouho); + + + if (!khcount) return 0; + + + + if (!mode && (selectid < khcount)) + selectid++; + + + else if((mode < 2) && (clptr = nextrecblk())) { + selectid = 1; + clt1st = clptr; + mkkouho(); + getrank(); + } + + + + else { + cvtclknj(); + return 0; + } + + cvtclknj(); + + + return hzstrlen(inputyomi, (Int)clt1st -> cllen); +} + + + + +Static CLREC *nextrecblk() +{ + Reg1 CLREC *clptr; + Reg2 Int keeplen; + + + keeplen = clt1st -> cllen; + + + clptr = clt1st -> clsort; + + + while (clptr && (Int)clptr -> cllen == keeplen) + clptr = clptr -> clsort; + + + return clptr; +} + + + + +Int prevcl(kouho, mode) +Uchar *kouho; +Int mode; + +{ + CLREC *clptr; + + + initkbuf(kouho); + + + if (!khcount) return 0; + + + if (!mode && (selectid > 1)) + selectid--; + + + else if ((mode < 2) && (clptr = prevrecblk())) { + clt1st = clptr; + mkkouho(); + getrank(); + selectid = khcount; + } + + + + else { + cvtclknj(); + return 0; + } + + cvtclknj(); + + + return hzstrlen(inputyomi, (Int)clt1st -> cllen); +} + + + +Static CLREC *prevrecblk() +{ + Reg1 CLREC *clptr; + CLREC *keepptr; + Reg2 Int keeplen; + Int cllen; + + + clptr = maxclptr; + + + + if ((cllen = clt1st -> cllen) == clptr -> cllen) + return NULL; + + + while ((Int)clptr -> cllen > cllen) { + + keeplen = clptr -> cllen; + + + keepptr = clptr; + + + while ((Int)clptr -> cllen == keeplen) + clptr = clptr -> clsort; + } + + + return keepptr; +} + + + +Static Void initkbuf(kouho) +Uchar *kouho; +{ + kanjitmp = kouho; + memset(kanjitmp, 0, sizeof(STDYOUT) + 1); +} + + + +Int selectnum() +{ + return selectid; +} diff --git a/kanakan/clstudy.c b/kanakan/clstudy.c new file mode 100644 index 0000000..71a88f6 --- /dev/null +++ b/kanakan/clstudy.c @@ -0,0 +1,361 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: clstudy.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:32 $ + */ + + + + + +#include "sj_kcnv.h" + + + +Int sj2cd_str(), sstrlen(); +Void memcpy(), memset(), mvmemd(), mvmemi(); + + + +Static Uchar *delcldata(), *srchclpos(); +Void delclsub(), mkclidx(); +Static Int delclold(); + + + +Int clstudy(yomi1, yomi2, stdy) +Uchar *yomi1; +Uchar *yomi2; +STDYOUT *stdy; +{ + Uchar ytmp[CLSTDY_TMPLEN]; + Uchar *dst, *ptr; + Int ret; + Int len1, len2; + Int alen, blen; + Int i; + + if (!StudyExist()) return ClstudyNoDict; + + + if (!yomi1 || !*yomi1) return ClstudyParaErr; + + + if (!yomi2 || !*yomi2) { + + + if (!sj2cd_str(yomi1, ytmp, CLSTDY_TMPLEN)) + return ClstudyYomiErr; + + + (Void)delcldata(ytmp); + + ret = ClstudyNormEnd; + } + + + else if (!stdy) + return ClstudyParaErr; + + else { + + if (!sj2cd_str(yomi1, ytmp, CLSTDY_TMPLEN)) + return ClstudyYomiErr; + len1 = sstrlen(ytmp); + + + if (!sj2cd_str(yomi2, ytmp + len1, CLSTDY_TMPLEN - len1)) + return ClstudyYomiErr; + len2 = len1 + stdy -> len; + + + ytmp[len2] = 0; + + + alen = len2 + CL_HDLEN; + + + if (alen + 1 >= ClStudyLen) return ClstudyNoArea; + + + blen = ClStudyTail - delcldata(ytmp) - 1; + + + while (blen < alen) { + + if (!(i = delclold())) break; + blen += i; + } + + + if (blen >= alen) { + + dst = srchclpos(ytmp); + + + ptr = ClStudyTail - alen; + mvmemd(ptr, ClStudyTail, (ptr - dst)); + ClYomiLen(dst) = (Uchar)len2; + ClGramCode(dst) = stdy -> hinshi; + ClYomi1Len(dst) = (Uchar)len1; + ClSetNum(dst, 1); + memcpy(ytmp, ClYomiPos(dst), len2); + + ret = ClstudyNormEnd; + } + + else + ret = ClstudyNoArea; + } + + + mkclidx(); + + + putcldic(); + + + return ret; +} + + + +Static Uchar *delcldata(ycode) +Uchar *ycode; +{ + Reg1 Uchar *tagptr; + Reg2 Uchar *ptr1; + Reg3 Uchar *ptr2; + Int len1; + + + tagptr = ClStudyDict; + while (!iseocl(tagptr)) { + + ptr1 = ycode; + ptr2 = ClYomiPos(tagptr); + len1 = ClYomiLen(tagptr); + + + while (*ptr1 && len1) { + if (*ptr1 != *ptr2) break; + ptr1++; + ptr2++; + len1--; + } + + + if (!*ptr1 || !len1) { + + delclsub(tagptr); + + + } + + else { + tagptr = ClNextTag(tagptr); + } + } + + + return tagptr; +} + + + +Void delclsub(target) +Uchar *target; +{ + Reg1 Uchar *src; + Int num; + Int tmp; + Int len; + + + num = ClGetNum(target); + + + len = ClBlkLen(target); + + + src = target + len; + + + mvmemi(src, target, (ClStudyTail - src)); + + + memset(ClStudyTail - len, 0, len); + + + src = ClStudyDict; + while (!iseocl(src)) { + + tmp = ClGetNum(src); + + + if (tmp > num) { + + tmp -= 1; + ClSetNum(src, tmp); + } + + + src = ClNextTag(src); + } +} + + + +Static Int delclold() +{ + Reg1 Uchar *tagptr; + Reg2 Uchar *target; + Int num; + Int tmp; + + + target = NULL; + num = 0; + + + tagptr = ClStudyDict; + while (!iseocl(tagptr)) { + + + tmp = ClGetNum(tagptr); + + + if (tmp >= num) { + + num = tmp; + target = tagptr; + } + + + tagptr = ClNextTag(tagptr); + } + + + if (target) { + + num = ClBlkLen(tagptr); + + + delclsub(target); + } + + + return num; +} + + + +Static Uchar *srchclpos(ycode) +Uchar *ycode; +{ + Reg1 Uchar *tagptr; + Reg3 Uchar *target; + Reg2 Uchar *ptr1; + Reg4 Uchar *ptr2; + Reg5 Int len; + Int tmp; + + + target = NULL; + tagptr = ClStudyDict; + while (!iseocl(tagptr)) { + + tmp = ClGetNum(tagptr); + + + tmp++; + ClSetNum(tagptr, tmp); + + + ptr1 = ycode; + ptr2 = ClYomiPos(tagptr); + len = ClYomiLen(tagptr); + while (*ptr1 && len) { + if (*ptr1 != *ptr2) break; + ptr1++; + ptr2++; + len--; + } + + + if (!target) { + + if (!len) + ; + + + else if (!*ptr1) + target = tagptr; + + + else if (*ptr1 < *ptr2) + target = tagptr; + } + + + tagptr = ClNextTag(tagptr); + } + + + return target ? target : tagptr; +} + + + +Void mkclidx() +{ + Reg1 Uchar *ptr; + Reg2 Int num; + Int st, ed; + + if (!StudyExist()) return; + + ptr = ClStudyDict; + for (num = st = 0 ; st < 0x100 ; num++, st = ed) { + ed = st + ClStudyStep; + + while (!iseocl(ptr)) { + if ((unsigned int) *ClYomiPos(ptr) >= st) break; + ptr = ClNextTag(ptr); + } + + if (ClYomiLen(ptr) && ((Int)*ClYomiPos(ptr) < ed)) + ClStudyIdx[num] = ptr - ClStudyDict; + else + ClStudyIdx[num] = (Ushort)-1; + } +} diff --git a/kanakan/cmpstr.c b/kanakan/cmpstr.c new file mode 100644 index 0000000..03f1b33 --- /dev/null +++ b/kanakan/cmpstr.c @@ -0,0 +1,57 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: cmpstr.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:32 $ + */ + + + + + +#include "sj_rename.h" +#include "sj_const.h" +#include "sj_typedef.h" + +Int cmpstr(src, dst) +Reg1 Uchar *src; +Reg2 Uchar *dst; +{ + while (*src) { + if (*src != *dst) return FALSE; + src++; + dst++; + } + + if (*dst) return FALSE; + + return TRUE; +} diff --git a/kanakan/conjunc.c b/kanakan/conjunc.c new file mode 100644 index 0000000..12cf7a5 --- /dev/null +++ b/kanakan/conjunc.c @@ -0,0 +1,1245 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: conjunc.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:33 $ + */ + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_yomi.h" +#include "sj_right.h" + +static Uchar sahencnj[] = { + 0x00, R_SGOKAN, + 0x01, _SA, R_MIZEN1, + 0x01, _SI, R_SI1, + 0x11, _RO, R_MEIREI1, + 0x02, _SU, _RU, R_SHUUSI, + 0x25, _KA, _SI, _NA, _I, _KA, R_KA1, + 0x11, _RE, R_KATEI2, + 0x01, _SE, R_MIZEN2, + 0x12, _NA, _I, R_NAI, + 0x31, _DE, R_NAIDE, + 0x22, _KA, _XTU, R_ONBIN1, + 0x32, _RO, _U, R_KAROU, + 0x21, _KU, R_NAKU, + 0x22, _KE, _RE, R_KATEI3, + 0x12, _RA, _RE, R_RARE, + 0x31, _YO, R_MEIREI2, + 0x31, _RU, R_SHUUSI, + 0x31, _RE, R_KATEI2, + 0x31, _RO, R_MEIREI1, + 0x11, _YO, R_MEIREI2, + 0xff + }; + +static Uchar zahencnj[] = { + 0x00, R_CUT, + 0x01, _ZI, R_JI, + 0x11, _YO, R_MEIREI2, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x11, _RO, R_MEIREI1, + 0x02, _ZU, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x01, _ZE, R_MIZEN3, + 0x11, _YO, R_MEIREI2, + 0xff + }; + +static Uchar ka5cnj1[] = { + 0x01, _I, R_ONBIN2, + 0x01, _KA, R_MIZEN5, + 0x01, _KI, R_RENYOU5, + 0x01, _KU, R_SHUUSI, + 0x01, _KE, R_KAMEI, + 0x02, _KO, _U, R_AROU, + 0xff + }; + +static Uchar ka5cnj3[] = { + 0x01, _I, R_ONBIN2, + 0x01, _KA, R_MIZEN5, + 0x01, _KI, R_RENYOU7, + 0x01, _KU, R_SHUUSI, + 0x01, _KE, R_KAMEI, + 0x02, _KO, _U, R_AROU, + 0xff + }; + +static Uchar ka5cnj5[] = { + 0x01, _I, R_ONBIN2, + 0x01, _KA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _KI, R_RENYOU5, + 0x01, _KU, R_SHUUSI, + 0x01, _KE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _KO, _U, R_AROU, + 0xff + }; + +static Uchar ka5cnj7[] = { + 0x01, _I, R_ONBIN2, + 0x01, _KA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _KI, R_RENYOU7, + 0x01, _KU, R_SHUUSI, + 0x01, _KE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _KO, _U, R_AROU, + 0xff + }; + +static Uchar ga5cnj1[] = { + 0x01, _I, R_ONBIN3, + 0x01, _GA, R_MIZEN5, + 0x01, _GI, R_RENYOU5, + 0x01, _GU, R_SHUUSI, + 0x01, _GE, R_KAMEI, + 0x02, _GO, _U, R_AROU, + 0xff + }; + +static Uchar ga5cnj3[] = { + 0x01, _I, R_ONBIN3, + 0x01, _GA, R_MIZEN5, + 0x01, _GI, R_RENYOU7, + 0x01, _GU, R_SHUUSI, + 0x01, _GE, R_KAMEI, + 0x02, _GO, _U, R_AROU, + 0xff + }; + +static Uchar ga5cnj5[] = { + 0x01, _I, R_ONBIN3, + 0x01, _GA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _GI, R_RENYOU5, + 0x01, _GU, R_SHUUSI, + 0x01, _GE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _GO, _U, R_AROU, + 0xff + }; + +static Uchar ga5cnj7[] = { + 0x01, _I, R_ONBIN3, + 0x01, _GA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _GI, R_RENYOU7, + 0x01, _GU, R_SHUUSI, + 0x01, _GE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _GO, _U, R_AROU, + 0xff + }; + +static Uchar sa5cnj1[] = { + 0x01, _SA, R_MIZEN5, + 0x01, _SI, R_SA5RENYOU1, + 0x01, _SU, R_SHUUSI, + 0x01, _SE, R_KAMEI, + 0x02, _SO, _U, R_AROU, + 0xff + }; + +static Uchar sa5cnj3[] = { + 0x01, _SA, R_MIZEN5, + 0x01, _SI, R_SA5RENYOU3, + 0x01, _SU, R_SHUUSI, + 0x01, _SE, R_KAMEI, + 0x02, _SO, _U, R_AROU, + 0xff + }; + +static Uchar sa5cnj5[] = { + 0x01, _SA, R_MIZEN5, + 0x01, _SI, R_SA5RENYOU1, + 0x01, _SU, R_SHUUSI, + 0x01, _SE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _SO, _U, R_AROU, + 0xff + }; + +static Uchar sa5cnj7[] = { + 0x01, _SA, R_MIZEN5, + 0x01, _SI, R_SA5RENYOU3, + 0x01, _SU, R_SHUUSI, + 0x01, _SE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _SO, _U, R_AROU, + 0xff + }; + +static Uchar ta5cnj1[] = { + 0x01, _TA, R_MIZEN5, + 0x01, _TI, R_RENYOU5, + 0x01, _XTU, R_ONBIN2, + 0x01, _TU, R_SHUUSI, + 0x01, _TE, R_KAMEI, + 0x02, _TO, _U, R_AROU, + 0xff + }; + +static Uchar ta5cnj3[] = { + 0x01, _TA, R_MIZEN5, + 0x01, _TI, R_RENYOU7, + 0x01, _XTU, R_ONBIN2, + 0x01, _TU, R_SHUUSI, + 0x01, _TE, R_KAMEI, + 0x02, _TO, _U, R_AROU, + 0xff + }; + +static Uchar ta5cnj5[] = { + 0x01, _TA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _TI, R_RENYOU5, + 0x01, _XTU, R_ONBIN2, + 0x01, _TU, R_SHUUSI, + 0x01, _TE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _TO, _U, R_AROU, + 0xff + }; + +static Uchar ta5cnj7[] = { + 0x01, _TA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _TI, R_RENYOU7, + 0x01, _XTU, R_ONBIN2, + 0x01, _TU, R_SHUUSI, + 0x01, _TE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _TO, _U, R_AROU, + 0xff + }; + + +static Uchar na5cnj[] = { + 0x01, _NA, R_MIZEN5, + 0x01, _NI, R_RENYOU5, + 0x01, _NU, R_SHUUSI, + 0x01, _NE, R_KAMEI, + 0x02, _NO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ba5cnj1[] = { + 0x01, _BA, R_MIZEN5, + 0x01, _BI, R_RENYOU5, + 0x01, _BU, R_SHUUSI, + 0x01, _BE, R_KAMEI, + 0x02, _BO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ba5cnj3[] = { + 0x01, _BA, R_MIZEN5, + 0x01, _BI, R_RENYOU7, + 0x01, _BU, R_SHUUSI, + 0x01, _BE, R_KAMEI, + 0x02, _BO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ba5cnj5[] = { + 0x01, _BA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _BI, R_RENYOU5, + 0x01, _BU, R_SHUUSI, + 0x01, _BE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _BO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ba5cnj7[] = { + 0x01, _BA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _BI, R_RENYOU7, + 0x01, _BU, R_SHUUSI, + 0x01, _BE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _BO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ma5cnj1[] = { + 0x01, _MA, R_MIZEN5, + 0x01, _MI, R_RENYOU5, + 0x01, _MU, R_SHUUSI, + 0x01, _ME, R_KAMEI, + 0x02, _MO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ma5cnj3[] = { + 0x01, _MA, R_MIZEN5, + 0x01, _MI, R_RENYOU7, + 0x01, _MU, R_SHUUSI, + 0x01, _ME, R_KAMEI, + 0x02, _MO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ma5cnj5[] = { + 0x01, _MA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _MI, R_RENYOU5, + 0x01, _MU, R_SHUUSI, + 0x01, _ME, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _MO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ma5cnj7[] = { + 0x01, _MA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _MI, R_RENYOU7, + 0x01, _MU, R_SHUUSI, + 0x01, _ME, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _MO, _U, R_AROU, + 0x01, _NN, R_ONBIN3, + 0xff + }; + +static Uchar ra5cnj1[] = { + 0x01, _XTU, R_ONBIN2, + 0x01, _RA, R_MIZEN5, + 0x01, _RI, R_RENYOU5, + 0x01, _RU, R_SHUUSI, + 0x01, _RE, R_KAMEI, + 0x02, _RO, _U, R_AROU, + 0xff + }; + +static Uchar ra5cnj3[] = { + 0x01, _XTU, R_ONBIN2, + 0x01, _RA, R_MIZEN5, + 0x01, _RI, R_RENYOU7, + 0x01, _RU, R_SHUUSI, + 0x01, _RE, R_KAMEI, + 0x02, _RO, _U, R_AROU, + 0xff + }; + +static Uchar ra5cnj5[] = { + 0x01, _XTU, R_ONBIN2, + 0x01, _RA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _RI, R_RENYOU5, + 0x01, _RU, R_SHUUSI, + 0x01, _RE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _RO, _U, R_AROU, + 0xff + }; + +static Uchar ra5cnj7[] = { + 0x01, _XTU, R_ONBIN2, + 0x01, _RA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0x01, _RI, R_RENYOU7, + 0x01, _RU, R_SHUUSI, + 0x01, _RE, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _RO, _U, R_AROU, + 0xff + }; + +static Uchar wa5cnj1[] = { + 0x01, _I, R_RENYOU5, + 0x01, _U, R_SHUUSI, + 0x01, _E, R_KAMEI, + 0x02, _O, _U, R_AROU, + 0x01, _XTU, R_ONBIN2, + 0x01, _WA, R_MIZEN5, + 0xff + }; + +static Uchar wa5cnj3[] = { + 0x01, _I, R_RENYOU7, + 0x01, _U, R_SHUUSI, + 0x01, _E, R_KAMEI, + 0x02, _O, _U, R_AROU, + 0x01, _XTU, R_ONBIN2, + 0x01, _WA, R_MIZEN5, + 0xff + }; + +static Uchar wa5cnj5[] = { + 0x01, _I, R_RENYOU5, + 0x01, _U, R_SHUUSI, + 0x01, _E, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _O, _U, R_AROU, + 0x01, _XTU, R_ONBIN2, + 0x01, _WA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0xff + }; + +static Uchar wa5cnj7[] = { + 0x01, _I, R_RENYOU7, + 0x01, _U, R_SHUUSI, + 0x01, _E, R_EXP, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KATEI2, + 0x02, _O, _U, R_AROU, + 0x01, _XTU, R_ONBIN2, + 0x01, _WA, R_MIZEN5, + 0x11, _SA, R_MIZEN5, + 0x11, _SI, R_SA5RENYOU3, + 0x11, _SU, R_SHUUSI, + 0x12, _SO, _U, R_AROU, + 0xff + }; + +static Uchar ichicnj1[] = { + 0x00, R_RENYOU1, + 0x01, _YO, R_MEIREI2, + 0x01, _RU, R_SHUUSI, + 0x01, _RE, R_KATEI2, + 0x01, _RO, R_MEIREI1, + 0xff + }; + +static Uchar ichicnj3[] = { + 0x00, R_RENYOU3, + 0x01, _YO, R_MEIREI2, + 0x01, _RU, R_SHUUSI, + 0x01, _RE, R_KATEI2, + 0x01, _RO, R_MEIREI1, + 0xff + }; + +static Uchar keiyou1[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0xff + }; + +static Uchar keiyou2[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _SA, R_FZKMEISI, + 0xff + }; + +static Uchar keiyou3[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _GE, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0x01, _SA, R_FZKMEISI, + 0xff + }; + +static Uchar keiyou4[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x02, _GA, _XTU, R_ONBIN2, + 0x11, _RA, R_MIZEN5, + 0x11, _RI, R_RENYOU5, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KAMEI, + 0x12, _RO, _U, R_AROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _SA, R_FZKMEISI, + 0xff + }; + +static Uchar keiyou5[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x02, _GA, _XTU, R_ONBIN2, + 0x11, _RA, R_MIZEN5, + 0x11, _RI, R_RENYOU5, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KAMEI, + 0x12, _RO, _U, R_AROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _GE, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0x01, _SA, R_FZKMEISI, + 0xff + }; + +static Uchar keiyou6[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _GE, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0x01, _SA, R_FZKMEISI, + 0x01, _ME, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keiyou7[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x02, _GA, _XTU, R_ONBIN2, + 0x11, _RA, R_MIZEN5, + 0x11, _RI, R_RENYOU5, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KAMEI, + 0x12, _RO, _U, R_AROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _GE, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0x01, _SA, R_FZKMEISI, + 0x01, _ME, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keiyou8[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x02, _GA, _XTU, R_ONBIN2, + 0x11, _RA, R_MIZEN5, + 0x11, _RI, R_RENYOU5, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KAMEI, + 0x12, _RO, _U, R_AROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _GE, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0x01, _SA, R_FZKMEISI, + 0x01, _MI, R_FZKMEISI, + 0x01, _ME, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keiyou9[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x02, _GA, _XTU, R_ONBIN2, + 0x11, _RA, R_MIZEN5, + 0x11, _RI, R_RENYOU5, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KAMEI, + 0x12, _RO, _U, R_AROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _GE, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0x01, _SA, R_FZKMEISI, + 0xff + }; + +static Uchar keiyou10[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x02, _GA, _XTU, R_ONBIN2, + 0x11, _RA, R_MIZEN5, + 0x11, _RI, R_RENYOU5, + 0x11, _RU, R_SHUUSI, + 0x11, _RE, R_KAMEI, + 0x12, _RO, _U, R_AROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _GE, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0x01, _SA, R_FZKMEISI, + 0x01, _ME, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keiyou11[] = { + 0x80, R_KGOKAN, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0x01, _SA, R_FZKMEISI, + 0x01, _MI, R_FZKMEISI, + 0x01, _ME, R_DMEISI, + 0x11, _DA, R_DSHUUSI1, + 0x21, _XTU, R_ONBIN1, + 0x22, _RO, _U, R_DAROU, + 0x11, _DE, R_DRENYOU1, + 0x11, _NA, R_DRENTAI1, + 0x21, _RA, R_KATEI1, + 0x21, _RI, R_DSHUUSI2, + 0x21, _RU, R_DRENTAI3, + 0x21, _RE, R_KAMEI, + 0x11, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keidou1[] = { + 0x80, R_DGOKAN, + 0x01, _DA, R_DSHUUSI1, + 0x11, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_DAROU, + 0x01, _DE, R_DRENYOU1, + 0x01, _NA, R_DRENTAI1, + 0x11, _RA, R_KATEI1, + 0x11, _RI, R_DSHUUSI2, + 0x11, _RU, R_DRENTAI3, + 0x11, _RE, R_KAMEI, + 0x01, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keidou2[] = { + 0x80, R_DGOKAN, + 0x02, _TA, _RU, R_DRENTAI2, + 0x11, _RE, R_KATEI2, + 0x01, _TO, R_DRENYOU3, + 0xff + }; + +static Uchar keidou4[] = { + 0x80, R_DGOKAN, + 0x01, _SA, R_FZKMEISI, + 0x01, _DA, R_DSHUUSI1, + 0x11, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_DAROU, + 0x01, _DE, R_DRENYOU1, + 0x01, _NA, R_DRENTAI1, + 0x11, _RA, R_KATEI1, + 0x11, _RI, R_DSHUUSI2, + 0x11, _RU, R_DRENTAI3, + 0x11, _RE, R_KAMEI, + 0x01, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keidou9[] = { + 0x80, R_DGOKAN, + 0x01, _DA, R_DSHUUSI1, + 0x11, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_DAROU, + 0x01, _DE, R_DRENYOU1, + 0x01, _NA, R_DRENTAI1, + 0x11, _RA, R_KATEI1, + 0x11, _RI, R_DSHUUSI2, + 0x11, _RU, R_DRENTAI3, + 0x11, _RE, R_KAMEI, + 0x01, _NI, R_DRENYOU2, + 0x01, _NO, R_CUT, + 0x12, _KO, _TO, R_KOTO, + 0xff + }; + +static Uchar sahenmeisi1[] = { + 0x00, R_SMEISI1, + 0x01, _SA, R_MIZEN1, + 0x01, _SI, R_SI1, + 0x11, _RO, R_MEIREI1, + 0x02, _SU, _RU, R_SHUUSI, + 0x25, _KA, _SI, _NA, _I, _KA, R_KA1, + 0x11, _RE, R_KATEI2, + 0x01, _SE, R_MIZEN2, + 0x11, _YO, R_MEIREI2, + 0xff + }; + +static Uchar sahenmeisi2[] = { + 0x00, R_SMEISI1, + 0x01, _SA, R_MIZEN1, + 0x01, _SI, R_SI1, + 0x11, _RO, R_MEIREI1, + 0x02, _SU, _RU, R_SHUUSI, + 0x25, _KA, _SI, _NA, _I, _KA, R_KA1, + 0x11, _RE, R_KATEI2, + 0x01, _SE, R_MIZEN2, + 0x11, _YO, R_MEIREI2, + 0xff + }; + +static Uchar keidoumeisi[] = { + 0x00, R_DMEISI, + 0x01, _SA, R_FZKMEISI, + 0x01, _DA, R_DSHUUSI1, + 0x11, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_DAROU, + 0x01, _DE, R_DRENYOU1, + 0x01, _NA, R_DRENTAI1, + 0x11, _RA, R_KATEI1, + 0x11, _RI, R_DSHUUSI2, + 0x11, _RU, R_DRENTAI3, + 0x11, _RE, R_KAMEI, + 0x01, _NI, R_DRENYOU2, + 0xff + }; + +static Uchar keiyoustb[] = { + 0x00, R_KSTB, + 0x01, _I, R_KSHUUSI, + 0x02, _KA, _XTU, R_ONBIN1, + 0x12, _RO, _U, R_KAROU, + 0x01, _KI, R_KRENTAI, + 0x01, _KU, R_KRENYOU, + 0x02, _KE, _RE, R_KATEI2, + 0xff + }; + +static Uchar ichistb[] = { + 0x00, R_ICHISETUBI, + 0x01, _YO, R_MEIREI2, + 0x01, _RU, R_SHUUSI, + 0x01, _RE, R_KATEI2, + 0x01, _RO, R_MEIREI1, + 0xff + }; + +static Uchar fukusi2[] = { + 0x00, R_FUKUSI, + 0x01, _TO, R_F_FUKUSI, + 0x11, _SI, R_SI1, + 0x11, _HA, R_F_FUKUSI, + 0xff + }; + +static Uchar fukusi3[] = { + 0x00, R_FUKUSI, + 0x01, _SA, R_MIZEN1, + 0x01, _SI, R_SI1, + 0x11, _RO, R_MEIREI1, + 0x02, _SU, _RU, R_SHUUSI, + 0x25, _KA, _SI, _NA, _I, _KA, R_KA1, + 0x11, _RE, R_KATEI2, + 0x01, _SE, R_MIZEN2, + 0x11, _YO, R_MEIREI2, + 0x01, _TO, R_F_FUKUSI, + 0x11, _SI, R_SI1, + 0x11, _HA, R_F_FUKUSI, + 0xff + }; + +static Uchar fukusi4[] = { + 0x00, R_FUKUSI, + 0x01, _SA, R_MIZEN1, + 0x01, _SI, R_SI1, + 0x11, _RO, R_MEIREI1, + 0x02, _SU, _RU, R_SHUUSI, + 0x25, _KA, _SI, _NA, _I, _KA, R_KA1, + 0x11, _RE, R_KATEI2, + 0x01, _SE, R_MIZEN2, + 0x11, _YO, R_MEIREI2, + 0xff + }; + +static Uchar fukusi5[] = { + 0x00, R_FUKUSI, + 0x01, _NI, R_F_FUKUSI, + 0xff + }; + +static Uchar fukusi6[] = { + 0x00, R_FUKUSI, + 0x01, _MO, R_F_FUKUSI, + 0xff + }; + +static Uchar fukusi7[] = { + 0x00, R_FUKUSI, + 0x01, _NO, R_F_FUKUSI, + 0xff + }; + +static Uchar fukusi8[] = { + 0x00, R_FUKUSI, + 0x01, _DA, R_DSHUUSI1, + 0x11, _XTU, R_ONBIN1, + 0x02, _DE, _SI, R_DESHI, + 0x21, _XYO, R_SHO, + 0x31, _U, R_DESHOU, + 0x11, _SU, R_DESU, + 0x01, _TO, R_F_FUKUSI, + 0x11, _SI, R_SI1, + 0x11, _HA, R_F_FUKUSI, + 0xff + }; + +static Uchar fukusi9[] = { + 0x00, R_FUKUSI, + 0x01, _SA, R_MIZEN1, + 0x01, _SI, R_SI1, + 0x11, _RO, R_MEIREI1, + 0x02, _SU, _RU, R_SHUUSI, + 0x25, _KA, _SI, _NA, _I, _KA, R_KA1, + 0x11, _RE, R_KATEI2, + 0x01, _SE, R_MIZEN2, + 0x11, _YO, R_MEIREI2, + 0x01, _DA, R_DSHUUSI1, + 0x11, _XTU, R_ONBIN1, + 0x02, _DE, _SI, R_DESHI, + 0x21, _XYO, R_SHO, + 0x31, _U, R_DESHOU, + 0x11, _SU, R_DESU, + 0x01, _TO, R_F_FUKUSI, + 0x11, _SI, R_SI1, + 0x11, _HA, R_F_FUKUSI, + 0x01, _NO, R_F_FUKUSI, + 0xff + }; + +Uchar *conjadr[] = { + 0, + 0, + 0, + 0, + 0, + sahenmeisi1, + sahenmeisi1, + sahenmeisi2, + keidoumeisi, + keidoumeisi, + keidoumeisi, + 0, + + 0, + 0, + 0, + sahenmeisi1, + keidoumeisi, + 0, + + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + keiyoustb, + keidoumeisi, + sahenmeisi1, + ichistb, + 0, + + 0, + fukusi2, + fukusi3, + fukusi4, + fukusi5, + fukusi6, + fukusi7, + fukusi8, + fukusi9, + 0, + 0, + 0, + 0, + 0, + 0, + + keiyou1, + keiyou2, + keiyou3, + keiyou4, + keiyou5, + keiyou6, + keiyou7, + keiyou8, + keiyou9, + keiyou10, + keiyou11, + + keidou1, + keidou2, + keidou1, + keidou4, + keidou4, + keidou1, + keidou4, + keidou1, + keidou9, + + sahencnj, + zahencnj, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + ichicnj1, + ka5cnj1, + ga5cnj1, + sa5cnj1, + ta5cnj1, + na5cnj, + ba5cnj1, + ma5cnj1, + ra5cnj1, + wa5cnj1, + + ichicnj1, + ka5cnj1, + ga5cnj1, + sa5cnj1, + ta5cnj1, + ba5cnj1, + ma5cnj1, + ra5cnj1, + wa5cnj1, + 0, + 0, + + ka5cnj5, + ga5cnj5, + sa5cnj5, + ta5cnj5, + ba5cnj5, + ma5cnj5, + ra5cnj5, + wa5cnj5, + 0, + 0, + + ka5cnj5, + ga5cnj5, + sa5cnj5, + ta5cnj5, + ba5cnj5, + ma5cnj5, + ra5cnj5, + wa5cnj5, + 0, + + ichicnj3, + ka5cnj3, + ga5cnj3, + sa5cnj3, + ta5cnj3, + ba5cnj3, + ma5cnj3, + ra5cnj3, + wa5cnj3, + 0, + + ichicnj3, + ka5cnj3, + ga5cnj3, + sa5cnj3, + ta5cnj3, + ba5cnj3, + ma5cnj3, + ra5cnj3, + wa5cnj3, + 0, + 0, + + ka5cnj7, + ga5cnj7, + sa5cnj7, + ta5cnj7, + ba5cnj7, + ma5cnj7, + ra5cnj7, + wa5cnj7, + 0, + 0, + + ka5cnj7, + ga5cnj7, + sa5cnj7, + ta5cnj7, + ba5cnj7, + ma5cnj7, + ra5cnj7, + wa5cnj7, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; diff --git a/kanakan/connect.c b/kanakan/connect.c new file mode 100644 index 0000000..46a2eb8 --- /dev/null +++ b/kanakan/connect.c @@ -0,0 +1,8113 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: connect.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:34 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_connect.h" +#include "sj_right.h" + +static Uchar mizen1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_o+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_o+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mizen2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mizen3[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_o+ne2_o+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mizen4[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mizen5[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_o+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_o+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar arou[] = { + wo_x+ttatte_o +ttara_o +tte1_o +tte2_x +ppanasi_x +ppoi_x +ue_x, + uti_x +oite_x +okeru_x +ori_x +ka1_x +ka2_o +kai_x +kasira_o, + katagata_x+kadouka_x+kana_o+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_o+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_o+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar you1[] = { + wo_x+ttatte_o +ttara_o +tte1_o +tte2_x +ppanasi_x +ppoi_x +ue_x, + uti_x +oite_x +okeru_x +ori_x +ka1_x +ka2_o +kai_x +kasira_o, + katagata_x+kadouka_x+kana_o+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_o+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_o+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar karou[] = { + wo_x+ttatte_o +ttara_x +tte1_o +tte2_x +ppanasi_x +ppoi_x +ue_x, + uti_x +oite_x +okeru_x +ori_x +ka1_x +ka2_o +kai_x +kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + + +static Uchar darou[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_o+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar deshou[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_o+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ko[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_x+zu_x+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_o+reru_o+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar bekara[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tagara[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_x+seru_o+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar si1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_o+kaneru_o, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ji[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_o+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_x+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_o+kaneru_o, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_x+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_o, + yasui_o+yoi_o+yaru_x+ttarasii_x + }; + +static Uchar age[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_o+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar i[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_o+zu_o+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_x+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar e[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_o+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kake[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_o+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kane2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_o+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sugi[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_o+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_x+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar deki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mi[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_x+zu_o+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sase[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar rare[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_o+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar itadake[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_o+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar exp[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_o, + doori_x+dokoro_x+dokoroka_x+domo_o+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_o+zu_o+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar renyou1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_o+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_o+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_o+reru_o+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar renyou3[] = { + wo_x+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_o+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_o+nagara2_o+wo_s_o, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_o+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_o+you_o+youda_x+rasii_o+rareru_o+reru_o+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar renyou4[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_o+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_o+zu_o+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_o+tagaru_o+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_o+itadaku_o+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_o+gozai_x+sa1_o+si1_o+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_o+naru_x+nasai_o+nasaru_o+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar renyou5[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_o+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar renyou7[] = { + wo_x+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_o+wo_s_o, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_o+tagaru_o+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_o+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar renyou8[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_o+tagaru_o+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_o+itadaku_o+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_o+gozai_x+sa1_x+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_o+naru_x+nasai_o+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sa5renyou1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sa5renyou3[] = { + wo_x+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_o+nagara2_o+wo_s_o, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sa5renyou4[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_o+tagaru_o+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_o+itadaku_o+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_o+gozai_x+sa1_o+si1_o+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_o+naru_x+nasai_o+nasaru_x+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar krenyou[] = { + wo_x+ttatte_o+ttara_x+tte1_x+tte2_o+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_o+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_o+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_o+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar drenyou1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_o+ari2_x+ari3_x+are1_o+are2_x, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_o+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar drenyou2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_o+okeru_o+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_o+tuki_o+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_o, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_o+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_o+naru_o+nasai_o+nasaru_o+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar drenyou3[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_o+naru_o+nasai_o+nasaru_o+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar onbin1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + + +static Uchar onbin2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar onbin3[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_o+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_o+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_o+jimau_o+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar deshi[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar axtu[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar onbin6[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar onbin8[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ari1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_o+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_o+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ari2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_o+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ari3[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_o+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar iki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar itasi[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar itadaki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_o+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ori2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gataku[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_o+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_o+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_o+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_o+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar fzkki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar deha[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kudasai[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_o+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gozai[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_o+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gotoku[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar beku[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar soude[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_x+ari3_o+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar souni[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tagari[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar taku[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_o+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_o+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_o+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar de[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_o+ari2_x+ari3_x+are1_o+are2_x, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_o+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar naide[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_o+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_o+iru_o+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_o+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar naku[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_o+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_o+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nasai[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar fuuni[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_o+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_o+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar yori2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar rashuu[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_o+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dshuusi1[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_o+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_o+wake_x, + wane_o+wayo_o+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_o+kke_o+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dshuusi2[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gotosi[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar besi[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar zu[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar souda[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_o+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_o+wake_x, + wane_o+wayo_o+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mai[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mitaida[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_o+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar shuusi[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_o+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_o+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_x, + koto_o+sa2_o+sae_x+si2_o+sika_o+sura_x+zutu_x+zo_o, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_o+toki_o+tokoro_o+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_o+nominrz_o+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_o+mama_o+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_o+yara_o+yue_o+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_x+wo_s_x, + ze_o+kke_x+n_si_x+deha_o, + + gotosi_o+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_o+desu_x+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_o+mai_o+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kshuusi[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_o, + koto_o+sa2_o+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_o+tokoro_o+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_x+no1_x+no2_o+node_o+noni_o, + nomi_o+nominrz_o+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_o+mama_o+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_x+wo_s_x, + ze_o+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_o+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar zaru[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_o+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_o+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_o+tokoro_o+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_o+hodo_x+made_o+mama_o+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar soudesu[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_o+wake_x, + wane_o+wayo_o+nn1_o+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ta[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_o+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_o+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_x, + koto_o+sa2_o+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_o+tokoro_o+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_o+nominrz_o+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_o+mama_o+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_x+wo_s_x, + ze_o+kke_o+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tai[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_x, + koto_o+sa2_o+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_o+tokoro_o+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar desu[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_x+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_o+yori_x+wa_o+wake_x, + wane_o+wayo_x+nn1_o+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nai[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_x, + koto_o+sa2_o+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_o+tokoro_o+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_o+mama_o+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_o+wo_s_x, + ze_o+kke_o+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nu[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_o+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_o+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_x+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_x+desu_x+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_o+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar masu[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_o+ka1_x+ka2_o+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_o+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_o+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_o+hodo_o+made_o+mama_o+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_o+yara_o+yue_x+yo_o+yori_o+wa_o+wake_x, + wane_o+wayo_o+nn1_o+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_o+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_o+masu_x+masure_x, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nn2[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_o+kurai_x+gurumi_x+kedo_o+koso_x, + koto_o+sa2_x+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_o+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_x+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_o+desi_o+desho_o+desu_x+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar rasii[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_o+koso_x, + koto_o+sa2_o+sae_x+si2_o+sika_x+sura_x+zutu_x+zo_o, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_o+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_o+wake_x, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_o+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar drentai1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_o+kuseni_o+kurai_o+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_o+tokoro_o+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_o+node_o+noni_o, + nomi_o+nominrz_o+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_o+mama_o+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_o+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_o+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar drentai2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar drentai3[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar krentai[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_o+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_o+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_o, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gotoki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_o+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_o+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_o, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar beki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_o+tokoro_o+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar souna1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar souna2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_o+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_o+hodo_o+made_o+mama_o+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_o+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar na2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_o+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar katei1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar katei2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_o, + doori_x+dokoro_x+dokoroka_x+domo_o+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar katei3[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kamei[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_o, + doori_x+dokoro_x+dokoroka_x+domo_o+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ike[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_o, + doori_x+dokoro_x+dokoroka_x+domo_o+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_o+zunba_o+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kure[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_o+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_o, + doori_x+dokoro_x+dokoroka_x+domo_o+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_o+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_o+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_o+ne2_o+nn2_x+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar meirei1[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar meirei2[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dgokan[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_o+desho_o+desu_o+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_o+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_o + }; + +static Uchar kgokan[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_o+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_o+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_o + }; + +static Uchar sgokan[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gati[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_x+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_o+desho_o+desu_o+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar jya[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sou[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mitai[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar yotte[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar you2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sho[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar meisi[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_o+kuseni_x+kurai_o+gurumi_o+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_o+zo_o, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_o+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_o+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_o+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar wo_meisi[] = { + wo_x+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_o+kuseni_x+kurai_o+gurumi_o+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_o+zo_o, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_o+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_o+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_o, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_o+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dmeisi[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_o+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_o+zo_o, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_o+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_o+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_o+desho_o+desu_o+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_o + }; + +static Uchar smeisi1[] = { + wo_x+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_o+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_o+gurumi_o+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_o+zo_o, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_o+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_o, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_o+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_o+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_o+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar smeisi2[] = { + wo_x+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_o+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_o+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_o+zo_o, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_o+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_o, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_o+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_o+itadaku_o+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_o+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_o+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kstb[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_o+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_o+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ichisetubi[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_o+ppoi_o+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_x+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_o+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_o+zaru_o+zu_o+zunba_o+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_o+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_o, + nu_o+ne2_o+nn2_o+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_o+you_o+youda_x+rasii_o+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_o+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar josuusi[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_o+kuseni_x+kurai_o+gurumi_o+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_o+zo_o, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_o+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_o, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_o+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar rentaisi[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_o+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_o+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_o+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_o+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar cut[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar shuujo[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar wo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_o+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar wo_s[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_x, + katagata_x+kadouka_x+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_o+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_o+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ttatte[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ttara[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tte1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tte2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ppanasi[] = { + wo_o+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ppoi[] = { + wo_x+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_x, + koto_o+sa2_o+sae_x+si2_o+sika_o+sura_x+zutu_x+zo_o, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_o+tokoro_o+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_o+nominrz_o+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_o+desho_o+desu_o+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ue[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar uti[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar oite[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar okeru[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ori[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ka1[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_x+he_o+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + + +static Uchar ka2[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar katagata[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kadouka[] = { + wo_o+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kamo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kara1[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_x+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kara2[] = { + wo_x+ttatte_o+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ga1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_o+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ga2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_o+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gatera[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kiri[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_o+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kuseni[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kurai[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_o+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar gurumi[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kedo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar koso[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar koto[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_o, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_o+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_o, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sae[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar si2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sika[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar sura[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar zutu[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_o+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tame[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_x+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_x+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tari[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_o+naru_x+nasai_o+nasaru_o+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dake[] = { + wo_o+ttatte_o+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dano[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_o+desi_o+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + + +static Uchar darake[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_o+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tuite[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_x+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tuki[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tutu[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_x+ari3_o+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tumori[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar te1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar te2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_o+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_o+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_o+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_o+itasi_x+itadaku_o+iru_o+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_o+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_o+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar teru[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_o, + uti_o+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_o+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_x, + koto_o+sa2_o+sae_x+si2_o+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_o+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_o+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_o+ba_x+bakari_o+he_x+hou_o, + hoka_o+hodo_o+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_o+wake_o, + wane_o+wayo_o+nn1_o+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_x, + denbun_o+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_o+de_x+desi_x+desho_o+desu_x+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar to1[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_x+desi_o+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar to2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_x+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar totte[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar toiu[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_o+kana_x+kane_x+kamo_x+kara1_x+kara2_o+ga1_x, + ga2_o+gatera_x+kiri_x+kuseni_o+kurai_o+gurumi_x+kedo_o+koso_x, + koto_o+sa2_x+sae_x+si2_o+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_o, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_o, + nite_x+nimo_o+ne1_x+nee_x+no1_x+no2_o+node_o+noni_o, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_o+hodo_o+made_o+mama_x+mo1_x+mo2_x+motte_x+mono_o, + ya1_x+ya2_x+yara_x+yue_o+yo_x+yori_x+wa_x+wake_o, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar toori[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar toki[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tokoro[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tote[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tohaie[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar tomo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar fdo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar doori[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dokoro[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar dokoroka[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar domo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nagara[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_x+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nagara2[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_x+yue_o+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nazo[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_o+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nado[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nari[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_o+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nanka[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_o, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_o+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nanzo[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_o+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nante[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ni1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_o+okeru_o+ori_x+ka1_x+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_o+tuki_o+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_o, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_o+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_o+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_o+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_x+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_o + }; + +static Uchar ni2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ni3[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_o, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nite[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nimo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar no1[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_o+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_o+kurai_o+gurumi_x+kedo_x+koso_o, + koto_o+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_o+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_o+tokoro_o+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_o+mo1_o+mo2_x+motte_x+mono_o, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_o+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_o+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar no2[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_x+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar node[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_x+ari1_x+ari2_x+ari3_o+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar noni[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nomi[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_o+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nominrz[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ha[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_x+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar hazu[] = { + wo_x+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ba[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_o+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar bakari[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_o+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_o+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_o+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_o+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar he[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar hou[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar hoka[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar hodo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar made[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_o, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_o+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_o+ara_x+ari1_x+ari2_o+ari3_x+are1_x+are2_o, + arou_o+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mama[] = { + wo_o+ttatte_x+ttara_o+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_o, + tame_x+dake_o+dano_o+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mo1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mo2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_o+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_o+sure_x+se_o+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar motte[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar mono[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_o+kara1_o+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_o+gurumi_x+kedo_x+koso_o, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_o, + tame_x+dake_o+dano_o+darake_o+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_o+dokoroka_o+domo_x+na1_o+naa_o+nagara_o+nazo_o, + nado_o+nari_o+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_o+nominrz_o+ha_o+hazu_x+ba_x+bakari_o+he_o+hou_x, + hoka_x+hodo_o+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_o+ya2_x+yara_o+yue_x+yo_o+yori_o+wa_x+wake_x, + wane_o+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_o+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ya1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar ya2[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar yara[] = { + wo_o+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_o+sura_x+zutu_x+zo_x, + tame_x+dake_o+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_o+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_o+hou_x, + hoka_x+hodo_x+made_o+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_o+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar yue[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar yori1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar wake[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_o+kai_x+kasira_o, + katagata_x+kadouka_o+kana_o+kane_o+kamo_x+kara1_x+kara2_x+ga1_o, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_o+to2_x+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_o+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_o+ni2_x+ni3_x, + nite_x+nimo_x+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar nn1[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_x+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar aisatu[] = { + wo_o+ttatte_x+ttara_x+tte1_o+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_o+totte_x, + toiu_o+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_o, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_o+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar kosodo[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_o+ka2_x+kai_x+kasira_o, + katagata_x+kadouka_x+kana_o+kane_x+kamo_o+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_o+sae_o+si2_x+sika_o+sura_o+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_o, + nado_o+nari_x+nanka_o+nanzo_o+nante_o+ni1_x+ni2_x+ni3_x, + nite_x+nimo_o+ne1_o+nee_o+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_o+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_o+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_o+daxtu_o, + darou_o+de_o+desi_o+desho_o+desu_o+na2_o+nara_o+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_o+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_o+si1_o+siro_o, + jyau_x+jimau_x+sugiru_x+subesi_o+suru_o+sure_o+se_o+seyo_o, + tamau_x+tayu_x+timau_x+dekiru_o+naru_o+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar site[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_x+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_x+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_x+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_x+tumori_x, + te1_x+te2_x+teru_x+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_x+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_x+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_o+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_o+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_x+nagara2_x+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_x+youtai_x, + denbun_x+ta_x+tai_x+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_x, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_x+masu_x+masure_x, + mase_x+mitaida_x+you_x+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_x+itasi_x+itadaku_x+iru_x+eru_x+kakeru_x+kaneru_x, + karazu_x+gatai_x+gatida_x+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_x+timau_x+dekiru_x+naru_x+nasai_x+nasaru_x+nikui_x, + yasui_x+yoi_x+yaru_x+ttarasii_x + }; + +static Uchar n_si[] = { + wo_x+ttatte_x+ttara_x+tte1_x+tte2_x+ppanasi_o+ppoi_x+ue_x, + uti_x+oite_x+okeru_x+ori_x+ka1_x+ka2_x+kai_x+kasira_x, + katagata_x+kadouka_x+kana_x+kane_x+kamo_x+kara1_x+kara2_x+ga1_x, + ga2_x+gatera_o+kiri_x+kuseni_x+kurai_x+gurumi_x+kedo_x+koso_x, + koto_x+sa2_x+sae_o+si2_x+sika_x+sura_x+zutu_x+zo_x, + tame_x+dake_x+dano_x+darake_x+tuite_x+tuki_x+tutu_o+tumori_x, + te1_x+te2_o+teru_o+dearou_x+deru_x+to1_x+to2_x+totte_x, + toiu_x+toori_x+toki_x+tokoro_x+tote_x+tohaie_x+tomo_x+do_x, + doori_x+dokoro_x+dokoroka_x+domo_x+na1_o+naa_x+nagara_x+nazo_x, + nado_x+nari_x+nanka_x+nanzo_x+nante_x+ni1_x+ni2_o+ni3_x, + nite_x+nimo_x+ne1_x+nee_x+no1_x+no2_x+node_x+noni_x, + nomi_x+nominrz_x+ha_x+hazu_x+ba_x+bakari_x+he_x+hou_x, + hoka_x+hodo_x+made_x+mama_x+mo1_x+mo2_x+motte_x+mono_x, + ya1_x+ya2_x+yara_x+yue_x+yo_x+yori_x+wa_x+wake_x, + wane_x+wayo_x+nn1_x+jya_x+tya_o+nagara2_o+wo_s_x, + ze_x+kke_x+n_si_x+deha_x, + + gotosi_x+saseru_x+zaru_x+zu_x+zunba_x+seru_x+souda_o+youtai_o, + denbun_x+ta_o+tai_o+tagaru_x+taru_x+da1_x+da2_x+daxtu_x, + darou_x+de_x+desi_x+desho_x+desu_x+na2_x+nara_x+nai_o, + nu_x+ne2_x+nn2_x+fuuda_x+besi_x+mai_o+masu_o+masure_o, + mase_x+mitaida_x+you_o+youda_x+rasii_x+rareru_x+reru_x+site_x, + + yougen_x+aru_x+ara_x+ari1_x+ari2_x+ari3_x+are1_x+are2_x, + arou_x+ii_o+itasi_x+itadaku_x+iru_x+eru_x+kakeru_o+kaneru_o, + karazu_x+gatai_o+gatida_o+kudasaru_x+gozai_x+sa1_x+si1_x+siro_x, + jyau_x+jimau_x+sugiru_x+subesi_x+suru_x+sure_x+se_x+seyo_x, + tamau_x+tayu_o+timau_x+dekiru_x+naru_x+nasai_o+nasaru_o+nikui_o, + yasui_o+yoi_x+yaru_x+ttarasii_x + }; + +Uchar connadr[] = { + 0, + R_MEISI, + R_MEISI, + R_MEISI, + R_MEISI, + 0, + 0, + 0, + 0, + 0, + 0, + R_MEISI, + + R_DAIMEISI, + R_DAIMEISI, + R_WO_MEISI, + 0, + 0, + R_DAIMEISI6, + + 0, + 0, + 0, + + R_MEISI, + R_MEISI, + R_MEISI, + R_MEISI, + R_MEISI, + R_RENTAISI, + R_SETUZOKU, + R_KANDOU, + R_JOSUUSI, + R_SUUSI, + + R_SETTOU, + R_SETTOU, + R_SETTOU, + R_SETTOU, + R_SETTOU, + + R_MEISI, + R_MEISI, + R_MEISI, + R_MEISI, + 0, + 0, + 0, + 0, + R_MEISI, + + R_FUKUSI, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + R_JOSUUSI, + + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + R_MIZEN1, + R_MIZEN2, + R_SI1, + R_SHUUSI, + R_KATEI2, + R_MEIREI1, + R_MEIREI2, + R_KO, + R_KI, + R_SHUUSI, + R_KATEI2, + R_MEIREI1, + R_KUDASAI, + R_GOZAI, + R_ONBIN2, + R_KOSODO, + R_AISATU, + R_KSHUUSI, + R_TANKAN, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + R_MEISI + }; + +Uchar *rigtadr[] = { + 0, + de, + wo, + kara1, + ga1, + to1, + ni1, + no1, + ha, + he, + mo1, + ya1, + yori1, + sae, + sika, + dake, + i, + e, + kake, + kane2, + sugi, + deki, + mi, + sase, + rare, + itadake, + exp, + renyou1, + renyou5, + sa5renyou1, + renyou3, + renyou7, + sa5renyou3, + renyou4, + renyou8, + sa5renyou4, + 0, + 0, + 0, + krenyou, + drenyou1, + drenyou2, + drenyou3, + onbin1, + onbin2, + onbin3, + deshi, + axtu, + onbin6, + onbin8, + ari1, + ari2, + ari3, + iki, + itasi, + itadaki, + ori2, + gataku, + ki, + kudasai, + gozai, + gotoku, + beku, + soude, + souni, + tagari, + taku, + mizen1, + naide, + naku, + nasai, + fuuni, + yori2, + rashuu, + dshuusi1, + dshuusi2, + gotosi, + besi, + zu, + souda, + mai, + mitaida, + shuusi, + kshuusi, + zaru, + soudesu, + ta, + tai, + desu, + nai, + nu, + masu, + nn2, + rasii, + drentai1, + drentai2, + drentai3, + krentai, + gotoki, + beki, + souna1, + souna2, + na2, + katei1, + katei2, + katei3, + kamei, + ike, + kure, + meirei1, + meirei2, + dgokan, + kgokan, + sgokan, + gati, + jya, + sou, + mitai, + yotte, + you2, + sho, + meisi, + aisatu, + kosodo, + you1, + si1, + meisi, + meisi, + fzkki, + deha, + nagara2, + wo_s, + wo_meisi, + site, + n_si, + cut, + 0, + cut, + 0, 0, + mizen2, + mizen3, + mizen4, + si1, + ji, + age, + mizen5, + arou, + karou, + darou, + deshou, + ko, + bekara, + tagara, + shuujo, + ttatte, + ttara, + tte1, + tte2, + ppanasi, + ppoi, + ue, + uti, + oite, + okeru, + ori, + ka1, + ka2, + katagata, + kadouka, + kamo, + kara2, + ga2, + gatera, + kiri, + kuseni, + kurai, + gurumi, + kedo, + koso, + koto, + si2, + sura, + zutu, + tame, + tari, + dano, + darake, + tuite, + tuki, + tutu, + tumori, + te1, + te2, + teru, + to2, + totte, + toiu, + toori, + toki, + tokoro, + tote, + tohaie, + tomo, + fdo, + doori, + dokoro, + dokoroka, + domo, + nagara, + nazo, + nado, + nari, + nanka, + nanzo, + nante, + ni2, + ni3, + nite, + nimo, + no2, + node, + noni, + nomi, + nominrz, + hazu, + ba, + bakari, + hou, + hoka, + hodo, + made, + mama, + mo2, + motte, + mono, + ya2, + yara, + yue, + wake, + nn1, + josuusi, + cut, + cut, + cut, + cut, + cut, + meisi, + dmeisi, + smeisi1, + smeisi2, + kstb, + ichisetubi, + josuusi, + rentaisi, + cut + }; diff --git a/kanakan/cvtclknj.c b/kanakan/cvtclknj.c new file mode 100644 index 0000000..ce335e2 --- /dev/null +++ b/kanakan/cvtclknj.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: cvtclknj.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:38 $ + */ + + + + + +#include "sj_kcnv.h" + + + +Void cvtkouho(), setstyrec(); + + + +Void cvtclknj() +{ + Reg1 KHREC *krec; + Int i; + + + + + if (!selectid) selectid = khcount; + + i = khcount; + krec = kouhotbl; + + while (i--) { + if ((Int)krec -> rank == (Int)selectid) break; + krec++; + } + + + setstyrec(krec); + + + cvtkouho(krec); +} diff --git a/kanakan/cvtdict.c b/kanakan/cvtdict.c new file mode 100644 index 0000000..ee1d8aa --- /dev/null +++ b/kanakan/cvtdict.c @@ -0,0 +1,254 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: cvtdict.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:40 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" + + + +Int getkanji(), seldict(); +Uchar TFar *getstb(); +Void get_askknj(); + + + +Void cvtdict(krec, clrec, flg) +KHREC *krec; +CLREC *clrec; +Int flg; +{ + TypeDicOfs ofs; + Uchar *yptr; + Int jlen; + Int stblen; + Int sttlen; + Uchar TFar *fptr; + Int cllen; + JREC *jrec; + Int i, j; + + + ofs = krec -> offs; + jrec = clrec -> jnode; + cllen = clrec -> cllen; + + yptr = inputyomi; + + + jlen = jrec -> jlen; + + + if (i = jrec -> sttofs) { + + if (i == SETTOU_KIGOU) { + sttlen = 1; + fptr = yptr; + } + + + else { + fptr = Settou_ptr(i); + sttlen = SttYomiLen(fptr); + fptr++; + if (!krec -> sttkj) fptr += 2; + } + + *kanjitmp++ = *fptr++; + *kanjitmp++ = *fptr++; + jlen -= sttlen; + yptr += sttlen * 2; + } + + + else + sttlen = 0; + + + if (flg) { + + (*Cvtnum_func[krec->mode - 1])(ystart + sttlen, yptr, jrec); + + + yptr += (i = jrec -> numlen) * 2; + jlen -= i; + + + if (jrec -> stbofs) { + *kanjitmp++ = *yptr++; + *kanjitmp++ = *yptr++; + jlen--; + } + + stblen = 0; + } + + + else if ((i = jrec -> stbofs) && (fptr = getstb(jrec -> hinsi))) { + fptr += i - 1; + stblen = StbYomiLen(fptr); + jlen -= stblen; + } + + + else { + stblen = 0; + } + + + if (ofs) { + if (seldict(jrec -> dicid)) { + (*curdict->getdic)(curdict, jrec -> jseg); + get_askknj(); + kanjitmp += + getkanji(yptr, jlen, dicbuf + ofs, kanjitmp); + yptr += jlen * 2; + } + else { + while (jlen-- > 0) { + for ( i = 0; i < euc_codesize(*yptr); i++) + *kanjitmp++ = yptr[i]; + yptr += euc_codesize(*yptr); + } + } + } + + + if (stblen) { + i = StbKnjLen(fptr); + fptr += stblen + 2; + while (i-- > 0) *kanjitmp++ = *fptr++; + yptr += stblen * 2; + } + + + i = cllen - (jrec -> jlen); + while (i-- > 0) { + for ( j = 0; j < euc_codesize(*yptr); j++) + *kanjitmp++ = yptr[j]; + yptr += euc_codesize(*yptr); + } +} + + + +Void cvtminasi(len) +Int len; +{ + Uchar *ptr; + + ptr = inputyomi; + + while (len-- > 0) { + + + if (isknj1(*ptr)) { + *kanjitmp++ = *ptr++; + *kanjitmp++ = *ptr++; + } + + else if (*ptr == SS3) { + *kanjitmp++ = *ptr++; + *kanjitmp++ = *ptr++; + *kanjitmp++ = *ptr++; + } else { + *kanjitmp++ = *ptr++; + } + } +} + + + +Void cvtwakachi(clrec) +CLREC *clrec; +{ + Int jlen; + Uchar *ym; + Int cnt; + Uchar ch; + + ym = inputyomi; + + + cnt = jlen = clrec -> jnode -> jlen; + while (cnt-- > 0) { + if (isknj1(*ym)) { + + if (*ym == 0xa4) { + ch = *++ym; + if (0xa1 <= ch && ch <= 0xf3) { + *kanjitmp++ = 0xa5; + } + else { + *kanjitmp++ = 0xa4; + } + *kanjitmp++ = ch; + ym++; + } + else { + *kanjitmp++ = *ym++; + *kanjitmp++ = *ym++; + } + } + else if (*ym == SS3) { + *kanjitmp++ = *ym++; + *kanjitmp++ = *ym++; + *kanjitmp++ = *ym++; + } else { + *kanjitmp++ = *ym++; + } + } + + + cnt = clrec -> cllen - jlen; + while (cnt-- > 0) { + + + if (isknj1(*ym)) { + *kanjitmp++ = *ym++; + *kanjitmp++ = *ym++; + } + + else if (*ym == SS3) { + *kanjitmp++ = *ym++; + *kanjitmp++ = *ym++; + *kanjitmp++ = *ym++; + } else { + *kanjitmp++ = *ym++; + } + } +} diff --git a/kanakan/cvtkanji.c b/kanakan/cvtkanji.c new file mode 100644 index 0000000..139c7e6 --- /dev/null +++ b/kanakan/cvtkanji.c @@ -0,0 +1,216 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: cvtkanji.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:41 $ + */ + + + + + +#include "sj_kcnv.h" + + + +Int hzstrlen(), ph_khtbl(); +Void cvtdict(), cvtminasi(); +Void cvtwakachi(), setstyrec(), cvtkouho(), mkknjmax(); +Void ph_setkouho(), mvmemi(), free_clall(); +Void free_jall(), memcpy(), cvtphknj(); +Uchar TFar *getstb(); +STDYIN *srchstdy(); + + + +Void cvtphknj(num) +Int num; +{ + Int i, j; + CLREC *clrec; + CLREC *clkp; + + if (!kanjilen) goto not_enough_memory; + + khcount = 0; + clkp = NULL; + stdytop = NULL; + + clrec = clt1st; + while (clrec) { + if (ph_khtbl(clrec)) clkp = clrec; + clrec = clrec -> clsort; + } + + + if (clkp && stdytop) { + + if (stdytop -> nmflg) + ph_setkouho(clkp, (TypeDicOfs)0, (STDYIN *)0); + } + + kouhotbl[0].rank = 1; + + + kanjitmp = kanjibuf + 1; + + + setstyrec(kouhotbl); + + + cvtkouho(kouhotbl); + + + i = kanjitmp - kanjibuf; + if (i < kanjilen) { + + kanjilen -= i; + + + ystart += clt1st -> cllen; + + j = hzstrlen(inputyomi, (Int)clt1st -> cllen); + kanjibuf[0] = (Uchar)j; + + + inputyomi += j; + + + memcpy(kanjibuf, kanjipos, i); + kanjipos += i; + } + else + kanjilen = 0; + +not_enough_memory: + + + free_clall(clt1st); + free_jall (jrt1st); +} + + + +Void cvtkouho(krec) +KHREC *krec; +{ + CLREC *clrec; + + clrec = krec -> clrec; + + + switch (clrec -> jnode -> class) { + case C_DICT: + cvtdict(krec, clrec, FALSE); + break; + + case C_N_ARABIA: + case C_N_ARACMA: + case C_N_KAZU: + case C_N_SUUJI: + case C_N_NANSUU: + case C_N_KANKURA: + case C_N_ARAKURA: + case C_N_KAZULONG: + case C_N_KAZULCMA: + case C_N_SUUJILONG: + cvtdict(krec, clrec, TRUE); + break; + + case C_BUNSETU : + case C_MINASI : + cvtminasi((Int)clrec -> cllen); + break; + + case C_WAKACHI : + cvtwakachi(clrec); + break; + } + + + *kanjitmp++ = 0; +} + + + +Void setstyrec(krec) +KHREC *krec; +{ + JREC *jrec; + KHREC *kptr; + Int ii; + Uchar TFar *fptr; + STDYOUT stdy; + + jrec = krec -> clrec -> jnode; + + + if (krec -> mode && !krec -> offs) { + + for (ii = khcount, kptr = kouhotbl ; ii--; kptr++) + if (kptr -> rank == 1) break; + + + stdy.stdy1.offset = kptr -> offs; + stdy.stdy1.seg = kptr -> clrec -> jnode -> jseg; + stdy.stdy1.styno = kptr -> styno; + stdy.stdy1.dicid = kptr -> clrec -> jnode -> dicid; + stdy.stdy1.nmflg = 1; + } + + else { + stdy.stdy1.offset = krec -> offs; + stdy.stdy1.seg = jrec -> jseg; + stdy.stdy1.styno = krec -> styno; + stdy.stdy1.dicid = jrec -> dicid; + stdy.stdy1.nmflg = 0; + } + stdy.stdy1.sttkj = krec -> sttkj; + stdy.stdy1.ka_kj = krec -> ka_kj; + stdy.hinshi = jrec -> hinsi; + stdy.len = jrec -> jlen; + stdy.sttfg = krec -> sttfg; + stdy.ka_fg = krec -> ka_fg; + + + if (jrec -> stbofs && (fptr = getstb(jrec -> hinsi))) + stdy.len -= StbYomiLen(fptr + jrec -> stbofs - 1); + + + if (fptr = Settou_ptr(jrec -> sttofs)) + stdy.sttlen = SttYomiLen(fptr); + else + stdy.sttlen = 0; + + + memcpy((Uchar *)&stdy, kanjitmp, sizeof(STDYOUT)); + kanjitmp += sizeof(STDYOUT); +} diff --git a/kanakan/deldic.c b/kanakan/deldic.c new file mode 100644 index 0000000..dd649f0 --- /dev/null +++ b/kanakan/deldic.c @@ -0,0 +1,364 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: deldic.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:42 $ + */ + + + + + +#include "sj_kcnv.h" + + + +Uchar *skipkstr(), *get_idxptr(); +Int sstrlen(), srchkana(), srchgram(); +Int srchkanji(), cvtknj(); +Uint addel_arg(); +Void mvmemi(), memset(), set_size(), chg_uidx(); +Void mkidxtbl(); +TypeDicSeg srchidx(); +TypeIdxOfs count_uidx(); + + + +Static Int del_douon(), del_segment(); +Static Void del_uidx(), del_stdy(); + + + +Uint deldic(yomi, kanji, hinsi) +Uchar *yomi; +Uchar *kanji; +TypeGram hinsi; +{ + Uchar yptr[MaxWdYomiLen + 1]; + Uchar kptr[MaxWdKanjiLen + 1]; + Ushort err; + Int knjlen; + TypeDicSeg useg; + TypeDicOfs ofs; + Uchar *p1, *p2, *p3; + Int dblknum; + Int hblknum; + Int kblknum; + Int samlen; + Uchar *stp, *edp; + Int size, len; + + + if (err = addel_arg(yomi, kanji, hinsi, yptr, sizeof(yptr))) + return err; + + + if (!curdict -> maxunit) return AD_NotUserDict; + + + knjlen = cvtknj(yomi, kanji, kptr); + + + cnvstart = yptr; + cnvlen = sstrlen(yptr); + + + useg = srchidx((TypeDicSeg)DicSegBase, cnvlen); + (*curdict->getdic)(curdict, useg); + + + if (!(dblknum = srchkana(&p1, &samlen))) return AD_NoMidasi; + + + if (!(hblknum = srchgram(p1, &p2, hinsi))) return AD_NoHinsi; + + + p3 = p2; + kblknum = srchkanji(&p3, kptr, knjlen); + if (*p3 == HinsiBlkTerm) return AD_NoKanji; + ofs = p3 - dicbuf; + + + edp = skipkstr(p3); + + + if (kblknum == 1) { + + if (hblknum == 1) { + + if (dblknum == 1) { + return del_segment(useg); + } + + else { + return del_douon(useg, p1, ofs); + } + } + + else { + stp = p2; + edp++; + } + } + + else { + stp = p3; + } + + + size = edp - stp; + + + len = dicbuf + (curdict->seglen) - edp; + mvmemi(edp, stp, len); + + + edp += len; + memset(edp, DicSegTerm, dicbuf + curdict->seglen - edp); + + + set_size(p1, (Int)(getsize(p1) - size), + (Int)getplen(p1), (Int)getnlen(p1)); + + + (*curdict->putdic)(curdict, useg); + + + del_stdy(useg, ofs, size); + + return AD_Done; +} + + + +Static Int del_douon(seg, ptr, ofs) +TypeDicSeg seg; +Uchar *ptr; +TypeDicOfs ofs; +{ + Uchar *nxt, *p1, *p2; + Int size; + Int nlen, plen, len; + + + nxt = getntag(ptr); + + + if (segend(nxt)) { + + size = nxt - ptr; + + + memset(ptr, DicSegTerm, dicbuf + curdict->seglen - nxt); + } + + + else { + + size = getsize(nxt); + nlen = getnlen(nxt); + plen = getplen(nxt); + + + if (ptr == segtop()) { + + if (nlen + plen > (unsigned int) count_uidx() + + sstrlen(get_idxptr(seg))) + return AD_OvflwIndex; + } + + + len = ((len = getplen(ptr)) < plen) ? plen - len : 0; + + + set_size(ptr, size + len, plen - len, nlen + len); + + + p1 = nxt + DouonBlkSizeNumber; + p2 = ptr + DouonBlkSizeNumber + len; + + + mvmemi(p1, p2, dicbuf + curdict->seglen - p1); + + + size = p1 - p2; + memset(dicbuf + curdict->seglen - size, DicSegTerm, size); + + + if (ptr == segtop()) { + + chg_uidx(seg, ptr + DouonBlkSizeNumber, nlen + len); + } + } + + + (*curdict->putdic)(curdict, seg); + + + del_stdy(seg, ofs, size); + + return AD_Done; +} + + + +Static Int del_segment(seg) +TypeDicSeg seg; +{ + Int i; + STDYIN *styp; + TypeDicID dicid; + TypeStyNum stdynum; + TypeDicSeg sg; + + + if (curdict->segunit > 1) { + + for (sg = seg + 1 ; sg < curdict->segunit ; sg++) { + (*curdict->getdic)(curdict, sg); + (*curdict->putdic)(curdict, sg - 1); + } + curdict->segunit--; + } + else { + memset(dicbuf, DicSegTerm, (Int)curdict->seglen); + dicbuf[0] = 0; + (*curdict->putdic)(curdict, DicSegBase); + } + + + (*curdict->rszdic)(curdict, curdict->segunit); + + + del_uidx(seg); + + if (StudyExist()) { + + dicid = curdict->dicid; + for (i = 0, styp = StudyDict ; i < StudyCount ; ) { + if (styp -> dicid != dicid) + ; + else if (styp -> seg > seg) + styp -> seg -= 1; + else if (styp -> seg < seg) + ; + else { + + stdynum = styp -> styno; + StudyCount--; + mvmemi((Uchar *)(styp + 1), (Uchar *)styp, + sizeof(*styp) * (StudyCount - i)); + continue; + } + + i++; + styp++; + } + for (i = 0, styp = StudyDict ; i < StudyCount ; i++, styp++) + if (styp -> styno > stdynum) styp -> styno -= 1; + + + putstydic(); + } + + return AD_Done; +} + + + +Static Void del_uidx(seg) +TypeDicSeg seg; +{ + Uchar *p, *q; + Int len; + + + p = get_idxptr(seg); + for (q = p ; *q++; ) + ; + + + mvmemi(q, p, idxbuf + curdict->idxlen - q); + + + len = q - p; + memset(idxbuf + curdict->idxlen - len, 0, len); + + + (*curdict->putidx)(curdict, 0); + + + mkidxtbl(curdict); +} + + + +Static Void del_stdy(seg, ofs, size) +TypeDicSeg seg; +TypeDicOfs ofs; +Int size; +{ + Int i; + TypeStyNum stdynum; + STDYIN *stdy; + TypeDicID dicid; + + if (StudyExist()) { + + stdynum = 0; + dicid = curdict->dicid; + for (i = 0, stdy = StudyDict ; i < StudyCount ; ) { + if (stdy -> dicid != dicid) + ; + else if (stdy -> seg != seg) + ; + else if (stdy -> offset > ofs) + stdy -> offset -= size; + + else if (stdy -> offset == ofs) { + + stdynum = stdy -> styno; + StudyCount--; + mvmemi((Uchar *)(stdy + 1), (Uchar *)stdy, + sizeof(*stdy) * (StudyCount - i)); + continue; + } + + i++; + stdy++; + } + for (i = 0, stdy = StudyDict ; i < StudyCount ; i++, stdy++) + if (stdy -> styno > stdynum) (stdy -> styno)--; + + + putstydic(); + } +} diff --git a/kanakan/depend.c b/kanakan/depend.c new file mode 100644 index 0000000..bd79059 --- /dev/null +++ b/kanakan/depend.c @@ -0,0 +1,856 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: depend.c,v $ + * $SonyRevision: 1.4 $ + * $SonyDate: 1997/10/07 07:39:45 $ + */ + + + + +#include +#include "sj_kcnv.h" +#include +#include +#include +#include "Dict.h" +#include "sj3err.h" + + +#if defined(__FD_SET) && !defined(FD_SET) +# define FD_SET __FD_SET +# define FD_CLR __FD_CLR +#endif + +extern int errno; +extern int serv_errno; +extern Global *work_base; +char *malloc(); + + + + +DictFile *dictlink = NULL; + + + +StdyFile *stdylink = NULL; + + + + +static long get4byte(p) +Uchar *p; +{ + long i; + + i = *p; + i = (i << 8) + *++p; + i = (i << 8) + *++p; + return ((i << 8) + *++p); +} +static void Put4byte(p, n) +Uchar *p; +long n; +{ + p += 3; + *p-- = n; n >>= 8; + *p-- = n; n >>= 8; + *p-- = n; n >>= 8; + *p = n; +} +#define put4byte(p, n) Put4byte((p), (long)(n)) + + + +static int fgetfile(fp, pos, len, p) +FILE *fp; +long pos; +int len; +Uchar *p; +{ + if (fseek(fp, pos, 0) == ERROR) { + serv_errno = SJ3_FileSeekError; return ERROR; + } + if (fread(p, len, 1, fp) != 1) { + serv_errno = SJ3_FileReadError; return ERROR; + } + return SJ3_NormalEnd; +} +static int fputfile(fp, pos, len, p) +FILE *fp; +long pos; +int len; +Uchar *p; +{ + if (fseek(fp, pos, 0) == ERROR) { + serv_errno = SJ3_FileSeekError; return ERROR; + } + if (fwrite(p, len, 1, fp) != 1) { + serv_errno = SJ3_FileWriteError; return ERROR; + } + return SJ3_NormalEnd; +} +static int getfile(fd, pos, len, p) +int fd; +int pos; +int len; +Uchar *p; +{ + if (lseek(fd, pos, L_SET) == ERROR) { + serv_errno = SJ3_FileSeekError; return ERROR; + } + if (read(fd, p, len) != len) { + serv_errno = SJ3_FileReadError; return ERROR; + } + return SJ3_NormalEnd; +} +static int putfile(fd, pos, len, p) +int fd; +int pos; +int len; +Uchar *p; +{ + if (lseek(fd, pos, L_SET) == ERROR) { + serv_errno = SJ3_FileSeekError; return ERROR; + } + if (write(fd, p, len) != len) { + serv_errno = SJ3_FileWriteError; return ERROR; + } + return SJ3_NormalEnd; +} + + + +static int check_passwd(buf, passwd) +Uchar *buf; +char *passwd; +{ + buf += PasswdPos; + return (*buf && strncmp(passwd, buf, PasswdLen)) ? FALSE : TRUE; +} +static void set_passwd(buf, passwd) +Uchar *buf; +char *passwd; +{ + strncpy(buf + PasswdPos, passwd, PasswdLen); +} + + + +static int check_dictfile(buf) +Uchar *buf; +{ + return (DictVersion != get4byte(buf + VersionPos)) ? FALSE : TRUE; +} + + + +static DictFile *search_same_dict(ino) +ino_t ino; +{ + DictFile *p; + + for (p = dictlink ; p != NULL ; p = p -> link) + if (p->dict.dicid == ino) return p; + + return NULL; +} + + + +static Int getofs(dp) +register DictFile *dp; +{ + idxofs = dp -> ofsptr; + return 0; +} +static Int getidx(dp) +register DictFile *dp; +{ + idxbuf = dp -> buffer + dp -> idxstrt; + return 0; +} +static Int getdic(dp, seg) +register DictFile *dp; +TypeDicSeg seg; +{ + if (seg >= dp->dict.segunit) return -1; + dicbuf = dp->buffer + dp->segstrt + dp->dict.seglen * seg; + return 0; +} +static Int putidx(dp) +register DictFile *dp; +{ + return putfile(dp->fd, dp->idxstrt, dp->dict.idxlen, idxbuf); +} +static Int putdic(dp, seg) +register DictFile *dp; +TypeDicSeg seg; +{ + Uchar *p; + long i, j; + + if (seg >= dp->dict.maxunit) return -1; + i = dp->segstrt + dp->dict.seglen * (seg + 1); + if (i > dp->bufsiz) { + if (!(p = (Uchar *)malloc(i))) return -1; + memcpy(dp->buffer, p, dp->bufsiz); + + if (idxbuf - dp->buffer == dp->idxstrt) + idxbuf = p + dp->idxstrt; + if ((dicbuf >= dp->buffer) && + ((j = dicbuf - dp->buffer) < dp->bufsiz)) + dicbuf = p + j; + + free((char *)(dp -> buffer)); + dp -> buffer = p; + dp -> bufsiz = i; + } + + i = dp->segstrt + dp->dict.seglen * seg; + if ((p = dp->buffer + i) != dicbuf) memcpy(dicbuf, p, dp->dict.seglen); + + return putfile(dp->fd, i, dp->dict.seglen, p); +} +static Int rszdic(dp, seg) +register DictFile *dp; +TypeDicSeg seg; +{ + long i; + Uchar *p; + + i = dp->segstrt + dp->dict.seglen * seg; + if (dp->bufsiz != i) { + if (!(p = (Uchar *)malloc(i))) return -1; + memcpy(dp->buffer, p, ((i > dp->bufsiz) ? dp->bufsiz : i)); + + if (idxbuf - dp->buffer == dp->idxstrt) + idxbuf = p + dp->idxstrt; + if ((dicbuf >= dp->buffer) && + ((i = dicbuf - dp->buffer) < dp->bufsiz)) + dicbuf = p + i; + + free((char *)(dp -> buffer)); + dp -> buffer = p; + dp -> bufsiz = i; + if (ftruncate(dp->fd, i) == -1) return -1; + } + put4byte(dp->buffer + DictSegNum, seg); + return putfile(dp->fd, 0, HeaderLength, dp->buffer); +} + + + +DictFile *opendict(name, passwd) +char *name; +char *passwd; +{ + FILE *fp; + struct stat sbuf; + DictFile *dfp; + Uchar tmp[HeaderLength]; + int i; + Uchar *dp; + + + if (stat(name, &sbuf) == ERROR) { + if (errno == ENOENT) + serv_errno = SJ3_FileNotExist; + else + serv_errno = SJ3_CannotAccessFile; + return NULL; + } + + + if ((dfp = search_same_dict(sbuf.st_ino)) != NULL) { + dfp -> refcnt++; return dfp; + } + + + if ((fp = fopen(name, "r+")) == NULL) { + if ((fp = fopen(name, "r")) == NULL) { + serv_errno = SJ3_CannotOpenFile; return NULL; + } + i = FALSE; + } + else + i = TRUE; + + + if (fgetfile(fp, 0L, sizeof(tmp), tmp) == ERROR) goto error1; + + + if (!check_dictfile(tmp)) { + serv_errno = SJ3_IllegalDictFile; goto error1; + } + + + if (!check_passwd(tmp, passwd)) { + serv_errno = SJ3_IncorrectPasswd; goto error1; + } + +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__bsdi__) + if ((dp = (Uchar *)malloc((long)sbuf.st_size)) == NULL) { +#else + if ((dp = (Uchar *)malloc(sbuf.st_size)) == NULL) { +#endif + serv_errno = SJ3_NotEnoughMemory; goto error1; + } + if ((dfp = (DictFile *)malloc(sizeof(*dfp))) == NULL) { + serv_errno = SJ3_NotEnoughMemory; goto error2; + } + memset(dfp, '\0', sizeof(*dfp)); + +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__bsdi__) + if (fgetfile(fp, 0L, (long)sbuf.st_size, dp) == ERROR) goto error3; +#else + if (fgetfile(fp, 0L, sbuf.st_size, dp) == ERROR) goto error3; +#endif + dfp -> dict.dicid = sbuf.st_ino; + dfp -> dict.idxlen = get4byte(dp + DictIdxLen); + dfp -> dict.seglen = get4byte(dp + DictSegLen); + dfp -> dict.segunit = get4byte(dp + DictSegNum); + dfp -> dict.maxunit = i ? get4byte(dp + DictSegMax) : 0 ; + dfp -> dict.getofs = getofs; + dfp -> dict.getidx = getidx; + dfp -> dict.getdic = getdic; + dfp -> dict.putidx = putidx; + dfp -> dict.putdic = putdic; + dfp -> dict.rszdic = rszdic; + dfp -> refcnt = 1; + dfp -> fp = fp; + dfp -> fd = fileno(fp); + dfp -> buffer = dp; + dfp -> bufsiz = sbuf.st_size; + dfp -> idxstrt = get4byte(dp + DictIdxPos); + dfp -> segstrt = get4byte(dp + DictSegPos); + + i = dfp -> dict.segunit; + if (i < dfp -> dict.maxunit) i = dfp -> dict.maxunit; + i *= sizeof(TypeIdxOfs); + if ((dfp -> ofsptr = (TypeIdxOfs *)malloc(i)) == NULL) { + serv_errno = SJ3_NotEnoughMemory; goto error3; + } + mkidxtbl(&(dfp -> dict)); + + dfp -> link = dictlink; + dictlink = dfp; + + return dfp; + + + +error3: free((char *)dfp); +error2: free((char *)dp); +error1: fclose(fp); + + return NULL; +} + + + +int closedict(dfp) +DictFile *dfp; +{ + DictFile *df; + + + if (--dfp->refcnt > 0) return 0; + + + if (dictlink == dfp) + dictlink = dfp -> link; + else { + for (df = dictlink ; df ; df = df -> link) + if (df -> link == dfp) { + df -> link = dfp -> link; + break; + } + } + + + if (dfp -> fp) fclose(dfp ->fp); + + + free((char *)(dfp -> ofsptr)); + free((char *)(dfp -> buffer)); + free((char *)dfp); + + return 0; +} + + + +static fd_set zero_fd_set = { 0 }; +void lock_dict(p, fd) +DictFile *p; +int fd; +{ + FD_SET(fd, &(p -> lock)); +} +void unlock_dict(p, fd) +DictFile *p; +int fd; +{ + FD_CLR(fd, &(p -> lock)); +} +int is_dict_locked(p) +DictFile *p; +{ + return memcmp(&(p -> lock), &zero_fd_set, sizeof(zero_fd_set)); +} + + + +static int check_stdyfile(buf) +Uchar *buf; +{ + return (StdyVersion != get4byte(buf + VersionPos)) ? FALSE : TRUE; +} + + + +static StdyFile *search_same_stdy(ino) +ino_t ino; +{ + StdyFile *p; + + for (p = stdylink ; p != NULL ; p = p -> link) + if (p -> inode == ino) return p; + + return NULL; +} + + + +StdyFile *openstdy(name, passwd) +char *name; +char *passwd; +{ + FILE *fp; + struct stat sbuf; + StdyFile *sfp; + Uchar *hd; + STDYIN *sp; + Ushort *cip; + Uchar *clp; + long stdycnt, stdypos, stdylen, stdymax; + long clidxpos, clidxlen; + long clstdypos, clstdylen, clstdystep; + long len; + + + if (stat(name, &sbuf) == ERROR) { + if (errno == ENOENT) + serv_errno = SJ3_FileNotExist; + else + serv_errno = SJ3_CannotAccessFile; + return NULL; + } + + + if ((sfp = search_same_stdy(sbuf.st_ino)) != NULL) { + sfp -> refcnt++; return sfp; + } + + + if ((hd = (Uchar *)malloc(HeaderLength+CommentLength)) == NULL) { + serv_errno = SJ3_NotEnoughMemory; return NULL; + } + + + if ((fp = fopen(name, "r+")) == NULL) { + serv_errno = SJ3_CannotOpenFile; goto error0; + } + + + if (fgetfile(fp, 0L, HeaderLength+CommentLength, hd) == ERROR) + goto error1; + + + if (!check_stdyfile(hd)) { + serv_errno = SJ3_IllegalStdyFile; goto error1; + } + + + if (!check_passwd(hd, passwd)) { + serv_errno = SJ3_IncorrectPasswd; goto error1; + } + + + stdycnt = get4byte(hd + StdyNormCnt); + stdypos = get4byte(hd + StdyNormPos); + stdylen = get4byte(hd + StdyNormLen); + stdymax = get4byte(hd + StdyNormNum); + clidxpos = get4byte(hd + StdyClIdxPos); + clidxlen = get4byte(hd + StdyClIdxLen); + clstdypos = get4byte(hd + StdyClSegPos); + clstdylen = get4byte(hd + StdyClSegLen); + clstdystep = get4byte(hd + StdyClIdxStep); + len = sizeof(STDYIN) * stdymax; + + + if ((sfp = (StdyFile *)malloc(sizeof(*sfp))) == NULL) { + serv_errno = SJ3_NotEnoughMemory; goto error1; + } + memset(sfp, '\0', sizeof(*sfp)); + if ((sp = (STDYIN *)malloc(len)) == NULL) { + serv_errno = SJ3_NotEnoughMemory; goto error2; + } + if ((cip = (Ushort *)malloc(clidxlen)) == NULL) { + serv_errno = SJ3_NotEnoughMemory; goto error3; + } + if ((clp = (Uchar *)malloc(clstdylen)) == NULL) { + serv_errno = SJ3_NotEnoughMemory; goto error4; + } + + + if (fgetfile(fp, clidxpos, clidxlen, cip) == ERROR) goto error5; + if (fgetfile(fp, clstdypos, clstdylen, clp) == ERROR) goto error5; + if (fgetfile(fp, stdypos, len, sp) == ERROR) stdycnt = 0; + + + sfp -> stdy.stdycnt = stdycnt; + sfp -> stdy.stdymax = stdymax; + sfp -> stdy.stdydic = sp; + sfp -> stdy.clstdystep = clstdystep; + sfp -> stdy.clstdyidx = cip; + sfp -> stdy.clstdylen = clstdylen; + sfp -> stdy.clstdydic = clp; + sfp -> refcnt = 1; + sfp -> inode = sbuf.st_ino; + sfp -> fp = fp; + sfp -> fd = fileno(fp); + sfp -> header = hd; + + sfp -> link = stdylink; + stdylink = sfp; + + return sfp; + + + +error5: free((char *)clp); +error4: free((char *)cip); +error3: free((char *)sp); +error2: free((char *)sfp); +error1: fclose(fp); +error0: free((char *)hd); + + return NULL; +} + + + +int closestdy(sfp) +StdyFile *sfp; +{ + StdyFile *sf; + + + if (--sfp->refcnt > 0) return 0; + + + if (stdylink == sfp) + stdylink = sfp -> link; + else { + for (sf = stdylink ; sf ; sf = sf -> link) + if (sf -> link == sfp) { + sf -> link = sfp -> link; + break; + } + } + + + if (sfp -> fp) fclose(sfp ->fp); + + + free((char *)sfp -> stdy.stdydic); + free((char *)sfp -> stdy.clstdyidx); + free((char *)sfp -> stdy.clstdydic); + free((char *)sfp -> header); + free((char *)sfp); + + return 0; +} + + + +int putstydic() +{ + int fd; + Uchar *hd; + StdyFile *sf; + long len; + + sf = (StdyFile *)stdy_base; + fd = sf -> fd; + hd = sf -> header; + + + put4byte(hd + StdyNormCnt, sf -> stdy.stdycnt); + + + len = sizeof(STDYIN) * sf -> stdy.stdymax; + put4byte(hd + StdyNormLen, len); + + + if (putfile(fd, 0, HeaderLength+CommentLength, hd)) return ERROR; + + + return putfile(fd, get4byte(hd + StdyNormPos), len, sf -> stdy.stdydic); +} +int putcldic() +{ + int fd; + Uchar *hd; + StdyFile *sf; + + sf = (StdyFile *)stdy_base; + fd = sf -> fd; + hd = sf -> header; + + if (putfile(fd, get4byte(hd + StdyClIdxPos), + get4byte(hd + StdyClIdxLen), sf -> stdy.clstdyidx)) + return ERROR; + return putfile(fd, get4byte(hd + StdyClSegPos), + get4byte(hd + StdyClSegLen), sf -> stdy.clstdydic); +} + + + +makedict(path, idxlen, seglen, segnum) +char *path; +int idxlen; +int seglen; +int segnum; +{ + FILE *fp; + Uchar tmp[HeaderLength + CommentLength]; + long pos = HeaderLength + CommentLength; + int ret = ERROR; + int i; + + + if (idxlen < MinIdxLen || seglen < MinSegLen || segnum < MinSegNum) { + serv_errno = SJ3_IllegalParameter; return ret; + } + + if (!(fp = fopen(path, "w"))) { + serv_errno = SJ3_CannotCreateFile; return ret; + } + memset(tmp, '\0', sizeof(tmp)); + put4byte(tmp + VersionPos, DictVersion); + + + put4byte(tmp + DictIdxPos, pos); + put4byte(tmp + DictIdxLen, idxlen); + if (fseek(fp, pos, 0) == ERROR) { + serv_errno = SJ3_FileSeekError; goto error; + } + for (i = 0 ; i < idxlen ; i++) + if (putc(0, fp)) { + serv_errno = SJ3_FileWriteError; goto error; + } + pos += idxlen; + + + put4byte(tmp + DictSegPos, pos); + put4byte(tmp + DictSegLen, seglen); + put4byte(tmp + DictSegNum, 1); + put4byte(tmp + DictSegMax, segnum); + if (fseek(fp, pos, 0) == ERROR) { + serv_errno = SJ3_FileSeekError; goto error; + } + if (putc(0, fp)) { + serv_errno = SJ3_FileWriteError; goto error; + } + for (i = 1 ; i < seglen ; i++) + if (putc(0xff, fp) != 0xff) { + serv_errno = SJ3_FileWriteError; goto error; + } + + + if (fputfile(fp, 0L, sizeof(tmp), tmp) == SJ3_NormalEnd) + ret = SJ3_NormalEnd; +error: + fclose(fp); + if (ret != SJ3_NormalEnd) unlink(path); + return ret; +} + + + +makestdy(path, stynum, clstep, cllen) +char *path; +int stynum; +int clstep; +int cllen; +{ + FILE *fp; + Uchar tmp[HeaderLength + CommentLength]; + long pos = HeaderLength + CommentLength; + int ret = ERROR; + int i, j; + + + if (stynum == 0) stynum = MinStyNum; + if (clstep == 0) clstep = MinClStep; + if (cllen == 0) cllen = MinClLen; + + + if (stynum < MinStyNum || clstep < MinClStep || cllen < MinClLen) { + serv_errno = SJ3_IllegalParameter; return ret; + } + if (stynum > MaxStyNum || clstep > MaxClStep || cllen > MaxClLen) { + serv_errno = SJ3_IllegalParameter; return ret; + } + + if (!(fp = fopen(path, "w"))) { + serv_errno = SJ3_CannotCreateFile; return ret; + } + memset(tmp, '\0', sizeof(tmp)); + put4byte(tmp + VersionPos, StdyVersion); + + + j = 256 * sizeof(Ushort); + put4byte(tmp + StdyClIdxPos, pos); + put4byte(tmp + StdyClIdxLen, j); + put4byte(tmp + StdyClIdxStep, clstep); + if (fseek(fp, pos, 0) == ERROR) { + serv_errno = SJ3_FileSeekError; goto error; + } + for (i = 0 ; i < j ; i++) + if (putc(0, fp)) { + serv_errno = SJ3_FileWriteError; goto error; + } + pos += j; + + + put4byte(tmp + StdyClSegPos, pos); + put4byte(tmp + StdyClSegLen, cllen); + if (fseek(fp, pos, 0) == ERROR) { + serv_errno = SJ3_FileSeekError; goto error; + } + for (i = 0 ; i < cllen ; i++) + if (putc(0, fp)) { + serv_errno = SJ3_FileWriteError; goto error; + } + pos += cllen; + + + j = sizeof(STDYIN) * stynum; + put4byte(tmp + StdyNormPos, pos); + put4byte(tmp + StdyNormLen, j); + put4byte(tmp + StdyNormNum, stynum); + put4byte(tmp + StdyNormCnt, 0); + if (fseek(fp, pos, 0) == ERROR) { + serv_errno = SJ3_FileSeekError; goto error; + } + for (i = 0 ; i < j ; i++) { + if (putc(0, fp)) { + serv_errno = SJ3_FileWriteError; goto error; + } + } + pos += j; + + + if (fputfile(fp, 0L, sizeof(tmp), tmp) == SJ3_NormalEnd) + ret = SJ3_NormalEnd; +error: + fclose(fp); + if (ret != SJ3_NormalEnd) unlink(path); + return ret; +} + + + +void sj_closeall() +{ + while (dictlink) closedict(dictlink); + while (stdylink) closestdy(stdylink); +} + + + +set_dictpass(dp, pass) +DictFile *dp; +char *pass; +{ + set_passwd(dp -> buffer, pass); + return putfile(dp->fd, 0, HeaderLength+CommentLength, dp->buffer); +} +set_stdypass(pass) +char *pass; +{ + StdyFile *sp; + + sp = (StdyFile *)stdy_base; + set_passwd(sp -> header, pass); + return putfile(sp->fd, 0, HeaderLength+CommentLength, sp->header); +} + + + +static set_comment(buf, comment) +Uchar *buf; +char *comment; +{ + strncpy(buf + HeaderLength, comment, CommentLength); +} + +set_dictcmnt(dp, cmnt) +DictFile *dp; +char *cmnt; +{ + set_comment(dp -> buffer, cmnt); + return putfile(dp->fd, 0, HeaderLength+CommentLength, dp->buffer); +} +set_stdycmnt(cmnt) +char *cmnt; +{ + StdyFile *sp; + + sp = (StdyFile *)stdy_base; + set_comment(sp -> header, cmnt); + return putfile(sp->fd, 0, HeaderLength+CommentLength, sp->header); +} + + + +get_stdysize(stynum, clstep, cllen) +int *stynum, *clstep, *cllen; +{ + *stynum = StudyMax; + *clstep = ClStudyStep; + *cllen = ClStudyLen; +} diff --git a/kanakan/dict.c b/kanakan/dict.c new file mode 100644 index 0000000..643e1c2 --- /dev/null +++ b/kanakan/dict.c @@ -0,0 +1,109 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: dict.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:45 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" + +Int codesize(); + + + +Void get_askknj() +{ + Reg1 Uchar *p; + Reg3 Uchar *q; + Reg2 Uchar *r; + Int i = 0, csize; + Int flg; + + + p = q = dicbuf; + + + q += *p++; + + + while (p < q) { + + askknj[i] = p; + + + r = NULL; + flg = TRUE; + do { + csize = codesize(*p); + if (p[csize] == KanjiStrEnd) flg = FALSE; + + if (!r && (*p != AiAttribute)) + r = p; + + p += csize; + } while (flg); + + p++; + + askknj_k[i++] = r; + } +} + + + +Int seldict(id) +TypeDicID id; +{ + DICTL *dp; + + for (dp = dictlist ; dp ; dp = dp -> next) { + if ((curdict = dp -> dict) -> dicid == id) + return TRUE; + } + curdict = NULL; + + return FALSE; +} + + + +Uchar *get_idxptr(seg) +TypeDicSeg seg; +{ + (*curdict->getofs)(curdict); + (*curdict->getidx)(curdict); + + return idxbuf + idxofs[seg]; +} diff --git a/kanakan/functbl.c b/kanakan/functbl.c new file mode 100644 index 0000000..439d225 --- /dev/null +++ b/kanakan/functbl.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: functbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:46 $ + */ + + + + +#include "sj_rename.h" +#include "sj_typedef.h" + + + +Void num_type00(), num_type01(), num_type02(), num_type03(); +Void num_type04(), num_type05(), num_type06(), num_type07(); +Void num_type08(), num_type09(), num_type10(), num_type11(); +Void num_type12(), num_type13(), num_type14(); +VFunc cvtnum_func[] = { + num_type00, num_type01, num_type02, num_type03, + num_type04, num_type05, num_type06, num_type07, + num_type08, num_type09, num_type10, num_type11, + num_type12, num_type13, num_type14 +}; + + + +Uchar *getkan_hira(), *getkan_kata(), *getkan_knj(), *getkan_ofs(); +Uchar *getkan_norm(), *getkan_none(); +UCPFunc getkan_func[] = { + getkan_norm, getkan_norm, getkan_hira, getkan_kata, + getkan_knj, getkan_ofs, getkan_norm, getkan_none, + getkan_norm, getkan_norm, getkan_hira, getkan_kata, + getkan_knj, getkan_ofs, getkan_norm, getkan_none +}; + + + +Int setj_norm1(), setj_norm2(), setj_knj(), setj_ofs(), setj_atrb(); +IFunc setjrec_func[] = { + setj_norm2, setj_norm2, setj_norm1, setj_norm1, + setj_knj, setj_ofs, setj_norm2, setj_atrb, + setj_norm2, setj_norm2, setj_norm1, setj_norm1, + setj_knj, setj_ofs, setj_norm2, setj_atrb +}; + + + +Int hiraknj_atrb(), hiraknj_ofs(), hiraknj_knj(), hiraknj_hask(); +Int hiraknj_kask(), hiraknj_norm(), hiraknj_hira(); +IFunc hiraknj_func[] = { + hiraknj_hira, hiraknj_norm, hiraknj_hask, hiraknj_kask, + hiraknj_knj, hiraknj_ofs, hiraknj_norm, hiraknj_atrb, + hiraknj_hira, hiraknj_norm, hiraknj_hask, hiraknj_kask, + hiraknj_knj, hiraknj_ofs, hiraknj_norm, hiraknj_atrb +}; + + + +Uchar *makekan_1byte(), *makekan_knj(), *makekan_ofs(); +Uchar *makekan_norm(), *makekan_none(); +UCPFunc makekan_func[] = { + makekan_norm, makekan_norm, makekan_1byte, makekan_1byte, + makekan_knj, makekan_ofs, makekan_norm, makekan_none, + makekan_norm, makekan_norm, makekan_1byte, makekan_1byte, + makekan_knj, makekan_ofs, makekan_norm, makekan_none +}; diff --git a/kanakan/fuzoku.c b/kanakan/fuzoku.c new file mode 100644 index 0000000..46f063d --- /dev/null +++ b/kanakan/fuzoku.c @@ -0,0 +1,295 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: fuzoku.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:47 $ + */ + + + + + +#include "sj_kcnv.h" +#include "sj_hinsi.h" +#include "sj_right.h" +#include "sj_yomi.h" + + + +CLREC *argclrec(); +Int terminate(); + + + +Static Int fzkstrcmp(yptr, fzkp, saml) +Uchar *yptr; +Uchar TFar *fzkp; +Int *saml; +{ + Int asklen, nkrlen; + + asklen = FzkAskLen(fzkp); + + + if (*saml < asklen) return CONT; + + + if (*saml > asklen) return OVER; + + + nkrlen = FzkNkrLen(fzkp); + + + yptr += asklen; + fzkp ++; + + + while (nkrlen--) { + if (*yptr > *fzkp) + return CONT; + + else if (*yptr < *fzkp) { + if (!*yptr) return PARTLY; + return OVER; + } + + else{ + yptr++; + fzkp++; + (*saml)++; + } + } + + return MATCH; +} + + + +Void setclrec(jrec, yptr, right) +JREC *jrec; +Uchar *yptr; +TypeCnct right; +{ + CLREC *new; + TypeGram hinsi; + Int len; + + + if (!(len = yptr - cnvstart)) return; + + + if (len > MaxClInputLen) return; + + + if (!(new = argclrec(len))) return; + + + new -> jnode = jrec; + new -> gobiln = gobilen; + new -> right = right; + new -> fzk_ka = fzk_ka_flg; + (jrec -> count)++; + + + hinsi = jrec -> hinsi; + + if (hinsi >= DO_SAHEN && hinsi <= SP_KA_ONB) + new -> kubun = K_DOUSHI; + + else if ((hinsi >= KEIYOUSI_1 && hinsi <= KE_DOUSI_9) || + (hinsi == SP_KEIYOUSI)){ + if(right == R_FZKMEISI) + new -> kubun = K_TAIGEN; + else + new -> kubun = K_YOUGEN; + } + + else if (hinsi == RENTAISI) + new -> kubun = K_RENTAISI; + + else if ((hinsi >= FUKUSI_1 && hinsi <= FUKUSI_9) || + (hinsi == SP_FUKUSI)) + new -> kubun = K_FUKUSI; + + else if (hinsi == SETUZOKU || hinsi==KANDOUSI || + hinsi == TANKANJI || hinsi==AISATU) + new -> kubun = K_SONOTA; + + else if (gobilen) { + if (hinsi >= MEISI_5 && hinsi <= MEISI_7) + new -> kubun = K_DOUSHI; + + else if (hinsi == D_MEISI_4) + new -> kubun = K_DOUSHI; + + else if (hinsi == SETUBI_7 || hinsi == SETUBI_8) + new -> kubun = K_DOUSHI; + + + else if (hinsi == D_MEISI_5) + new -> kubun = K_YOUGEN; + + else if (hinsi == SETUBI_5 || hinsi == SETUBI_6) + new -> kubun = K_YOUGEN; + else + new -> kubun = K_TAIGEN; + } + else if (hinsi >= MEISI_5 && hinsi <= MEISI_7) { + if (right >= R_I && right <= R_ITADAKE) + new -> kubun = K_DOUSHI; + + else if (right >= R_DESHI && right <= R_TAI) + new -> kubun = K_DOUSHI; + + else if (right >= R_NAI && right <= R_MEIREI2) + new -> kubun = K_DOUSHI; + + else if (right == R_TE2 || right == R_TERU) + new -> kubun = K_DOUSHI; + else + new -> kubun = K_TAIGEN; + } + else + new -> kubun = K_TAIGEN; +} + +Static Int fzkcnct(right, left) +TypeCnct right; +TypeCnct left; +{ + Uchar TFar *cncttbl; + + if (right && left) { + cncttbl = Rigtadr(right); + left--; + if (cncttbl[left >> 3] << (left & 0x07) & 0x80) + return TRUE; + } + + return FALSE; +} + +RECURS +Void srchfzk(jrec, yptr, right, level) +JREC *jrec; +Reg1 Uchar *yptr; +TypeCnct right; +Int level; +{ + Uchar TFar *fzk; + Int len = 0; + Int cmp; + Uchar *next; + FREC *fzkrec; + Int i; + Int nlen; + TypeCnct rt; + + if ((level >= MAXFLVL) && !(Chrtbl[*yptr] & FZK_KGU)) return; + + if (terminate(right, yptr) && Chrtbl[*yptr] & FZK_KGU){ + if (!level) fzk_ka_flg = 0; + yptr++; + while (Chrtbl[*yptr] & FZK_KGU) yptr++; + setclrec(jrec, yptr, (TypeCnct)R_FZKKGU); + return; + } + + if (right == R_CUT) return; + + if (!*yptr) return; + + if (!(*yptr >= _XA && *yptr <= _NN)) return; + + fzkrec = fzktbl; + + for (i = fzkcount ; i ; i--, fzkrec++) { + + if (yptr != fzkrec -> yomip) continue; + + fzk = fzkrec -> fzkp; + + len = FzkAskLen(fzk) + (nlen = FzkNkrLen(fzk)) + 1; + + if (!fzkcnct(right, (TypeCnct)FzkLeft(fzk))) continue; + + if (!level) fzk_ka_flg = FzkStrKa(fzk); + + next = yptr + len; + + if (terminate(rt = FzkRight(fzk), next)) { + setclrec(jrec, next, rt); + } + + srchfzk(jrec, next, rt, level + 1); + } + + if (len) return; + + + if (!(fzk = Fzkadr(*yptr - _XA))) return; + + yptr++; + + for ( ; *fzk != FZKEND ; fzk += nlen + (i ? 4 : 3)) { + + nlen = FzkNkrLen(fzk); + i = FzkHasCode(fzk); + + cmp = fzkstrcmp(yptr, fzk, &len); + + if (cmp == OVER) + break; + + else if (cmp == PARTLY) + break; + + else if ((cmp != MATCH) || isdpnd(*(yptr + len))) + continue; + + + fzktbl[fzkcount].yomip = yptr - 1; + fzktbl[fzkcount].fzkp = fzk; + fzkcount++; + + if (!fzkcnct(right, (TypeCnct)FzkLeft(fzk))) continue; + + if (!level) fzk_ka_flg = FzkStrKa(fzk); + + next = yptr + len; + + if (terminate(rt = FzkRight(fzk), next)) { + setclrec(jrec, next, rt); + } + + srchfzk(jrec, next, rt, level + 1); + } +} diff --git a/kanakan/fzkyomi.c b/kanakan/fzkyomi.c new file mode 100644 index 0000000..ada1c6b --- /dev/null +++ b/kanakan/fzkyomi.c @@ -0,0 +1,774 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: fzkyomi.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:48 $ + */ + + + +#include "sj_const.h" +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_yomi.h" +#include "sj_right.h" +#include "sj_left.h" + +static Uchar fzk_wo[] = { +(0<<5)+0, L_WO, R_WO, +(0<<5)+0, L_WO_S, R_WO_S, +0xff +}; + +static Uchar fzk_xtu[] = { +(0<<5) + 1, _KE, L_KKE, R_SHUUJO, +(0<<5) + 3, _TA,_XTU,_TE, L_TTATTE, R_TTATTE, +(1<<5) + 1, _RA, L_TTARA, R_TTARA, +(2<<5) + 2, _SI, _I, L_TTARASII, R_KSHUUSI, +(3<<5) + 2, _KA, _XTU, L_TTARASII, R_ONBIN1, +(4<<5) + 2, _RO, _U, L_TTARASII, R_KAROU, +(3<<5) + 1, _KU, L_TTARASII, R_KRENYOU, +(3<<5) + 2, _KE, _RE, L_TTARASII, R_KATEI1, +(3<<5) + 1, _SA, L_TTARASII, R_FZKMEISI, +(0<<5) + 1, _TE, L_TTE1, R_TTE1, +(1<<5) + 0, L_TTE2, R_TTE2, +(0<<5) + 3, _PA,_NA,_SI, L_PPANASI, R_PPANASI, +(0<<5) + 2, _PO,_I, L_PPOI, R_PPOI, +(1<<5) + 2, _KA,_XTU, L_PPOI, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_PPOI, R_KAROU, +(1<<5) + 1, _KU, L_PPOI, R_KRENYOU, +(1<<5) + 2, _KE,_RE, L_PPOI, R_KATEI1, +0xff +}; + +static Uchar fzk_a[] = { +(0<<5) + 1, _GE, L_YOUGEN, R_AGE, +(1<<5) + 1, _YO, L_YOUGEN, R_MEIREI2, +(1<<5) + 1, _RU, L_YOUGEN, R_SHUUSI, +(1<<5) + 1, _RE, L_YOUGEN, R_KATEI3, +(1<<5) + 1, _RO, L_YOUGEN, R_MEIREI1, +(0<<5) + 1, _XTU, L_ARU, R_AXTU, +(0<<5) + 1, _RA, L_ARA, R_MIZEN2, +(0<<5) + 1, _RI, L_ARI1, R_ARI1, +(1<<5) + 0, L_ARI2, R_ARI2, +(1<<5) + 0, L_ARI3, R_ARI3, +(0<<5) + 1, _RU, L_ARU, R_SHUUSI, +(0<<5) + 1, _RE, L_ARE1, R_KAMEI, +(1<<5) + 0, L_ARE2, R_KATEI2, +(1<<5) + 3, _BA,_KO,_SO, L_ARE1, R_CUT, +(0<<5) + 2, _RO,_U, L_AROU, R_AROU, +0xff +}; + +static Uchar fzk_i[] = { +(0<<5) + 0, L_IRU, R_I, +(0<<5) + 1, _I, L_II, R_SHUUSI, +(0<<5) + 1, _KA, L_YOUGEN, R_MIZEN5, +(0<<5) + 1, _KI, L_YOUGEN, R_IKI, +(0<<5) + 1, _KU, L_YOUGEN, R_SHUUSI, +(0<<5) + 1, _KE, L_YOUGEN, R_IKE, +(0<<5) + 2, _KO,_U, L_YOUGEN, R_AROU, +(0<<5) + 2, _TA,_SI, L_ITASI, R_ITASI, +(1<<5) + 2, _DA,_I, L_ITADAKU, R_ONBIN2, +(2<<5) + 1, _KA, L_ITADAKU, R_MIZEN4, +(2<<5) + 1, _KI, L_ITADAKU, R_ITADAKI, +(2<<5) + 1, _KU, L_ITADAKU, R_SHUUSI, +(2<<5) + 1, _KE, L_ITADAKU, R_ITADAKE, +(2<<5) + 2, _KO,_U, L_ITADAKU, R_AROU, +(0<<5) + 1, _XTU, L_YOUGEN, R_ONBIN8, +(0<<5) + 1, _YO, L_IRU, R_MEIREI2, +(0<<5) + 1, _RU, L_IRU, R_SHUUSI, +(0<<5) + 1, _RE, L_IRU, R_KATEI2, +(0<<5) + 1, _RO, L_IRU, R_MEIREI1, +0xff +}; + +static Uchar fzk_u[] = { +(0<<5) + 1, _E, L_UE, R_UE, +(0<<5) + 1, _TI, L_UTI, R_UTI, +(0<<5) + 1, _RU, L_ERU, R_SHUUSI, +0xff +}; + +static Uchar fzk_e[] = { +(0<<5) + 0, L_ERU, R_E, +(0<<5) + 1, _RU, L_ERU, R_SHUUSI, +(0<<5) + 1, _RE, L_ERU, R_KATEI3, +0xff +}; + +static Uchar fzk_o[] = { +(0<<5) + 1, _I, L_YOUGEN, R_ONBIN8, +(1<<5) + 1, _TE, L_OITE, R_OITE, +(0<<5) + 1, _KA, L_YOUGEN, R_MIZEN5, +(0<<5) + 1, _KI, L_YOUGEN, R_IKI, +(0<<5) + 1, _KU, L_YOUGEN, R_SHUUSI, +(0<<5) + 1, _KE, L_YOUGEN, R_IKE, +(1<<5) + 1, _RU, L_OKERU, R_OKERU, +(0<<5) + 2, _KO,_U, L_YOUGEN, R_AROU, +(0<<5) + 1, _RA, L_YOUGEN, R_MIZEN2, +(0<<5) + 1, _RI, L_ORI, R_ORI1, +(1<<5) + 0, L_YOUGEN, R_ORI2, +(0<<5) + 1, _RE, L_YOUGEN, R_KAMEI, +0xff +}; + +static Uchar fzk_ka[] = { +(0<<5) + 0 + 8, L_KA1, R_KA1, +(0<<5) + 0 + 8, L_KA2, R_KA2, +(0<<5) + 1, _I, L_KAI, R_SHUUJO, +(0<<5) + 1, _KE, L_KAKERU, R_KAKE, +(1<<5) + 1, _RU, L_KAKERU, R_SHUUSI, +(1<<5) + 1, _RE, L_KAKERU, R_KATEI3, +(0<<5) + 2, _SI,_RA, L_KASIRA, R_SHUUJO, +(2<<5) + 1, _NE, L_KASIRA, R_SHUUJO, +(0<<5) + 3, _TA,_GA,_TA, L_KATAGATA,R_KATAGATA, +(0<<5) + 3, _DO,_U,_KA, L_KADOUKA, R_KADOUKA, +(0<<5) + 1, _NA, L_KANA, R_SHUUJO, +(0<<5) + 1, _NE, L_KANE, R_SHUUJO, +(1<<5) + 0, L_KANERU, R_KANE2, +(1<<5) + 1, _RU, L_KANERU, R_SHUUSI, +(1<<5) + 1, _RE, L_KANERU, R_KATEI3, +(0<<5) + 3, _MA,_TA,_HA, L_KA1, R_CUT, +(0<<5) + 1, _MO, L_KAMO, R_KAMO, +(0<<5) + 1, _RA, L_KARA1, R_KARA1, +(1<<5) + 0, L_KARA2, R_KARA2, +(1<<5) + 1, _ZU, L_KARAZU, R_ZU, +(1<<5) + 1, _NU, L_KARAZU, R_NU, +0xff +}; + +static Uchar fzk_ga[] = { +(0<<5) + 0, L_GA1, R_GA1, +(0<<5) + 0, L_GA2, R_GA2, +(0<<5) + 2, _TA,_I, L_GATAI, R_KSHUUSI, +(1<<5) + 2, _KA,_XTU, L_GATAI, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_GATAI, R_KAROU, +(1<<5) + 1, _KU, L_GATAI, R_GATAKU, +(1<<5) + 2, _KE,_RE, L_GATAI, R_KATEI2, +(0<<5) + 1, _TI, L_GATIDA, R_GATI, +(1<<5) + 1, _DA, L_GATIDA, R_DSHUUSI1, +(2<<5) + 1, _XTU, L_GATIDA, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_GATIDA, R_DAROU, +(1<<5) + 1, _DE, L_GATIDA, R_DRENYOU1, +(1<<5) + 1, _NA, L_GATIDA, R_DRENTAI1, +(2<<5) + 1, _RA, L_GATIDA, R_KATEI1, +(1<<5) + 1, _NI, L_GATIDA, R_DRENYOU2, +(0<<5) + 2, _TE,_RA, L_GATERA, R_GATERA, +0xff +}; + +static Uchar fzk_ki[] = { +(0<<5) + 0, L_YOUGEN, R_FZKKI, +(0<<5) + 1, _RI, L_KIRI, R_KIRI, +0xff +}; + +static Uchar fzk_ku[] = { +(0<<5) + 2, _SE,_NI, L_KUSENI, R_KUSENI, +(0<<5) + 3, _DA,_SA,_I, L_KUDASARU, R_KUDASAI, +(2<<5) + 1, _XTU, L_KUDASARU, R_ONBIN6, +(2<<5) + 1, _RA, L_KUDASARU, R_MIZEN4, +(2<<5) + 1, _RI, L_KUDASARU, R_ITADAKI, +(2<<5) + 1, _RU, L_KUDASARU, R_SHUUSI, +(2<<5) + 1, _RE, L_KUDASARU, R_KATEI3, +(0<<5) + 2, _RA,_I, L_KURAI, R_KURAI, +(0<<5) + 1, _RU, L_YOUGEN, R_SHUUSI, +(0<<5) + 1, _RE, L_YOUGEN, R_KURE, +(1<<5) + 1, _RU, L_YOUGEN, R_SHUUSI, +(1<<5) + 1, _RE, L_YOUGEN, R_KATEI3, +0xff +}; + +static Uchar fzk_gu[] = { +(0<<5) + 2, _RA,_I, L_KURAI, R_KURAI, +(0<<5) + 2, _RU,_MI, L_GURUMI, R_GURUMI, +0xff +}; + +static Uchar fzk_ke[] = { +(0<<5) + 1, _DO, L_KEDO, R_KEDO, +(1<<5) + 1, _MO, L_KEDO, R_KEDO, +(0<<5) + 2, _RE,_DO, L_KEDO, R_KEDO, +(2<<5) + 1, _MO, L_KEDO, R_KEDO, +0xff +}; + +static Uchar fzk_ko[] = { +(0<<5) + 0, L_YOUGEN, R_KO, +(0<<5) + 1, _I, L_YOUGEN, R_MEIREI1, +(0<<5) + 1, _SO, L_KOSO, R_KOSO, +(0<<5) + 1, _TO, L_KOTO, R_KOTO, +0xff +}; + +static Uchar fzk_go[] = { +(0<<5) + 2, _ZA,_I, L_GOZAI, R_GOZAI, +(0<<5) + 2, _TO,_KI, L_GOTOSI, R_GOTOKI, +(1<<5) + 1, _KU, L_GOTOSI, R_GOTOKU, +(1<<5) + 1, _SI, L_GOTOSI, R_GOTOSI, +0xff +}; + +static Uchar fzk_sa[] = { +(0<<5) + 0, L_SA1, R_MIZEN1, +(0<<5) + 0, L_SA2, R_SHUUJO, +(0<<5) + 1, _E, L_SAE, R_SAE, +(0<<5) + 1, _SE, L_SASERU, R_SASE, +(1<<5) + 1, _YO, L_SASERU, R_MEIREI2, +(1<<5) + 1, _RU, L_SASERU, R_SHUUSI, +(1<<5) + 1, _RE, L_SASERU, R_KATEI2, +(1<<5) + 1, _RO, L_SASERU, R_MEIREI1, +0xff +}; + +static Uchar fzk_za[] = { +(0<<5) + 1, _RU, L_ZARU, R_ZARU, +(0<<5) + 1, _RE, L_ZARU, R_KATEI2, +0xff +}; + +static Uchar fzk_si[] = { +(0<<5) + 0, L_SI1, R_SI1, +(0<<5) + 0, L_SI2, R_SI2, +(0<<5) + 0, L_N_SI, R_N_SI, +(0<<5) + 1, _KA, L_SIKA, R_SIKA, +(0<<5) + 1, _TE, L_SITE, R_SITE, +(0<<5) + 2, _MA,_I, L_YOUGEN, R_IKI, +(1<<5) + 1, _U, L_YOUGEN, R_SHUUSI, +(1<<5) + 1, _E, L_YOUGEN, R_IKE, +(1<<5) + 2, _O,_U, L_YOUGEN, R_AROU, +(1<<5) + 1, _XTU, L_YOUGEN, R_ONBIN6, +(1<<5) + 1, _WA, L_YOUGEN, R_MIZEN5, +(0<<5) + 1, _RO, L_SIRO, R_MEIREI1, +0xff +}; + +static Uchar fzk_ji[] = { +(0<<5) + 2, _MA,_I, L_JIMAU, R_IKI, +(1<<5) + 1, _U, L_JIMAU, R_SHUUSI, +(1<<5) + 1, _E, L_JIMAU, R_IKE, +(1<<5) + 2, _O,_U, L_JIMAU, R_AROU, +(1<<5) + 1, _XTU, L_JIMAU, R_ONBIN6, +(1<<5) + 1, _WA, L_JIMAU, R_MIZEN5, +(0<<5) + 1, _XYA, L_JYA, R_JYA, +(1<<5) + 1, _I, L_JYAU, R_IKI, +(1<<5) + 1, _U, L_JYAU, R_SHUUSI, +(1<<5) + 1, _E, L_JYAU, R_IKE, +(1<<5) + 2, _O,_U, L_JYAU, R_AROU, +(1<<5) + 1, _XTU, L_JYAU, R_ONBIN6, +(1<<5) + 1, _WA, L_JYAU, R_MIZEN5, +0xff +}; + +static Uchar fzk_su[] = { +(0<<5) + 1, _GI, L_SUGIRU, R_SUGI, +(1<<5) + 1, _RU, L_SUGIRU, R_SHUUSI, +(1<<5) + 1, _RE, L_SUGIRU, R_KATEI2, +(0<<5) + 3, _BE,_KA,_RA, L_SUBESI, R_BEKARA, +(1<<5) + 1, _KI, L_SUBESI, R_BEKI, +(1<<5) + 1, _KU, L_SUBESI, R_BEKU, +(1<<5) + 1, _SI, L_SUBESI, R_BESI, +(0<<5) + 1, _RA, L_SURA, R_SURA, +(0<<5) + 1, _RU, L_SURU, R_SHUUSI, +(0<<5) + 1, _RE, L_SURE, R_KATEI2, +0xff +}; + +static Uchar fzk_zu[] = { +(0<<5) + 0, L_ZU, R_ZU, +(0<<5) + 1, _TU, L_ZUTU, R_ZUTU, +(0<<5) + 2, _NI,_I, L_ZU, R_I, +(2<<5) + 1, _RU, L_ZU, R_SHUUSI, +(0<<5) + 2, _NN,_BA, L_ZUNBA, R_CUT, +0xff + }; + +static Uchar fzk_se[] = { +(0<<5) + 0, L_SE, R_MIZEN2, +(0<<5) + 0, L_SERU, R_SASE, +(0<<5) + 1, _YO, L_SEYO, R_MEIREI2, +(1<<5) + 0, L_SERU, R_MEIREI2, +(0<<5) + 1, _RU, L_SERU, R_SHUUSI, +(0<<5) + 1, _RE, L_SERU, R_KATEI2, +(0<<5) + 1, _RO, L_SERU, R_MEIREI1, +0xff +}; + +static Uchar fzk_ze[] = { +(0<<5) + 0, L_ZE, R_SHUUJO, +0xff +}; + +static Uchar fzk_so[] = { +(0<<5) + 1, _U, L_SOUDA, R_SOU, +(1<<5) + 1, _DA, L_SOUDA, R_SOUDA, +(2<<5) + 1, _XTU, L_YOUTAI, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_YOUTAI, R_DAROU, +(1<<5) + 1, _DE, L_SOUDA, R_SOUDE, +(2<<5) + 1, _SI, L_SOUDA, R_DESHI, +(3<<5) + 1, _XYO, L_YOUTAI, R_SHO, +(4<<5) + 1, _U, L_YOUTAI, R_DESHOU, +(2<<5) + 1, _SU, L_SOUDA, R_SOUDESU, +(1<<5) + 1, _NA, L_DENBUN, R_SOUNA1, +(2<<5) + 0, L_YOUTAI, R_SOUNA2, +(2<<5) + 1, _RA, L_SOUDA, R_KATEI1, +(1<<5) + 1, _NI, L_YOUTAI, R_SOUNI, +0xff +}; + +static Uchar fzk_zo[] = { +(0<<5) + 0, L_ZO, R_SHUUJO, +0xff +}; + +static Uchar fzk_ta[] = { +(0<<5) + 0, L_TA, R_TA, +(0<<5) + 1, _I, L_TAI, R_TAI, +(0<<5) + 2, _KA,_XTU, L_TAI, R_ONBIN1, +(1<<5) + 2, _RO,_U, L_TAI, R_KAROU, +(0<<5) + 2, _GA,_XTU, L_TAGARU, R_ONBIN6, +(1<<5) + 1, _RA, L_TAGARU, R_TAGARA, +(1<<5) + 1, _RI, L_TAGARU, R_TAGARI, +(1<<5) + 1, _RU, L_TAGARU, R_SHUUSI, +(1<<5) + 1, _RE, L_TAGARU, R_KATEI3, +(1<<5) + 2, _RO,_U, L_TAGARU, R_KAROU, +(0<<5) + 1, _KU, L_TAI, R_TAKU, +(0<<5) + 2, _KE,_RE, L_TAI, R_KATEI3, +(0<<5) + 2, _MA,_I, L_TAMAU, R_IKI, +(1<<5) + 1, _U, L_TAMAU, R_SHUUSI, +(1<<5) + 1, _E, L_TAMAU, R_KAMEI, +(1<<5) + 1, _XTU, L_TAMAU, R_ONBIN6, +(1<<5) + 1, _WA, L_TAMAU, R_MIZEN5, +(0<<5) + 1, _ME, L_TAME, R_TAME, +(0<<5) + 1, _RA, L_TA, R_KATEI1, +(0<<5) + 1, _RI, L_TA, R_TARI, +(0<<5) + 1, _RU, L_TARU, R_CUT, +(0<<5) + 2, _RO,_U, L_TA, R_KAROU, +0xff +}; + +static Uchar fzk_da[] = { +(0<<5) + 0, L_DA1, R_TA, +(0<<5) + 0, L_DA2, R_DSHUUSI1, +(0<<5) + 1, _KE, L_DAKE, R_DAKE, +(0<<5) + 1, _XTU, L_DAXTU, R_ONBIN1, +(0<<5) + 1, _NO, L_DANO, R_DANO, +(0<<5) + 1, _RA, L_DA1, R_KATEI1, +(1<<5) + 1, _KE, L_DARAKE, R_DARAKE, +(0<<5) + 1, _RI, L_DA1, R_TARI, +(0<<5) + 2, _RO,_U, L_DAROU, R_DAROU, +0xff +}; + +static Uchar fzk_ti[] = { +(0<<5) + 2, _MA,_I, L_TIMAU, R_IKI, +(1<<5) + 1, _U, L_TIMAU, R_SHUUSI, +(1<<5) + 1, _E, L_TIMAU, R_IKE, +(1<<5) + 2, _O,_U, L_TIMAU, R_AROU, +(1<<5) + 1, _XTU, L_TIMAU, R_ONBIN6, +(1<<5) + 1, _WA, L_TIMAU, R_MIZEN5, +(0<<5) + 1, _XYA, L_TYA, R_CUT, +(1<<5) + 1, _I, L_TYAU, R_IKI, +(1<<5) + 1, _U, L_TYAU, R_SHUUSI, +(1<<5) + 1, _E, L_TYAU, R_IKE, +(1<<5) + 2, _O,_U, L_TYAU, R_AROU, +(1<<5) + 1, _XTU, L_TYAU, R_ONBIN6, +(1<<5) + 1, _WA, L_TYAU, R_MIZEN5, +0xff +}; + +static Uchar fzk_di[] = { +(0<<5) + 1, _XYA, L_JYA, R_JYA, +0xff +}; + +static Uchar fzk_tu[] = { +(0<<5) + 2, _I,_TE, L_TUITE, R_TUITE, +(0<<5) + 1, _KI, L_TUKI, R_TUKI, +(0<<5) + 1, _TU, L_TUTU, R_TUTU, +(0<<5) + 2, _MO,_RI, L_TUMORI, R_TUMORI, +0xff +}; + +static Uchar fzk_te[] = { +(0<<5) + 0, L_TE1, R_TE1, +(0<<5) + 0, L_TE2, R_TE2, +(0<<5) + 1, _RU, L_TERU, R_TERU, +0xff +}; + +static Uchar fzk_de[] = { +(0<<5) + 0, L_DE, R_DE, +(0<<5) + 0, L_DA1, R_TE2, +(0<<5) + 3, _A,_RO,_U, L_DEAROU, R_AROU, +(0<<5) + 1, _KI, L_DEKIRU, R_DEKI, +(1<<5) + 1, _RU, L_DEKIRU, R_SHUUSI, +(1<<5) + 1, _RE, L_DEKIRU, R_KATEI3, +(0<<5) + 1, _SI, L_DESI, R_DESHI, +(1<<5) + 1, _XYO, L_DESHO, R_SHO, +(2<<5) + 1, _U, L_DESHO, R_DESHOU, +(0<<5) + 1, _SU, L_DESU, R_DESU, +(0<<5) + 1, _HA, L_DEHA, R_DEHA, +(0<<5) + 1, _RU, L_DERU, R_TERU, +0xff +}; + +static Uchar fzk_to[] = { +(0<<5) + 0, L_TO1, R_TO1, +(0<<5) + 0, L_TO2, R_TO2, +(0<<5) + 1, _I, L_TE2, R_ONBIN8, +(1<<5) + 1, _U, L_TOIU, R_TOIU, +(0<<5) + 2, _O,_RI, L_TOORI, R_TOORI, +(0<<5) + 1, _KA, L_TE2, R_MIZEN5, +(0<<5) + 1, _KI, L_TOKI, R_TOKI, +(1<<5) + 0, L_TE2, R_IKI, +(0<<5) + 1, _KU, L_TE2, R_SHUUSI, +(0<<5) + 1, _KE, L_TE2, R_IKE, +(0<<5) + 1, _KO, L_TOKORO, R_TOKORO, +(1<<5) + 1, _U, L_TE2, R_AROU, +(1<<5) + 1, _RO, L_TOKORO, R_TOKORO, +(0<<5) + 2, _XTU,_TE, L_TOTTE, R_TOTTE, +(0<<5) + 1, _TE, L_TOTE, R_TOTE, +(0<<5) + 3, _HA,_I,_E, L_TOHAIE, R_TOHAIE, +(0<<5) + 1, _MO, L_TOMO, R_TOMO, +0xff +}; + +static Uchar fzk_do[] = { +(0<<5) + 0, L_DO, R_DO, +(0<<5) + 1, _I, L_DA1, R_ONBIN8, +(0<<5) + 2, _O,_RI, L_DOORI, R_DOORI, +(0<<5) + 1, _KA, L_DA1, R_MIZEN5, +(0<<5) + 1, _KI, L_DA1, R_IKI, +(0<<5) + 1, _KU, L_DA1, R_SHUUSI, +(0<<5) + 1, _KE, L_DA1, R_IKE, +(0<<5) + 2, _KO,_U, L_DA1, R_AROU, +(1<<5) + 1, _RO, L_DOKORO, R_DOKORO, +(2<<5) + 1, _KA, L_DOKOROKA, R_DOKOROKA, +(0<<5) + 1, _MO, L_DOMO, R_DOMO, +0xff +}; + +static Uchar fzk_na[] = { +(0<<5) + 0, L_NA1, R_SHUUJO, +(0<<5) + 0, L_NA2, R_NA2, +(0<<5) + 1, _XA, L_NAA, R_SHUUJO, +(0<<5) + 1, _A, L_NAA, R_SHUUJO, +(0<<5) + 1, _I, L_NAI, R_NAI, +(1<<5) + 1, _DE, L_NAI, R_NAIDE, +(0<<5) + 2, _KA,_XTU, L_NAI, R_ONBIN1, +(1<<5) + 2, _RO,_U, L_NAI, R_KAROU, +(0<<5) + 2, _GA,_RA, L_NAGARA, R_NAGARA, +(2<<5) + 0, L_NAGARA2, R_NAGARA2, +(0<<5) + 2, _KI,_XYA, L_NAI, R_CUT, +(0<<5) + 1, _KU, L_NAI, R_NAKU, +(0<<5) + 2, _KE,_RE, L_NAI, R_KATEI3, +(0<<5) + 2, _SA,_I, L_NASAI, R_NASAI, +(1<<5) + 1, _RA, L_NASARU, R_MIZEN4, +(1<<5) + 1, _RI, L_NASARU, R_ITADAKI, +(1<<5) + 1, _RU, L_NASARU, R_SHUUSI, +(1<<5) + 1, _RE, L_NASARU, R_KATEI3, +(2<<5) + 1, _RU, L_NASARU, R_SHUUSI, +(0<<5) + 1, _ZO, L_NAZO, R_NAZO, +(0<<5) + 1, _XTU, L_NARU, R_ONBIN2, +(0<<5) + 1, _DO, L_NADO, R_NADO, +(0<<5) + 1, _YO, L_NA1, R_SHUUJO, +(0<<5) + 1, _RA, L_NARA, R_KATEI1, +(1<<5) + 0, L_NARU, R_MIZEN5, +(0<<5) + 1, _RI, L_NARI, R_NARI, +(1<<5) + 0, L_NARU, R_IKI, +(0<<5) + 1, _RU, L_NARU, R_SHUUSI, +(0<<5) + 1, _RE, L_NARU, R_IKE, +(0<<5) + 2, _RO,_U, L_NARU, R_AROU, +(0<<5) + 2, _NN,_KA, L_NANKA, R_NANKA, +(1<<5) + 1, _ZO, L_NANZO, R_NANZO, +(1<<5) + 1, _TE, L_NANTE, R_NANTE, +0xff +}; + +static Uchar fzk_ni[] = { +(0<<5) + 0, L_NI1, R_NI1, +(0<<5) + 0, L_NI2, R_NI2, +(0<<5) + 0, L_NI3, R_NI3, +(0<<5) + 2, _KU,_I, L_NIKUI, R_KSHUUSI, +(1<<5) + 2, _KA,_XTU, L_NIKUI, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_NIKUI, R_KAROU, +(1<<5) + 1, _KU, L_NIKUI, R_TAKU, +(1<<5) + 2, _KE,_RE, L_NIKUI, R_KATEI3, +(1<<5) + 1, _SA, L_NIKUI, R_FZKMEISI, +(0<<5) + 1, _TE, L_NITE, R_NITE, +(0<<5) + 2, _DE,_MO, L_NI1, R_MO1, +(0<<5) + 1, _MO, L_NIMO, R_NIMO, +0xff +}; + +static Uchar fzk_nu[] = { +(0<<5) + 0, L_NU, R_NU, +0xff +}; + +static Uchar fzk_ne[] = { +(0<<5) + 0, L_NE1, R_SHUUJO, +(0<<5) + 0, L_NE2, R_KATEI2, +(0<<5) + 1, _E, L_NEE, R_SHUUJO, +0xff +}; + +static Uchar fzk_no[] = { +(0<<5) + 0, L_NO1, R_NO1, +(0<<5) + 0, L_NO2, R_NO2, +(0<<5) + 1, _DE, L_NODE, R_NODE, +(0<<5) + 1, _NI, L_NONI, R_NONI, +(0<<5) + 1, _MI, L_NOMI, R_NOMI, +(1<<5) + 3, _NA,_RA,_ZU, L_NOMINRZ, R_NOMINRZ, +0xff +}; + +static Uchar fzk_ha[] = { +(0<<5) + 0, L_HA, R_HA, +(0<<5) + 1, _SI, L_HA, R_HASI, +(0<<5) + 1, _ZU, L_HAZU, R_HAZU, +0xff +}; + +static Uchar fzk_ba[] = { +(0<<5) + 0, L_BA, R_BA, +(0<<5) + 2, _KA,_SI, L_BAKARI, R_BAKARI, +(1<<5) + 1, _RI, L_BAKARI, R_BAKARI, +(0<<5) + 3, _XTU,_KA,_SI, L_BAKARI, R_BAKARI, +(2<<5) + 1, _RI, L_BAKARI, R_BAKARI, +0xff +}; + +static Uchar fzk_hu[] = { +(0<<5) + 2, _U,_DA, L_FUUDA, R_SOUDA, +(2<<5) + 1, _XTU, L_FUUDA, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_FUUDA, R_DAROU, +(1<<5) + 1, _DE, L_FUUDA, R_SOUDE, +(2<<5) + 1, _SI, L_FUUDA, R_DESHI, +(3<<5) + 1, _XYO, L_FUUDA, R_SHO, +(4<<5) + 1, _U, L_FUUDA, R_DESHOU, +(2<<5) + 1, _SU, L_FUUDA, R_SOUDESU, +(1<<5) + 1, _NA, L_FUUDA, R_SOUNA2, +(2<<5) + 1, _RA, L_FUUDA, R_KATEI1, +(1<<5) + 1, _NI, L_FUUDA, R_FUUNI, +0xff +}; + +static Uchar fzk_he[] = { +(0<<5)+0, L_HE, R_HE, +0xff +}; + +static Uchar fzk_be[] = { +(0<<5) + 2, _KA,_RA, L_BESI, R_BEKARA, +(0<<5) + 1, _KI, L_BESI, R_BEKI, +(0<<5) + 1, _KU, L_BESI, R_BEKU, +(0<<5) + 1, _SI, L_BESI, R_BESI, +0xff +}; + +static Uchar fzk_ho[] = { +(0<<5) + 1, _U, L_HOU, R_HOU, +(0<<5) + 1, _KA, L_HOKA, R_HOKA, +(0<<5) + 1, _DO, L_HODO, R_HODO, +0xff +}; + +static Uchar fzk_ma[] = { +(0<<5) + 1, _I, L_MAI, R_MAI, +(0<<5) + 1, _SI, L_MASU, R_DESHI, +(1<<5) + 0, L_MASU, R_MEIREI2, +(1<<5) + 1, _XYO, L_MASU, R_SHO, +(2<<5) + 1, _U, L_MASU, R_DESHOU, +(0<<5) + 1, _SU, L_MASU, R_MASU, +(1<<5) + 1, _RE, L_MASURE, R_KATEI2, +(0<<5) + 1, _SE, L_MASE, R_MEIREI1, +(1<<5) + 1, _NU, L_MASU, R_NU, +(1<<5) + 1, _NN, L_MASU, R_NN2, +(0<<5) + 1, _DE, L_MADE, R_MADE, +(0<<5) + 1, _MA, L_MAMA, R_MAMA, +0xff +}; + +static Uchar fzk_mi[] = { +(0<<5) + 0, L_YOUGEN, R_MI, +(0<<5) + 2, _TA,_I, L_MITAIDA, R_MITAI, +(2<<5) + 1, _DA, L_MITAIDA, R_MITAIDA, +(3<<5) + 1, _XTU, L_MITAIDA, R_ONBIN1, +(3<<5) + 2, _RO,_U, L_MITAIDA, R_DAROU, +(2<<5) + 1, _DE, L_MITAIDA, R_SOUDE, +(3<<5) + 1, _SI, L_MITAIDA, R_DESHI, +(4<<5) + 1, _XYO, L_MITAIDA, R_SHO, +(5<<5) + 1, _U, L_MITAIDA, R_DESHOU, +(3<<5) + 1, _SU, L_MITAIDA, R_SOUDESU, +(2<<5) + 1, _NA, L_MITAIDA, R_SOUNA2, +(3<<5) + 1, _RA, L_MITAIDA, R_KATEI1, +(2<<5) + 1, _NI, L_MITAIDA, R_FUUNI, +(0<<5) + 1, _YO, L_YOUGEN, R_MEIREI2, +(0<<5) + 1, _RU, L_YOUGEN, R_SHUUSI, +(0<<5) + 1, _RE, L_YOUGEN, R_KATEI2, +(0<<5) + 1, _RO, L_YOUGEN, R_MEIREI1, +0xff +}; + +static Uchar fzk_mo[] = { +(0<<5) + 0, L_MO1, R_MO1, +(0<<5) + 0, L_MO2, R_MO2, +(0<<5) + 2, _XTU,_TE, L_MOTTE, R_MOTTE, +(0<<5) + 1, _NO, L_MONO, R_MONO, +(0<<5) + 2, _RA,_I, L_YOUGEN, R_IKI, +(1<<5) + 1, _U, L_YOUGEN, R_SHUUSI, +(1<<5) + 1, _E, L_YOUGEN, R_IKE, +(1<<5) + 2, _O,_U, L_YOUGEN, R_AROU, +(1<<5) + 1, _XTU, L_YOUGEN, R_ONBIN2, +(1<<5) + 1, _WA, L_YOUGEN, R_MIZEN5, +(0<<5) + 1, _NN, L_WAYO, R_SHUUJO, +(1<<5) + 1, _KA, L_WAYO, R_SHUUJO, +0xff +}; + +static Uchar fzk_ya[] = { +(0<<5) + 0, L_YA1, R_YA1, +(0<<5) + 0, L_YA2, R_YA2, +(0<<5) + 2, _SU,_I, L_YASUI, R_KSHUUSI, +(1<<5) + 2, _KA,_XTU, L_YASUI, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_YASUI, R_KAROU, +(1<<5) + 1, _KU, L_YASUI, R_TAKU, +(1<<5) + 2, _KE,_RE, L_YASUI, R_KATEI3, +(1<<5) + 1, _SA, L_YASUI, R_FZKMEISI, +(0<<5) + 1, _XTU, L_YOUGEN, R_ONBIN2, +(0<<5) + 1, _RA, L_YARA, R_YARA, +(1<<5) + 0, L_YOUGEN, R_MIZEN5, +(0<<5) + 1, _RI, L_YOUGEN, R_IKI, +(0<<5) + 1, _RU, L_YOUGEN, R_SHUUSI, +(0<<5) + 1, _RE, L_YOUGEN, R_KATEI2, +(0<<5) + 2, _RO,_U, L_YOUGEN, R_AROU, +0xff +}; + +static Uchar fzk_yu[] = { +(0<<5) + 1, _E, L_YUE, R_YUE, +0xff +}; + +static Uchar fzk_yo[] = { +(0<<5) + 0, L_YO, R_SHUUJO, +(0<<5) + 1, _I, L_YOI, R_KSHUUSI, +(0<<5) + 1, _U, L_YOU, R_YOU1, +(1<<5) + 0, L_YOUDA, R_YOU2, +(1<<5) + 1, _DA, L_YOUDA, R_SOUDA, +(2<<5) + 1, _XTU, L_YOUDA, R_ONBIN1, +(2<<5) + 2, _RO,_U, L_YOUDA, R_DAROU, +(1<<5) + 1, _DE, L_YOUDA, R_SOUDE, +(2<<5) + 1, _SI, L_YOUDA, R_DESHI, +(3<<5) + 1, _XYO, L_YOUDA, R_SHO, +(4<<5) + 1, _U, L_YOUDA, R_DESHOU, +(2<<5) + 1, _SU, L_YOUDA, R_SOUDESU, +(1<<5) + 1, _NA, L_YOUDA, R_SOUNA2, +(2<<5) + 1, _RA, L_YOUDA, R_KATEI1, +(1<<5) + 1, _NI, L_YOUDA, R_FUUNI, +(0<<5) + 2, _KA,_XTU, L_YOI, R_ONBIN1, +(1<<5) + 2, _RO,_U, L_YOI, R_KAROU, +(0<<5) + 1, _KU, L_YOI, R_TAKU, +(0<<5) + 2, _KE,_RE, L_YOI, R_KATEI3, +(0<<5) + 1, _SA, L_YOI, R_FZKMEISI, +(0<<5) + 2, _XTU,_TE, L_YORU, R_YOTTE, +(0<<5) + 2, _NA,_XA, L_YO, R_SHUUJO, +(1<<5) + 1, _A, L_YO, R_SHUUJO, +(0<<5) + 1, _NE, L_YO, R_SHUUJO, +(0<<5) + 1, _RA, L_YORU, R_MIZEN4, +(0<<5) + 1, _RI, L_YORI, R_YORI1, +(1<<5) + 0, L_YORU, R_YORI2, +(0<<5) + 1, _RU, L_YORU, R_SHUUSI, +(0<<5) + 1, _RE, L_YORU, R_KATEI3, +0xff +}; + +static Uchar fzk_ra[] = { +(0<<5) + 2, _SI,_I, L_RASII, R_RASII, +(1<<5) + 2, _KA,_XTU, L_RASII, R_ONBIN1, +(1<<5) + 1, _KI, L_RASII, R_GOTOKI, +(1<<5) + 1, _KU, L_RASII, R_TAKU, +(1<<5) + 2, _XYU,_U, L_RASII, R_RASHUU, +(0<<5) + 1, _RE, L_RARERU, R_RARE, +(1<<5) + 1, _YO, L_RARERU, R_MEIREI2, +(1<<5) + 1, _RU, L_RARERU, R_SHUUSI, +(1<<5) + 1, _RE, L_RARERU, R_KATEI2, +(1<<5) + 1, _RO, L_RARERU, R_MEIREI1, +0xff +}; + +static Uchar fzk_re[] = { +(0<<5) + 0, L_RERU, R_RARE, +(0<<5) + 1, _YO, L_RERU, R_MEIREI2, +(0<<5) + 1, _RU, L_RERU, R_SHUUSI, +(0<<5) + 1, _RE, L_RERU, R_KATEI2, +(0<<5) + 1, _RO, L_RERU, R_MEIREI1, +0xff +}; + +static Uchar fzk_wa[] = { +(0<<5) + 0, L_WA, R_SHUUJO, +(0<<5) + 1, _KE, L_WAKE, R_WAKE, +(0<<5) + 1, _NE, L_WANE, R_SHUUJO, +(0<<5) + 1, _YO, L_WAYO, R_SHUUJO, +0xff +}; + +static Uchar fzk_nn[] = { +(0<<5) + 0, L_NN1, R_NN1, +(0<<5) + 0, L_NN2, R_NN2, +0xff +}; + + + +Uchar *fzkadr[] = { + 0, fzk_a, 0, fzk_i, 0, + fzk_u, 0, fzk_e, 0, fzk_o, + fzk_ka, fzk_ga, fzk_ki, 0, fzk_ku, + fzk_gu, fzk_ke, 0, fzk_ko, fzk_go, + fzk_sa, fzk_za, fzk_si, fzk_ji, fzk_su, + fzk_zu, fzk_se, fzk_ze, fzk_so, fzk_zo, + fzk_ta, fzk_da, fzk_ti, fzk_di, fzk_xtu, + fzk_tu, 0, fzk_te, fzk_de, fzk_to, + fzk_do, fzk_na, fzk_ni, fzk_nu, fzk_ne, + fzk_no, fzk_ha, fzk_ba, 0, 0, + 0, 0, fzk_hu, 0, 0, + fzk_he, fzk_be, 0, fzk_ho, 0, + 0, fzk_ma, fzk_mi, 0, 0, + fzk_mo, 0, fzk_ya, 0, fzk_yu, + 0, fzk_yo, fzk_ra, 0, 0, + fzk_re, 0, 0, fzk_wa, 0, + 0, fzk_wo, fzk_nn +}; diff --git a/kanakan/getkanji.c b/kanakan/getkanji.c new file mode 100644 index 0000000..c1cbe68 --- /dev/null +++ b/kanakan/getkanji.c @@ -0,0 +1,279 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: getkanji.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:49 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" + + + +Static Uchar *code2kanji(); +Int codesize(); + + + +Uchar *getkan_none(s, d, ym, yl, flg) +Uchar *s; +Uchar *d; +Uchar *ym; +Int yl; +Int flg; +{ + return d; +} + + + +Uchar *getkan_hira(s, d, ym, yl, flg) +Uchar *d; +Reg2 Uchar *ym; +Uchar *s; +Int yl; +Int flg; +{ + Reg1 Int cnt, csize; + + csize = codesize(*s); + + cnt = (*s & KanjiCodeMask) + 1; + + + if (flg && (s[csize] == KanjiStrEnd)) ym += (yl - cnt) * 2; + + + cnt *= 2; + while (cnt-- > 0) *d++ = *ym++; + + return d; +} + + + +Uchar *getkan_kata(s, d, ym, yl, flg) +Reg1 Uchar *d; +Reg2 Uchar *ym; +Uchar *s; +Int flg; +{ + Reg3 Int cnt, csize; + Reg4 Uchar ch; + + csize = codesize(*s); + + cnt = (*s & KanjiCodeMask) + 1; + + + if (flg && (s[csize] == KanjiStrEnd)) ym += (yl - cnt) * 2; + + + while (cnt-- > 0) { + + if (*ym == 0xa4) { + ch = *++ym; + if (0xa1 <= ch && ch <= 0xf3) { + *d++ = 0xa5; + } + else { + *d++ = 0xa4; + } + *d++ = ch; + ym++; + } + else { + *d++ = *ym++; + *d++ = *ym++; + } + } + + return d; +} + + + +Uchar *getkan_knj(s, d, ym, yl, flg) +Uchar *s; +Uchar *d; +Uchar *ym; +Int yl; +Int flg; +{ + + return code2kanji(askknj[*s & KnjAssyukuMask], d, ym, yl, flg); +} + + + +Uchar *getkan_ofs(s, d, ym, yl, flg) +Uchar *s; +Uchar *d; +Uchar *ym; +Int yl; +Int flg; +{ + + return code2kanji(dicbuf + ((*s & KanjiCodeMask) << 8) + *(s + 1), + d, ym, yl, flg); +} + + + +Uchar *getkan_norm(s, d, ym, yl, flg) +Uchar *s; +Uchar *d; +Uchar *ym; +Int yl; +Int flg; +{ + Reg2 Int i, csize; + Reg2 Uchar c; + + if (*s != 0) { + c = s[1]; + if (c & 0x80) + *d++ = SS3; + *d++ = *s | 0x80; + *d++ = c | 0x80; + } else { + *d++ = *s; + } + return d; +} + + + +Uchar *getkan_ascii(s, d, ym, yl, flg) +Uchar *s; +Uchar *d; +Uchar *ym; +Int yl; +Int flg; +{ + Reg2 Uchar c; + + c = s[1]; + if (c & 0x80) + *d++ = SS2; + *d++ = c; + + return d; +} + + + +Static Uchar *code2kanji(s, d, ym, yl, flg) +Uchar *s; +Uchar *d; +Uchar *ym; +Int yl; +Int flg; +{ + Reg2 Int csize; + + for ( ; ; ) { + csize = codesize(*s); + if (s[csize] == KanjiStrEnd) { + switch(*s & KanjiModeMask) { + case ZenHiraAssyuku: + d = getkan_hira(s, d, ym, yl, flg); break; + + case ZenKataAssyuku: + d = getkan_kata(s, d, ym, yl, flg); break; + + case OffsetAssyuku: + d = getkan_ofs(s, d, ym, yl, flg); break; + + case AiAttribute: + d = getkan_none(s, d, ym, yl, flg); break; + + case LeadingHankaku: + d = getkan_ascii(s, d, ym, yl, flg); break; + + case KanjiAssyuku: + d = getkan_knj(s, d, ym, yl, flg); break; + + default: + d = getkan_norm(s, d, ym, yl, flg); + } + break; + } + else + switch(*s & KanjiModeMask) { + case ZenHiraAssyuku: + d = getkan_hira(s, d, ym, yl, FALSE); break; + + case ZenKataAssyuku: + d = getkan_kata(s, d, ym, yl, FALSE); break; + + case OffsetAssyuku: + d = getkan_ofs(s, d, ym, yl, FALSE); break; + + case AiAttribute: + d = getkan_none(s, d, ym, yl, FALSE); break; + + case LeadingHankaku: + d = getkan_ascii(s, d, ym, yl, FALSE); break; + + case KanjiAssyuku: + d = getkan_knj(s, d, ym, yl, FALSE); break; + + default: + d = getkan_norm(s, d, ym, yl, FALSE); + } + + s += codesize(*s); + } + + return d; +} + + + +Int getkanji(ym, yl, ptr, buf) +Uchar *ym; +Int yl; +Uchar *ptr; +Uchar *buf; +{ + Uchar *q; + + + q = code2kanji(ptr, buf, ym, yl, TRUE); + + + return q - buf; +} + diff --git a/kanakan/getrank.c b/kanakan/getrank.c new file mode 100644 index 0000000..ff9e634 --- /dev/null +++ b/kanakan/getrank.c @@ -0,0 +1,195 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: getrank.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:50 $ + */ + + + + + +#include "sj_kcnv.h" + + + +STDYIN *srchstdy(); + + + +Static Void setstynum(), setnspr(), regetrank(); + + + +Void getrank() +{ + + trank = nrank = 1; + + + setstynum(); + + + regetrank(); +} + + + +Static Void setstynum() +{ + KHREC *kptr; + STDYIN *sptr; + Int count; + + + for (kptr = kouhotbl, count = khcount ; count-- ; kptr++) { + + sptr = srchstdy(kptr -> clrec -> jnode -> jseg, kptr -> offs, + kptr -> clrec -> jnode -> dicid); + + + if (!sptr) continue; + + + setnspr(kptr, sptr); + } +} + + + +Static Void setnspr(kptr, sptr) +KHREC *kptr; +STDYIN *sptr; +{ + KHREC *ptr; + Int keepnm; + TypeStyNum styno; + + + styno = kptr -> styno = sptr -> styno; + + + keepnm = trank; + + + for (ptr = kouhotbl ; ptr < kptr ; ptr++) { + + + if (styno < ptr -> styno) { + + ptr -> rank++; + + + keepnm--; + } + + + else if (styno == ptr -> styno) { + + + if (kptr -> sttfg && kptr -> ka_fg) { + + + if ((sptr -> sttkj == kptr -> sttkj) && + (sptr -> ka_kj == kptr -> ka_kj)) { + ptr -> rank++; + keepnm--; + } + } + + else if (kptr -> sttfg) { + + + if (sptr -> sttkj == kptr -> sttkj) { + ptr -> rank++; + keepnm--; + } + } + + else if (kptr -> ka_fg) { + + + if (sptr -> ka_kj == kptr -> ka_kj) { + ptr -> rank++; + keepnm--; + } + } + } + } + + + kptr -> rank = (Uchar)keepnm; + trank++; + + + if (keepnm <= nrank) nrank++; + + + if (sptr -> nmflg && (nrank > keepnm)) nrank = keepnm; +} + + + +Static Void regetrank() +{ + KHREC *kptr; + Int count; + Int tmp; + + + if (nrank < trank) { + + tmp = nrank; + + + trank += nkhcount; + } + + else { + nkhcount = tmp = 0; + } + + + for (count = khcount, kptr = kouhotbl ; count-- ; kptr++) { + + if (!(kptr -> rank)) { + if (tmp && kptr -> mode && !(kptr -> offs)) { + kptr -> rank = (Uchar)tmp++; + } + else + kptr -> rank = (Uchar)trank++; + } + + + else if ((Short)kptr -> rank >= nrank) + kptr -> rank += (Uchar)nkhcount; + } +} diff --git a/kanakan/global.c b/kanakan/global.c new file mode 100644 index 0000000..b50827e --- /dev/null +++ b/kanakan/global.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: global.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/12/09 11:27:06 $ + */ + + + +#include +#include +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" +#include "sj_var.h" +#include "sj_struct.h" +#include "sj_dict.h" +#include "Const.h" +#include "Struct.h" + +Global *global_work_base; + +Global *work_base; + +STDY *stdy_base; + +int serv_errno; + diff --git a/kanakan/hzstrlen.c b/kanakan/hzstrlen.c new file mode 100644 index 0000000..36034ec --- /dev/null +++ b/kanakan/hzstrlen.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: hzstrlen.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:52 $ + */ + + + + +#include "sj_euc.h" +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" +#include "sj_dict.h" + +Int euc_codesize(c) +Reg1 Uchar c; +{ + if ((c & KanjiModeMask) == 0x90) { + return 1; + } else if (isknj1(c)) { + return 2; + } else if (c == SS3) { + return 3; + } else { + return 1; + } +} + +Int hzstrlen(ptr, len) +Reg1 Uchar *ptr; +Reg2 Int len; +{ + Uchar *head; + + + head = ptr; + + while (len-- > 0) ptr += euc_codesize(*ptr); + + + return (ptr - head); +} diff --git a/kanakan/init.c b/kanakan/init.c new file mode 100644 index 0000000..f1b908d --- /dev/null +++ b/kanakan/init.c @@ -0,0 +1,86 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: init.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:54 $ + */ + + + +#include "sj_kcnv.h" + +Void seg_count(dict) +DICT *dict; +{ + Uchar *p; + Uchar *q; + TypeDicSeg segcnt = 0; + + if (dict-> getidx) { + (*dict->getidx)(dict); + + p = idxbuf; + q = p + dict->idxlen; + while (p < q && *p) { + segcnt++; + while (*p++) ; + } + } + + dict->segunit = (segcnt == 0) ? 1 : segcnt; +} + +Void mkidxtbl(dict) +DICT *dict; +{ + Uchar *p; + TypeDicSeg seg; + + if (!dict->getidx || !dict->getofs) return; + + seg = 0; + + (*dict->getidx)(dict); + (*dict->getofs)(dict); + + idxofs[0] = 0; + for (p = idxbuf ; p < idxbuf + dict->idxlen && seg < dict->segunit ; ) { + idxofs[seg++] = p - idxbuf; + while (*p++) ; + } +} + +Void initwork() +{ + jrt1st = jrt2nd = maxjptr = (JREC *)0; + clt1st = clt2nd = maxclptr = (CLREC *)0; +} + diff --git a/kanakan/istrcmp.c b/kanakan/istrcmp.c new file mode 100644 index 0000000..880a678 --- /dev/null +++ b/kanakan/istrcmp.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: istrcmp.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:55 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" + +Int istrcmp(yomip, idxp, ylen, ilen) +Reg1 Uchar *yomip; +Reg2 Uchar *idxp; +Reg3 Int ylen; +Reg4 Int ilen; +{ + for (;;) { + + if ((ilen | ylen) == 0) return MATCH; + + if (ilen == 0) return UNDER; + + if ((ylen == 0) || (*yomip < *idxp)) return OVER; + + if (*yomip > *idxp) return UNDER; + + yomip++; + idxp++; + ylen--; + ilen--; + } +} + diff --git a/kanakan/memcpy.c b/kanakan/memcpy.c new file mode 100644 index 0000000..2128c8f --- /dev/null +++ b/kanakan/memcpy.c @@ -0,0 +1,57 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: memcpy.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:56 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" + +Void memcpy (src, dst, n) +Reg1 Uchar *src; +Reg2 Uchar *dst; +Reg3 Int n; +{ + while (n-- > 0) *dst++ = *src++; +} + +Void sstrncpy(src, dst, n) +Reg2 Uchar *src; +Reg1 Uchar *dst; +Reg3 Int n; +{ + while (n-- > 0) *dst++ = *src++; + *dst = 0; +} + diff --git a/kanakan/memory.c b/kanakan/memory.c new file mode 100644 index 0000000..579a0df --- /dev/null +++ b/kanakan/memory.c @@ -0,0 +1,151 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: memory.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:58 $ + */ + + + +#include "sj_kcnv.h" + +Void free_jrec(), free_clrec(); + +JREC *free_jlst(p) +Reg1 JREC *p; +{ + JREC *jpk; + JREC *jp; + JREC *jn; + + jp = NULL; + + for ( ; p ; p = jn) { + + jn = p -> jsort; + + if (p -> count) { + if (jp) + jp -> jsort = p; + else + jpk = p; + jp = p; + } + + else { + free_jrec(p); + } + } + + if (jp) jp -> jsort = NULL; + + return jpk; +} + +CLREC *free_clst(p, l) +Reg1 CLREC *p; +Int l; +{ + CLREC *cpk; + CLREC *cp; + CLREC *cn; + Int i = FALSE; + + cp = cpk = NULL; + + for ( ; p ; p = cn) { + + cn = p -> clsort; + + if ((Int)p -> cllen == l) { + if (p == selcl) { + if (cp) { + p -> clsort = cpk; + cpk = p; + } + else + cpk = cp = p; + } + else { + if (cp) + cp -> clsort = p; + else + cpk = p; + cp = p; + } + } + + else { + (p -> jnode -> count)--; + + free_clrec(p); + } + } + + if (cp) cp -> clsort = NULL; + + return cpk; +} + +Void free_clall(p) +Reg1 CLREC *p; +{ + CLREC *next; + + while (p) { + (p -> jnode -> count)--; + next = p -> clsort; + free_clrec(p); + p = next; + } +} + +Void free_jall(p) +Reg1 JREC *p; +{ + JREC *next; + + while (p) { + next = p -> jsort; + free_jrec(p); + p = next; + } +} + +Void freework() +{ + free_clall(maxclptr); + clt1st = maxclptr = NULL; + + free_jall(maxjptr); + jrt1st = maxjptr = NULL; +} + diff --git a/kanakan/memset.c b/kanakan/memset.c new file mode 100644 index 0000000..d1524ad --- /dev/null +++ b/kanakan/memset.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: memset.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:01:59 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" + +Void memset(p, c, n) +Reg1 Uchar *p; +Reg3 Uchar c; +Reg2 Int n; +{ + while (n-- > 0) *p++ = c; +} + diff --git a/kanakan/mk2claus.c b/kanakan/mk2claus.c new file mode 100644 index 0000000..cb6d666 --- /dev/null +++ b/kanakan/mk2claus.c @@ -0,0 +1,163 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: mk2claus.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:00 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_right.h" + +Int terminate(), priority(); +Void mkjiritu(), mkbunsetu(), wakachi(), pritiny(); +Void free_clall(), free_jall(); + +Static Int set2nd(clrec) +CLREC *clrec; +{ + + CLREC *rec2; + + mkjiritu(DO_IKKATU | DO_CLSTUDY); + + mkbunsetu(); + + if (!maxclptr) { + wakachi(); + return clrec -> cllen; + } + + for (rec2 = maxclptr ; rec2 ; rec2 = rec2 -> clsort) { + if (terminate(rec2->right, cnvstart+rec2->cllen) != SHU) + break; + } + + return rec2 ? (clrec -> cllen + rec2 -> cllen) : (clrec -> cllen); +} + +Void mk2claus() +{ + Uchar *keepptr; + Int keeplen; + CLREC *clrec; + Int len; + Int save2ln; + Int prty; + Int maxprty; + Int count; + Int prty2; + + prty = maxprty = prty2 = 0; + + clt2nd = maxclptr = NULL; + jrt2nd = maxjptr = NULL; + + selcl = clt1st; + + if (selcl -> right == R_FZKKGU) { + pritiny(); + return; + } + + if (cnvlen == selcl -> cllen) { + pritiny(); + return; + } + + keepptr = cnvstart; + keeplen = cnvlen; + + len = count = 0; + for (clrec = selcl ; clrec && count < 5 ; clrec = clrec -> clsort) { + + cnvstart = keepptr + clrec -> cllen; + cnvlen = keeplen - clrec -> cllen; + + if (len != clrec -> cllen) { + if (clt2nd != maxclptr) { + free_clall(maxclptr); + free_jall(maxjptr); + } + + save2ln = set2nd(clrec); + + count++; + len = clrec -> cllen; + prty2 = 0; + } + + if (Termtbl[clrec -> right] & T_SHUUJO) + clrec -> cl2len = (Uchar)len; + else + clrec -> cl2len = (Uchar)save2ln; + + if (selcl -> cl2len > clrec -> cl2len) continue; + + prty = priority(clrec) - prty2; + + prty2++; + + if (selcl -> cl2len == clrec -> cl2len) { + if (clrec -> cllen == nextcllen) { + if (selcl -> cllen != nextcllen) + ; + else if (prty <= maxprty) + continue; + } + + else if (prty <= maxprty) + continue; + } + + selcl = clrec; + maxprty = prty; + + if (clt2nd == maxclptr) continue; + + free_clall(clt2nd); + free_jall(jrt2nd); + jrt2nd = maxjptr; + clt2nd = maxclptr; + } + + if (clt2nd != maxclptr) { + free_clall(maxclptr); + maxclptr = NULL; + free_jall(maxjptr); + maxjptr = NULL; + } + + cnvstart = keepptr; + cnvlen = keeplen; +} + diff --git a/kanakan/mkbunset.c b/kanakan/mkbunset.c new file mode 100644 index 0000000..4ada145 --- /dev/null +++ b/kanakan/mkbunset.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: mkbunset.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:02 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_hinsi.h" + +CLREC *alloc_clrec(); +Uchar TFar *getstb(); +Int terminate(), setconj(); +Void setclrec(), srchfzk(), memset(); + +Void mkbunsetu() +{ + Reg1 JREC *jrec; + TypeGram hinsi; + Uchar TFar *cnj; + CREC crec[4]; + Int count; + TypeCnct right; + Uchar *next; + int i; + + fzkcount = 0; + + maxclptr = NULL; + + jrec = maxjptr; + + while (jrec) { + + if (jrec -> stbofs && (cnj = getstb(jrec -> hinsi))) + hinsi = StbHinsi(cnj + jrec -> stbofs - 1); + else + hinsi = jrec -> hinsi; + + if (right = Connadr[hinsi]) { + gobilen = 0; + next = cnvstart + jrec->jlen; + + if (terminate(right, next)) { + fzk_ka_flg = 0; + setclrec(jrec, next, right); + } + + srchfzk(jrec, next, right, 0); + } + + else if (count = setconj(hinsi, jrec, crec)) { + + for (i = count ; i-- > 0 ; ) { + + right = crec[i].right; + gobilen = crec[i].len; + next = cnvstart + jrec->jlen + gobilen; + + if (terminate(right, next)) { + fzk_ka_flg = 0; + setclrec(jrec, next, right); + } + + srchfzk(jrec, next, right, 0); + } + } + + jrec = jrec -> jsort; + } +} + + +CLREC *argclrec(len) +Int len; +{ + Reg1 CLREC *ptr; + Reg2 CLREC *rec; + Reg3 CLREC *child; + + rec = alloc_clrec(); + + if (!rec) { + if (!maxclptr) return NULL; + + ptr = NULL; + rec = maxclptr; + while (child = rec -> clsort) { + ptr = rec; + rec = child; + } + + if (len <= (Int) rec -> cllen) return NULL; + + if (ptr) + ptr -> clsort = NULL; + else + maxclptr = NULL; + if (rec -> jnode) (rec -> jnode)--; + } + + memset((Uchar *)rec, 0, sizeof(*rec)); + rec -> cllen = rec -> cl2len = (Uchar)len; + + if (!maxclptr) { + maxclptr = rec; + return rec; + } + + ptr = maxclptr; + + if (((Int)ptr -> cllen < len) || + (((Int)ptr -> cllen == len) && + (ptr -> jnode -> hinsi == TANKANJI))) { + rec -> clsort = maxclptr; + maxclptr = rec; + return rec; + } + + while (child = ptr -> clsort) { + if ((Int)child -> cllen < len || + ((Int)child -> cllen == len && + child->jnode->hinsi == TANKANJI)){ + ptr -> clsort = rec; + rec -> clsort = child; + return rec; + } + else + ptr = child; + } + + + ptr -> clsort = rec; + return rec; +} + diff --git a/kanakan/mkjiritu.c b/kanakan/mkjiritu.c new file mode 100644 index 0000000..d806a17 --- /dev/null +++ b/kanakan/mkjiritu.c @@ -0,0 +1,196 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: mkjiritu.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:03 $ + */ + + + +#include "sj_kcnv.h" + +Uchar *srchdict(); +Uchar TFar *getstb(); +Int srchhead(), sstrncmp(); +JREC *alloc_jrec(); +Void srchnum(), setubi(), setjrec(); +Void setcrec(), memcpy(), memset(); + +Static Void dic_mu(), dic_cl(); + +Void mkjiritu(mode) +Int mode; +{ + Uchar chkind1; + Uchar chkind2; + JREC *jrec; + Uchar TFar *stb; + + headcode = headlen = 0; + + maxjptr = NULL; + + chkind1 = Chrtbl[*cnvstart]; + + if (chkind1 & DICTOP) { + dic_mu(mode); + } + + if (mode & DO_CLSTUDY) dic_cl(); + + srchnum(); + + if (srchhead() && cnvlen != headlen) { + cnvstart += headlen; + cnvlen -= headlen; + + chkind2 = Chrtbl[*cnvstart]; + + if (chkind2 & DICTOP) { + dic_mu(mode); + } + + if (headcode == SETTOU_DAI) { + srchnum(); + } + + cnvstart -= headlen; + cnvlen += headlen; + } + + for (jrec = maxjptr ; jrec ; jrec = jrec -> jsort) { + if (stb = getstb(jrec -> hinsi)) + setubi(jrec, stb); + } +} + +Static Void dic_mu(mode) +Int mode; +{ + Uchar *tagp; + DICTL *dp; + + for (dp = dictlist ; dp ; dp = dp -> next) { + curdict = dp -> dict; + dicinl = 1; + dicsaml = 0; + prevseg = -1; + + while (tagp = srchdict(tagp)) setjrec(tagp, mode); + } +} + +JREC *argjrec(len, rec) +Int len; +JREC *rec; +{ + Reg1 JREC *ptr; + Reg2 JREC *jrec; + Reg3 JREC *child; + + jrec = alloc_jrec(); + + if (!jrec) { + if (!maxjptr) return NULL; + + ptr = NULL; + jrec = maxjptr; + while (child = jrec -> jsort) { + ptr = jrec; + jrec = child; + } + + if (len <= (Int) jrec -> jlen) return NULL; + + if (ptr) + ptr -> jsort = NULL; + else + maxjptr = NULL; + } + + if (rec) + memcpy((Uchar *)rec, (Uchar *)jrec, sizeof(JREC)); + else + memset((Uchar *)jrec, 0, sizeof(*jrec)); + jrec -> jlen = (Uchar)len; + + if (!maxjptr) { + maxjptr = jrec; + jrec -> jsort = NULL; + return jrec; + } + + ptr = maxjptr; + + if ((Int)ptr -> jlen < len) { + jrec -> jsort = maxjptr; + maxjptr = jrec; + return jrec; + } + + while (child = ptr -> jsort) { + if ((Int)child -> jlen < len) break; + + ptr = child; + } + + ptr -> jsort = jrec; + jrec -> jsort = child; + return jrec; +} + +Static Void dic_cl() +{ + Uchar *p; + Ushort pos; + Int len; + Int cmp; + + if (!StudyExist()) return; + + if ((pos = ClStudyIdx[(Short) *cnvstart / ClStudyStep]) != (Ushort)-1) { + + for (p = ClStudyDict + pos ; !iseocl(p) ; p = ClNextTag(p)) { + cmp = sstrncmp(cnvstart, (Uchar TFar *)ClYomiPos(p), + len = ClYomiLen(p)); + + if (cmp == MATCH) { + if (!isdpnd(*(cnvstart + len))) { + setcrec(p); + } + } + + else if (cmp == OVER) + break; + } + } +} + diff --git a/kanakan/mkkouho.c b/kanakan/mkkouho.c new file mode 100644 index 0000000..81bae82 --- /dev/null +++ b/kanakan/mkkouho.c @@ -0,0 +1,562 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: mkkouho.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:04 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" +#include "sj_hinsi.h" +#include "sj_suuji.h" +#include "sj_dict.h" + + + +Uchar *skipkstr(); +Void setkouho(), setwdnum(), get_askknj(); +Int seldict(), codesize(); + + + +Static Void getkhtbl(), cl_kanji(); +Static Int diffknj(); +Static Void cl_numcmn(); +Static Uchar *makekan(); + + + +Void mkkouho() +{ + CLREC *clrec; + Int keeplen; + + + khcount = nkhcount = 0; + + + keeplen = clt1st -> cllen; + + + clrec = clt1st; + + + do { + getkhtbl(clrec); + clrec = clrec -> clsort; + } while (clrec && (keeplen == clrec -> cllen)); +} + + + +Static Void getkhtbl(clrec) +CLREC *clrec; +{ + JREC *jrec; + + + jrec = clrec -> jnode; + + + switch (jrec -> class) { + case C_DICT: + + cl_kanji(jrec, clrec); + break; + + case C_N_ARABIA: + case C_N_ARACMA: + case C_N_KAZU: + case C_N_SUUJI: + case C_N_NANSUU: + case C_N_KANKURA: + case C_N_ARAKURA: + case C_N_KAZULONG: + case C_N_KAZULCMA: + case C_N_SUUJILONG: + cl_numcmn(jrec, clrec); + break; + + case C_BUNSETU: + + break; + + case C_MINASI: + case C_WAKACHI: + + setkouho(clrec, (TypeDicOfs)0, 0); + break; + } +} + + + +Static Void cl_kanji(jrec, clrec) +JREC *jrec; +CLREC *clrec; +{ + Uchar *ptr; + Int kcount = khcount; + + + if (seldict(jrec -> dicid)) { + (*curdict->getdic)(curdict, jrec -> jseg); + ptr = dicbuf + jrec->jofsst + 1; + + get_askknj(); + + + while (*ptr != HinsiBlkTerm) { + + + if (diffknj(jrec, ptr, kcount)) { + + setkouho(clrec, (TypeDicOfs)(ptr - dicbuf), 0); + } + + + ptr = skipkstr(ptr); + } + } + else { + + setkouho(clrec, (TypeDicOfs)1, 0); + } +} + + + +Uchar *makekan_none(s, d, flg) +Uchar *s; +Uchar *d; +Int flg; +{ + return d; +} + + + +Uchar *makekan_1byte(s, d, flg) +Uchar *s; +Uchar *d; +Int flg; +{ + if ((*s & KanjiModeMask) == ZenHiraAssyuku) + *d++ = 0x10 | (*s & KnjAssyukuMask); + else + *d++ = 0x90 | (*s & KnjAssyukuMask); + + if (flg) *d++ = KanjiStrEnd; + return d; +} + + + +Uchar *makekan_knj(s, d, flg) +Uchar *s; +Uchar *d; +Int flg; +{ + + return makekan(askknj[*s & KnjAssyukuMask], d, flg); +} + + + +Uchar *makekan_ofs(s, d, flg) +Uchar *s; +Uchar *d; +Int flg; +{ + + return makekan(dicbuf + ((*s & KanjiCodeMask) << 8) + *(s + 1), + d, flg); +} + + + +Uchar *makekan_norm(s, d, flg) +Uchar *s; +Uchar *d; +Int flg; +{ + Reg1 Int i, csize; + Reg1 Uchar c; + + if (*s != 0) { + c = s[1]; + if (c & 0x80) + *d++ = SS3; + *d++ = *s | 0x80; + *d++ = c | 0x80; + } else { + *d++ = *s; + } + if (flg) *d++ = KanjiStrEnd; + + return d; +} + + + +Uchar *makekan_ascii(s, d, flg) +Uchar *s; +Uchar *d; +Int flg; +{ + Reg1 Uchar c; + + c = s[1]; + if (c & 0x80) + *d++ = SS2; + *d++ = c; + + if (flg) *d++ = KanjiStrEnd; + + return d; +} + + + +Static Uchar *makekan(s, d, flg) +Uchar *s; +Uchar *d; +Int flg; +{ + Reg1 Int csize; + + for ( ; ; ) { + csize = codesize(*s); + if (s[csize] == KanjiStrEnd) { + switch(*s & KanjiModeMask) { + case ZenHiraAssyuku: + d = makekan_1byte(s, d, flg); break; + + case ZenKataAssyuku: + d = makekan_1byte(s, d, flg); break; + + case OffsetAssyuku: + d = makekan_ofs(s, d, flg); break; + + case AiAttribute: + d = makekan_none(s, d, flg); break; + + case LeadingHankaku: + d = makekan_ascii(s, d, flg); break; + + case KanjiAssyuku: + d = makekan_knj(s, d, flg); break; + + default: + d = makekan_norm(s, d, flg); + } + break; + } + else + switch(*s & KanjiModeMask) { + case ZenHiraAssyuku: + d = makekan_1byte(s, d, FALSE); break; + + case ZenKataAssyuku: + d = makekan_1byte(s, d, FALSE); break; + + case OffsetAssyuku: + d = makekan_ofs(s, d, FALSE); break; + + case AiAttribute: + d = makekan_none(s, d, FALSE); break; + + case LeadingHankaku: + d = makekan_ascii(s, d, FALSE); break; + + case KanjiAssyuku: + d = makekan_knj(s, d, FALSE); break; + + default: + d = makekan_norm(s, d, FALSE); + } + + s += codesize(*s); + } + + return d; +} + + + +#define PEND 2 +#define QEND 1 +Static Int sameknj(p, plen, q, qlen) +Reg1 Uchar *p; +Uchar plen; +Reg2 Uchar *q; +Uchar qlen; +{ + Int i; + Int j; + Int endf = 0; + Int brkf; + extern Int euc_codesize(); + + do { + + if ((i = euc_codesize(*p)) != euc_codesize(*q)) return FALSE; + + + brkf = 0; + for (j = 0; j < i; j++) { + if (p[j] != q[j] ) { + brkf = 1; + break; + } + } + if (brkf) break; + + + if (p[i] == KanjiStrEnd) endf += PEND; + if (q[i] == KanjiStrEnd) endf += QEND; + + + p += i; + q += i; + } while (!endf); + + switch (endf) { + + case (PEND | QEND): + + if (plen == qlen) return TRUE; + break; + + + case PEND: + i = plen; + plen = qlen; + qlen = i; + p = q; + + + case QEND: + if (p[euc_codesize(*p)] != KanjiStrEnd) break; + if ((*p & KanjiModeMask) != 0x10 ) break; + if (qlen != plen - (*p & KanjiCodeMask) - 1) break; + return TRUE; + + + default: + if (q[euc_codesize(*q)] != KanjiStrEnd) break; + if (p[euc_codesize(*p)] != KanjiStrEnd) break; + if ((*q & KanjiModeMask) != 0x10 ) break; + if ((*p & KanjiModeMask) != 0x10 ) break; + if (plen - (*p & KanjiCodeMask) != qlen - (*q & KanjiCodeMask)) + break; + return TRUE; + } + + return FALSE; +} +#undef PEND +#undef QEND + + + +Static Int diffknj(jrec, ptr, num) +JREC *jrec; +Uchar *ptr; +Int num; +{ + KHREC *kptr; + JREC *jptr; + Int i; + Uchar kbuf1[MaxWdKanjiLen]; + Uchar kbuf2[MaxWdKanjiLen]; + + + if (jrec -> hinsi == TANKANJI) return TRUE; + + + makekan(ptr, kbuf1, TRUE); + + + for (i = 0, kptr = kouhotbl ; i < num ; i++, kptr++) { + + if ((jptr = kptr -> clrec -> jnode) == jrec) + + return FALSE; + + + if (jptr -> hinsi == TANKANJI) continue; + + + if (jptr -> class != jrec -> class) continue; + + + if (jptr -> dicid != jrec -> dicid) continue; + + + if (jptr -> jseg != jrec -> jseg) continue; + + + if (jptr -> sttofs != jrec -> sttofs) continue; + + + if (jptr -> stbofs != jrec -> stbofs) continue; + + + makekan(dicbuf + kptr -> offs, kbuf2, TRUE); + + + if (sameknj(kbuf1, jrec -> jlen, kbuf2, jptr -> jlen)) + return FALSE; + } + + + return TRUE; +} + + + + +Static Int chrck_numtbl(flg, cond) +Ushort flg; +Ushort cond; +{ + Ushort must; + + if (cond = SelNumCond(cond)) { + if (must = (cond & SelNumMust)) { + if ((flg & must) != must) return FALSE; + cond &= ~must; + } + if (cond && !(cond & flg)) return FALSE; + } + + return TRUE; +} + + + +Int sel_sjmode(jrec) +JREC *jrec; +{ + Ushort i; + Ushort TFar *p; + Ushort TFar *q; + + switch (jrec -> class) { + case C_N_ARABIA: + case C_N_ARACMA: + case C_N_KAZU: + case C_N_SUUJI: + case C_N_NANSUU: + case C_N_KANKURA: + case C_N_ARAKURA: + case C_N_KAZULONG: + case C_N_KAZULCMA: + case C_N_SUUJILONG: + p = q = Selsjadrs(jrec->class - C_N_ARABIA); + break; + + default: + return SelArb; + } + + + while ((i = *p++) != SelNumTerm) { + + if (chrck_numtbl(jrec -> flags, i)) break; + } + + if (i == SelNumTerm) i = *q; + + return SelNumFunc(i); +} + + + +Static Void cl_numcmn(jrec, clrec) +JREC *jrec; +CLREC *clrec; +{ + Uchar *p; + Int i; + Ushort j; + Ushort TFar *tbl; + + + p = cnvstart; + if ((i = jrec -> sttofs) == SETTOU_DAI) + p += SttYomiLen(Settou_ptr(i)); + else if (i == SETTOU_KIGOU) + p++; + + + if (jrec -> jofsst) { + + i = sel_sjmode(jrec); + + + if (seldict(jrec -> dicid)) { + (*curdict->getdic)(curdict, jrec -> jseg); + + + p = dicbuf + jrec->jofsst + 1; + + + while (*p != HinsiBlkTerm) { + + setkouho(clrec, (TypeDicOfs)(p - dicbuf), i); + + + p = skipkstr(p); + } + } + else { + + setkouho(clrec, (TypeDicOfs)1, i); + } + } + + else { + + tbl = Selsjadrs(jrec->class - C_N_ARABIA); + while ((j = *tbl++) != SelNumTerm) { + + if (!chrck_numtbl(jrec -> flags, j)) continue; + + + setkouho(clrec, (TypeDicOfs)0, (Int)SelNumFunc(j)); + } + } +} diff --git a/kanakan/mknumber.c b/kanakan/mknumber.c new file mode 100644 index 0000000..37e7da2 --- /dev/null +++ b/kanakan/mknumber.c @@ -0,0 +1,494 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: mknumber.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:05 $ + */ + + + + + +#include "sj_kcnv.h" +#include "sj_yomi.h" +#include "sj_suuji.h" + + + +Void setwdnum(); +Int setucnum(); + + + +Static Int word2char(wd, tbl, keta, flg) +Ushort wd; +Uchar TFar *tbl; +Int keta; +Int flg; +{ + Int mask; + Int num; + Uchar TFar *src; + + for (mask = 0x1000 ; mask ; mask >>= 4) { + + switch (num = (unsigned int)wd / mask) { + case 0: + + break; + + case _Num0: + + if (!flg) break; + + default: + src = tbl + (num - _Num0) * 2; + *kanjitmp++ = *src++; + *kanjitmp++ = *src; + flg = TRUE; + + if (keta && !(keta % 3)) { + *kanjitmp++ = CommaHigh; + *kanjitmp++ = CommaLow; + } + } + if (keta) keta--; + + + wd &= (mask - 1); + } + + return flg; +} + + + +Static Void words2num(wd, tbl, flgc) +Ushort *wd; +Uchar TFar *tbl; +Int flgc; +{ + Int i; + Int keta; + Int flg; + Uchar *kp = kanjitmp; + + if (flgc) { + keta = NumKetaLength - 1; + flg = FALSE; + } + else { + keta = 0; + flg = TRUE; + } + + for (i = NumWordBuf ; i-- > 0 ; ) { + flg = word2char(*(wd + i), tbl, keta, flg); + if (keta) keta -= 4; + } + + + if (kp == kanjitmp) { + + *kanjitmp++ = *tbl++; + *kanjitmp++ = *tbl; + } +} + + + +Void num_type00(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num1tbl, FALSE); +} + + + +Void num_type01(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num1tbl, FALSE); +} + + + +Void num_type02(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num1tbl, TRUE); +} + + + +Void num_type03(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num2tbl, FALSE); +} + + + +Void num_type04(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num2tbl, FALSE); +} + + + +Void num_type05(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num2tbl, TRUE); +} + + + +Void num_type06(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num3tbl, FALSE); +} + + + +Void num_type07(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + words2num(num, Num3tbl, FALSE); +} + + + +Static Void kan_num(wd, tbl1, tbl2) +Ushort *wd; +Uchar TFar *tbl1; +Uchar TFar *tbl2; +{ + Int ii; + Ushort tmp; + Int mask; + Int num; + Int flg; + Uchar TFar *kurai1; + Uchar TFar *kurai2; + Uchar TFar *src; + Uchar *keep = kanjitmp; + + + kurai2 = Num6tbl - 2; + mask = 0; + wd += NumWordBuf - 1; + flg = FALSE; + + + for (ii = NumKetaLength ; ii-- > 0 ; ) { + + if (!mask) { + + if (flg) { + *kanjitmp++ = *kurai2++; + *kanjitmp++ = *kurai2++; + } + else + kurai2 += 2; + + mask = 0x1000; + tmp = *wd--; + flg = FALSE; + kurai1 = tbl2; + } + + + if ((num = (unsigned int)tmp / mask) > _Num0) { + + if ((num != _Num1) || !*kurai1) { + src = tbl1 + (num - _Num0) * 2; + *kanjitmp++ = *src++; + *kanjitmp++ = *src; + } + + + if (*kurai1) { + *kanjitmp++ = *kurai1++; + *kanjitmp++ = *kurai1++; + } + flg = TRUE; + } + + else + kurai1 += 2; + + + tmp &= (mask - 1); + mask >>= 4; + } + + + if (kanjitmp == keep) { + *kanjitmp++ = *tbl1++; + *kanjitmp++ = *tbl1; + } +} + + + +Void num_type08(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + kan_num(num, Num2tbl, Num4tbl); +} + + + +Void num_type09(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Ushort num[NumWordBuf]; + + + setwdnum(s1, (Int)jrec -> numlen, num); + + + kan_num(num, Num3tbl, Num5tbl); +} + + + +Void num_type10(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Int i; + + + for (i = jrec -> numlen ; i > 0 ; i--) { + + if (Chrtbl[*s1++] & NUMBER) { + *kanjitmp++ = *s2++; + *kanjitmp++ = *s2++; + } + + else + s2 += euc_codesize(*s2); + } +} + + + +Void num_type11(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Int i; + Int j; + + + i = j = jrec -> numlen; + if (!(Chrtbl[*(s1 + j - 4)] & NUMBER)) j -= (j - 1) / 4; + + + for ( ; i > 0 ; i--) { + + if (Chrtbl[*s1++] & NUMBER) { + *kanjitmp++ = *s2++; + *kanjitmp++ = *s2++; + if (--j > 0) { + if ((j % 3) == 0) { + *kanjitmp++ = CommaHigh; + *kanjitmp++ = CommaLow; + } + } + } + + else + s2 += euc_codesize(*s2); + } +} + + + +Void num_type12(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Int i; + Int j; + + + for (i = jrec -> numlen ; i > 0 ; i--) { + + if (Chrtbl[j = *s1++] & NUMBER) { + j = (j - N_0) * 2; + *kanjitmp++ = Num2tbl[j]; + *kanjitmp++ = Num2tbl[j + 1]; + } + } +} + + + +Static Void num_kurai(p, len, tbl) +Uchar *p; +Int len; +Uchar TFar *tbl; +{ + Int i; + Int j; + Uchar tmp; + + for (i = 0 ; i < len ; i++) { + tmp = *p++; + + *kanjitmp++ = tbl[j = ((tmp & 0x0f) - _Num0) * 2]; + *kanjitmp++ = tbl[j + 1]; + if (j = ((tmp >> 4) & 3)) { + *kanjitmp++ = Num4tbl[j = (3 - j) * 2]; + *kanjitmp++ = Num4tbl[j + 1]; + } + if (j = ((tmp >> 6) & 3)) { + *kanjitmp++ = Num6tbl[j = (3 - j) * 2]; + *kanjitmp++ = Num6tbl[j + 1]; + } + } +} + + + +Void num_type13(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Uchar num[NumKetaLength]; + Int len; + + + len = setucnum(s1, (Int)jrec -> numlen, num); + + + num_kurai(num, len, Num1tbl); +} + + + +Void num_type14(s1, s2, jrec) +Uchar *s1; +Uchar *s2; +JREC *jrec; +{ + Uchar num[NumKetaLength]; + Int len; + + + len = setucnum(s1, (Int)jrec -> numlen, num); + + + num_kurai(num, len, Num2tbl); +} diff --git a/kanakan/mvmemd.c b/kanakan/mvmemd.c new file mode 100644 index 0000000..f410d7d --- /dev/null +++ b/kanakan/mvmemd.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: mvmemd.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:05 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" + +Void mvmemd(src, dest, len) +Reg1 Uchar *src; +Reg2 Uchar *dest; +Reg3 Int len; +{ + while (len-- > 0) *(--dest) = *(--src); +} + diff --git a/kanakan/mvmemi.c b/kanakan/mvmemi.c new file mode 100644 index 0000000..4c0445a --- /dev/null +++ b/kanakan/mvmemi.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: mvmemi.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:06 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" + +Void mvmemi(src, dest, len) +Reg1 Uchar *src; +Reg2 Uchar *dest; +Reg3 Int len; +{ + while (len-- > 0) *dest++ = *src++; +} + diff --git a/kanakan/peepdic.c b/kanakan/peepdic.c new file mode 100644 index 0000000..eaa42c2 --- /dev/null +++ b/kanakan/peepdic.c @@ -0,0 +1,501 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: peepdic.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1995/07/21 05:22:51 $ + */ + + + + +#include "sj_kcnv.h" +#include "sj_yomi.h" + + + +Uchar *skipkstr(), *skiphblk(), *get_idxptr(); +Int getkanji(), codesize(); + + + +Static Int prev_kanji(), prev_hinsi(), prev_douon(); +Static Int next_kanji(), next_hinsi(), next_douon(); +Static Void set_kanji(), set_buf(), add_yomi(), cd2sjh_chr(); +Static Void set_idxyomi(); + + + +Int getusr(buf) +Uchar *buf; +{ + Int nlen; + + + peepyomi[0] = peepknj[0] = peepgrm = 0; + + + (*curdict->getdic)(curdict, peepidx = DicSegBase); + get_askknj(); + + + peepdptr = segtop(); + + + if (segend(peepdptr)) return 0; + + + add_yomi(); + + + nlen = getnlen(peepdptr); + peephptr = peepdptr + DouonBlkSizeNumber + nlen; + + + peepgrm = *peephptr; + + + peepkptr = peephptr + 1; + + + set_kanji(); + + + set_buf(buf); + + + return -1; +} + + + +Int nextusr(buf) +Uchar *buf; +{ + + (*curdict->getdic)(curdict, peepidx); + get_askknj(); + + + if (next_kanji()) { + + set_kanji(); + + + set_buf(buf); + + + return -1; + } + + + return 0; +} + + + +Int prevusr(buf) +Uchar *buf; +{ + + (*curdict->getdic)(curdict, peepidx); + get_askknj(); + + + if (prev_kanji()) { + + set_kanji(); + + + set_buf(buf); + + + return -1; + } + + + return 0; +} + + + +Static Void set_kanji() +{ + Int len; + + len = getkanji(peepyomi, getnlen(peepdptr) + getplen(peepdptr), + peepkptr, peepknj); + *(peepknj + len) = 0; +} + + + +Static Void set_buf(buf) +Reg2 Uchar *buf; +{ + Reg1 Uchar *p; + Reg2 Int i, csize; + + + for (p = peepyomi ; *p ; ) *buf++ = *p++; + *buf++ = 0; + + + for (p = peepknj ; *p ; ) { + csize = euc_codesize(*p); + for (i = 0; i < csize; i++ ) *buf++ = *p++; + } + *buf++ = 0; + + + *buf++ = peepgrm; + *buf++ = 0; +} + + + +Static Int prev_kanji() +{ + Uchar *p1; + Uchar *p2; + + + p1 = peephptr + 1; + if (peepkptr <= p1) return prev_hinsi(); + + + p2 = peepkptr; + while (p1 < p2) { + peepkptr = p1; + p1 = skipkstr(p1); + } + + return -1; +} + + + +Static Int prev_hinsi() +{ + Uchar *p1; + Uchar *p2; + Int nlen; + + + nlen = getnlen(peepdptr); + p1 = peepdptr + DouonBlkSizeNumber + nlen; + + if (peephptr <= p1) return prev_douon(); + + + p2 = peephptr; + while (p1 < p2) { + peephptr = p1; + p1 = skiphblk(p1); + } + + + peepgrm = *peephptr; + + + p1 = peephptr + 1; + while (*p1 != HinsiBlkTerm) { + + peepkptr = p1; + + + p1 = skipkstr(p1); + } + + return -1; +} + + + +Static Int prev_douon() +{ + Uchar *p1; + Uchar *p2; + Int nlen; + + + if (peepdptr <= segtop()) { + + if (peepidx <= DicSegBase) return 0; + + + (*curdict->getdic)(curdict, --peepidx); + get_askknj(); + + + set_idxyomi(); + + + p1 = segtop(); + do { + + peepdptr = p1; + + + add_yomi(); + + + p1 = getntag(p1); + } while (!segend(p1)); + } + + else { + + set_idxyomi(); + + + p1 = segtop(); + p2 = peepdptr; + do { + + peepdptr = p1; + + + add_yomi(); + + + p1 = getntag(p1); + } while (p1 < p2); + } + + + nlen = getnlen(peepdptr); + p1 = peepdptr + DouonBlkSizeNumber + nlen; + + + p2 = getntag(peepdptr); + do { + peephptr = p1; + p1 = skiphblk(p1); + } while (p1 < p2); + + + peepgrm = *peephptr; + + + p1 = peephptr + 1; + do { + + peepkptr = p1; + + + p1 = skipkstr(p1); + } while (*p1 != HinsiBlkTerm); + + + return -1; +} + + + +Static Int next_kanji() +{ + Uchar *p1; + + + p1 = skipkstr(peepkptr); + + + if (*p1 == HinsiBlkTerm) return next_hinsi(); + + + peepkptr = p1; + + + return -1; +} + + + +Static Int next_hinsi() +{ + Uchar *p1; + + + p1 = skiphblk(peephptr); + + + if (p1 >= getntag(peepdptr)) return next_douon(); + + + peephptr = p1; + + + peepgrm = *p1; + + + peepkptr = p1 + 1; + + + return -1; +} + + + +Static Int next_douon() +{ + Uchar *p1; + Int nlen; + + + p1 = getntag(peepdptr); + + + if (segend(p1)) { + + if (peepidx + 1 < curdict->segunit) { + (*curdict->getdic)(curdict, ++peepidx); + get_askknj(); + peepdptr = segtop(); + + + set_idxyomi(); + } + + else + return 0; + } + + else { + peepdptr = p1; + } + + + add_yomi(); + + + nlen = getnlen(peepdptr); + peephptr = peepdptr + DouonBlkSizeNumber + nlen; + + + + peepgrm = *peephptr; + + + peepkptr = peephptr + 1; + + + return -1; +} + + + +Static Void set_idxyomi() +{ + Uchar *p1, *p2; + + if (p2 = get_idxptr(peepidx)) { + p1 = peepyomi; + while (*p2) { + cd2sjh_chr(*p2++, p1); + p1 += 2; + } + *p1 = 0; + } +} + + + +Static Void add_yomi() +{ + Int nlen; + Uchar *p1, *p2; + + + nlen = getnlen(peepdptr); + + + p1 = peepyomi + getplen(peepdptr) * 2; + + + p2 = peepdptr + DouonBlkSizeNumber; + + + while (nlen--) { + cd2sjh_chr(*p2++, p1); + p1 += 2; + } + + + *p1 = 0; +} + + + +Static Void cd2sjh_chr(ch, dst) +Uchar ch; +Reg1 Uchar *dst; +{ + if (ch == _TYOUON) { + *dst++ = 0xa1; + *dst++ = 0xbc; + } + else if (ch == _IGETA) { + *dst++ = 0xa1; + *dst++ = 0xf4; + } + else if (ch == _ATTO) { + *dst++ = 0xa1; + *dst++ = 0xf7; + } + else if (ch == _YUUBIN) { + *dst++ = 0xa2; + *dst++ = 0xa9; + } + else if (ch < N_0) { + } + else if (ch <= N_9) { + *dst++ = 0xa3; + *dst++ = ch + 0xa0; + } + else if (ch <= A_Z) { + *dst++ = 0xa3; + *dst++ = ch + 0xa7; + } + else if (ch <= A_z) { + *dst++ = 0xa3; + *dst++ = ch + 0xad; + } + else if (ch <= _NN) { + *dst++ = 0xa4; + *dst++ = ch + 0x53; + } + else if (ch <= _XKE) { + *dst++ = 0xa5; + *dst++ = ch + 0x53; + } + else { + } +} diff --git a/kanakan/ph2knj.c b/kanakan/ph2knj.c new file mode 100644 index 0000000..ec6748e --- /dev/null +++ b/kanakan/ph2knj.c @@ -0,0 +1,138 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: ph2knj.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:09 $ + */ + + + + + +#include "sj_kcnv.h" +#include "sj_yomi.h" + + + +Int sj2cd_chr(), sstrlen(); +Void mkjiritu(), mkbunsetu(), wakachi(), mk2claus(); +Void freework(); +Void selclrec(); +CLREC *free_clst(); +JREC *free_jlst(); + + + +Int ph2knj(zyomi, kanji, knjlen) +Uchar *zyomi; +Uchar *kanji; +Int knjlen; +{ + Uchar *ptr; + Uchar *dst; + Int i; + + + for (ptr = zyomi, dst = hyomi, i = 0 ; *ptr ; ) { + if (i++ >= MaxPhInputLen) { *kanji = 0; return 0; } + ptr += sj2cd_chr(ptr, dst++); + } + *dst = 0; + + + freework(); + prevclgrm = 0; + prevclrow = 0; + + khcount = 0; + nextcllen = 0; + + + inputyomi = zyomi; + cnvstart = ystart = hyomi; + cnvlen = sstrlen(hyomi); + + + kanjipos = kanji; + kanjilen = knjlen; + + + while (cnvlen && kanjilen) { + + if (!clt1st) { + + mkjiritu(DO_CLSTUDY | DO_IKKATU); + + + mkbunsetu(); + + + if (!maxclptr) wakachi(); + + jrt1st = maxjptr; + clt1st = maxclptr; + } + + + mk2claus(); + + + selclrec(); + + + prevclgrm = selcl -> jnode -> hinsi; + prevclrow = selcl -> right; + + + clt1st = free_clst(clt1st, (Int)selcl -> cllen); + jrt1st = free_jlst(jrt1st); + + + cnvstart += selcl -> cllen; + cnvlen -= selcl -> cllen; + + cvtphknj(); + + clt1st = clt2nd; + jrt1st = jrt2nd; + } + + if (!kanjilen) { + free_clall(clt1st); + free_jall (jrt1st); + } + + *kanjipos = 0; + + return(inputyomi - zyomi); +} + + diff --git a/kanakan/ph_khtbl.c b/kanakan/ph_khtbl.c new file mode 100644 index 0000000..6225f70 --- /dev/null +++ b/kanakan/ph_khtbl.c @@ -0,0 +1,126 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: ph_khtbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:09 $ + */ + + + +#include "sj_kcnv.h" + +Uchar *skipkstr(); +STDYIN *srchstdy(); +Void ph_setkouho(); +Int seldict(); + +Static Void ph_setsty(clrec) +CLREC *clrec; +{ + JREC *jrec; + TypeDicOfs offset; + Uchar *ptr; + STDYIN *sptr; + + if (!seldict((jrec = clrec -> jnode) -> dicid)) { + if (!khcount) + ph_setkouho(clrec, (TypeDicOfs)1, (STDYIN *)NULL); + return; + } + + (*curdict->getdic)(curdict, jrec -> jseg); + ptr = dicbuf + jrec->jofsst + 1; + + for ( ; *ptr != HinsiBlkTerm ; ptr = skipkstr(ptr)) { + + offset = ptr - dicbuf; + + sptr = srchstdy(jrec -> jseg, offset, jrec -> dicid); + + if (!khcount){ + ph_setkouho(clrec, offset, sptr); + continue; + } + + if (!sptr) continue; + + if (sptr -> styno < kouhotbl[0].styno) { + ph_setkouho(clrec, offset, sptr); + } + + else if (sptr -> styno == kouhotbl -> styno) { + if (!(kouhotbl[0].ka_fg && + sptr -> ka_kj == kouhotbl[0].ka_kj)) { + ph_setkouho(clrec, offset, sptr); + } + } + } +} + + + +Int ph_khtbl(clrec) +CLREC *clrec; +{ + JREC *jrec; + Int flg = FALSE; + + switch((jrec = clrec -> jnode) -> class) { + case C_DICT: + ph_setsty(clrec); + break; + + case C_N_ARABIA: + case C_N_ARACMA: + case C_N_KAZU: + case C_N_SUUJI: + case C_N_NANSUU: + case C_N_KANKURA: + case C_N_ARAKURA: + case C_N_KAZULONG: + case C_N_KAZULCMA: + case C_N_SUUJILONG: + if (jrec -> jofsst) { + ph_setsty(clrec); + break; + } + else + flg = TRUE; + case C_BUNSETU: + case C_MINASI: + case C_WAKACHI: + if (!khcount) ph_setkouho(clrec, (TypeDicOfs)0, (STDYIN *)0); + break; + } + + return flg; +} + diff --git a/kanakan/priority.c b/kanakan/priority.c new file mode 100644 index 0000000..07f06a4 --- /dev/null +++ b/kanakan/priority.c @@ -0,0 +1,290 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: priority.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:10 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_hinsi.h" +#include "sj_right.h" +#include "sj_prty.h" + +Static Int isfukusi(hinsi) +TypeGram hinsi; +{ + if (FUKUSI_1 <= hinsi && hinsi <= FUKUSI_7) + return TRUE; + else if (hinsi == MEISI_11 || hinsi == D_MEISI_6) + return TRUE; + return FALSE; +} + +Static Int istaigen(right) +TypeCnct right; +{ + if (right == R_MEISI || right == R_DMEISI || right == R_SMEISI1) + return TRUE; + if (right == R_WO_MEISI || right == R_DAIMEISI || right == R_JOSUUSI) + return TRUE; + if (right == R_RENYOU1 || (R_RENYOU3 <= right && right <= R_SA5RENYOU4)) + return TRUE; + return FALSE; +} + +Static Int taicnt(hinsi1, hinsi2) +TypeGram hinsi1; +TypeGram hinsi2; +{ + if (hinsi2 == TANKANJI) return 0; + + if (MYOUJI <= hinsi1 && hinsi1 <= KEN_KU) { + if (MEISI_1 <= hinsi2 && hinsi2 <= SETUBI_9) + return Taipri(hinsi1 - MYOUJI, hinsi2); + else + return 3; + } + else if ((MEISI_1 <= hinsi1 && hinsi1 <= MEISI_11) || + hinsi1 == D_MEISI_2) { + if (MEISI_1 <= hinsi2 && hinsi2 <= SETUBI_9) { + return Taipri(5, hinsi2); + } + else + return 5; + } + + else { + if (MEISI_1 <= hinsi2 && hinsi2 <= SETUBI_9) + return Taipri(6, hinsi2); + else + return 4; + } +} + +Static Int sttcnt(hinsi1, hinsi2) +TypeGram hinsi1; +TypeGram hinsi2; +{ + if (SETTOU_1 <= hinsi1 && hinsi1 <= SETTOU_5) { + if (MEISI_1 <= hinsi2 && hinsi2 <= SUUSI) + return Sttpri(hinsi1 - SETTOU_1, hinsi2); + } + return 4; +} + +Int priority(clrec) +CLREC *clrec; +{ + int prty; + CLREC *cl2rec; + Int keeplen; + TypeGram hinsi1; + Int i; + Int prev = 0; + + if (clrec->cllen == clrec->cl2len) return 0xff; + + if (clrec->jnode->class == C_BUNSETU) { + prty = Termtbl[clrec->right] & GETPRI; + return(0xf0 + prty); + } + + + hinsi1 = clrec->jnode->hinsi; + + if (prevclrow == R_WO || prevclrow == R_WO_S || + prevclrow == R_NI1 || prevclrow == R_DRENYOU2) { + if (clrec -> kubun == K_DOUSHI || isfukusi(hinsi1)) + prev = 5; + } + + else if (istaigen(prevclrow)) { + + if (clrec -> kubun == K_TAIGEN) + prev = taicnt(prevclgrm, hinsi1); + + else + prev = 0; + } + + else if (prevclrow == R_SETTOU) { + if (clrec -> jnode -> sttofs) + prty = 2; + else + prty = sttcnt(prevclgrm, hinsi1); + } + + + if (hinsi1 >= SETUBI_1 && hinsi1 <= SETUBI_9 && (!prev)) { + prty = 1; + goto finish; + } + + cl2rec = maxclptr; + keeplen = cl2rec -> cllen; + + if (clrec->right == R_WO || clrec->right == R_WO_S || + clrec->right == R_NI1 || clrec->right == R_DRENYOU2) { + while (cl2rec && (Int)cl2rec->cllen == keeplen) { + if (cl2rec->kubun == K_DOUSHI) { + prty = 14; + goto finish; + } + cl2rec = cl2rec->clsort; + } + } + + else if (clrec->right == R_SETTOU) { + prty = 0; + while (cl2rec && (Int)cl2rec -> cllen == keeplen) { + if (cl2rec -> jnode -> sttofs ) + i = 2; + else + i = sttcnt(hinsi1, cl2rec->jnode->hinsi); + + if (i > prty) + prty = i; + cl2rec = cl2rec -> clsort; + } + goto finish; + } + + else if (istaigen(clrec->right)) { + prty = 0; + while (cl2rec && (Int)cl2rec->cllen == keeplen) { + i = taicnt(hinsi1, cl2rec->jnode->hinsi); + if (i > prty) + prty = i; + cl2rec = cl2rec->clsort; + } + if (clrec->jnode->stbofs) { + prty -= 3; + } + goto finish; + } + + + prty = Termtbl[clrec->right]; + + + if (prty & RENTAI) { + while (cl2rec && (Int)cl2rec->cllen == keeplen) { + if (cl2rec -> kubun == K_TAIGEN) { + prty &= GETPRI; + goto finish; + } + cl2rec = cl2rec->clsort; + } + prty = 4; + } + + else { + prty &= GETPRI; + + if (prty == P_RENYOU_J || prty == P_RENYOU_M ) { + while (clrec->cllen != 1 && cl2rec && + (Int)cl2rec->cllen == keeplen ) { + if (cl2rec->kubun == K_DOUSHI) { + prty = 6; + goto finish; + } + else if (cl2rec->jnode->hinsi == SETUBI_1 || + cl2rec->jnode->hinsi == SETUBI_2) { + prty = 7; + goto finish; + } + cl2rec = cl2rec->clsort; + } + prty = 4; + } + } + + +finish: + cl2rec = maxclptr; + + if (hinsi1 == SUUSI) prty -= 4; + + if (cl2rec -> jnode -> hinsi == SUUSI) prty -= 3; + + if (cl2rec->jnode->class == C_DICT && + cl2rec->jnode->jlen == 1 && (cl2rec->kubun != K_DOUSHI)) { + prty -= 2; + } + + if ((!istaigen(clrec->right)) && (cl2rec->jnode->hinsi == SETUBI_2)) { + prty -= 4; + } + + prty += 20 - clrec->cllen + clrec->jnode->jlen + clrec->gobiln; + return(prty + prev); +} + + +Void pritiny() +{ + CLREC *clrec; + Int keeplen; + int i, prty = 0; + + clrec = selcl; + keeplen = clrec -> cllen; + + if (istaigen(prevclrow)) { + while (clrec && (Int)clrec -> cllen == keeplen) { + i = taicnt(prevclgrm, clrec -> jnode -> hinsi); + if (i > prty) { + selcl = clrec; + prty = i; + } + clrec = clrec -> clsort; + } + } + + else { + + while (clrec && (Int)clrec -> cllen == keeplen) { + if (clrec -> jnode -> hinsi >= MYOUJI && + clrec -> jnode -> hinsi <= KEN_KU) + clrec = clrec -> clsort; + + else if (clrec -> jnode -> hinsi == TANKANJI) + return; + else { + selcl = clrec; + return; + } + } + } +} + diff --git a/kanakan/prtytbl.c b/kanakan/prtytbl.c new file mode 100644 index 0000000..dac31fe --- /dev/null +++ b/kanakan/prtytbl.c @@ -0,0 +1,102 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: prtytbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:11 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" + +Uchar taipri[7][45] = { + + { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 3, 3, 3, 3, 3, 3, 0, 0, + 0, 3, 20, 4, 3, 3, 4, 4, 4, 4, + 4, 4, 4, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, + + { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 3, 3, 3, 3, 3, 3, 0, 0, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, + + { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 3, 3, 3, 3, 3, 3, 0, 0, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6}, + + { 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 3, 3, 3, 3, 3, 3, 0, 0, + 0, 3, 3, 3, 4, 5, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 4, 4, 4, 4, 6}, + + { 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 4, 4, 4, 4, 4, 4, 0, 0, + 0, 4, 4, 4, 20, 20, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6}, + + { 0, 8, 8, 8, 8, 8, 7, 8, 8, 8, + 8, 8, 3, 6, 7, 3, 3, 5, 0, 0, + 0, 3, 3, 3, 3, 3, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 8, 8, 11, 5, 7, 7, 7, 7, 7}, + + { 0, 5, 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 3, 3, 3, 3, 3, 5, 0, 0, + 0, 3, 3, 3, 3, 3, 5, 5, 5, 5, + 4, 5, 5, 5, 5, 5, 5, 6, 6, 5, 5, 5, 5, 5, 5} + }; + + + +Uchar sttpri[5][31] = { + + { 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 2, 4, 4, 4, 4, 4, 0, 0, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }, + + { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, + 0, 4, 4, 4, 10, 10, 4, 4, 4, 4, 4, }, + + { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, + 0, 10, 10, 4, 4, 4, 4, 4, 4, 4, 4, }, + + { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, }, + + { 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 9, 9, 9, 9, 9, 9, 0, 0, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, } + }; diff --git a/kanakan/s2ctbl.c b/kanakan/s2ctbl.c new file mode 100644 index 0000000..3f452ba --- /dev/null +++ b/kanakan/s2ctbl.c @@ -0,0 +1,151 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: s2ctbl.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1995/07/21 05:22:51 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_yomi.h" + +Uchar kigou[] = { + Y_L_KAKKO, + Y_KUTEN, + Y_TOUTEN, + Y_COMMA, + Y_PERIOD, + Y_L_KAKKO, + Y_L_KAKKO, + Y_L_KAKKO, + Y_BIKKURI, + Y_BIKKURI, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + _TYOUON, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_L_KAKKO, + Y_QUOTA, + Y_L_KAKKO, + Y_QUOTA, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_L_KAKKO, + Y_R_KAKKO, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_S_KIGOU2, + Y_S_KIGOU1, + Y_S_KIGOU1, + Y_S_KIGOU2, + Y_S_KIGOU1, + Y_S_KIGOU2, + _IGETA, + Y_KIGOU, + Y_KIGOU, + _ATTO, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + _YUUBIN, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU, + Y_KIGOU + }; diff --git a/kanakan/selclrec.c b/kanakan/selclrec.c new file mode 100644 index 0000000..03a899b --- /dev/null +++ b/kanakan/selclrec.c @@ -0,0 +1,131 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: selclrec.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:14 $ + */ + + + + + +#include "sj_kcnv.h" + + + +Void free_clall(), free_jall(), mkjiritu(), mkbunsetu(); +Void wakachi(); + + + +Void selclrec() +{ + Int len; + CLREC *rec; + + + nextcllen = 0; + + + len = selcl -> cllen; + rec = clt1st; + while (rec) { + if (len >= (unsigned int) rec -> cllen) break; + rec = rec -> clsort; + } + + + while (rec) { + if (len > (unsigned int) rec -> cllen) return; + if (rec -> jnode -> class == C_BUNSETU) break; + rec = rec -> clsort; + } + if (!rec) return; + + + + + len = ClYomi1Len(ClStudyDict + rec->jnode->jofsst); + + + nextcllen = rec -> cllen - len; + + + while (rec) { + + if (len == rec -> cllen) { + + selcl = rec; + break; + } + + else if (len > (unsigned int) rec -> cllen) { + rec = NULL; + break; + } + rec = rec -> clsort; + } + + + if (rec == NULL) { + Int klen; + Uchar ch; + + + free_clall(clt1st); + free_jall(jrt1st); + + + klen = cnvlen; + cnvlen = len; + ch = *(cnvstart + len); + *(cnvstart + len) = 0; + + + mkjiritu(DO_IKKATU); + + + mkbunsetu(); + if (!maxclptr) wakachi(); + + + jrt1st = maxjptr; + selcl = clt1st = maxclptr; + + + cnvlen = klen; + *(cnvstart + len) = ch; + } + + + free_clall(clt2nd); clt2nd = NULL; + free_jall(jrt2nd); jrt2nd = NULL; +} diff --git a/kanakan/selsuuji.c b/kanakan/selsuuji.c new file mode 100644 index 0000000..2921485 --- /dev/null +++ b/kanakan/selsuuji.c @@ -0,0 +1,123 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: selsuuji.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:15 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" +#include "sj_suuji.h" + +static Ushort selsjAR[] = { + SelArb0, + SelArbCma | JFLAG_NK4 | JFLAG_NN0, + SelKanSjYm | JFLAG_NN0, + SelKanSjYm2 | SelNum1_23_10_1 | JFLAG_NN0, + SelKanSj0 | JFLAG_NK2, + SelNumTerm +}; + +static Ushort selsjARCM[] = { + SelArbCma | JFLAG_NK4 | JFLAG_NN0, + SelArb0, + SelKanSjYm | JFLAG_NN0, + SelKanSjYm2 | SelNum1_23_10_1 | JFLAG_NN0, + SelKanSj0 | JFLAG_NK2, + SelNumTerm +}; + +static Ushort selsjKAZU[] = { + SelKanSjYm | JFLAG_NN0, + SelKanSjYm2 | SelNum1_23_10_1 | JFLAG_NN0, + SelKanSj0 | JFLAG_NK2, + SelArb0, + SelArbCma | JFLAG_NK4 | JFLAG_NN0, + SelNumTerm +}; + +static Ushort selsjSUUJI[] = { + SelKanSj0, + SelArb0, + SelNumTerm +}; + +static Ushort selsjNANSUU[] = { + SelKanSjYm, + SelNumTerm +}; + +static Ushort selsjAR17[] = { + SelLongArb, + SelLongArbCma, + SelNumTerm +}; + +static Ushort selsjAR17CM[] = { + SelLongArbCma, + SelLongArb, + SelNumTerm +}; + +static Ushort selsjAR17SJ[] = { + SelLongArb, + SelLongSj, + SelNumTerm +}; + +static Ushort selsjKANKURA[] = { + SelKanSjKr, + SelArbKr, + SelNumTerm +}; + +static Ushort selsjARAKURA[] = { + SelArbKr, + SelKanSjKr | JFLAG_NSN, + SelNumTerm +}; + + +Ushort *selsjadrs[] = { + selsjAR, + selsjARCM, + selsjKAZU, + selsjSUUJI, + selsjNANSUU, + selsjKANKURA, + selsjARAKURA, + selsjAR17, + selsjAR17CM, + selsjAR17SJ +}; diff --git a/kanakan/setconj.c b/kanakan/setconj.c new file mode 100644 index 0000000..c83bd26 --- /dev/null +++ b/kanakan/setconj.c @@ -0,0 +1,162 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: setconj.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:16 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_right.h" +#include "sj_hinsi.h" +#include "sj_yomi.h" + +Static Int cnjstrcmp(yptr, cnjp, saml) +Uchar *yptr; +Uchar TFar *cnjp; +Int *saml; +{ + Int asklen; + Int nkrlen; + + asklen = CnjAskLen(cnjp); + + if (*saml < asklen) return CONT; + + if (*saml > asklen) return OVER; + + nkrlen = CnjNkrLen(cnjp); + + yptr += asklen; + cnjp ++; + + while (nkrlen--) { + if (*yptr > *cnjp) + return CONT; + + else if (*yptr < *cnjp) { + if (!*yptr) return PARTLY; + return OVER; + } + + else{ + yptr++; + cnjp++; + (*saml)++; + } + } + + return MATCH; +} + +Static TypeCnct cnvrow(rec, row) +JREC *rec; +TypeCnct row; +{ + TypeGram hinsi; + Int stt; + + hinsi = rec -> hinsi; + + if ((stt = rec -> sttofs) == SETTOU_O) { + + if (R_RENYOU1 <= row && row <= R_SA5RENYOU1) + row += 6; + + else if (R_RENYOU3 <= row && row <= R_SA5RENYOU3) + row += 3; + + else if((hinsi>=KEIYOUSI_1 && hinsi<=KE_DOUSI_9)|| + (hinsi == MEISI_5) || (hinsi == MEISI_9)) + ; + + else + row = 0; + } + + else if (stt == SETTOU_GO) { + + if (hinsi == MEISI_7 && row == R_SMEISI1) + row++; + } + + return row; +} + +Int setconj(hinsi, jrec, crec) +TypeGram hinsi; +JREC *jrec; +CREC *crec; +{ + Uchar *yptr; + Int cmp; + TypeCnct right; + Int saml; + Int ofslen; + int count = 0; + Uchar TFar *cnj; + + if (cnj = Conjadr(hinsi)) { + saml = ofslen = 0; + + yptr = cnvstart + jrec -> jlen; + + if ((*cnj) & TYOUONFLG) { + while (*yptr == _TYOUON) { + yptr++; + ofslen++; + } + } + + for ( ; *cnj != CNJEND ; cnj += CnjRecLen(cnj)) { + cmp = cnjstrcmp(yptr, cnj, &saml); + + if (cmp == OVER) break; + + if (cmp == PARTLY) break; + + if (cmp != MATCH) continue; + + if (isdpnd(*(yptr + saml))) continue; + + if (right = cnvrow(jrec, (TypeCnct)CnjRight(cnj))) { + crec -> len = (Uchar)(ofslen + saml); + crec -> right = right; + count++; + crec++; + } + } + } + + return count; +} + diff --git a/kanakan/setjrec.c b/kanakan/setjrec.c new file mode 100644 index 0000000..2c8ad60 --- /dev/null +++ b/kanakan/setjrec.c @@ -0,0 +1,358 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: setjrec.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:17 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" +#include "sj_hinsi.h" + + + +JREC *argjrec(); +Int codesize(); + + + +Int setj_atrb(p) +Uchar *p; +{ + return 2; +} + + + +Int setj_ofs(p) +Uchar *p; +{ + Int contf = TRUE; + + + p = dicbuf + ((*p & KanjiCodeMask) << 8) + *(p + 1); + + + do { + if (p[codesize(*p)] == KanjiStrEnd) contf = FALSE; + switch(*p & KanjiModeMask) { + case ZenHiraAssyuku: + p += setj_norm1(p); break; + + case ZenKataAssyuku: + p += setj_norm1(p); break; + + case OffsetAssyuku: + p += setj_ofs(p); break; + + case AiAttribute: + p += setj_atrb(p); break; + + case LeadingHankaku: + p += setj_norm2(p); break; + + case KanjiAssyuku: + p += setj_knj(p); break; + + case KanjiStrEnd: + contf = FALSE; break; + + default: + p += setj_norm2(p); + } + } while (contf); + + return 2; +} + + + +Int setj_knj(p) +Uchar *p; +{ + Int contf = TRUE; + + + p = askknj[*p & KnjAssyukuMask]; + + + do { + if (p[codesize(*p)]== KanjiStrEnd) contf = FALSE; + switch(*p & KanjiModeMask) { + case ZenHiraAssyuku: + p += setj_norm1(p); break; + + case ZenKataAssyuku: + p += setj_norm1(p); break; + + case OffsetAssyuku: + p += setj_ofs(p); break; + + case AiAttribute: + p += setj_atrb(p); break; + + case LeadingHankaku: + p += setj_norm2(p); break; + + case KanjiAssyuku: + p += setj_knj(p); break; + + case KanjiStrEnd: + contf = FALSE; break; + + default: + p += setj_norm2(p); + } + } while (contf); + + return 1; +} + + + +Int setj_norm1(p) +Uchar *p; +{ + return 1; +} + + + +Int setj_norm2(p) +Uchar *p; +{ + return 2; +} + +Int setj_norm3(p) +Uchar *p; +{ + return 3; +} + + + +Static Uchar chkhead(gram) +TypeGram gram; +{ + + if (!headcode) return TRUE; + + + if (headcode == SETTOU_DAI) { + + if (gram == SUUSI) return TRUE; + } + + + else { + gram--; + if ((Scncttbl(headcode-1, gram >> 3) << (gram & 0x07)) & 0x80) { + return TRUE; + } + } + + return FALSE; +} + + + +Void setjrec(tagp, mode) +Uchar *tagp; +Int mode; +{ + TypeGram gram; + Uchar *ptr; + Uchar *endp; + Uchar *tmp; + JREC *rec; + Int plen; + Int nlen; + Int len; + + + plen = getplen(tagp); + nlen = getnlen(tagp); + + + len = plen + nlen; + + + if (headcode) len += headlen; + + + ptr = tagp + DouonBlkSizeNumber + nlen; + + + endp = tagp + getsize(tagp); + + + for ( ; ptr < endp ; ptr = tmp + 1) { + + + for (tmp = ptr + 1; *tmp != HinsiBlkTerm ; ) { + switch(*tmp & KanjiModeMask) { + case ZenHiraAssyuku: + tmp += setj_norm1(tmp); break; + + case ZenKataAssyuku: + tmp += setj_norm1(tmp); break; + + case OffsetAssyuku: + tmp += setj_ofs(tmp); break; + + case AiAttribute: + tmp += setj_atrb(tmp); break; + + case LeadingHankaku: + tmp += setj_norm2(tmp); break; + + case KanjiAssyuku: + tmp += setj_knj(tmp); break; + + case KanjiStrEnd: + tmp++; break; + + default: + tmp += setj_norm2(tmp); + } + } + + + if ((gram = *ptr) == IKKATU && !(mode & DO_IKKATU)) continue; + + + if (!chkhead(gram)) continue; + + + if (!(rec = argjrec(len, (JREC *)NULL))) continue; + + + rec -> jseg = prevseg; + rec -> jofsst = ptr - dicbuf; + rec -> jofsed = tmp - dicbuf; + rec -> class = C_DICT; + rec -> dicid = curdict->dicid; + rec -> hinsi = gram; + rec -> sttofs = headcode; + } +} + + + +Void setnumrec(tagp, rec, gram) +Uchar *tagp; +JREC *rec; +TypeGram gram; +{ + Uchar *ptr; + Uchar *endp; + Uchar *tmp; + Int plen, nlen, len; + JREC *jrec; + + + plen = getplen(tagp); + nlen = getnlen(tagp); + + + len = plen + nlen; + + + ptr = tagp + DouonBlkSizeNumber + nlen; + + + endp = tagp + getsize(tagp); + + + for ( ; ptr < endp ; ptr = tmp + 1) { + + + for (tmp = ptr + 1; *tmp != HinsiBlkTerm ; ) { + switch(*tmp & KanjiModeMask) { + case ZenHiraAssyuku: + tmp += setj_norm1(tmp); break; + + case ZenKataAssyuku: + tmp += setj_norm1(tmp); break; + + case OffsetAssyuku: + tmp += setj_ofs(tmp); break; + + case AiAttribute: + tmp += setj_atrb(tmp); break; + + case LeadingHankaku: + tmp += setj_norm2(tmp); break; + + case KanjiAssyuku: + tmp += setj_knj(tmp); break; + + case KanjiStrEnd: + tmp++; break; + + default: + tmp += setj_norm2(tmp); + } + } + + + if (gram != *ptr) continue; + + + if (!(jrec = argjrec((Int)(rec -> jlen + len), rec))) continue; + + + jrec -> jseg = prevseg; + jrec -> jofsst = ptr - dicbuf; + jrec -> jofsed = tmp - dicbuf; + jrec -> dicid = curdict->dicid; + } +} + + + +Void setcrec(tagp) +Uchar *tagp; +{ + JREC *rec; + + + if (!(rec = argjrec((int)ClYomiLen(tagp), (JREC *)NULL))) return; + + + rec -> jofsst = tagp - ClStudyDict; + rec -> class = C_BUNSETU; + rec -> hinsi = ClGramCode(tagp); +} diff --git a/kanakan/setkouho.c b/kanakan/setkouho.c new file mode 100644 index 0000000..5120ae2 --- /dev/null +++ b/kanakan/setkouho.c @@ -0,0 +1,325 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: setkouho.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:20 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" +#include "sj_hinsi.h" + + + +Int sel_sjmode(), codesize(); + + + +Static Int hiraknj(); + + + +Void setkouho(clrec, offs, mode) +CLREC *clrec; +TypeDicOfs offs; +Int mode; +{ + JREC *jrec; + KHREC *kptr; + Uchar TFar *fptr; + Int flg; + Int i; + + + if (khcount >= MaxKouhoNumber) return; + + jrec = clrec -> jnode; + + + kptr = &kouhotbl[khcount++]; + + + if (mode && !offs) nkhcount++; + + kptr -> clrec = clrec; + kptr -> offs = offs; + kptr -> rank = 0; + kptr -> styno = 0; + kptr -> mode = (Uchar)mode; + + + if (jrec -> flags & JFLAG_KA) { + kptr -> ka_fg = 1; + kptr -> ka_kj = 1; + flg = 1; + } + + else if (clrec -> fzk_ka) { + kptr -> ka_fg = 1; + kptr -> ka_kj = 0; + flg = 2; + } + + else { + kptr -> ka_fg = 0; + kptr -> ka_kj = 0; + flg = 0; + } + + + kptr -> sttfg = kptr -> sttkj = 0; + + + if (!(fptr = Settou_ptr(jrec -> sttofs))) return; + + + if (!SttHiraKnj(fptr)) return; + + + kptr -> sttfg = 1; + kptr -> sttkj = 0; + + + i = hiraknj(dicbuf + offs); + if (offs > 1 && (i == 2 || i == 3)) return; + + + + + if (khcount >= MaxKouhoNumber) return; + + + kptr++; + khcount++; + + + if (mode && !offs) nkhcount++; + + kptr -> clrec = clrec; + kptr -> offs = offs; + kptr -> rank = 0; + kptr -> styno = 0; + kptr -> mode = (Uchar)mode; + + kptr -> sttfg = 1; + kptr -> sttkj = 1; + + + switch (flg) { + case 1: kptr -> ka_fg = kptr -> ka_kj = 1; break; + case 2: kptr -> ka_fg = 1; kptr -> ka_kj = 0; break; + default: kptr -> ka_fg = kptr -> ka_kj = 0; break; + } +} + + + +Void ph_setkouho(clrec, offs, sptr) +CLREC *clrec; +TypeDicOfs offs; +STDYIN *sptr; +{ + JREC *jrec; + Uchar TFar *p; + + + if (sptr) { + stdytop = sptr; + kouhotbl[0].styno = sptr -> styno; + kouhotbl[0].sttkj = sptr -> sttkj; + } + + else { + kouhotbl[0].styno = -1; + kouhotbl[0].sttkj = 0; + } + + + kouhotbl[0].clrec = clrec; + kouhotbl[0].offs = offs; + kouhotbl[0].rank = 0; + + + kouhotbl[0].mode = sel_sjmode(jrec = clrec -> jnode); + + + kouhotbl[0].sttfg = (Uchar) + ((p = Settou_ptr(jrec->sttofs)) ? (SttHiraKnj(p)?1:0) : 0); + + + if (jrec -> flags & JFLAG_KA) { + kouhotbl[0].ka_fg = + kouhotbl[0].ka_kj = 1; + } + + else if (clrec -> fzk_ka) { + kouhotbl[0].ka_fg = 1; + kouhotbl[0].ka_kj = 0; + } + + else { + kouhotbl[0].ka_fg = + kouhotbl[0].ka_kj = 0; + } + + khcount = 1; +} + + + +Static Int hiraknj(p) +Reg1 Uchar *p; +{ + char flg = TRUE; + Int i; + Int result; + + do { + if (p[codesize(*p)] == KanjiStrEnd) flg = FALSE; + switch(*p & KanjiModeMask) { + case ZenHiraAssyuku: + result = hiraknj_hask(p, &i); break; + + case ZenKataAssyuku: + result = hiraknj_kask(p, &i); break; + + case OffsetAssyuku: + result = hiraknj_ofs(p, &i); break; + + case AiAttribute: + result = hiraknj_atrb(p, &i); break; + + case LeadingHankaku: + result = hiraknj_norm(p, &i); break; + + case KanjiAssyuku: + result = hiraknj_knj(p, &i); break; + + default: + result = hiraknj_hira(p, &i); + } + + if (result) return result; + + p += i; + } while (flg); + + return 0; +} + + + +Int hiraknj_atrb(p, len) +Uchar *p; +Int *len; +{ + *len = 2; + return 0; +} + + + +Int hiraknj_ofs(p, len) +Uchar *p; +Int *len; +{ + *len = 2; + return hiraknj(dicbuf + ((*p & KanjiCodeMask) << 8) + *(p + 1)); +} + + + +Int hiraknj_knj(p, len) +Uchar *p; +Int *len; +{ + *len = 1; + return hiraknj(askknj[*p & KnjAssyukuMask]); +} + + + +Int hiraknj_hask(p, len) +Uchar *p; +Int *len; +{ + *len = 1; + return 2; +} + + + +Int hiraknj_kask(p, len) +Uchar *p; +Int *len; +{ + *len = 1; + return 3; +} + + + +Int hiraknj_norm(p, len) +Uchar *p; +Int *len; +{ + *len = codesize(*p); + return 1; +} + + + +Int hiraknj_hira(p, len) +Uchar *p; +Int *len; +{ + Uchar ch; + + *len = codesize(*p); + ch = *(p + 1); + + switch (*p) { + case 0x24: + if (ch >= 0x21 && ch <= 0x73) return 2; + return 1; + + case 0x25: + if (ch >= 0x21 && ch <= 0x76) return 3; + return 1; + + default: + break; + } + return 1; +} diff --git a/kanakan/setubi.c b/kanakan/setubi.c new file mode 100644 index 0000000..3a62b02 --- /dev/null +++ b/kanakan/setubi.c @@ -0,0 +1,86 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: setubi.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:22 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_hinsi.h" + +JREC *argjrec(); +Void memcpy(); +Int sstrncmp(); + +Uchar TFar *getstb(hinsi) +TypeGram hinsi; +{ + if (hinsi < MEISI_1 || hinsi > TIMEI) return NULL; + + return Stbadr(hinsi); +} + + +Void setubi(rec, stbtbl) +JREC *rec; +Uchar TFar *stbtbl; +{ + Uchar TFar *stb; + Uchar *yptr; + Uchar TFar *sptr; + Int slen; + JREC *new; + Int cmp; + + stb = stbtbl--; + + yptr = cnvstart + rec -> jlen; + + for ( ; *stb ; stb = sptr + slen + StbKnjLen(stb)) { + + slen = StbYomiLen(stb); + sptr = StbYomiTop(stb); + + cmp = sstrncmp(yptr, sptr, slen); + + if (cmp == OVER || cmp == PARTLY) break; + + if ((cmp != MATCH) || isdpnd(*(yptr + slen))) continue; + + if (!(new = argjrec((Int)(rec -> jlen + slen), rec))) continue; + + new -> stbofs = (Uchar)(stb - stbtbl); + new -> flags |= StbBakeru(stb) ? JFLAG_KA : 0; + } +} + diff --git a/kanakan/sj2code.c b/kanakan/sj2code.c new file mode 100644 index 0000000..4edbf7c --- /dev/null +++ b/kanakan/sj2code.c @@ -0,0 +1,133 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj2code.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1995/07/21 05:22:51 $ + */ + + + + +#include "sj_euc.h" +#include "sj_kcnv.h" +#include "sj_yomi.h" + +Int sj2cd_chr(euc, yomi) +Uchar *euc; +Reg2 Uchar *yomi; +{ + Reg1 Uchar chr; + + if ((chr = *euc++) == EUC_a1) { + chr = *euc; + if (chr < EUC_START) + *yomi = Y_ZENKAKU; + else if (chr <= EUC_END) + *yomi = Kigou[chr - EUC_START]; + else + *yomi = Y_ZENKAKU; + } else if (chr == EUC_a2) { + chr = *euc; + + if (chr < EUC_START) + *yomi = Y_ZENKAKU; + else if (chr <= EUC_END_KIGOU) + *yomi = Kigou[chr - EUC_START + 94]; + else + *yomi = Y_ZENKAKU; + } else if (chr == EUC_a3) { + chr = *euc; + if (chr < EUC_0) + *yomi = Y_ZENKAKU; + else if (chr <= EUC_END_0) + *yomi = chr - EUC_0 + N_0; + else if (chr < EUC_A) + *yomi = Y_ZENKAKU; + else if (chr <= EUC_END_A) + *yomi = chr - EUC_A + A_A; + else if (chr < EUC_a) + *yomi = Y_ZENKAKU; + else if (chr <= EUC_END_a) + *yomi = chr - EUC_a + A_a; + else + *yomi = Y_ZENKAKU; + } else if (chr == EUC_a4) { + chr = *euc; + if (chr < EUC_START) + *yomi = Y_ZENKAKU; + else if (chr <= EUC_END_HIRA) + *yomi = chr - EUC_START + _XA; + else + *yomi = Y_ZENKAKU; + } else if (chr == EUC_a5) { + chr = *euc; + if (chr == EUC_VU) + *yomi = _VU; + else if (chr == EUC_XKA) + *yomi = _XKA; + else if (chr == EUC_XKE) + *yomi = _XKE; + else + *yomi = Y_ZENKAKU; + } + else { + + if (!(chr & 0x80)) { + *yomi = Y_HANKAKU; + return 1; + } else if (chr == SS2) { + *yomi = Y_HANKAKU; + } else if (chr == SS3) { + *yomi = Y_ZENKAKU; + return 3; + } else + *yomi = Y_ZENKAKU; + } + + return 2; +} + + + +Int sj2cd_str(euc, yomi, len) +Reg1 Uchar *euc; +Reg2 Uchar *yomi; +Reg3 Int len; +{ + + if (!len--) return FALSE; + + + while (*euc && len--) euc += sj2cd_chr(euc, yomi++); + *yomi = 0; + + return *euc ? FALSE : TRUE; +} diff --git a/kanakan/skiphblk.c b/kanakan/skiphblk.c new file mode 100644 index 0000000..3720601 --- /dev/null +++ b/kanakan/skiphblk.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: skiphblk.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:24 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_dict.h" + +Uchar *skipkstr(); + +Uchar *skiphblk(ptr) +Reg1 Uchar *ptr; +{ + ptr++; + + while (*ptr != HinsiBlkTerm) ptr = skipkstr(ptr); + + ptr++; + + return ptr; +} + diff --git a/kanakan/skipkstr.c b/kanakan/skipkstr.c new file mode 100644 index 0000000..37df15e --- /dev/null +++ b/kanakan/skipkstr.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: skipkstr.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:25 $ + */ + + + + +#include "sj_euc.h" +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" +#include "sj_dict.h" +#include "sj_table.h" + +Int codesize(); + +Uchar *skipkstr(ptr) +Reg1 Uchar *ptr; +{ + Reg2 Int contf = TRUE, csize; + + + do { + csize = codesize(*ptr); + + if (ptr[csize] == KanjiStrEnd) contf = FALSE; + + ptr += csize; + } while (contf); + + ptr++; + + return ptr; +} diff --git a/kanakan/srchdict.c b/kanakan/srchdict.c new file mode 100644 index 0000000..cebe76e --- /dev/null +++ b/kanakan/srchdict.c @@ -0,0 +1,163 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: srchdict.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:26 $ + */ + + + +#include "sj_kcnv.h" + +Uchar *get_idxptr(); +Int yomicmp(), sstrlen(); +Void get_askknj(); +TypeDicSeg srchidx(); + +Int yomicmp(ptr1, ptr2, saml) +Reg1 Uchar *ptr1; +Reg2 Uchar *ptr2; +Uchar *saml; +{ + Int i, j; + Int same; + + same = *saml; + + i = getplen(ptr2); + j = getnlen(ptr2); + + if (j == 0) { + ptr2 = get_idxptr(prevseg); + + for (i = same ; i ; i--) + if (*ptr1++ != *ptr2++) return OVER; + + j = sstrlen(ptr2); + } + + else if (i > same) + return CONT; + + else { + if (i < same) same = i; + ptr1 += same; + ptr2 += DouonBlkSizeNumber; + } + + while (j-- > 0) { + if (*ptr1 > *ptr2) { + *saml = same; + return CONT; + } + else if (*ptr1++ < *ptr2++) { + return OVER; + } + same++; + } + + *saml = same; + return MATCH; +} + + +Uchar *srchdict(tagp) +Uchar *tagp; +{ + TypeDicSeg segno; + Int cmp; + Int maxlen; + + maxlen = (cnvlen > MaxWdYomiLen) ? MaxWdYomiLen : cnvlen; + + while ((int)dicinl <= maxlen) { + + + segno = srchidx(prevseg, (Int)dicinl); + + (*curdict->getdic)(curdict, segno); + + if (prevseg != segno) { + + prevseg = segno; + + tagp = dicbuf; + } + + else { + + tagp = getntag(tagp); + + if (segend(tagp)) { + + prevseg = ++segno; + + if (segno >= curdict->segunit) return NULL; + + (*curdict->getdic)(curdict, segno); + + tagp = dicbuf; + } + } + + if (tagp == dicbuf) { + get_askknj(); + tagp += *tagp + 1; + } + + while (!segend(tagp)) { + + cmp = yomicmp(cnvstart, tagp, &dicsaml); + + if ((int)dicsaml > maxlen) return NULL; + + if (cmp == OVER) + return NULL; + + else if (cmp == MATCH) { + + if (isdpnd(*(cnvstart + dicsaml))) { + break; + } + + else { + dicinl = dicsaml + 1; + return tagp; + } + } + tagp = getntag(tagp); + } + dicinl = dicsaml + 1; + } + + return NULL; +} + diff --git a/kanakan/srchhead.c b/kanakan/srchhead.c new file mode 100644 index 0000000..f3fb8d9 --- /dev/null +++ b/kanakan/srchhead.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: srchhead.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:28 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_yomi.h" + +Int srchhead() +{ + if (*cnvstart == _O) { + headcode = SETTOU_O; + headlen = 1; + return TRUE; + } + + else if (*cnvstart == _GO) { + headcode = SETTOU_GO; + headlen = 1; + return TRUE; + } + + else if ((*cnvstart == _DA) && (*(cnvstart + 1) == _I)) { + headcode = SETTOU_DAI; + headlen = 2; + return TRUE; + } + + headcode = headlen = 0; + return FALSE; +} + diff --git a/kanakan/srchidx.c b/kanakan/srchidx.c new file mode 100644 index 0000000..5b316c2 --- /dev/null +++ b/kanakan/srchidx.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: srchidx.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:29 $ + */ + + + +#include "sj_kcnv.h" + +Uchar *get_idxptr(); +Int sstrlen(), istrcmp(); + +TypeDicSeg srchidx(low, len) +TypeDicSeg low; +Int len; +{ + TypeDicSeg high; + TypeDicSeg mid; + Int cmp; + Uchar *target; + + if ((high = curdict->segunit - 1) < 1) return 0; + + if (low == (TypeDicSeg)-1) low = 0; + + while (low <= high) { + + mid = (low + high) >> 1; + + target = get_idxptr(mid); + + cmp = istrcmp(cnvstart, target, len, sstrlen(target)); + + if (cmp == OVER) { + high = mid - 1; + } + + else if(cmp != MATCH){ + low = mid + 1; + } + + else { + return mid; + } + } + + return (cmp == OVER && mid != DicSegBase) ? mid - 1 : mid; +} + diff --git a/kanakan/srchnum.c b/kanakan/srchnum.c new file mode 100644 index 0000000..3825402 --- /dev/null +++ b/kanakan/srchnum.c @@ -0,0 +1,624 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: srchnum.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:30 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_yomi.h" +#include "sj_hinsi.h" +#include "sj_suuji.h" + +JREC *argjrec(); +Uchar *srchdict(); +Void setnumrec(), memcpy(), memset(); + +Static Void srch_kurai1(), srch_kurai2(); + +Static Void srch_josuu_sub(jrec, gram) +JREC *jrec; +TypeGram gram; +{ + Uchar *tagp; + DICTL *dp; + + for (dp = dictlist ; dp ; dp = dp -> next) { + curdict = dp -> dict; + dicinl = 1; + dicsaml = 0; + prevseg = -1; + while (tagp = srchdict(tagp)) setnumrec(tagp, jrec, gram); + } +} + +Static Void srch_josuu(jrec) +JREC *jrec; +{ + Uchar *kp; + Int klen; + Int len; + + if (headcode && headcode != SETTOU_DAI) return; + + kp = cnvstart; + klen = cnvlen; + + cnvstart += (len = jrec -> numlen); + cnvlen -= len; + + srch_josuu_sub(jrec, JOSUUSI); + + if (!headcode) srch_josuu_sub(jrec, JOSUUSI2); + + cnvstart = kp; + cnvlen = klen; +} + +Static Void setnrec_sub(p, flag, stb) +Uchar *p; +Ushort flag; +Int stb; +{ + JREC *rec; + Int len1; + Int len2; + + len1 = len2 = p - suuji_yptr; + if (headcode) len1 += headlen; + if (stb) len2--; + + if ((Int)suuji_len == len2) { + if (suuji_wkeep) { + memcpy((Uchar *)suuji_wbuf, (Uchar *)suuji_wkeep, + sizeof(suuji_wbuf[0]) * NumWordBuf); + } + if (suuji_ukeep) { + memcpy(suuji_ubuf, suuji_ukeep, NumKetaLength); + } + suuji_exit = suuji_keta; + return; + } + + if (rec = argjrec(len1, (JREC *)NULL)) { + rec -> class = suuji_class; + rec -> hinsi = SUUSI; + rec -> sttofs = headcode; + rec -> stbofs = (Uchar)stb; + rec -> flags = flag; + rec -> numlen = (Uchar)len2; + + if (!stb) srch_josuu(rec); + } +} + +Static Void setnrec(p, flag) +Uchar *p; +Ushort flag; +{ + setnrec_sub(p, flag, 0); + + if (!headcode && (*p == Y_S_KIGOU2)) { + setnrec_sub(p + 1, flag, -1); + } +} + +Static Uchar TFar *srchtbl(ch, tbl, rec, n) +Uchar ch; +Uchar TFar *tbl; +Int rec; +Int n; +{ + Int high, low, mid; + Uchar TFar *p; + + if (!ch) return NULL; + + low = 0; + high = n - 1; + + while (low <= high) { + mid = (low + high) / 2; + p = tbl + mid * rec; + + if (ch == *p) + break; + + else if (ch < *p) + high = mid - 1; + + else + low = mid + 1; + } + + if (low > high) return NULL; + + while (mid-- > 0 && ch == *(p - rec)) p -= rec; + + return p; +} + +Static Int isconnect(cnct, num) +Uchar TFar *cnct; +Int num; +{ + return (cnct[num / 8] & (0x80 >> (num % 8))); +} + +Static Int string_cmp(s, l, d) +Reg3 Uchar TFar *s; +Reg1 Int l; +Reg2 Uchar *d; +{ + Uchar TFar *p; + + p = s; + + while (*s && l-- > 0) { + if (*s != *d) return 0; + s++; + d++; + } + + return (s - p); +} + +Static Int check_num(ptr) +Uchar *ptr; +{ + Int i; + Int j; + Int k; + int tmp; + Int hketa; + Int lketa; + Int flg = FALSE; + Int cnt; + Ushort flag; + + memset((Uchar *)suuji_wbuf, 0, sizeof(Ushort) * NumWordBuf); + flag = 0; + + hketa = lketa = cnt = 0; + for (i = suuji_keta ; --i >= 0 ;) { + if (hketa >= 4) return FALSE; + tmp = suuji_ubuf[i]; + if (j = ((tmp >> 6) & 3)) { + if (j < hketa) return FALSE; + if (j > hketa) { + flag |= JFLAG_N01; + do { + suuji_wbuf[hketa] |= (_Num0<<(lketa*4)); + if (++lketa >= 4) { + lketa = 0; + hketa++; + } + } while (j > hketa); + } + } + k = ((tmp >> 4) & 3); + if (j || k) { + if (k < lketa) return FALSE; + if (k > lketa) { + flag |= JFLAG_N01; + do { + suuji_wbuf[hketa] |= (_Num0<<(lketa*4)); + lketa++; + } while (k > lketa); + } + flg = TRUE; + } + tmp &= 0x0f; + suuji_wbuf[hketa] |= (tmp << (lketa * 4)); + cnt++; + + j = (1 << tmp); + if (j & NumberS1) flag |= JFLAG_NS1; + if (j & Number01) flag |= JFLAG_N01; + if (j & Number23) flag |= JFLAG_N23; + + if (tmp != _Num0) { + flg = FALSE; + + switch (lketa) { + case 0: + if (tmp == _Num1) flag |= JFLAG_N_1; + break; + + case 1: + flag |= JFLAG_N10; + break; + } + } + if (++lketa >= 4) { + lketa = 0; + hketa++; + } + } + + if (flg) return FALSE; + + if (suuji_keta == 1 || tmp != _Num0) flag |= JFLAG_NN0; + + if (hketa) + flag |= (JFLAG_NK4 | JFLAG_NK2); + else if (lketa > 1) + flag |= JFLAG_NK2; + + if (cnt > 1) flag |= JFLAG_NSN; + + setnrec(ptr, flag); + + return TRUE; +} + +Static Void srch_number1(ptr) +Uchar *ptr; +{ + Uchar ch; + Uchar mode; + Uchar TFar *p; + Int l; + TypeClass cls; + Int len; + Uchar *tptr; + + if (suuji_keta >= NumKetaLength) return; + + if (!(p = srchtbl((ch = *ptr), Suuji_tbl, SjTblRecLen, SjTblRecNum))) + return; + + len = suuji_yptr + MaxClInputLen - ptr; + + for ( ; *SjTblYPos(p) == ch ; p += SjTblRecLen) { + if (!(l = string_cmp(SjTblYPos(p), SjTblYLen, ptr))) continue; + + if (l > len) continue; + + mode = *SjTblModeP(p); + suuji_ubuf[suuji_keta++] = SjTblNumber(mode); + tptr = ptr + l; + + switch (suuji_class) { + case C_N_ARABIA: + if (!(mode & SjTblNArabiaF)) break; + + check_num(tptr); + srch_number1(tptr); + srch_kurai2(tptr, (Uchar TFar *)NULL); + + break; + + case C_N_SUUJI: + if (mode & (SjTblNArabiaF | SjTblNYomiF)) break; + + check_num(tptr); + srch_number1(tptr); + srch_kurai1(tptr, (Uchar TFar *)NULL); + srch_kurai2(tptr, (Uchar TFar *)NULL); + + break; + + case C_N_KAZU: + case C_N_NANSUU: + if (mode & SjTblNNarabiF) break; + if (mode & SjTblNNanSuuF) { + cls = suuji_class; + suuji_class = C_N_NANSUU; + } + + check_num(tptr); + srch_kurai1(tptr, SjTblCnctP(p)); + srch_kurai2(tptr, SjTblCnctP(p)); + + if (mode & SjTblNNanSuuF) suuji_class = cls; + break; + + default: + if (mode & SjTblNArabiaF) { + suuji_class = C_N_ARABIA; + check_num(tptr); + srch_number1(tptr); + srch_kurai2(tptr, (Uchar TFar *)NULL); + + suuji_class = C_N_KAZU; + } + else if (mode & SjTblNYomiF) { + if (mode & SjTblNNanSuuF) + suuji_class = C_N_NANSUU; + else + suuji_class = C_N_KAZU; + check_num(tptr); + } + else if (mode & SjTblNNarabiF) { + suuji_class = C_N_SUUJI; + check_num(tptr); + srch_number1(tptr); + break; + } + else { + suuji_class = C_N_SUUJI; + srch_number1(tptr); + + suuji_class = C_N_KAZU; + check_num(tptr); + } + srch_kurai1(tptr, SjTblCnctP(p)); + srch_kurai2(tptr, SjTblCnctP(p)); + break; + } + + suuji_keta--; + } +} + +Static Void srch_kurai1(ptr, cnct) +Uchar *ptr; +Uchar TFar *cnct; +{ + Uchar ch; + Uchar TFar *p; + Int l; + Int keta; + Int mode; + TypeClass cls; + Int len; + Uchar *tptr; + + if (!(p = srchtbl((ch = *ptr), Kurai1_tbl, Kr1TblRecLen, Kr1TblRecNum))) + return; + + len = suuji_yptr + MaxClInputLen - ptr; + + for ( ; *Kr1TblYPos(p) == ch ; p += Kr1TblRecLen) { + if (!(l = string_cmp(Kr1TblYPos(p), Kr1TblYLen, ptr))) continue; + + if (l > len) continue; + + mode = *Kr1TblModeP(p); + keta = Kr1TblKeta(mode); + tptr = ptr + l; + + if (suuji_class != C_N_KAZU && suuji_class != C_N_NANSUU) { + cls = suuji_class; + suuji_class = (suuji_class == C_N_ARABIA) ? + C_N_ARAKURA : C_N_KANKURA; + suuji_ubuf[suuji_keta - 1] |= (keta << 4); + check_num(tptr); + suuji_class = cls; + suuji_ubuf[suuji_keta - 1] &= 0xcf; + continue; + } + + if (cnct) { + if (!isconnect(cnct, (Int)Kr1TblCnct(mode))) continue; + suuji_ubuf[suuji_keta - 1] |= (keta << 4); + } + else { + if (!Kr1TblTop(mode)) continue; + if (suuji_keta >= NumKetaLength) continue; + suuji_ubuf[suuji_keta++] = (_Num1 | (keta << 4)); + } + + check_num(tptr); + + srch_number1(tptr); + srch_kurai1(tptr, (Uchar TFar *)NULL); + srch_kurai2(tptr, Kr1TblCnctP(p)); + + if (cnct) + suuji_ubuf[suuji_keta - 1] &= 0xcf; + else + suuji_keta--; + } +} + +Static Void srch_kurai2(ptr, cnct) +Uchar *ptr; +Uchar TFar *cnct; +{ + Uchar ch; + Uchar TFar *p; + Int l; + Int keta; + Int mode; + TypeClass cls; + Int len; + Uchar *tptr; + + if ((suuji_ubuf[0] & 0x0f) == _Num0) return; + + if (!(p = srchtbl((ch = *ptr), Kurai2_tbl, Kr2TblRecLen, Kr2TblRecNum))) + return; + + len = suuji_yptr + MaxClInputLen - ptr; + + for ( ; *Kr2TblYPos(p) == ch ; p += Kr2TblRecLen) { + if (!(l = string_cmp(Kr2TblYPos(p), Kr2TblYLen, ptr))) continue; + + if (l > len) continue; + + mode = *Kr2TblModeP(p); + keta = Kr2TblKeta(mode); + tptr = ptr + l; + + if (suuji_class != C_N_KAZU && suuji_class != C_N_NANSUU) { + suuji_ubuf[suuji_keta - 1] |= (keta << 6); + cls = suuji_class; + suuji_class = (suuji_class == C_N_ARABIA) ? + C_N_ARAKURA : C_N_KANKURA; + check_num(tptr); + suuji_class = cls; + suuji_ubuf[suuji_keta - 1] &= 0x3f; + continue; + } + + if (cnct) { + if (!isconnect(cnct, (Int)Kr2TblCnct(mode))) continue; + suuji_ubuf[suuji_keta - 1] |= (keta << 6); + } + else { + if (suuji_keta >= NumKetaLength) continue; + suuji_ubuf[suuji_keta++] = (_Num1 | (keta << 6)); + } + + check_num(tptr); + + srch_number1(tptr); + srch_kurai1(tptr, (Uchar TFar *)NULL); + + if (cnct) + suuji_ubuf[suuji_keta - 1] &= 0x3f; + else + suuji_keta--; + } +} + +Static Void srch_number2(p) +Uchar *p; +{ + Uchar ch; + Int i; + + suuji_class = (*p == N_0) ? C_N_SUUJILONG : C_N_KAZULONG; + + suuji_keta = suuji_comma = 0; + for (i = 0 ; i < MaxClInputLen ; i++) { + if ((ch = *p++) == Y_COMMA) { + if (suuji_keta) { + if (suuji_comma) { + if (suuji_comma != 3) break; + } + else { + if (suuji_keta >= 4) break; + if (*suuji_yptr == N_0) break; + } + } + else + break; + + suuji_comma = 1; + ch = *p++; + } + else if (suuji_comma) { + suuji_comma++; + } + + if (suuji_comma > 3) break; + + if (!(Chrtbl[ch] & NUMBER)) break; + + if (suuji_keta < NumKetaLength) { + suuji_ubuf[suuji_keta] = ch - N_0 + _Num0; + } + suuji_keta++; + + if (!suuji_comma && suuji_keta > NumKetaLength) { + setnrec(p, 0); + } + else if (suuji_comma == 3) { + if (suuji_keta <= NumKetaLength) { + suuji_class = C_N_ARACMA; + check_num(p); + } + else { + suuji_class = C_N_KAZULCMA; + setnrec(p, 0); + } + } + } +} + +Static Void srchnum_sub(p) +Uchar *p; +{ + suuji_yptr = p; + + suuji_comma = suuji_keta = 0; + suuji_class = 0; + srch_number1(p); + + suuji_keta = 0; + suuji_class = C_N_KAZU; + srch_kurai1(p, (Uchar TFar *)NULL); + if (suuji_exit) return; + + srch_number2(p); +} + +Void srchnum() +{ + suuji_len = suuji_exit = 0; + + srchnum_sub(cnvstart); + + if (!headcode && (*cnvstart == Y_S_KIGOU1)) { + headcode = SETTOU_KIGOU; + headlen = 1; + + srchnum_sub(cnvstart + 1); + + headcode = headlen = 0; + } +} + +Void setwdnum(p, len, wd) +Uchar *p; +Int len; +Ushort *wd; +{ + suuji_len = (Uchar)len; + suuji_wkeep = wd; + suuji_ukeep = NULL; + headcode = headlen = 0; + suuji_exit = 0; + + srchnum_sub(p); +} + +Int setucnum(p, len, ud) +Uchar *p; +Int len; +Uchar *ud; +{ + suuji_len = (Uchar)len; + suuji_wkeep = NULL; + suuji_ukeep = ud; + headcode = headlen = 0; + suuji_exit = 0; + + srchnum_sub(p); + + return (Int)suuji_exit; +} + diff --git a/kanakan/sstrcmp.c b/kanakan/sstrcmp.c new file mode 100644 index 0000000..3447436 --- /dev/null +++ b/kanakan/sstrcmp.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sstrcmp.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:31 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" + +Int sstrcmp(src, dst) +Reg1 Uchar *src; +Reg2 Uchar *dst; +{ + for ( ; *src ; src++, dst++) + if (*src != *dst) break; + + return (*src - *dst); +} + diff --git a/kanakan/sstrlen.c b/kanakan/sstrlen.c new file mode 100644 index 0000000..45616ef --- /dev/null +++ b/kanakan/sstrlen.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sstrlen.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:32 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" + +Int sstrlen(ptr) +Reg1 Uchar *ptr; +{ + Reg2 Uchar *head; + + head = ptr; + + while (*ptr) ptr++; + + return (ptr - head); +} + diff --git a/kanakan/sstrncmp.c b/kanakan/sstrncmp.c new file mode 100644 index 0000000..e0d8163 --- /dev/null +++ b/kanakan/sstrncmp.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sstrncmp.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:33 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" + +Int sstrncmp(src, dst, len) +Reg1 Uchar *src; +Reg2 Uchar TFar *dst; +Reg3 Int len; +{ + + while (len-- > 0) { + + if (*src > *dst) + return CONT; + + if (*src < *dst) { + if (!*src) return PARTLY; + return OVER; + } + src++; + dst++; + } + + return MATCH; +} + diff --git a/kanakan/stbtbl.c b/kanakan/stbtbl.c new file mode 100644 index 0000000..110da35 --- /dev/null +++ b/kanakan/stbtbl.c @@ -0,0 +1,144 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: stbtbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:34 $ + */ + + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_yomi.h" +#include "sj_hinsi.h" +static Uchar name_stb[] = { + 0x22, MEISI_1, _KU, _NN, + 0xb7, 0xaf, + 0x22, MEISI_1, _SA, _MA, + 0xcd, 0xcd, + 0x24, MEISI_1, _SA, _NN, + 0xa4, 0xb5, 0xa4, 0xf3, + 0x12, MEISI_1, _SI, + 0xbb, 0xe1, + 0x36, MEISI_1, _TI, _XYA, _NN, + 0xa4, 0xc1, 0xa4, 0xe3, 0xa4, 0xf3, + 0x22, MEISI_1, _DO, _NO, + 0xc5, 0xc2, + 0x00 +}; + +static Uchar timei_stb[] = { + 0x22, MEISI_1, _E, _KI, + 0xb1, 0xd8, + 0x44, MEISI_1, _E, _KI, _HA, _TU, + 0xb1, 0xd8, 0xc8, 0xaf, + 0x44, MEISI_1, _E, _KI, _YU, _KI, + 0xb1, 0xd8, 0xb9, 0xd4, + 0x22, MEISI_1, _GU, _NN, + 0xb7, 0xb4, + 0x12, MEISI_1, _SI, + 0xbb, 0xd4, + 0x32, MEISI_1, _TI, _XYO, _U, + 0xc4, 0xae, + 0x22, MEISI_1, _HA, _TU, + 0xc8, 0xaf, + 0x22, MEISI_1, _MA, _TI, + 0xc4, 0xae, + 0x22, MEISI_1, _MU, _RA, + 0xc2, 0xbc, + 0x00 +}; + +static Uchar meisi_stb[] = { + 0x44, MEISI_6, _A, _TU, _KA, _I, + 0xb0, 0xb7, 0xa4, 0xa4, + 0x1a, MEISI_6, _KA, + 0xb2, 0xbd, + 0x22, MEISI_8, _TE, _KI, + 0xc5, 0xaa, + 0x56, FUKUSI_1, _NI, _TO, _MO, _NA, _I, + 0xa4, 0xcb, 0xc8, 0xbc, 0xa4, 0xa4, + 0x56, FUKUSI_1, _NI, _TO, _MO, _NA, _U, + 0xa4, 0xcb, 0xc8, 0xbc, 0xa4, 0xa6, + 0x22, MEISI_8, _HU, _U, + 0xc9, 0xf7, + 0x00 +}; + +static Uchar sahen_stb[] = { + 0x44, MEISI_6, _A, _TU, _KA, _I, + 0xb0, 0xb7, 0xa4, 0xa4, + 0x1a, MEISI_6, _KA, + 0xb2, 0xbd, + 0x12, MEISI_11, _GO, + 0xb8, 0xe5, + 0x22, MEISI_11, _GO, _TO, + 0xcb, 0xe8, + 0x32, MEISI_11, _ZI, _XYO, _U, + 0xbe, 0xe5, + 0x32, MEISI_11, _TI, _XYU, _U, + 0xc3, 0xe6, + 0x22, MEISI_8, _TE, _KI, + 0xc5, 0xaa, + 0x56, FUKUSI_1, _NI, _TO, _MO, _NA, _I, + 0xa4, 0xcb, 0xc8, 0xbc, 0xa4, 0xa4, + 0x56, FUKUSI_1, _NI, _TO, _MO, _NA, _U, + 0xa4, 0xcb, 0xc8, 0xbc, 0xa4, 0xa6, + 0x22, MEISI_8, _HU, _U, + 0xc9, 0xf7, + 0x22, MEISI_11, _MA, _E, + 0xc1, 0xb0, + 0x00 +}; + +static Uchar human_stb[] = { + 0x24, MEISI_1, _SA, _NN, + 0xa4, 0xb5, 0xa4, 0xf3, + 0x00 +}; + +static Uchar ippan_stb[] = { + 0x56, FUKUSI_1, _NI, _TO, _MO, _NA, _I, + 0xa4, 0xcb, 0xc8, 0xbc, 0xa4, 0xa4, + 0x56, FUKUSI_1, _NI, _TO, _MO, _NA, _U, + 0xa4, 0xcb, 0xc8, 0xbc, 0xa4, 0xa6, + 0x00 +}; + +Uchar *stbadr[] = { + 0, + ippan_stb, ippan_stb, ippan_stb, meisi_stb, sahen_stb, + sahen_stb, sahen_stb, meisi_stb, meisi_stb, meisi_stb, + ippan_stb, ippan_stb, human_stb, ippan_stb, ippan_stb, + ippan_stb, ippan_stb, ippan_stb, 0, 0, + name_stb, name_stb, 0, timei_stb, +}; diff --git a/kanakan/stttbl.c b/kanakan/stttbl.c new file mode 100644 index 0000000..0ffb811 --- /dev/null +++ b/kanakan/stttbl.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: stttbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:37 $ + */ + + + + +#include "sj_rename.h" +#include "sj_typedef.h" + + + +static Uchar o_settou[] = { + 0xA1, 0xb8, 0xe6, 0xa4, 0xaa +}; + +static Uchar go_settou[] = { + 0xA1, 0xb8, 0xe6, 0xa4, 0xb4 +}; + +static Uchar dai_settou[] = { + 0x22, 0xc2, 0xe8, 0xc2, 0xe8 +}; + +static Uchar kigou_settou[] = { + 0x01 +}; + + + +Uchar *settou_ptr[] = { + NULL, o_settou, go_settou, dai_settou, kigou_settou +}; + + + +Uchar scncttbl[2][24] = { + { + + 0x48, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + + 0x18, 0x18, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0xff, + + + 0x00, 0x1f, 0xf0, 0x00, 0xff, 0x00, 0x00, 0x00 + }, + + { + + 0x22, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; diff --git a/kanakan/study.c b/kanakan/study.c new file mode 100644 index 0000000..31a3df9 --- /dev/null +++ b/kanakan/study.c @@ -0,0 +1,193 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: study.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:38 $ + */ + + + +#include "sj_kcnv.h" + +Void mvmemi(), mvmemd(), memcpy(); + +STDYIN *srchstdy(); + +Int study(stdy) +STDYOUT *stdy; +{ + STDYOUT outp; + STDYIN *p1; + STDYIN *p2; + Int wcnt; + Int ret; + TypeDicSeg seg; + TypeDicOfs ofs; + TypeStyNum nm; + TypeStyNum wi; + + if (!StudyExist()) return StudyNoDict; + + memcpy((Uchar *)stdy, (Uchar *)&outp, sizeof(outp)); + + if (outp.stdy1.offset == 0) return StudyNotStudy; + + p1 = srchstdy(outp.stdy1.seg, outp.stdy1.offset, outp.stdy1.dicid); + if (p1) { + nm = p1 -> styno; + + for (wcnt = StudyCount, p2 = StudyDict ; wcnt-- ; p2++) { + if (p2 -> styno < nm) p2 -> styno++; + } + + p1 -> styno = 1; + + if (outp.sttfg) p1 -> sttkj = outp.stdy1.sttkj; + if (outp.ka_fg) p1 -> ka_kj = outp.stdy1.ka_kj; + + p1 -> nmflg = outp.stdy1.nmflg; + + putstydic(); + + return StudyNormEnd; + } + + + if (StudyCount >= StudyMax) { + + p1 = StudyDict; p2 = NULL; wi = 0; + for (wcnt = StudyMax ; wcnt-- ; p1++) { + if ((nm = p1 -> styno + 1) > wi) { + wi = nm; + p2 = p1; + } + + p1 -> styno = nm; + } + + if (p2) { + mvmemi((Uchar *)(p2 + 1), (Uchar *)p2, + (StudyTail - p2) * StudyRecSize); + StudyCount -= 1; + } + else + return StudyError; + + ret = StudyFullArea; + } + else { + p1 = StudyDict; + for (wcnt = StudyCount ; wcnt-- ; p1++) p1 -> styno++; + + ret = StudyNormEnd; + } + + p1 = StudyDict; + seg = outp.stdy1.seg; + for (wcnt = StudyCount ; wcnt && (p1 -> seg < seg) ; ) { + wcnt--; p1++; + } + + ofs = outp.stdy1.offset; + while (wcnt-- && (p1 -> seg == seg)) { + if (p1 -> offset > ofs) break; + p1++; + } + + mvmemd((Uchar *)(StudyTail - 1), (Uchar *)StudyTail, + (Uchar *)(StudyTail - 1) - (Uchar *)p1); + p1 -> offset = outp.stdy1.offset; + p1 -> seg = outp.stdy1.seg; + p1 -> dicid = outp.stdy1.dicid; + p1 -> styno = 1; + p1 -> sttkj = (outp.sttfg) ? outp.stdy1.sttkj : 0; + p1 -> ka_kj = (outp.ka_fg) ? outp.stdy1.ka_kj : 0; + p1 -> nmflg = outp.stdy1.nmflg; + StudyCount += 1; + + putstydic(); + + return ret; +} + +STDYIN *srchstdy(seg, ofs, dicid) +TypeDicSeg seg; +TypeDicOfs ofs; +TypeDicID dicid; +{ + Int high; + Int mid; + Int low; + STDYIN *ptr; + + + if (!StudyExist()) return NULL; + + if (!StudyCount || !ofs) return NULL; + + low = 0; + high = StudyCount - 1; + + for ( ; ; ) { + mid = ((low + high) >> 1); + + if (StudyDict[mid].seg > seg) + high = mid - 1; + + else if (StudyDict[mid].seg < seg) + low = mid + 1; + + else + break; + + if (low > high) return NULL; + } + + low = mid + 1; + ptr = &StudyDict[mid]; + while (ptr -> seg == seg) { + if (ptr -> offset < ofs) break; + if (ptr -> dicid == dicid && ptr -> offset == ofs) return ptr; + if (!mid--) break; + ptr--; + } + + ptr = &StudyDict[low]; + mid = StudyCount - low; + while (mid-- && ptr -> seg == seg) { + if (ptr -> offset > ofs) break; + if (ptr -> dicid == dicid && ptr -> offset == ofs) return ptr; + ptr++; + } + + return NULL; +} + diff --git a/kanakan/suujitbl.c b/kanakan/suujitbl.c new file mode 100644 index 0000000..ff42b40 --- /dev/null +++ b/kanakan/suujitbl.c @@ -0,0 +1,194 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: suujitbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:39 $ + */ + + + + +#include "sj_const.h" +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_yomi.h" +#include "sj_suuji.h" + +#define NA SjTblNArabiaF +#define NY SjTblNYomiF +#define NN SjTblNNarabiF +#define NS SjTblNNanSuuF + + + +Uchar suuji_tbl[] = { + N_0,_NIL,_NIL, _Num0 | NA, 0x00, 0x00, + N_1,_NIL,_NIL, _Num1 | NA, 0xec, 0x07, + N_2,_NIL,_NIL, _Num2 | NA, 0xec, 0x07, + N_3,_NIL,_NIL, _Num3 | NA, 0xff, 0x07, + N_4,_NIL,_NIL, _Num4 | NA, 0xec, 0x07, + N_5,_NIL,_NIL, _Num5 | NA, 0xec, 0x07, + N_6,_NIL,_NIL, _Num6 | NA, 0xec, 0xc7, + N_7,_NIL,_NIL, _Num7 | NA, 0xec, 0x07, + N_8,_NIL,_NIL, _Num8 | NA, 0xec, 0xc7, + N_9,_NIL,_NIL, _Num9 | NA, 0xec, 0x07, + _I, _TI, _NIL, _Num1, 0x00, 0x05, + _I, _XTU,_NIL, _Num1S | NY, 0x20, 0x02, + _KI,_XYU,_U, _Num9, 0xec, 0x07, + _KU,_NIL,_NIL, _Num9 | NY, 0x00, 0x00, + _GO,_NIL,_NIL, _Num5, 0xec, 0x07, + _GO,_U, _NIL, _Num5 | NN, 0x00, 0x00, + _SA,_NN, _NIL, _Num3, 0xd3, 0x07, + _SI,_NIL,_NIL, _Num4 | NY, 0x80, 0x00, + _SI,_I, _NIL, _Num4 | NN, 0x00, 0x00, + _SI,_TI, _NIL, _Num7, 0xec, 0x07, + _SU,_U, _NIL, _NumS | NY | NS, 0xec, 0x07, + _ZE,_RO, _NIL, _Num0 | NN, 0x00, 0x00, + _NA,_NA, _NIL, _Num7, 0xec, 0x07, + _NA,_NN, _NIL, _NumN | NY | NS, 0xf3, 0x07, + _NI,_NIL,_NIL, _Num2, 0xec, 0x07, + _NI,_I, _NIL, _Num2 | NN, 0x00, 0x00, + _HA,_TI, _NIL, _Num8, 0xc0, 0x05, + _HA,_XTU,_NIL, _Num8 | NY, 0x20, 0xc2, + _MA,_RU, _NIL, _Num0 | NN, 0x00, 0x00, + _YO,_NIL,_NIL, _Num4 | NY, 0x00, 0x00, + _YO,_NN, _NIL, _Num4, 0xec, 0x07, + _RE,_I, _NIL, _Num0 | NN, 0xec, 0x00, + _RO,_KU, _NIL, _Num6, 0xe0, 0x07, + _RO,_XTU,_NIL, _Num6 | NY, 0x00, 0xc2, + 0 +}; + + + +Uchar kurai1_tbl[] = { + _ZI,_XYU,_U, (1<<4)+0+Kr1TblTopF, 0x05, + _ZI,_XYU,_XTU, (1<<4)+1+Kr1TblTopF, 0x02, + _SE,_NN, _NIL, (3<<4)+2+Kr1TblTopF, 0x07, + _ZE,_NN, _NIL, (3<<4)+3, 0x05, + _HI,_XYA,_KU, (2<<4)+4+Kr1TblTopF, 0x07, + _HI,_XYA,_XTU, (2<<4)+5+Kr1TblTopF, 0x02, + _BI,_XYA,_KU, (2<<4)+6, 0x07, + _BI,_XYA,_XTU, (2<<4)+7, 0x00, + _PI,_XYA,_KU, (2<<4)+8, 0x07, + _PI,_XYA,_XTU, (2<<4)+9, 0x00, + 0 +}; + + + +Uchar kurai2_tbl[] = { + _O, _KU, _NIL, (2<<4)+13, + _TI,_XYO,_U, (3<<4)+14, + _MA,_NN, _NIL, (1<<4)+15, + 0 +}; + + + +Uchar num1tbl[] = { + 0xa3, 0xb0, + 0xa3, 0xb1, + 0xa3, 0xb2, + 0xa3, 0xb3, + 0xa3, 0xb4, + 0xa3, 0xb5, + 0xa3, 0xb6, + 0xa3, 0xb7, + 0xa3, 0xb8, + 0xa3, 0xb9, + 0xa3, 0xb1, + 0xbf, 0xf4, + 0xb2, 0xbf +}; + + + +Uchar num2tbl[] = { + 0xa1, 0xbb, + 0xb0, 0xec, + 0xc6, 0xf3, + 0xbb, 0xb0, + 0xbb, 0xcd, + 0xb8, 0xde, + 0xcf, 0xbb, + 0xbc, 0xb7, + 0xc8, 0xac, + 0xb6, 0xe5, + 0xb0, 0xec, + 0xbf, 0xf4, + 0xb2, 0xbf +}; + + + +Uchar num3tbl[] = { + 0xce, 0xed, + 0xb0, 0xed, + 0xc6, 0xf5, + 0xbb, 0xb2, + 0xbb, 0xcd, + 0xb8, 0xde, + 0xcf, 0xbb, + 0xbc, 0xb7, + 0xc8, 0xac, + 0xb6, 0xe5, + 0xb0, 0xed, + 0xbf, 0xf4, + 0xb2, 0xbf +}; + + + +Uchar num4tbl[] = { + 0xc0, 0xe9, + 0xc9, 0xb4, + 0xbd, 0xbd, + 0 +}; + + + +Uchar num5tbl[] = { + 0xc0, 0xe9, + 0xc9, 0xb4, + 0xbd, 0xa6, + 0 +}; + + + +Uchar num6tbl[] = { + 0xc3, 0xfb, + 0xb2, 0xaf, + 0xcb, 0xfc, + 0 +}; diff --git a/kanakan/terminat.c b/kanakan/terminat.c new file mode 100644 index 0000000..6a189e3 --- /dev/null +++ b/kanakan/terminat.c @@ -0,0 +1,71 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: terminat.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:40 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_right.h" + +Int terminate(right, yomi) +TypeCnct right; +Uchar *yomi; +{ + Uchar ch; + + + if ((yomi > cnvstart) && (Chrtbl[*(yomi - 1)] & NUMBER)) + return TRUE; + + ch = *yomi; + if (Termtbl[right] & T_SHUUJO) { + + if (!ch) return TRUE; + + if (Chrtbl[ch] & FZKTOP) return FALSE; + + if (!isdpnd(ch)) return SHU; + } + + if (Termtbl[right] & T_KANOU) { + + if (ch && (Chrtbl[ch] & FZKTOP)) return FALSE; + + if (!isdpnd(ch)) return TRUE; + } + + + return FALSE; +} + diff --git a/kanakan/termtbl.c b/kanakan/termtbl.c new file mode 100644 index 0000000..c11f7b5 --- /dev/null +++ b/kanakan/termtbl.c @@ -0,0 +1,326 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: termtbl.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:42 $ + */ + + + +#include "sj_rename.h" +#include "sj_typedef.h" +#include "sj_const.h" +#include "sj_prty.h" + + +Uchar termtbl[] = { + 0, + T_KANOU + P_JOSHI_B, + T_KANOU + P_JOSHI_A, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_B, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_B, + T_KANOU + 8, + T_KANOU + P_JOSHI_B, + + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_B, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_E, + T_KANOU + P_JOSHI_B, + 0 + P_FUKA, + 0 + P_FUKA, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + 0 + P_FUKA, + T_KANOU + P_RENYOU_J, + T_KANOU + P_RENYOU_J, + T_KANOU + P_RENYOU_J, + T_KANOU + P_RENYOU_J, + + T_KANOU + P_RENYOU_M, + T_KANOU + P_RENYOU_M, + T_KANOU + P_RENYOU_M, + T_KANOU + P_RENYOU_M, + T_KANOU + P_RENYOU_M, + T_KANOU + P_RENYOU_M, + 0, + 0, + 0, + T_KANOU + P_RENYOU_J, + + T_KANOU + P_JOSHI_B, + T_KANOU + P_JOSHI_C, + T_KANOU + P_RENYOU_J, + 0 + P_FUKA, + 0 + P_FUKA, + 0 + P_FUKA, + 0 + P_FUKA, + 0 + P_FUKA, + 0 + P_FUKA, + 0 + P_FUKA, + + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + 0 + P_FUKA, + T_KANOU + P_JOSHI_C, + T_KANOU + P_RENYOU_F, + + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_F, + T_SHUUJO+ P_SHUUSI, + T_KANOU + P_SHUUSI, + T_KANOU + P_SHUUSI, + T_KANOU + P_SHUUSI, + T_KANOU + P_SHUUSI, + T_KANOU + P_SHUUSI, + + T_KANOU + P_SHUUSI, + T_KANOU + P_SHUUSI, + T_KANOU + RENTAI + 8, + T_KANOU + RENTAI + 10, + T_KANOU + RENTAI + 7, + T_KANOU + P_SHUUSI, + T_KANOU + RENTAI + 7, + T_KANOU + RENTAI + 6, + T_KANOU + P_SHUUSI, + T_KANOU + RENTAI + 7, + + T_KANOU + RENTAI + 6, + T_KANOU + RENTAI + 6, + T_SHUUJO+ RENTAI + 6, + T_KANOU + RENTAI + 6, + T_KANOU + RENTAI + 7, + T_KANOU + RENTAI + 6, + T_KANOU + RENTAI + 6, + T_KANOU + RENTAI + 6, + T_KANOU + RENTAI + 6, + T_KANOU + RENTAI + 6, + + 0 + P_FUKA, + T_KANOU + RENTAI + 6, + 0 + P_FUKA, + T_KANOU + 3, + 0 + P_FUKA, + 0 + P_FUKA, + T_KANOU + P_KAMEI, + T_KANOU + P_MEIREI, + T_KANOU + P_MEIREI, + T_SHUUJO+ P_MEIREI, + T_SHUUJO+ P_MEIREI, + + T_KANOU + P_MEISI, + 0 + P_FUKA, + T_KANOU + P_FUKA, + T_KANOU + P_MEISI, + T_KANOU + P_DAIMEISI, + T_KANOU + P_DAIMEISI, + T_KANOU + P_MEISI, + T_KANOU + P_JOSHI_D, + T_KANOU + P_JOSHI_E, + + T_KANOU + P_SHUUSI, + T_KANOU + P_DAIMEISI, + T_KANOU + P_FUKUSI, + T_KANOU + P_FUKUSI, + T_KANOU + P_SHUUSI, + 0 + P_FUKA, + T_KANOU + P_DAIMEISI, + T_KANOU + 7, + 0 + P_FUKA, + T_SHUUJO+ P_JOSHI_E, + + T_KANOU + P_JOSHI_B, + T_KANOU + P_JOSHI_A, + T_KANOU + P_MEISI, + T_KANOU + P_JOSHI_B, + T_KANOU + P_RENYOU_F, + T_KANOU + P_F_FUKUSI, + 0, + T_KANOU + P_JOSHI_F, + 0, + 0, + + 0 + P_FUKA, + 0 + P_FUKA, + 0 + P_FUKA, + T_KANOU + P_RENYOU_F, + T_KANOU + P_RENYOU_J, + T_KANOU + P_RENYOU_F, + 0 + P_FUKA, + T_KANOU + P_SHUUSI, + T_KANOU + P_SHUUSI, + T_KANOU + P_SHUUSI, + + T_KANOU + P_SHUUSI, + 0 + P_FUKA, + 0 + P_FUKA, + 0 + P_FUKA, + T_SHUUJO+ P_SHUUSI, + T_KANOU + P_JOSHI_C, + T_KANOU + 1, + T_KANOU + P_JOSHI_F, + T_KANOU + P_JOSHI_F, + T_KANOU + P_JOSHI_C, + + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_F, + T_KANOU + P_SHUUSI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_B, + T_KANOU + P_JOSHI_D, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_D, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_B, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_D, + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_B, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_D, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_D, + T_KANOU + P_JOSHI_D, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + + T_SHUUJO+ P_SHUUSI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_B, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_B, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + T_KANOU + P_JOSHI_C, + T_KANOU + P_JOSHI_C, + T_KANOU + P_KEISIKI, + T_KANOU + P_KEISIKI, + + 0 + P_JOSHI_C, + T_KANOU + P_SUUSI, + T_KANOU + P_SETUZOKU, + T_KANOU + P_KANDOU, + T_KANOU + P_SETTOU, + T_KANOU + P_FUKUSI, + T_KANOU + P_FZKKGU, + T_KANOU + P_MEISI, + T_KANOU + P_MEISI, + T_KANOU + P_MEISI, + + T_KANOU + P_MEISI, + 0 + P_SETUBI, + T_KANOU + P_SETUBI, + T_KANOU + P_JOSUUSI, + T_KANOU + P_RENTAISI, + T_KANOU + P_TANKAN +}; diff --git a/kanakan/wakachi.c b/kanakan/wakachi.c new file mode 100644 index 0000000..e444aae --- /dev/null +++ b/kanakan/wakachi.c @@ -0,0 +1,134 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: wakachi.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:43 $ + */ + + + +#include "sj_kcnv.h" +#include "sj_right.h" +#include "sj_hinsi.h" + +JREC *argjrec(); +CLREC *argclrec(); +Int terminate(), setconj(); +Void setclrec(), srchfzk(); + +Void wakachi() +{ + JREC *jrec; + CLREC *clrec; + + CREC crec[4]; + Int count; + Uchar *next; + TypeCnct right; + Int i; + Int maxlen; + + free_jall(maxjptr); + maxjptr = NULL; + + maxlen = (cnvlen > MaxClInputLen) ? MaxClInputLen : cnvlen; + + next = cnvstart; + if (Chrtbl[*next] & (TAI_KGU | FZK_KGU)) { + + while (*next && (Chrtbl[*next] & (TAI_KGU | FZK_KGU))) + next++; + + if ((i = next - cnvstart) > maxlen) { + next = cnvstart + maxlen; + i = maxlen; + } + + if (!(jrec = argjrec(i, (JREC *)NULL))) return; + + jrec -> class = C_WAKACHI; + jrec -> hinsi = D_MEISI_1; + + if (Chrtbl[*(next - 1)] & TAI_KGU) + srchfzk(jrec, next, R_DAIMEISI, 0); + } + + else { + + if (!(jrec = argjrec(0, (JREC *)NULL))) return; + jrec -> class = C_WAKACHI; + jrec -> hinsi = MEISI_6; + + while ((Int)jrec -> jlen < maxlen) { + + count = setconj((TypeGram)MEISI_6, jrec, crec); + + for (i = count ; i-- > 0 ; ) { + + right = crec[i].right; + gobilen = crec[i].len; + next = cnvstart + jrec->jlen + gobilen; + + if (gobilen) { + if (terminate(right, next)) { + fzk_ka_flg = 0; + setclrec(jrec, next, right); + } + } + else if ((Chrtbl[*next] & NUMBER) + && (jrec -> jlen)) { + fzk_ka_flg = 0; + setclrec(jrec, next, right); + return; + } + + srchfzk(jrec, next, right, 0); + } + + if (maxclptr) break; + + (jrec -> jlen)++; + } + } + + if ((maxclptr) && (Chrtbl[*(cnvstart + jrec -> jlen)] & FZKTOP)) + return; + + if (jrec -> jlen) { + if (clrec = argclrec((Int)jrec -> jlen)) { + clrec -> jnode = jrec; + clrec -> right = R_MEISI; + clrec -> kubun = K_TAIGEN; + (jrec -> count)++; + } + } +} + diff --git a/patchlevel.h b/patchlevel.h new file mode 100644 index 0000000..1ca0c10 --- /dev/null +++ b/patchlevel.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +#define PATCHLEVEL 1.20 diff --git a/server/Imakefile b/server/Imakefile new file mode 100644 index 0000000..0f839f6 --- /dev/null +++ b/server/Imakefile @@ -0,0 +1,84 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:53 $ + */ + +/* + * Change some make rules. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#include "../sj3.tmpl" + +CONFFILE = $(SJ3CONFDIR)/serverrc +RKDIR = ../sj3lib + +INCLUDES = -I../include +#if SystemV4 || SystemV +#if HasSockets +EXTRA_LIBRARIES = -lnsl +#endif +#endif +DEFINES = $(ARCDEFS) $(SYSDEFS) $(USETLI) + +CONVLIB = ../kanakan/libkanakan.a +DEPLIBS = $(CONVLIB) +LOCAL_LIBRARIES = $(CONVLIB) +INSTFLAGS = -o $(SJ3OWNER) -g $(SJ3GROUP) -m 4755 +XCOMM INSTFLAGS2 = -o $(SJ3OWNER) -g $(SJ3GROUP) -m 444 + +#MKDIRHIER = ../util/mkdirh/mkdirh + +SRCS = comuni.c \ + error.c \ + execute.c \ + main.c \ + setup.c \ + time_stamp.c \ + version.c \ + ../sj3lib/string.c + +OBJS = comuni.o \ + error.o \ + execute.o \ + main.o \ + setup.o \ + time_stamp.o \ + version.o \ + string.o + +AllTarget(sj3serv) +NormalProgramTarget(sj3serv,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),) +DependTarget() +LinkSourceFile(string.c,$(RKDIR)) +InstallProgramWithFlags(sj3serv,$(SJ3BINDIR),$(INSTFLAGS)) +InstallNonExecFile(serverrc,$(SJ3CONFDIR)) diff --git a/server/comuni.c b/server/comuni.c new file mode 100644 index 0000000..24e2994 --- /dev/null +++ b/server/comuni.c @@ -0,0 +1,870 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: comuni.c,v $ + * $SonyRevision: 1.4 $ + * $SonyDate: 1994/11/16 07:34:05 $ + */ + + + + + +#include +#include "sj_sysvdef.h" +#include "sj_kcnv.h" +#include +#include +#include +#include +#include +#include +#include +#ifdef SVR4 +#include +#include +#include +#endif +#ifdef TLI +#include +#include +#include +#include +#include +#include +#endif + +#ifdef SVR4 +#define signal sigset +#endif + +#if defined(__FD_SET) && !defined(FD_SET) +# define FD_SET __FD_SET +# define FD_ZERO __FD_ZERO +# define FD_CLR __FD_CLR +# define FD_ISSET __FD_ISSET +#endif + +#ifndef SOMAXCONN +# define SOMAXCONN 5 +#endif + +int client_num = 0; +Client *client = NULL; +Client *cur_client; + +int maxfds = 0; +#ifdef SVR4 +struct pollfd poll_fds[_NFILE]; +#else +fd_set fds_org = { 0 }; +#endif +jmp_buf client_dead; +int client_fd; + +extern char *socket_name; +extern char *port_name; +#ifdef TLI +extern char *port_number; +extern char *proto_name; +#else +extern int port_number; +#endif +extern int max_client; +extern int errno; + +static int fd_inet = -1; +static int fd_unix = -1; + +static char putbuf[BUFSIZ]; +static char getbuf[BUFSIZ]; +static int putpos = 0; +static int buflen = 0; +static int getpos = 0; + + + +socket_init() +{ +#ifdef SVR4 + int i; + + for (i = 0; i < _NFILE; i++) { + poll_fds[i].fd = -1; + poll_fds[i].events = 0; + poll_fds[i].revents = 0; + } +#else + FD_ZERO(&fds_org); +#endif + client_num = 0; + maxfds = 0; +} + + + +static void set_fd(fd) +int fd; +{ +#ifdef SVR4 + poll_fds[maxfds].fd = fd; + poll_fds[maxfds].events = POLLIN; + maxfds++; +#else + FD_SET(fd, &fds_org); + if (fd >= maxfds) maxfds = fd + 1; +#endif +} + + + +static void clr_fd(fd) +int fd; +{ +#ifdef SVR4 + register int i, j; + + for (i = 0; i < maxfds; i++) { + if (poll_fds[i].fd == fd) { + maxfds--; + for (j = i; j < maxfds; j++) { + poll_fds[j].fd = poll_fds[j+1].fd; + poll_fds[j].events = poll_fds[j+1].events; + poll_fds[j].revents = poll_fds[j+1].revents; + } + poll_fds[j].fd = -1; + poll_fds[j].events = 0; + poll_fds[j].revents = 0; + break; + } + } +#else + FD_CLR(fd, &fds_org); + if (maxfds == fd + 1) { + while (--fd >= 0) { + if (FD_ISSET(fd, &fds_org)) break; + } + maxfds = fd + 1; + } +#endif +} + +#if (!defined(TLI) || (defined(TLI) && defined(SOCK_UNIX))) + + +static void open_af_unix() +{ + struct sockaddr_un sunix; + + unlink(socket_name); + + memset((char *)&sunix, '\0', sizeof(sunix)); + sunix.sun_family = AF_UNIX; + strcpy(sunix.sun_path, socket_name); + + if ((fd_unix = socket(AF_UNIX, SOCK_STREAM, 0)) == ERROR) { + unlink(socket_name); + fprintf(stderr, "Can't create AF_UNIX socket\n"); + exit(1); + } + + if (bind(fd_unix, (struct sockaddr *)&sunix, strlen(sunix.sun_path) + 2) == ERROR) { + if (errno == EADDRINUSE) + fprintf(stderr, "Port '%s' is already in use\n", + socket_name); + else + fprintf(stderr, "Can't bind AF_UNIX socket\n"); + shutdown(fd_unix, 2); + close(fd_unix); + unlink(socket_name); + exit(1); + } + + if (listen(fd_unix, SOMAXCONN) == ERROR) { + shutdown(fd_unix, 2); + unlink(socket_name); + close(fd_unix); + fprintf(stderr, "Can't listen AF_UNIX socket\n"); + exit(1); + } + set_fd(fd_unix); +} +#endif + +#ifdef TLI +struct t_call *inet_callptr; +struct netconfig *nconf; +#endif + + +static void open_af_inet() +{ +#ifdef TLI + struct t_bind *req; + struct nd_hostserv hserv; + struct nd_addrlist *addrs; + struct t_optmgmt *opt; + struct opthdr *hdr; + void *handlep; + extern int t_errno; + extern void *setnetpath(); + extern struct netconfig *getnetpath(); +#else + struct sockaddr_in sin; + struct servent *sp; + u_short port; +#endif + int true = 1; + + +#ifdef TLI + if (( handlep = setnetpath()) == NULL) { + fprintf(stderr, "Setnetpath fail\n"); + exit(1); + } + + while((nconf = getnetpath(handlep)) != NULL) { + if ((nconf->nc_semantics == NC_TPI_COTS_ORD) && + (strncmp(nconf->nc_proto, proto_name, strlen(proto_name)) == 0)) + break; + } + if (nconf == NULL) { + fprintf(stderr, "No connection mode transport\n"); + exit(1); + } + hserv.h_host = HOST_SELF; + hserv.h_serv = port_number; + if (netdir_getbyname(nconf, &hserv, &addrs) != 0) { + hserv.h_serv = port_name; + if (netdir_getbyname(nconf, &hserv, &addrs) != 0) { + fprintf(stderr, "Can't get address\n"); + exit(1); + } + } + if ((fd_inet = t_open(nconf->nc_device, O_RDWR, (struct t_info *) NULL)) < 0) { + fprintf(stderr,"Can't t_open\n"); + exit(1); + } + + if ((opt = (struct t_optmgmt *) t_alloc(fd_inet, T_OPTMGMT, T_ALL)) == NULL) { + fprintf(stderr, "Can't t_alloc error for T_OPTMGT\n"); + exit(1); + } + if ((hdr = (struct opthdr *) malloc(sizeof(*hdr) + sizeof(true))) == NULL) { + fprintf(stderr, "server: not malloc\n"); + exit(1); + } + hdr->level = SOL_SOCKET; + hdr->name = SO_REUSEADDR; + hdr->len = sizeof(true); + + (void) memcpy(&true, (char *)hdr + sizeof(*hdr), sizeof(true)); + + opt->opt.len = opt->opt.maxlen = sizeof(*hdr) + sizeof(true); + opt->flags = T_CHECK; + opt->opt.buf = (char *)hdr; + + if ((t_optmgmt(fd_inet, opt, opt) < 0) || !(opt->flags & T_SUCCESS)){ + fprintf(stderr, "Warning: Can't reuse address %s(%s)\n", + port_name, port_number); + } else { + opt->flags = T_NEGOTIATE; + + (void) memcpy(&true, (char *)hdr + sizeof(*hdr), sizeof(true)); + (void) t_optmgmt(fd_inet, opt, opt); + } + + if ((req = (struct t_bind *) t_alloc(fd_inet, T_BIND, T_ALL)) == NULL) { + t_close(fd_inet); + fprintf(stderr, "Can't alloc bind data\n"); + exit(1); + } + req->addr.maxlen = addrs->n_addrs->maxlen; + req->addr.len = addrs->n_addrs->len; + + (void) memcpy(addrs->n_addrs->buf, req->addr.buf, addrs->n_addrs->len); + req->qlen = 5; + + if (t_bind(fd_inet, req, req) < 0 ) { + fprintf(stderr, "Can't t_bind\n"); + t_close(fd_inet); + exit(1); + } + if (memcmp(req->addr.buf, addrs->n_addrs->buf, addrs->n_addrs->len) != 0) { + fprintf(stderr, "Port '%s(%s)' is already in use\n", + port_name, port_number); + t_close(fd_inet); + exit(1); + } + if ((inet_callptr = (struct t_call *) t_alloc(fd_inet, T_CALL, T_ALL)) == NULL) { + fprintf(stderr,"t_alloc error for T_CALL\n"); + t_close(fd_inet); + exit(1); + } + + inet_callptr->addr = *(addrs->n_addrs); + + + inet_callptr->udata.maxlen = 0; + inet_callptr->udata.len = 0; + inet_callptr->udata.buf = (char *) NULL; +#else + if (sp = getservbyname(port_name, "tcp")) + port = ntohs(sp -> s_port); + else + port = port_number; + + memset((char *)&sin, '\0', sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_port = htons(port); + sin.sin_addr.s_addr = htonl(INADDR_ANY); + + if ((fd_inet = socket(AF_INET, SOCK_STREAM, 0)) == ERROR) { + fprintf(stderr, "Can't create AF_INET socket\n"); + exit(1); + } + + setsockopt(fd_inet, SOL_SOCKET, SO_REUSEADDR, &true, sizeof(true)); + + if (bind(fd_inet, (struct sockaddr *)&sin, sizeof(sin)) == ERROR) { + if (errno == EADDRINUSE) { + if (sp) + fprintf(stderr, + "Port '%s(%d)' is already in use\n", + port_name, port); + else + fprintf(stderr, + "Port %d is already in use\n", + port); + } + else + fprintf(stderr, "Can't bind AF_INET socket\n"); + shutdown(fd_inet, 2); + close(fd_inet); + exit(1); + } + + if (listen(fd_inet, SOMAXCONN) == ERROR) { + shutdown(fd_inet, 2); + close(fd_inet); + fprintf(stderr, "Can't listen AF_INET socket\n"); + exit(1); + } +#endif + set_fd(fd_inet); +} +open_socket() +{ + open_af_inet(); +#if (!defined(TLI) || (defined(TLI) && defined(SOCK_UNIX))) + open_af_unix(); +#endif +} + +#if (!defined(TLI) || (defined(TLI) && defined(SOCK_UNIX))) + + +static int connect_af_unix() +{ + struct sockaddr_un sunix; + int i = sizeof(sunix); + int fd; + + if ((fd = accept(fd_unix, (struct sockaddr *)&sunix, &i)) == ERROR) + warning_out("Can't accept AF_UNIX socket"); + return fd; +} +#endif +#ifdef TLI +int +accept_func(fd, callptr, name, closeflg) +int fd; +struct t_call *callptr; +char *name; +int closeflg; +{ + int newfd; + int look; + extern int t_errno; + + if ((newfd = t_open(name, O_RDWR, (struct t_info *)0)) < 0) { + if (!closeflg) warning_out("Can't t_open"); + return ERROR; + } + if (t_bind(newfd, (struct t_bind *)0, (struct t_bind *)0) < 0) { + if (!closeflg) warning_out("t_bind error"); + return ERROR; + } + t_errno = 0; + if (t_accept(fd, newfd, callptr) <0 ){ + t_close(newfd); + if (!closeflg) warning_out("t_accept error"); + return ERROR; + } + if (ioctl(newfd, I_POP, (char *) 0) < 0) { + if (!closeflg) warning_out("I_POP timod failed"); + return ERROR; + } + if (ioctl(newfd, I_PUSH, "tirdwr") < 0) { + if (!closeflg) warning_out("I_PUSH tirdwr failed"); + return ERROR; + } + return(newfd); +} +#endif + + + +static int connect_af_inet() +{ +#ifndef TLI + struct sockaddr_in sin; + int i = sizeof(sin); +#endif + int fd; + +#ifdef TLI + if (t_listen(fd_inet, inet_callptr) < 0) { + warning_out("t_listen error"); + + } + + if ((fd = accept_func(fd_inet, inet_callptr, nconf->nc_device, FALSE)) == ERROR) +#else + if ((fd = accept(fd_inet, (struct sockaddr *)&sin, &i)) == ERROR) +#endif + warning_out("Can't accept AF_INET socket"); + return fd; +} + +#if (!defined(TLI) || (defined(TLI) && defined(SOCK_UNIX))) + + +static void close_af_unix() +{ + struct sockaddr_un sunix; + int true = 1; + int i; + + ioctl(fd_unix, FIONBIO, &true); + for ( ; ; ) { + i = sizeof(sunix); + if (accept(fd_unix, (struct sockaddr *)&sunix, &i) < 0) break; + } + shutdown(fd_unix, 2); + close(fd_unix); + unlink(socket_name); + clr_fd(fd_unix); +} +#endif + + + +static void close_af_inet() +{ +#ifndef TLI + struct sockaddr_in sin; +#endif + int true = 1; + int i; + + ioctl(fd_inet, FIONBIO, &true); + for ( ; ; ) { +#ifdef TLI + if (accept_func(fd_inet, inet_callptr, nconf->nc_device, TRUE) < 0) + break; +#else + i = sizeof(sin); + if (accept(fd_inet, (struct sockaddr *)&sin, &i) < 0) break; +#endif + } +#ifdef TLI + t_sndrel(fd_inet); + t_close(fd_inet); + clr_fd(fd_inet); +#else + shutdown(fd_inet, 2); + close(fd_inet); + clr_fd(fd_inet); +#endif +} +close_socket() +{ +#if (!defined(TLI) || (defined(TLI) && defined(SOCK_UNIX))) + close_af_unix(); +#endif + close_af_inet(); +} + + + +static void connect_client(readfds) +#ifdef SVR4 +struct pollfd *readfds; +#else +fd_set *readfds; +#endif +{ + int fd; +#if (defined(TLI) && defined(SOCK_UNIX)) + int unix_flag=0; +#endif + Client *client_tmp; + +#ifdef SVR4 + int i; + + for (i = 0; i < maxfds; i++) { + if ((readfds[i].fd == fd_inet) && + (readfds[i].revents == POLLIN)) { + fd = connect_af_inet(); + readfds[i].revents = 0; + break; + } +#if (!defined(TLI) || (defined(TLI) && defined(SOCK_UNIX))) + if ((readfds[i].fd == fd_unix) && + (readfds[i].revents == POLLIN)) { + fd = connect_af_unix(); + readfds[i].revents = 0; +#if (defined(TLI) && defined(SOCK_UNIX)) + unix_flag = 1; +#endif + break; + } +#endif + } + if (i == maxfds) return; +#else /* SVR4 */ + if (FD_ISSET(fd_inet, readfds)) + fd = connect_af_inet(); +#if (!defined(TLI) || (defined(TLI) && defined(SOCK_UNIX))) + else if (FD_ISSET(fd_unix, readfds)) +#if (defined(TLI) && defined(SOCK_UNIX)) + { + fd = connect_af_unix(); + unix_flag = 1; + } +#else + fd = connect_af_unix(); +#endif +#endif + else + return; +#endif /* SVR4 */ + if (fd == ERROR) return; + + + + + if (client_num >= MaxClientNum || client_num >= max_client) { + warning_out("No more client"); + } + + else { + debug_out(1, "client create(%d)\r\n", fd); + logging_out("connect to client on %d", fd); + + + if (client_tmp = (Client *)malloc(sizeof(Client))) { + memset(client_tmp, 0, sizeof(Client)); + client_tmp->fd = fd; +#if (defined(TLI) && defined(SOCK_UNIX)) + client_tmp->unix_flag = unix_flag; +#endif + client_tmp->next = client; + client = client_tmp; + client_num++; + + set_fd(fd); + + return; + } + warning_out("No more client(Can't alloc)"); + } +#ifdef TLI +#ifdef SOCK_UNIX + if (unix_flag) { + shutdown(fd, 2); + close(fd); + } else { + t_sndrel(fd); + t_close(fd); + } +#else + t_sndrel(fd); + t_close(fd); +#endif +#else + shutdown(fd, 2); + close(fd); +#endif + +} + + + +static Client *disconnect_client(cp) +Client *cp; +{ + WorkArea *wp; + StdyFile *sp; + int fd; + Client *cl_tmp, *cl_before; + int i; + + if (sp = cp->stdy) closestdy(sp); + if (wp = cp->work) free_workarea(wp); + + debug_out(1, "client dead(%d)\r\n", cp->fd); + logging_out("disconnect from client on %d", cp->fd); +#ifdef TLI +#ifdef SOCK_UNIX + if (cp->unix_flag) { + shutdown(fd = cp->fd, 2); + close(fd); + clr_fd(fd); + } else { + fd = cp->fd; + t_sndrel(fd); + t_close(fd); + clr_fd(fd); + } +#else + fd = cp->fd; + t_sndrel(fd); + t_close(fd); + clr_fd(fd); +#endif +#else + shutdown(fd = cp->fd, 2); + close(fd); + clr_fd(fd); +#endif + if (cp == client) { + client = cp->next; + free(cp); + cp = client; + } else { + cl_before = client; + cl_tmp = client->next; + while (cl_tmp) { + if (cl_tmp == cp) { + cl_before->next = cp->next; + free(cp); + break; + } + cl_before = cl_tmp; + cl_tmp = cl_tmp->next; + } + cp = cl_before->next; + } + client_num--; + return cp; +} + +#ifndef SIGPIPE +#include +#endif + +void communicate() +{ + + signal(SIGPIPE, SIG_IGN); + + for ( ; ; ) { +#ifdef SVR4 + int i; + + while(poll(poll_fds, maxfds, -1) == ERROR) { + if (errno != EINTR) error_out("poll"); + errno = 0; + } +#else + + fd_set readfds; + + + readfds = fds_org; + while (select(maxfds,&readfds,NULL,NULL,NULL) == ERROR) { + if (errno != EINTR) error_out("select"); + errno = 0; + } +#endif + + for (cur_client = client ; cur_client; ) { + + if (setjmp(client_dead)) { + cur_client = disconnect_client(cur_client); + continue; + } +#ifdef SVR4 + for ( i = 0; i < maxfds; i++) { + if ((poll_fds[i].fd == cur_client->fd) && + (poll_fds[i].revents == POLLIN)) { + poll_fds[i].revents = 0; + client_fd = cur_client->fd; + putpos = buflen = getpos = 0; + execute_cmd(); + break; + } + } + cur_client = cur_client->next; + } + connect_client(poll_fds); +#else + if (FD_ISSET(cur_client->fd, &readfds)) { + client_fd = cur_client->fd; + putpos = buflen = getpos = 0; + execute_cmd(); + } + cur_client = cur_client->next; + } + connect_client(&readfds); +#endif + } +} + + + +void put_flush() +{ + register int len; + register int i; + register char *p; + + for (len = putpos, p = putbuf ; len > 0 ; ) { + if ((i = write(client_fd, p, len)) == ERROR) { + longjmp(client_dead, -1); + } + len -= i; + p += i; + } + putpos = 0; +} +void put_byte(c) +register int c; +{ + putbuf[putpos++] = c; + if (putpos >= sizeof(putbuf)) put_flush(); +} +void put_work(c) +register int c; +{ + put_byte(c >> 8); + put_byte(c & 0xff); +} +void put_int(c) +register int c; +{ + put_byte(c >> (8 * 3)); + put_byte(c >> (8 * 2)); + put_byte(c >> (8 * 1)); + put_byte(c); +} +Uchar *put_string(p) +register Uchar *p; +{ + if (p) { + do { + put_byte(*p); + } while (*p++); + } + else + put_byte(0); + return p; +} +Uchar *put_ndata(p, n) +register Uchar *p; +register int n; +{ + while (n-- > 0) put_byte(p ? *p++ : 0); + return p; +} + + + +void get_buf() +{ + register int i; + + for (;;) { + if ((i = read(client_fd, getbuf, sizeof(getbuf))) > 0) break; + if (i == ERROR) { + if (errno == EINTR) continue; + if (errno == EWOULDBLOCK) continue; + } + longjmp(client_dead, -1); + } + buflen = i; + getpos = 0; +} +int get_byte() +{ + if (getpos >= buflen) get_buf(); + return (getbuf[getpos++] & 0xff); +} +int get_word() +{ + register int i; + + i = get_byte(); + return ((i << 8) | get_byte()); +} +int get_int() +{ + register int i0; + register int i1; + register int i2; + + i0 = get_byte(); + i1 = get_byte(); + i2 = get_byte(); + return((i0 << (8*3)) | (i1 << (8*2)) | (i2 << (8*1)) | get_byte()); +} +int get_nstring(p, n) +register Uchar *p; +register int n; +{ + register int c; + + do { + c = get_byte(); + if (n-- > 0) *p++ = c; + } while (c); + + return (n < 0) ? ERROR : 0; +} +Uchar *get_ndata(p, n) +register Uchar *p; +register int n; +{ + while (n-- > 0) *p++ = get_byte(); + return p; +} diff --git a/server/error.c b/server/error.c new file mode 100644 index 0000000..fe70b08 --- /dev/null +++ b/server/error.c @@ -0,0 +1,173 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: error.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:02:51 $ + */ + + + + +#include +#include "sj_typedef.h" + +extern char program_name[]; +extern int debug_level; +extern int client_fd; + +static char *tty_name = "/dev/tty"; +static FILE *errfp = NULL; +static FILE *logfp = NULL; +static FILE *dbgfp = NULL; + + + +open_error() +{ + extern char *error_file; + int flg = 0; + + if (error_file && *error_file) { + if (!strcmp(error_file, tty_name)) { + errfp = stderr; + flg = -1; + } + else if (!(errfp = fopen(error_file, "a"))) + fprintf(stderr, "Can't open \"%s\"\r\n", error_file); + } + else + errfp = NULL; + + return flg; +} + +error_out(s, p1, p2, p3, p4, p5) +char *s; +int p1, p2, p3, p4, p5; +{ + char tmp[BUFSIZ]; + + if (errfp) { + sprintf(tmp, s, p1, p2, p3, p4, p5); + fprintf(errfp, "%s: %s\r\n", program_name, tmp); + fflush(errfp); + } + exit(1); +} + +warning_out(s, p1, p2, p3, p4, p5) +char *s; +int p1, p2, p3, p4, p5; +{ + char tmp[BUFSIZ]; + + if (errfp) { + sprintf(tmp, s, p1, p2, p3, p4); + fprintf(errfp, "%s: warning: %s\r\n", program_name, tmp); + fflush(errfp); + } +} + + + +open_log() +{ + extern char *log_file; + int flg = 0; + + if (log_file && *log_file) { + if (!strcmp(log_file, tty_name)) { + logfp = stderr; + flg = -1; + } + else + logfp = fopen(log_file, "a"); + if (logfp) { + long t; + + time(&t); + fprintf(logfp, "%s: log started at %s\r", + program_name, ctime(&t)); + fflush(logfp); + } + else + fprintf(stderr, "Can't open \"%s\"\r\n", log_file); + } + else + logfp = NULL; + + return flg; +} + +logging_out(s, p1, p2, p3, p4, p5) +char *s; +int p1, p2, p3, p4, p5; +{ + char tmp[BUFSIZ]; + + if (logfp) { + sprintf(tmp, s, p1, p2, p3, p4, p5); + fprintf(logfp, "%s\r\n", tmp); + fflush(logfp); + } +} + + + +open_debug() +{ + extern char *debug_file; + int flg = 0; + + if (debug_file && *debug_file) { + if (!strcmp(debug_file, tty_name)) { + dbgfp = stderr; + flg = -1; + } + else if (!(dbgfp = fopen(debug_file, "a"))) + fprintf(stderr, "Can't open \"%s\"\r\n", debug_file); + } + else + dbgfp = NULL; + + return flg; +} + +debug_out(lvl, s, p1, p2, p3, p4, p5) +int lvl; +char *s; +int p1, p2, p3, p4, p5; +{ + if (lvl <= debug_level && dbgfp) { + fprintf(dbgfp, s, p1, p2, p3, p4, p5); + fflush(dbgfp); + } +} diff --git a/server/execute.c b/server/execute.c new file mode 100644 index 0000000..99f9b49 --- /dev/null +++ b/server/execute.c @@ -0,0 +1,1632 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: execute.c,v $ + * $SonyRevision: 1.7 $ + * $SonyDate: 1998/04/13 11:20:12 $ + */ + + + + + +#include "sj_kcnv.h" +#include +#include +#include +#include +#include +#include "sj3cmd.h" +#include "sj3err.h" +#include "Dict.h" + + +#define rmemcpy(a, b, n) memcpy((b), (a), (n)) + +#define SJIS_PROTO 1 +#define EUC_PROTO 2 + +extern int errno; + +extern Global *work_base; +extern STDY *stdy_base; +extern int serv_errno; + +extern int client_num; +extern Client *client; +extern Client *cur_client; +extern int client_fd; + +extern char *dict_dir; +extern int dir_mode; +extern int file_mode; + +static Uchar buf1[YomiBufSize]; +static Uchar buf2[YomiBufSize]; +static Uchar buf3[YomiBufSize]; +static Uchar buf4[YomiBufSize]; +static Uchar kbuf[KanjiBufSize]; +static Uchar skbuf[KanjiBufSize]; + +static jmp_buf error_ret; +static WorkArea *worklist = NULL; +static Client *cur_cli; + +static Uchar defaultchar[2] = {(Uchar)0x81, (Uchar)0x40}; +static int defuse=0, defuse2=0; + +char *malloc(); +DictFile *opendict(); +int closedict(); +StdyFile *openstdy(); +int closestdy(); + +Uchar *put_ndata(), *put_string(); + + + +make_full_path(path) +char *path; +{ + extern char *strtok(); + char tmp[PathNameLen]; + char *index; + int i; + + if (!path || !*path) return ERROR; + + i = strlen(dict_dir) + 1 + strlen(path) + 1; + if (i > sizeof(tmp)) return ERROR; + + strcpy(tmp, path); + index = strtok(tmp, "/"); + do { + if (!strcmp(index, "..")) return ERROR; + } while (index = strtok(NULL, "/")); + + if (*path == '/') { + if (strncmp(path, dict_dir, strlen(dict_dir)) == 0) { + return 0; + } else { + return ERROR; + } + } + strcpy(tmp, dict_dir); + strcat(tmp, "/"); + strcat(tmp, path); + strcpy(path, tmp); + return 0; +} + + + +WorkArea *alloc_workarea() +{ + WorkArea *p; + + if (!(p = (WorkArea *)malloc(sizeof(WorkArea)))) return NULL; + + memset(p, '\0', sizeof(WorkArea)); + p -> lock = NotLocked; + p -> refcnt = 1; + + p -> link = worklist; + worklist = p; + + work_base = &(p -> global); + initwork(); + + return p; +} + +void +free_workarea(p) +WorkArea *p; +{ + if (!p) return; + if (--(p -> refcnt)) return; + + if (worklist == p) + worklist = p -> link; + else { + register WorkArea *q; + + for (q = worklist ; q ; q = q -> link) { + if (q -> link == p) { + q -> link = p -> link; + break; + } + } + } + + if (p -> global.Jdictlist) + close_dictlist(p -> global.Jdictlist); + + free((char *)p); +} + + + +exec_connect() +{ + int version; + char hostname[HostNameLen]; + char username[UserNameLen]; + char progname[ProgNameLen]; + WorkArea *wp; + struct passwd *pw; + + version = get_int(); + get_nstring(hostname, sizeof(hostname)); + get_nstring(username, sizeof(username)); + get_nstring(progname, sizeof(progname)); + + if (cur_cli -> work) longjmp(error_ret, SJ3_AlreadyConnected); + + if (version < 0) + longjmp(error_ret, SJ3_DifferentVersion); + + if (hostname[0] == '\0') + longjmp(error_ret, SJ3_NoHostName); + + if (username[0] == '\0') + longjmp(error_ret, SJ3_NoUserName); + + if (!check_user(username, hostname)) + longjmp(error_ret, SJ3_NotAllowedUser); + + if (!(wp = alloc_workarea())) + longjmp(error_ret, SJ3_NotEnoughMemory); + + pw = getpwnam(username); + if (pw) { + cur_cli -> uid = pw->pw_uid; + } else { + cur_cli -> uid = 0; + } + cur_cli -> version = version; + strcpy(cur_cli -> host, hostname); + strcpy(cur_cli -> user, username); + strcpy(cur_cli -> prog, progname); + strncpy(cur_cli -> def_char, defaultchar, 2); + cur_cli -> work = wp; + + if (version == 1) + put_int(SJ3_NormalEnd); + else + put_int((-SJ3SERV_VERSION_NO)); + + logging_out("connection established on %d(%s, %s, %s)", + cur_cli -> fd, hostname, username, progname); +} + + + +exec_disconnect() +{ + if (cur_cli -> stdy) { + closestdy(cur_cli -> stdy); + cur_cli -> stdy = NULL; + } + if (cur_cli -> work) { + free_workarea(cur_cli -> work); + cur_cli -> work = NULL; + } + else + longjmp(error_ret, SJ3_NotConnected); + + put_int(SJ3_NormalEnd); +} + + + +exec_opendict() +{ + char filename[PathNameLen]; + char password[PassWordLen]; + DICT *dict; + DICTL *dictl, *dltp, *tmp; + + get_nstring(filename, sizeof(filename)); + get_nstring(password, sizeof(password)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (make_full_path(filename)) longjmp(error_ret, SJ3_TooLongParameter); + + if (!(dict = (DICT *)opendict(filename, password))) + longjmp(error_ret, serv_errno); + if (!dictlist && global_work_base) { + DICTL *b_dictl = NULL; + + dltp = global_work_base -> Jdictlist; + dictl = NULL; + while (dltp) { + dictl = (DICTL *)malloc(sizeof *dictl); + if (!dictl) { + for (tmp = dictlist; tmp; tmp->next) + free(tmp); + dictlist = NULL; + } + if (!dictlist) dictlist = dictl; + dictl->dict = dltp->dict; + ((DictFile *)(dictl -> dict))->refcnt++; + dictl->next = NULL; + if (b_dictl) b_dictl->next = dictl; + b_dictl = dictl; + dltp = dltp->next; + } + } + for (dltp = dictlist; dltp && dltp->dict != dict; dltp = dltp->next) ; + + if (!dltp) { + if (!(dictl = (DICTL *)malloc(sizeof *dictl))) { + closedict((DictFile *)dict); + longjmp(error_ret, SJ3_NotEnoughMemory); + } + + dictl -> dict = dict; + dictl -> next = dictlist; + dictlist = dictl; + } + + if (cur_cli -> work -> lock == cur_cli -> fd) { + if (dict -> maxunit != 0) + lock_dict((DictFile *)dict, cur_cli -> fd); + } + + put_int(SJ3_NormalEnd); + put_int((int)dict->dicid); +} +exec_closedict() +{ + TypeDicID id; + DICTL *dictl; + + id = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + + for (dictl = dictlist ; dictl ; dictl = dictl -> next) + if (dictl -> dict -> dicid == id) break; + if (!dictl) longjmp(error_ret, SJ3_BadDictID); + + unlock_dict((DictFile *)(dictl -> dict), cur_cli -> fd); + + closedict((DictFile *)(dictl -> dict)); + if (dictlist == dictl) { + dictlist = dictl -> next; + } else { + DICTL *p; + + for (p = dictlist ; p -> next ; p = p -> next) { + if (p -> next == dictl) { + p -> next = dictl -> next; + break; + } + } + } + free((char *)dictl); + put_int(SJ3_NormalEnd); +} +close_dictlist(dictl) +DICTL *dictl; +{ + DICTL *p; + + while (dictl) { + unlock_dict((DictFile *)(dictl -> dict), cur_cli -> fd); + closedict((DictFile *)(dictl -> dict)); + p = dictl -> next; + free((char *)dictl); + dictl = p; + } +} + + + +exec_openstdy() +{ + char filename[PathNameLen]; + char password[PassWordLen]; + StdyFile *stdy; + + get_nstring(filename, sizeof(filename)); + get_nstring(password, sizeof(password)); + + if (cur_cli -> stdy) longjmp(error_ret, SJ3_StdyAlreadyOpened); + if (make_full_path(filename)) longjmp(error_ret, SJ3_TooLongParameter); + + if (!(stdy = openstdy(filename, password))) + longjmp(error_ret, serv_errno); + cur_cli -> stdy = stdy; + + put_int(SJ3_NormalEnd); +} +exec_closestdy() +{ + if (!cur_cli -> stdy) longjmp(error_ret, SJ3_StdyFileNotOpened); + + closestdy(cur_cli -> stdy); + cur_cli -> stdy = NULL; + + put_int(SJ3_NormalEnd); +} + + + +exec_stdysize() +{ + put_int(SJ3_NormalEnd); + put_int(sizeof(STDYOUT)); +} + + + +static void exec_lock() +{ + int lock; + DICTL *dl; + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + + + lock = cur_cli -> work -> lock; + if (lock != NotLocked && lock != cur_cli -> fd) + longjmp(error_ret, SJ3_LockedByOther); + cur_cli -> work -> lock = cur_cli -> fd; + + + for (dl = dictlist ; dl ; dl = dl -> next) { + if (dl -> dict -> maxunit == 0) continue; + lock_dict((DictFile *)(dl -> dict), cur_cli -> fd); + } + + put_int(SJ3_NormalEnd); +} +static void exec_unlock() +{ + int lock; + DICTL *dl; + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + + + lock = cur_cli -> work -> lock; + if (lock == NotLocked) longjmp(error_ret, SJ3_NotLocked); + if (lock != cur_cli -> fd) longjmp(error_ret, SJ3_LockedByOther); + cur_cli -> work -> lock = NotLocked; + + + for (dl = dictlist ; dl ; dl = dl -> next) { + if (dl -> dict -> maxunit == 0) continue; + unlock_dict((DictFile *)(dl -> dict), cur_cli -> fd); + } + + put_int(SJ3_NormalEnd); +} +static void lock_check_for_read() +{ + int lock; + + lock = cur_cli -> work -> lock; + if (lock == NotLocked) +#ifdef SEVERE_LOCK + longjmp(error_ret, SJ3_NotLocked); +#else + ; +#endif + else if (lock != cur_cli -> fd) + longjmp(error_ret, SJ3_LockedByOther); +} + + +void +exec_ph2knj(mb_flag) +int mb_flag; +{ + int i, j, l, stdy_size, buf_size, srchead = 0, srclen; + Uchar *p,*q; + + i = get_nstring(buf1, sizeof(buf1)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (i) longjmp(error_ret, SJ3_TooLongParameter); + lock_check_for_read(); + + if (mb_flag == SJIS_PROTO) { + if (sj3_str_sjistoeuc(buf2, sizeof(buf2), buf1, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + i = ph2knj(buf2, kbuf, sizeof(kbuf)); + p = kbuf; + q = skbuf; + stdy_size = sizeof(STDYOUT) + 1; + buf_size = sizeof(skbuf); + + while (*p) { + srchead += *p; + srclen = *p; + buf_size -= stdy_size; + if (buf_size <= 0) goto CCONVERR; + (void) rmemcpy(q, p, stdy_size); + p += stdy_size; + q += stdy_size; + l = sj3_str_euctosjis(q, buf_size, p, cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + if (defuse) { + (void) rmemcpy(buf3, &(buf2[srchead-srclen]), srclen); + buf3[srclen] = '\0'; + j = cl2knj(buf3, srclen, buf4); + l = sj3_str_euctosjis(q, buf_size, &(buf4[stdy_size]), + cur_cli->def_char, &defuse); + while(defuse && (j == srclen)) { + j = nextcl(buf4, 0); + l = sj3_str_euctosjis(q, buf_size, &(buf4[stdy_size]), + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + } + if (!defuse && (j == srclen)) { + (void) rmemcpy(q-stdy_size, buf4, stdy_size); + } else { + l = sj3_str_euctosjis(q, buf_size, buf3, + cur_cli->def_char, &defuse); + if ((l < 0) || defuse) goto CCONVERR; + } + } + p += strlen(p) + 1; + q += l + 1; buf_size -= l + 1; + } + *q = '\0'; + p = skbuf; + } else { + i = ph2knj(buf1, kbuf, sizeof(kbuf)); + p = kbuf; + } + + put_int(SJ3_NormalEnd); + put_int(i); + while (*p) { + put_byte(*p); p++; + p = put_ndata(p, sizeof(STDYOUT)); + p = put_string(p); + } + put_byte(0); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + +void +exec_cl2knj(mb_flag) +int mb_flag; +{ + int len, stdy_size, buf_size; + int i, j, l; + Uchar *ptr, *q; + + len = get_int(); + i = get_nstring(buf1, sizeof(buf1)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (i) longjmp(error_ret, SJ3_TooLongParameter); + lock_check_for_read(); + + if (mb_flag == SJIS_PROTO) { + if (sj3_str_sjistoeuc(buf2, sizeof(buf2), buf1, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + i = cl2knj(buf2, strlen(buf2), kbuf); + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + stdy_size = sizeof(STDYOUT); + + (void) rmemcpy(q, ptr, stdy_size); + ptr += stdy_size; + q += stdy_size; + buf_size -= stdy_size; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + if (defuse) { + j = strlen(buf2); + while (defuse && (i == j)) { + i = nextcl(buf4, 0); + l = sj3_str_euctosjis(q, buf_size, &(buf4[stdy_size]), + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + } + if (!defuse && (j == i)) { + (void) rmemcpy(q-stdy_size, buf4, stdy_size); + } else { + l = sj3_str_euctosjis(q, buf_size, buf2, + cur_cli->def_char, &defuse); + if ((l < 0) || defuse) goto CCONVERR; + i = l; + } + } + ptr = skbuf; + } else { + i = cl2knj(buf1, len, kbuf); + ptr = kbuf; + } + + put_int(SJ3_NormalEnd); + put_int(i); + ptr = put_ndata(ptr, sizeof(STDYOUT)); + put_string(ptr); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + +void +exec_nextcl(mb_flag) +int mb_flag; +{ + int mode, stdy_size, buf_size; + int i, l; + Uchar *ptr, *q; + + mode = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + lock_check_for_read(); + + i = nextcl(kbuf, mode); + if (mb_flag == SJIS_PROTO) { + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + stdy_size = sizeof(STDYOUT); + + (void) rmemcpy(q, ptr, stdy_size); + ptr += stdy_size; + q += stdy_size; + buf_size -= stdy_size; + l = sj3_str_euctosjis(q, buf_size, ptr, cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + while (defuse && i) { + i = nextcl(kbuf, mode); + l = sj3_str_euctosjis(q, buf_size, &(kbuf[stdy_size]), + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + } + if (!defuse && i) { + (void) rmemcpy(q-stdy_size, kbuf, stdy_size); + } else { + put_int(SJ3_NoMoreDouonWord); + return; + } + ptr = skbuf; + } else { + ptr = kbuf; + } + + put_int(SJ3_NormalEnd); + put_int(i); + ptr = put_ndata(ptr, sizeof(STDYOUT)); + put_string(ptr); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + +void +exec_prevcl(mb_flag) +int mb_flag; +{ + int mode, stdy_size, buf_size; + int i, l; + Uchar *ptr, *q; + + mode = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + lock_check_for_read(); + + i = prevcl(kbuf, mode); + if (mb_flag == SJIS_PROTO) { + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + stdy_size = sizeof(STDYOUT); + + (void) rmemcpy(q, ptr, stdy_size); + ptr += stdy_size; + q += stdy_size; + buf_size -= stdy_size; + l = sj3_str_euctosjis(q, buf_size, ptr, cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + while (defuse && i) { + i = prevcl(kbuf, mode); + l = sj3_str_euctosjis(q, buf_size, &(kbuf[stdy_size]), + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + } + if (!defuse && i) { + (void) rmemcpy(q-stdy_size, kbuf, stdy_size); + } else { + put_int(SJ3_NoMoreDouonWord); + return; + } + ptr = skbuf; + } else { + ptr = kbuf; + } + + + put_int(SJ3_NormalEnd); + put_int(i); + ptr = put_ndata(ptr, sizeof(STDYOUT)); + put_string(ptr); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + +void +exec_cl2knj_cnt(mb_flag) +int mb_flag; +{ + int len, buf_size, stdy_size; + int i; + int cnt = 0; + + len = get_int(); + i = get_nstring(buf1, sizeof(buf1)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (i) longjmp(error_ret, SJ3_TooLongParameter); + lock_check_for_read(); + + if (mb_flag == SJIS_PROTO) { + if (sj3_str_sjistoeuc(buf2, sizeof(buf2), buf1, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + i = cl2knj(buf2, len, kbuf); + stdy_size = sizeof(STDYOUT); + buf_size = sizeof(skbuf) - stdy_size; + } else { + i = cl2knj(buf1, len, kbuf); + } + if (i) { + while (i == len) { + if (mb_flag == SJIS_PROTO) { + if (sj3_str_euctosjis(skbuf, buf_size, + &(kbuf[stdy_size]), + cur_cli->def_char, &defuse) + < 0) + goto CCONVERR; + if (!defuse) cnt++; + } else + cnt++; + i = nextcl(kbuf, 0); + } + } + + put_int(SJ3_NormalEnd); + put_int(cnt); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + +void +exec_cl2knj_all(mb_flag) +int mb_flag; +{ + int len, stdy_size, buf_size; + int i, l; + Uchar *ptr, *q; + + len = get_int(); + i = get_nstring(buf1, sizeof(buf1)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (i) longjmp(error_ret, SJ3_TooLongParameter); + lock_check_for_read(); + + if (mb_flag == SJIS_PROTO) { + if (sj3_str_sjistoeuc(buf2, sizeof(buf2), buf1, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + len = strlen(buf2); + i = cl2knj(buf2, len, kbuf); + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + stdy_size = sizeof(STDYOUT); + + (void) rmemcpy(q, ptr, stdy_size); + ptr += stdy_size; + q += stdy_size; + buf_size -= stdy_size; + l = sj3_str_euctosjis(q, buf_size, ptr, cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + if (defuse) { + while (defuse && (i == len)) { + i = nextcl(kbuf, 0); + l = sj3_str_euctosjis(q, buf_size, + &(kbuf[stdy_size]), + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + } + if (!defuse && (i == len)) { + (void) rmemcpy(q-stdy_size, kbuf, stdy_size); + } else { + put_int(SJ3_NoMoreDouonWord); + return; + } + } + ptr = skbuf; + } else { + i = cl2knj(buf1, len, kbuf); + ptr = kbuf; + } + put_int(SJ3_NormalEnd); + if (i) { + while (i == len) { + put_int(i); + ptr = put_ndata(ptr, sizeof(STDYOUT)); + put_string(ptr); + i = nextcl(kbuf, 0); + if (mb_flag == SJIS_PROTO) { + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + stdy_size = sizeof(STDYOUT); + + (void) rmemcpy(q, ptr, stdy_size); + ptr += stdy_size; + q += stdy_size; + buf_size -= stdy_size; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + if (defuse) { + while (defuse && (i == len)) { + i = nextcl(kbuf, 0); + l = sj3_str_euctosjis(q, buf_size, + &(kbuf[stdy_size]), + cur_cli->def_char, + &defuse); + if (l < 0) goto CCONVERR; + } + if (!defuse && (len == i)) { + (void) rmemcpy(q-stdy_size, + kbuf, stdy_size); + } + } + ptr = skbuf; + } else { + ptr = kbuf; + } + } + } + put_int(0); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + + +exec_study() +{ + register int err; + STDYOUT stdy; + + get_ndata(&stdy, sizeof(stdy)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (!stdy_base) longjmp(error_ret, SJ3_StdyFileNotOpened); + lock_check_for_read(); + + err = study(&stdy); + + + switch (err) { + case StudyNoDict: err = SJ3_StdyFileNotOpened; break; + case StudyNormEnd: + case StudyFullArea: + case StudyNotStudy: err = SJ3_NormalEnd; break; + case StudyError: + default: err = SJ3_InternalError; break; + } + if (err != SJ3_NormalEnd) longjmp(error_ret, err); + put_int(err); +} + + +void +exec_clstudy(mb_flag) +int mb_flag; +{ + register int err; + STDYOUT stdy; + + err = get_nstring(buf1, sizeof(buf1)); + err |= get_nstring(buf2, sizeof(buf2)); + get_ndata(&stdy, sizeof(stdy)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (!stdy_base) longjmp(error_ret, SJ3_StdyFileNotOpened); + if (err) longjmp(error_ret, SJ3_TooLongParameter); + lock_check_for_read(); + + if (mb_flag == SJIS_PROTO) { + if (sj3_str_sjistoeuc(buf3, sizeof(buf3), buf1, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + if (sj3_str_sjistoeuc(buf4, sizeof(buf4), buf2, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + err = clstudy(buf3, buf4, &stdy); + } else { + err = clstudy(buf1, buf2, &stdy); + } + + + switch (err) { + case ClstudyNoDict: err = SJ3_StdyFileNotOpened; break; + case ClstudyNormEnd: err = SJ3_NormalEnd; break; + case ClstudyParaErr: + case ClstudyYomiErr: err = SJ3_IllegalParameter; break; + case ClstudyNoArea: err = SJ3_TooSmallStdyArea; break; + default: err = SJ3_InternalError; break; + } + if (err != SJ3_NormalEnd) longjmp(error_ret, err); + put_int(err); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + +void +exec_adddict(mb_flag) +int mb_flag; +{ + TypeDicID dicid; + TypeGram gram; + register int err; + int err1; + DICTL *dl; + + + dicid = get_int(); + err = get_nstring(buf1, sizeof(buf1)); + err1 = get_nstring(buf2, sizeof(buf2)); + gram = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (err) longjmp(error_ret, SJ3_BadYomiString); + if (err1) longjmp(error_ret, SJ3_BadKanjiString); + + + for (dl = dictlist ; dl ; dl = dl -> next) + if (dl -> dict -> dicid == dicid) break; + if (!dl) longjmp(error_ret, SJ3_NoSuchDict); + if (dl -> dict -> maxunit == 0) + longjmp(error_ret, SJ3_ReadOnlyDict); + if (is_dict_locked((DictFile *)(dl -> dict))) + longjmp(error_ret, SJ3_DictLocked); + + + debug_out(2, "adddic %s:%s:%d ", buf1, buf2, gram); + seldict(dicid); + if (mb_flag == SJIS_PROTO) { + if (sj3_str_sjistoeuc(buf3, sizeof(buf3), buf1, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + if (sj3_str_sjistoeuc(buf4, sizeof(buf4), buf2, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + err = adddic(buf3, buf4, gram); + } else { + err = adddic(buf1, buf2, gram); + } + + + if (err & AD_NotUserDict) err = SJ3_ReadOnlyDict; + else if (err & AD_BadYomi) err = SJ3_BadYomiString; + else if (err & AD_BadKanji) err = SJ3_BadKanjiString; + else if (err & AD_BadHinsi) err = SJ3_BadHinsiCode; + else if (err & AD_ArExist) err = SJ3_AlreadyExistWord; + else if (err & AD_OvflwDouBlk) err = SJ3_NoMoreDouonWord; + else if (err & AD_OvflwDouNum) err = SJ3_NoMoreDouonWord; + else if (err & AD_OvflwUsrDic) err = SJ3_NoMoreUserDict; + else if (err & AD_OvflwIndex) err = SJ3_NoMoreIndexBlock; + else if (err) err = SJ3_AddDictFailed; + else err = SJ3_NormalEnd; + if (err != SJ3_NormalEnd) longjmp(error_ret, err); + put_int(err); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + +void +exec_deldict(mb_flag) +int mb_flag; +{ + TypeDicID dicid; + TypeGram gram; + register int err; + int err1; + DICTL *dl; + + + dicid = get_int(); + err = get_nstring(buf1, sizeof(buf1)); + err1 = get_nstring(buf2, sizeof(buf2)); + gram = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (err) longjmp(error_ret, SJ3_BadYomiString); + if (err1) longjmp(error_ret, SJ3_BadKanjiString); + + + for (dl = dictlist ; dl ; dl = dl -> next) + if (dl -> dict -> dicid == dicid) break; + if (!dl) longjmp(error_ret, SJ3_NoSuchDict); + if (dl -> dict -> maxunit == 0) + longjmp(error_ret, SJ3_ReadOnlyDict); + if (is_dict_locked((DictFile *)(dl -> dict))) + longjmp(error_ret, SJ3_DictLocked); + + + seldict(dicid); + if (mb_flag == SJIS_PROTO) { + if (sj3_str_sjistoeuc(buf3, sizeof(buf3), buf1, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + if (sj3_str_sjistoeuc(buf4, sizeof(buf4), buf2, + cur_cli->def_char, &defuse) < 0) + goto CCONVERR; + err = deldic(buf3, buf4, gram); + } else { + err = deldic(buf1, buf2, gram); + } + + + if (err & AD_NotUserDict) err = SJ3_ReadOnlyDict; + else if (err & AD_BadYomi) err = SJ3_BadYomiString; + else if (err & AD_BadKanji) err = SJ3_BadKanjiString; + else if (err & AD_BadHinsi) err = SJ3_BadHinsiCode; + else if (err & AD_NoMidasi) err = SJ3_NoSuchWord; + else if (err & AD_NoHinsi) err = SJ3_NoSuchWord; + else if (err & AD_NoKanji) err = SJ3_NoSuchWord; + else if (err) err = SJ3_DelDictFailed; + else err = SJ3_NormalEnd; + if (err != SJ3_NormalEnd) longjmp(error_ret, err); + put_int(err); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + +void +exec_getdict(mb_flag) +int mb_flag; +{ + TypeDicID dicid; + int err, buf_size, l; + DICTL *dl; + Uchar *ptr, *q; + + + dicid = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + + + for (dl = dictlist ; dl ; dl = dl -> next) + if (dl -> dict -> dicid == dicid) break; + if (!dl) longjmp(error_ret, SJ3_NoSuchDict); + + + lock_check_for_read(); + + + seldict(dicid); + err = getusr(kbuf); + if (err) { + if (mb_flag == SJIS_PROTO) { + buf_size = sizeof(skbuf); + ptr = kbuf; + q = skbuf; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + ptr += strlen(ptr) + 1; + q += l + 1; + buf_size -= l + 1; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, &defuse2); + if (l < 0) goto CCONVERR; + if (defuse || defuse2) { + while ((defuse || defuse2) && err) { + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + err = nextusr(kbuf); + if (!err) break; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, + &defuse); + if (l < 0) goto CCONVERR; + ptr += strlen(ptr) + 1; + q += l + 1; + buf_size -= l + 1; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, + &defuse2); + if (l < 0) goto CCONVERR; + } + if (!err) { + longjmp(error_ret, SJ3_NoMoreDictData); + } + } + ptr += strlen(ptr) + 1; + q += l + 1; + *q = *ptr; + ptr = skbuf; + } else { + ptr = kbuf; + } + + put_int(SJ3_NormalEnd); + ptr = put_string(ptr); + ptr = put_string(ptr); + put_int(*ptr); + } + else + longjmp(error_ret, SJ3_NoMoreDictData); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + +void +exec_nextdict(mb_flag) +int mb_flag; +{ + TypeDicID dicid; + int err, buf_size, l; + DICTL *dl; + Uchar *ptr, *q; + + + dicid = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + + + for (dl = dictlist ; dl ; dl = dl -> next) + if (dl -> dict -> dicid == dicid) break; + if (!dl) longjmp(error_ret, SJ3_NoSuchDict); + + + lock_check_for_read(); + + + seldict(dicid); + err = nextusr(kbuf); + if (err) { + if (mb_flag == SJIS_PROTO) { + buf_size = sizeof(skbuf); + ptr = kbuf; + q = skbuf; + l = sj3_str_euctosjis(q, buf_size, ptr, cur_cli->def_char, + &defuse); + if (l < 0) goto CCONVERR; + ptr += strlen(ptr) + 1; + q += l + 1; + buf_size -= l + 1; + l = sj3_str_euctosjis(q, buf_size, ptr, cur_cli->def_char, + &defuse2); + if (l < 0) goto CCONVERR; + if (defuse || defuse2) { + while ((defuse || defuse2) && err) { + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + err = nextusr(kbuf); + if (!err) break; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, + &defuse); + if (l < 0) goto CCONVERR; + ptr += strlen(ptr) + 1; + q += l + 1; + buf_size -= l + 1; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, + &defuse2); + if (l < 0) goto CCONVERR; + } + if (!err) { + longjmp(error_ret, SJ3_NoMoreDictData); + } + } + ptr += strlen(ptr) + 1; + q += l + 1; + *q = *ptr; + ptr = skbuf; + } else { + ptr = kbuf; + } + + put_int(SJ3_NormalEnd); + ptr = put_string(ptr); + ptr = put_string(ptr); + put_int(*ptr); + } + else + longjmp(error_ret, SJ3_NoMoreDictData); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + +void +exec_prevdict(mb_flag) +int mb_flag; +{ + TypeDicID dicid; + int err, buf_size, l; + DICTL *dl; + Uchar *ptr, *q; + + + dicid = get_int(); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + + + for (dl = dictlist ; dl ; dl = dl -> next) + if (dl -> dict -> dicid == dicid) break; + if (!dl) longjmp(error_ret, SJ3_NoSuchDict); + + + lock_check_for_read(); + + + seldict(dicid); + err = prevusr(kbuf); + if (err) { + if (mb_flag == SJIS_PROTO) { + buf_size = sizeof(skbuf); + ptr = kbuf; + q = skbuf; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, &defuse); + if (l < 0) goto CCONVERR; + ptr += strlen(ptr) + 1; + q += l + 1; + buf_size -= l + 1; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, &defuse2); + if (l < 0) goto CCONVERR; + if (defuse || defuse2) { + while ((defuse || defuse2) && err) { + ptr = kbuf; + q = skbuf; + buf_size = sizeof(skbuf); + err = prevusr(kbuf); + if (!err) break; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, + &defuse); + if (l < 0) goto CCONVERR; + ptr += strlen(ptr) + 1; + q += l + 1; + buf_size -= l + 1; + l = sj3_str_euctosjis(q, buf_size, ptr, + cur_cli->def_char, + &defuse2); + if (l < 0) goto CCONVERR; + } + if (!err) { + longjmp(error_ret, SJ3_NoMoreDictData); + } + } + ptr += strlen(ptr) + 1; + q += l + 1; + *q = *ptr; + ptr = skbuf; + } else { + ptr = kbuf; + } + + put_int(SJ3_NormalEnd); + ptr = put_string(ptr); + ptr = put_string(ptr); + put_int(*ptr); + } + else + longjmp(error_ret, SJ3_NoMoreDictData); + return; +CCONVERR: + put_int(SJ3_CannotCodeConvert); + return; +} + + + +exec_makedict() +{ + struct stat sbuf; + char path[PathNameLen]; + int err; + int ofslen; + int idxlen; + int seglen; + int segnum; + + err = get_nstring(path, sizeof(path)); + idxlen = get_int(); + seglen = get_int(); + segnum = get_int(); + if (err) longjmp(error_ret, SJ3_TooLongParameter); + if (make_full_path(path)) longjmp(error_ret, SJ3_TooLongParameter); + + if ((stat(path, &sbuf) != ERROR) || (errno != ENOENT)){ + longjmp(error_ret, SJ3_IllegalDictFile); + } + err = makedict(path, idxlen, seglen, segnum); + if (err != SJ3_NormalEnd) longjmp(error_ret, err); + chmod(path, (file_mode & MODE_MASK)); + chown(path, cur_client->uid, -1); + put_int(err); +} + + + +exec_makestdy() +{ + struct stat sbuf; + char path[PathNameLen]; + int err; + int stynum; + int clstep; + int cllen; + + err = get_nstring(path, sizeof(path)); + stynum = get_int(); + clstep = get_int(); + cllen = get_int(); + if (err) longjmp(error_ret, SJ3_TooLongParameter); + if (make_full_path(path)) longjmp(error_ret, SJ3_TooLongParameter); + + if ((stat(path, &sbuf) != ERROR) || (errno != ENOENT)){ + longjmp(error_ret, SJ3_IllegalStdyFile); + } + err = makestdy(path, stynum, clstep, cllen); + if (err != SJ3_NormalEnd) longjmp(error_ret, err); + chmod(path, (file_mode & MODE_MASK)); + chown(path, cur_client->uid, -1); + put_int(err); +} + + + +exec_access() +{ + char path[PathNameLen]; + int mode; + int i; + + i = get_nstring(path, sizeof(path)); + mode = get_int(); + if (i) longjmp(error_ret, SJ3_TooLongParameter); + if (make_full_path(path)) longjmp(error_ret, SJ3_TooLongParameter); + + put_int(access(path, mode)); +} + + + +exec_makedir() +{ + char path[PathNameLen]; + int i; + + i = get_nstring(path, sizeof(path)); + if (i) longjmp(error_ret, SJ3_TooLongParameter); + if (make_full_path(path)) longjmp(error_ret, SJ3_TooLongParameter); + + if (mkdir(path, dir_mode)) { + if (errno == EEXIST) + longjmp(error_ret, SJ3_DirAlreadyExist); + else + longjmp(error_ret, SJ3_CannotCreateDir); + } + chmod(path, (dir_mode & MODE_MASK)); + + put_int(SJ3_NormalEnd); +} + + + +exec_who() +{ + register int i; + register Client *cli; + + i = 0; + cli = client; + while ((i <= client_num) && cli) { + i++; + cli = cli->next; + } + if (i < client_num) { + put_int(i); + } else { + put_int(client_num); + } + for (i = 0, cli = client ; (i < client_num) && cli ; i++, cli = cli->next) { + put_int(cli -> fd); + put_string(cli -> host); + put_string(cli -> user); + put_string(cli -> prog); + } +} + + + +exec_kill() +{ + put_int(SJ3_NormalEnd); + put_flush(); + + server_terminate(); +} +exec_quit() +{ + if (client_num > 1) longjmp(error_ret, SJ3_UserConnected); + exec_kill(); +} + + + +exec_version() +{ + extern char *version_number, *time_stamp; + static char *Version = "version : "; + static char *TimeStamp = "times-stamp : "; + + put_int(SJ3_NormalEnd); + put_ndata(Version, strlen(Version)); + put_string(version_number); + put_ndata(TimeStamp, strlen(TimeStamp)); + put_string(time_stamp); + put_string(NULL); +} + + + +exec_dictpass() +{ + TypeDicID dicid; + char buf[PasswdLen + 1]; + register int err; + DICTL *dl; + + + dicid = get_int(); + err = get_nstring(buf, sizeof(buf)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (err) longjmp(error_ret, SJ3_TooLongPasswd); + + + for (dl = dictlist ; dl ; dl = dl -> next) + if (dl -> dict -> dicid == dicid) break; + if (!dl) longjmp(error_ret, SJ3_NoSuchDict); + + if (set_dictpass(dl -> dict, buf)) longjmp(error_ret, serv_errno); + put_int(SJ3_NormalEnd); +} +exec_dictcmnt() +{ + TypeDicID dicid; + char buf[CommentLength + 1]; + register int err; + DICTL *dl; + + + dicid = get_int(); + err = get_nstring(buf, sizeof(buf)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (err) longjmp(error_ret, SJ3_TooLongComment); + + + for (dl = dictlist ; dl ; dl = dl -> next) + if (dl -> dict -> dicid == dicid) break; + if (!dl) longjmp(error_ret, SJ3_NoSuchDict); + + if (set_dictcmnt(dl -> dict, buf)) longjmp(error_ret, serv_errno); + put_int(SJ3_NormalEnd); +} +exec_stdypass() +{ + char buf[PasswdLen + 1]; + register int err; + + + err = get_nstring(buf, sizeof(buf)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (!stdy_base) longjmp(error_ret, SJ3_StdyFileNotOpened); + if (err) longjmp(error_ret, SJ3_TooLongPasswd); + + if (set_stdypass(buf)) longjmp(error_ret, serv_errno); + put_int(SJ3_NormalEnd); +} +exec_stdycmnt() +{ + char buf[CommentLength + 1]; + register int err; + + + err = get_nstring(buf, sizeof(buf)); + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (!stdy_base) longjmp(error_ret, SJ3_StdyFileNotOpened); + if (err) longjmp(error_ret, SJ3_TooLongComment); + + if (set_stdycmnt(buf)) longjmp(error_ret, serv_errno); + put_int(SJ3_NormalEnd); +} + + + +exec_stdypara() +{ + int stynum, clstep, cllen; + + if (!work_base) longjmp(error_ret, SJ3_NotConnected); + if (!stdy_base) longjmp(error_ret, SJ3_StdyFileNotOpened); + + get_stdysize(&stynum, &clstep, &cllen); + put_int(SJ3_NormalEnd); + put_int(stynum); + put_int(clstep); + put_int(cllen); +} + + + +void execute_cmd() +{ + int i; + + if (i = setjmp(error_ret)) { + debug_out(1, "%d: error code = %d\r\n", client_fd, i); + put_int(i); + } + else { + cur_cli = cur_client; + work_base = cur_cli->work ? &(cur_cli->work->global) : NULL; + stdy_base = cur_cli->stdy ? &(cur_cli->stdy->stdy) : NULL; + +#define CASE(X) case (X): { int j=X; debug_out(1, "%d: %d\t", client_fd, j); } + switch (i = get_int()) { + + CASE(SJ3_CONNECT) exec_connect(); break; + CASE(SJ3_DISCONNECT) exec_disconnect(); break; + + CASE(SJ3_OPENDICT) exec_opendict(); break; + CASE(SJ3_CLOSEDICT) exec_closedict(); break; + + CASE(SJ3_OPENSTDY) exec_openstdy(); break; + CASE(SJ3_CLOSESTDY) exec_closestdy(); break; + CASE(SJ3_STDYSIZE) exec_stdysize(); break; + + CASE(SJ3_LOCK) exec_lock(); break; + CASE(SJ3_UNLOCK) exec_unlock(); break; + + CASE(SJ3_PH2KNJ) exec_ph2knj(SJIS_PROTO); break; + CASE(SJ3_PH2KNJ_EUC) exec_ph2knj(EUC_PROTO); break; + + CASE(SJ3_CL2KNJ) exec_cl2knj(SJIS_PROTO); break; + CASE(SJ3_CL2KNJ_EUC) exec_cl2knj(EUC_PROTO); break; + CASE(SJ3_NEXTCL) exec_nextcl(SJIS_PROTO); break; + CASE(SJ3_NEXTCL_EUC) exec_nextcl(EUC_PROTO); break; + CASE(SJ3_PREVCL) exec_prevcl(SJIS_PROTO); break; + CASE(SJ3_PREVCL_EUC) exec_prevcl(EUC_PROTO); break; + CASE(SJ3_CL2KNJ_CNT) exec_cl2knj_cnt(SJIS_PROTO); break; + CASE(SJ3_CL2KNJ_CNT_EUC) exec_cl2knj_cnt(EUC_PROTO); + break; + CASE(SJ3_CL2KNJ_ALL) exec_cl2knj_all(SJIS_PROTO); break; + CASE(SJ3_CL2KNJ_ALL_EUC) exec_cl2knj_all(EUC_PROTO); + break; + + CASE(SJ3_STUDY) exec_study(); break; + CASE(SJ3_CLSTUDY) exec_clstudy(SJIS_PROTO); break; + CASE(SJ3_CLSTUDY_EUC) exec_clstudy(EUC_PROTO); break; + + CASE(SJ3_ADDDICT) exec_adddict(SJIS_PROTO); break; + CASE(SJ3_ADDDICT_EUC) exec_adddict(EUC_PROTO); break; + CASE(SJ3_DELDICT) exec_deldict(SJIS_PROTO); break; + CASE(SJ3_DELDICT_EUC) exec_deldict(EUC_PROTO); break; + + CASE(SJ3_GETDICT) exec_getdict(SJIS_PROTO); break; + CASE(SJ3_GETDICT_EUC) exec_getdict(EUC_PROTO); break; + CASE(SJ3_NEXTDICT) exec_nextdict(SJIS_PROTO); break; + CASE(SJ3_NEXTDICT_EUC) exec_nextdict(EUC_PROTO); break; + CASE(SJ3_PREVDICT) exec_prevdict(SJIS_PROTO); break; + CASE(SJ3_PREVDICT_EUC) exec_prevdict(EUC_PROTO); break; + + CASE(SJ3_MAKEDICT) exec_makedict(); break; + CASE(SJ3_MAKESTDY) exec_makestdy(); break; + CASE(SJ3_ACCESS) exec_access(); break; + CASE(SJ3_MAKEDIR) exec_makedir(); break; + + CASE(SJ3_WHO) exec_who(); break; + CASE(SJ3_QUIT) exec_quit(); break; + CASE(SJ3_KILL) exec_kill(); break; + CASE(SJ3_VERSION) exec_version(); break; + + CASE(SJ3_DICTPASS) exec_dictpass(); break; + CASE(SJ3_DICTCMNT) exec_dictcmnt(); break; + CASE(SJ3_STDYPASS) exec_stdypass(); break; + CASE(SJ3_STDYCMNT) exec_stdycmnt(); break; + default: warning_out("Illegal command"); + longjmp(error_ret, SJ3_IllegalCommand); + break; + } +#undef CASE + debug_out(1, "cmd end\r\n"); + } + + put_flush(); +} diff --git a/server/main.c b/server/main.c new file mode 100644 index 0000000..c182219 --- /dev/null +++ b/server/main.c @@ -0,0 +1,249 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: main.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1995/02/03 07:38:44 $ + */ + + + + + +#include "sj_sysvdef.h" +#include +#include +#include +#include +#include +#include +#ifdef SVR4 +#include +#include +#endif +#include "Const.h" + +#ifndef lint +static char rcsid_sony[] = "$Header: /export/work/contrib/sj3/server/RCS/main.c,v 1.12 1994/06/03 07:41:30 notanaka Exp $ SONY;"; +#endif + +#ifdef SVR4 +#define signal sigset +#endif + +void _exit(); + +extern int fork_flag; +extern char *lock_file; + + + +static void opening() +{ + extern char *version_number; + extern char *time_stamp; + + printf("Kana-Kanji Conversion Server Version %s\r\n", version_number); + printf("Copyright (c) 1990-1995 Sony Corporation\r\n"); + printf("Created at %s\r\n", time_stamp); +} + +#ifdef LOCK_FILE + + +int make_lockfile() +{ + int fd; + + fd = open(lock_file, O_CREAT | O_EXCL, 0600); + if (fd < 0) return ERROR; + close(fd); + return 0; +} +int erase_lockfile() +{ + return unlink(lock_file); +} +#endif + + + + +#if !defined(__sony_news) || defined(SVR4) +static int signal_handler(sig) +int sig; +{ + warning_out("signal %d catched.", sig); +} + +static int terminate_handler(sig) +int sig; +{ + close_socket(); + sj_closeall(); +#ifdef LOCK_FILE + erase_lockfile(); +#endif + exit(0); +} +#else +static int signal_handler(sig, code, scp) +int sig; +int code; +struct sigcontext *scp; +{ + warning_out("signal %d, code %d catched.", sig, code); +} + +static int terminate_handler(sig, code, scp) +int sig; +int code; +struct sigcontext *scp; +{ + close_socket(); + sj_closeall(); +#ifdef LOCK_FILE + erase_lockfile(); +#endif + exit(0); +} +#endif +server_terminate() +{ + close_socket(); + sj_closeall(); +#ifdef LOCK_FILE + erase_lockfile(); +#endif + exit(0); +} + + + +static void exec_fork() +{ + int tmp; + + if (fork_flag && (tmp = fork())) { + if (tmp < 0) { + fprintf(stderr, "Can't fork child process\r\n"); + fflush(stderr); + } + else { + signal(SIGCHLD, _exit); + signal(SIGHUP , SIG_IGN); + signal(SIGINT , SIG_IGN); + signal(SIGQUIT, SIG_IGN); + signal(SIGTSTP, SIG_IGN); + signal(SIGTERM, _exit); + wait(0); + _exit(0); + } + } + + signal(SIGHUP, (void (*)())signal_handler); + + + signal(SIGINT, (void (*)())terminate_handler); + signal(SIGQUIT, (void (*)())signal_handler); + signal(SIGTERM, (void (*)())terminate_handler); + if (fork_flag) + signal(SIGTSTP, SIG_IGN); +} + + + + +static void leave_tty() +{ + int tmp; + + tmp = open_error(); + tmp |= open_log(); + tmp |= open_debug(); + kill(getppid(), SIGTERM); + fclose(stdin); + fclose(stdout); + if (!tmp) fclose(stderr); + + if (fork_flag) { +#ifdef SVR4 + (void) setsid(); +#else + if ((tmp = open("/dev/tty", O_RDWR)) >= 0) { + ioctl(tmp, TIOCNOTTY, 0); + close(tmp); + } +#endif + } +} + + + +int main(argc, argv) +int argc; +char **argv; +{ +#ifdef __sony_news + (void) setlocale(LC_CTYPE, "ja_JP.EUC"); +#endif + opening(); + if (setuid(geteuid())) { + fprintf(stderr, "error at setuid.\r\n"); exit(1); + } + + parse_arg(argc, argv); + read_runcmd(); + set_default(); + +#ifdef LOCK_FILE + if (make_lockfile() == ERROR) { + fprintf(stderr, "Already running...\r\n"); exit(1); + } +#endif + + exec_fork(); + + socket_init(); + open_socket(); + + leave_tty(); + + preload_dict(); + preopen_dict(); + communicate(); + + close_socket(); + sj_closeall(); +#ifdef LOCK_FILE + erase_lockfile(); +#endif + exit(0); +} diff --git a/server/rc.sj3serv b/server/rc.sj3serv new file mode 100644 index 0000000..56c7c71 --- /dev/null +++ b/server/rc.sj3serv @@ -0,0 +1,117 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: rc.sj3serv,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:02:54 $ +## + +## sj3serv +## +## If you want to start sj3serv when system boots, please delete '#' at the +## head of CMDNAME below. +## + +CMDNAME=sj3serv + +PRINTNAME=$CMDNAME +CMDDIR=/usr/bin +BACKGROUND= +PATH=/usr/bin:/bin +CMDPATH=$CMDDIR/$CMDNAME + +RESTARTMESSAGE= +STARTMESSAGE= +DOWNMESSAGE= +#RESTARTMESSAGE="Restarting $PRINTNAME" +#STARTMESSAGE="Starting $PRINTNAME" +#DOWNMESSAGE="Killed $PRINTNAME" +USAGEMESSAGE="Usage: $0 [start|stop]" + +if [ "$CMDNAME" = "sj3serv" ] +then + if [ ! -d /usr/bin ] + then # /usr not mounted + exit + fi + + pid=`/sbin/findproc $CMDNAME` + case "$1" in + 'start') + if [ $pid ] + then + kill -TERM $pid + sleep 1 + pid=`/sbin/findproc $CMDNAME` + if [ $pid ] + then + kill -9 $pid + fi + if [ -f $CMDPATH ] + then + if [ "$RESTARTMESSAGE" ] + then + echo $RESTARTMESSAGE > /dev/console + fi + eval $CMDPATH $BACKGROUND + fi + else + if [ -f $CMDPATH ] + then + if [ "$STARTMESSAGE" ] + then + echo $STARTMESSAGE >/dev/console + fi + eval $CMDPATH $BACKGROUND + fi + fi + ;; + 'stop') + if [ $pid ] + then + kill -TERM $pid + sleep 1 + pid=`/sbin/findproc $CMDNAME` + if [ $pid ] + then + kill -9 $pid + fi + if [ "$DOWNMESSAGE" ] + then + echo $DOWNMESSAGE > /dev/console + fi + fi + ;; + *) + echo $USAGEMESSAGE + ;; + esac +fi + + diff --git a/server/rc.sj3serv.FreeBSD b/server/rc.sj3serv.FreeBSD new file mode 100644 index 0000000..6939bd8 --- /dev/null +++ b/server/rc.sj3serv.FreeBSD @@ -0,0 +1,98 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: rc.sj3serv.FreeBSD,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1997/01/23 11:09:48 $ +## + +## sj3serv +## +## If you want to start sj3serv when system boots, please delete '#' at the +## head of CMDNAME below. +## + +CMDNAME=sj3serv + +PRINTNAME=$CMDNAME +CMDDIR=/usr/local/bin +BACKGROUND= +PATH=/usr/local/bin:/usr/bin:/bin +CMDPATH=$CMDDIR/$CMDNAME + +RESTARTMESSAGE= +STARTMESSAGE= +DOWNMESSAGE= +#RESTARTMESSAGE="Restarting $PRINTNAME" +#STARTMESSAGE="Starting $PRINTNAME" +#DOWNMESSAGE="Killed $PRINTNAME" +USAGEMESSAGE="Usage: $0 [start|stop]" + +## +## For system which don't have a findproc command.(FreeBSD, ...) +## Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 +## + +if [ "$CMDNAME" = "sj3serv" ] +then + if [ ! -d /usr/local/bin ] + then # /usr/local not mounted + exit + fi + + case "$1" in + 'start') + if [ -f $CMDPATH ] + then + if [ "$STARTMESSAGE" ] + then + echo $STARTMESSAGE >/dev/console + fi + eval $CMDPATH $BACKGROUND + fi + ;; + 'stop') + ;; + '') + if [ -f $CMDPATH ] + then + if [ "$STARTMESSAGE" ] + then + echo $STARTMESSAGE >/dev/console + fi + eval $CMDPATH $BACKGROUND + fi + ;; + *) + echo $USAGEMESSAGE + ;; + esac +fi + + diff --git a/server/serverrc b/server/serverrc new file mode 100644 index 0000000..e086c6e --- /dev/null +++ b/server/serverrc @@ -0,0 +1,35 @@ +## +## Copyright (c) 1991-1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: serverrc,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:02:55 $ +## + +readdict sj3main.dic diff --git a/server/setup.c b/server/setup.c new file mode 100644 index 0000000..19b20e1 --- /dev/null +++ b/server/setup.c @@ -0,0 +1,562 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: setup.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1994/12/09 11:27:07 $ + */ + + + + +#include "sj_sysvdef.h" +#include +#include +#ifdef SVR4 +#include +#else +#include +#endif +#include +#include +#include +#include "sj_typedef.h" +#include "sj_const.h" +#include "sj_var.h" +#include "sj_dict.h" +#include "sj_struct.h" +#include "sj_rename.h" +#include "Const.h" +#include "Struct.h" +#include "sj_global.h" + +typedef struct strlist { + u_char *str1; + u_char *str2; + struct strlist *link; +} StrList; + +char program_name [PathNameLen]; +char runcmd_file [PathNameLen]; + +char *debug_file = NULL; +int debug_level = -1; +int fork_flag = -1; + +int max_client = -1; +char *dict_dir = NULL; +StrList *read_dict = NULL; +StrList *open_dict = NULL; +char *error_file = NULL; +char *log_file = NULL; +char *port_name = NULL; +#ifdef TLI +char *port_number = NULL; +#else +int port_number = -1; +#endif +char *socket_name = NULL; +#ifdef LOCK_FILE +char *lock_file = NULL; +#endif +int dir_mode = -1; +int file_mode = S_IRUSR|S_IWUSR; +StrList *allow_user = NULL; +#ifdef TLI +char *proto_name = NULL; +#endif + +static int line_number; + +char *malloc(); + + + +#ifdef OLD +#else +RcError(p) +char *p; +{ + fprintf(stderr, "%s: \"%s\", line %d: %s\r\n", + program_name, runcmd_file, line_number, p); + fflush(stderr); + exit(1); +} +RcWarning(p) +char *p; +{ + fprintf(stderr, "%s: warning: \"%s\", line %d: %s\r\n", + program_name, runcmd_file, line_number, p); + fflush(stderr); +} +#endif + + + +static cmpstr(src, dst) +u_char *src, *dst; +{ + int flg; + int c; + + flg = (isupper(*src)) ? -1 : 0; + while (*src) { + c = flg ? *dst : (isupper(*dst) ? tolower(*dst) : *dst); + if (*src != c) return -1; + src += 1; + dst += 1; + } + if (*dst) return -1; + return 0; +} + + + +static u_char *get_str(p, dst) +u_char *p; +char **dst; +{ + if (!*dst) { + *dst = malloc(strlen((char *)p) + 1); + if (!*dst) RcError("no more memory"); + strcpy(*dst, (char *)p); + } + while (*p++) ; + return p; +} +static u_char *get_int(p, dst) +u_char *p; +int *dst; +{ + register char *fmt; + + fmt = (*p == '0') ? "%o" : "%d"; + if (sscanf((char *)p, fmt, dst) != 1) RcError("bad integer"); + while (*p++) ; + return p; +} +static u_char *get_flag(p, dst) +u_char *p; +int *dst; +{ + if (sscanf((char *)p, "%d", dst) == 1) + ; + else if (!cmpstr("on", p)) + *dst = -1; + else if (!cmpstr("off", p)) + *dst = 0; + else + RcError("bad flag"); + while (*p++) ; + return p; +} +static u_char *get_list(p, dst) +u_char *p; +StrList **dst; +{ + StrList *s1, *s2; + + if (*p) { + s1 = (StrList *)malloc(sizeof(StrList)); + if (!s1) RcError("no more memory"); + s1 -> link = NULL; + + s1 -> str1 = (u_char *)malloc(strlen((char *)p) + 1); + if (!(s1 -> str1)) RcError("no more memory"); + strcpy((char *)s1 -> str1, (char *)p); + while (*p++) ; + + if (*p) { + s1 -> str2 = (u_char *)malloc(strlen((char *)p) + 1); + if (!(s1 -> str2)) RcError("no more memory"); + strcpy((char *)s1 -> str2, (char *)p); + while (*p++) ; + } + else + s1 -> str2 = NULL; + + if (*dst) { + for (s2 = *dst ; s2 -> link ; s2 = s2 -> link) + ; + s2 -> link = s1; + } + else + *dst = s1; + } + + return p; +} + + + +struct optlist { + char *optname; + u_char *(*optfunc)(); + int optarg; +} option[] = { + "DebugOut", get_str, (int)&debug_file, + "DebugLevel", get_int, (int)&debug_level, + "ForkFlag", get_flag, (int)&fork_flag, + + "PortName", get_str, (int)&port_name, +#ifdef TLI + "PortNumber", get_str, (int)&port_number, + "ProtoName", get_str, (int)&proto_name, +#else + "PortNumber", get_int, (int)&port_number, +#endif + "SocketName", get_str, (int)&socket_name, +#ifdef LOCK_FILE + "LockFile", get_str, (int)&lock_file; +#endif + + "maxclient", get_int, (int)&max_client, + "dictdir", get_str, (int)&dict_dir, + "readdict", get_list, (int)&read_dict, + "opendict", get_list, (int)&open_dict, + "errorout", get_str, (int)&error_file, + "logout", get_str, (int)&log_file, + "dirmode", get_int, (int)&dir_mode, + "filemode", get_int, (int)&file_mode, + "allowuser", get_list, (int)&allow_user, + 0, 0, 0 +}; + + + +static int skip_blank(fp) +FILE *fp; +{ + register int c; + + c = getc(fp); + while (c == ' ' || c == '\t') c = getc(fp); + return c; +} +static int skip_line(fp) +FILE *fp; +{ + register int c; + + c = getc(fp); + while (c != '\n' && c != EOF) c = getc(fp); + return c; +} +static readln(fp, p, len) +FILE *fp; +char *p; +int len; +{ + int c; + int quote = EOF; + int flg = 0; + + c = skip_blank(fp); + while (c != '\n' && c != EOF) { + if (c == '\\') { + if ((c = getc(fp)) == EOF) break; + if (c == '\n') { + line_number++; c = getc(fp); continue; + } + switch (c) { + case 'n': c = '\n'; break; + case 't': c = '\t'; break; + case 'r': c = '\r'; break; + default: break; + } + } + else if (c == '^') { + c = getc(fp); + if (c < '@' || '_' < c) { + ungetc(c, fp); c = '^'; + } + else + c -= '@'; + } + else if (c == quote) { + quote = EOF; c = getc(fp); continue; + } + else if (quote != EOF) + ; + else if (c == '\'' || c == '"') { + quote = c; c = getc(fp); continue; + } + else if (c == '#') { + len -= 1; *p++ = 0; flg = 0; + c = skip_line(fp); continue; + } + else if (c == ' ' || c == '\t') { + len -= 1; *p++ = 0; flg = 0; + c = skip_blank(fp); continue; + } + + if (len > 2) { len -= 1; *p++ = c; flg = -1; } + c = getc(fp); + } + line_number++; + if (flg) *p++ = 0; + *p++ = 0; + + return c; +} +read_line(fp, buf, len) +FILE *fp; +char *buf; +int len; +{ + int flg; + + do { + flg = readln(fp, buf, len); + if (*buf) return 0; + } while (flg != EOF); + + return EOF; +} + + + +void read_runcmd() +{ + FILE *fp; + u_char buf[BUFSIZ]; + struct optlist *opt; + u_char *p; + int i; + + if (!(fp = fopen(runcmd_file, "r"))) { + warning_out("Can't open run-command file \"%s\"", runcmd_file); + return; + } + line_number = 0; + while (read_line(fp, buf, sizeof(buf)) != EOF) { + for (opt = option ; p = (u_char *)opt -> optname ; opt++) + if (!cmpstr(p, buf)) break; + if (p) { + p = buf; while (*p++) ; + p = (*opt->optfunc)(p, opt->optarg); + } + else + RcError("undefined option"); + + if (*p) RcError("too many argment"); + } + + fclose(fp); +} + + + +static set_defstr(d, s) +char **d, *s; +{ + if (*d == NULL && s) { + *d = malloc(strlen(s) + 1); + if (!*d) error_out("failed at memory allocation"); + strcpy(*d, s); + } +} +static set_defint(d, s) +int *d, s; +{ + if (*d < 0) *d = s; +} +void set_default() +{ + set_defstr(&debug_file, DebugOutFile); + set_defstr(&error_file, ErrorOutFile); + set_defstr(&dict_dir, DictRootDir); + set_defstr(&log_file, LogOutFile); + set_defstr(&port_name, PortName); + set_defstr(&socket_name, SocketName); +#ifdef LOCK_FILE + set_defstr(&lock_file, LockFile); +#endif +#ifdef TLI + set_defstr(&proto_name, ProtoName); +#endif + + set_defint(&debug_level, DebugLevel); + set_defint(&fork_flag, ForkFlag); + set_defint(&max_client, MaxClientNum); +#ifdef TLI + set_defstr(&port_number, PortNumber); +#else + set_defint(&port_number, PortNumber); +#endif + set_defint(&dir_mode, DirectryMode); + set_defint(&file_mode, DictFileMode); +} + + + +void parse_arg(argc, argv) +int argc; +char **argv; +{ + int c; + int errflg = 0; + char *p; + + extern char *optarg, *strrchr(); + extern int optind; + + p = (p = strrchr(argv[0], '/')) ? p + 1 : argv[0]; + strcpy(program_name, p); + strcpy(runcmd_file, RunCmdFile); + + while ((c = getopt(argc, argv, "f:")) != EOF) { + switch (c) { + case 'f': + strcpy(runcmd_file, optarg); + break; + + case '?': + default: + errflg++; + break; + } + } + + if (errflg || optind < argc) { + fprintf(stderr, "Usage: %s [-f RunCmdFile]\n", program_name); + exit(1); + } +} + + +void +preload_dict() +{ + StrList *p; + char filename[PathNameLen]; + + work_base = (Global *)malloc(sizeof(Global)); + if (!work_base) { + warning_out("can't load default dictionary(not enough memory)"); + return; + } + + for (p = read_dict ; p ; p = p -> link) { + strncpy(filename, (char *)p -> str1, sizeof(filename)); + filename[sizeof(filename) - 1] = '\0'; + if (make_full_path(filename)) + warning_out("too long filename \"%s\"", p -> str1); + + else if (opendict(filename, p -> str2)) + logging_out("load dictionary \"%s\"", filename); + + else + warning_out("can't open dictionary \"%s\"", filename); + } + + free(work_base); +} + +preopen_dict() +{ + StrList *p; + char filename[PathNameLen]; + DICT *dict; + DICTL *dictl; + + work_base = global_work_base = (Global *)malloc(sizeof(Global)); + if (!work_base) { + warning_out("can't open default dictionary(not enough memory)"); + return; + } + memset(work_base, 0, sizeof(Global)); + + for (p = open_dict ; p ; p = p -> link) { + strncpy(filename, p -> str1, sizeof(filename)); + filename[sizeof(filename) - 1] = '\0'; + if (make_full_path(filename)) + warning_out("too long filename \"%s\"", p -> str1); + + else if (dict = (DICT *)opendict(filename, p -> str2)) { + logging_out("open dictionary \"%s\"", filename); + if (!(dictl = (DICTL *)malloc(sizeof *dictl))) { + closedict((DictFile *)dict); + warning_out("can't open dictionary \"%s\"", filename); + continue; + } + dictl -> dict = dict; + dictl -> next = dictlist; + dictlist = dictl; + + } else + warning_out("can't open dictionary \"%s\"", filename); + } +} + + + +static str_match(s, d) +char *s; +char *d; +{ + while (*d) { + if (*s == '*') { + while (*s == '*') s++; + if (!*s) return TRUE; + while (*d) { + if (str_match(s, d)) return TRUE; + d++; + } + return FALSE; + } + if (*s != '?' && *s != *d) break; + s++; + d++; + } + return (!*s) ? TRUE : FALSE; +} + + + +check_user(user, host) +char *user; +char *host; +{ + StrList *p; + + if (!allow_user) return TRUE; + + for (p = allow_user ; p ; p = p -> link) { + if (!str_match(p -> str1, user)) continue; + + if (p -> str2) + if (!str_match(p -> str2, host)) continue; + + return TRUE; + } + + return FALSE; +} diff --git a/server/time_stamp.c b/server/time_stamp.c new file mode 100644 index 0000000..b46bbbf --- /dev/null +++ b/server/time_stamp.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: time_stamp.c,v $ + * $SonyRevision: 1.6 $ + * $SonyDate: 1998/04/08 13:11:10 $ + */ + + + + + +char *time_stamp = "Mon Mar 23 16:42:59 JST 1998"; + diff --git a/server/version.c b/server/version.c new file mode 100644 index 0000000..402d14a --- /dev/null +++ b/server/version.c @@ -0,0 +1,40 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: version.c,v $ + * $SonyRevision: 1.9 $ + * $SonyDate: 1998/04/08 13:11:10 $ + */ + + + + + +char *version_number = "2.08C"; diff --git a/sj3.tmpl b/sj3.tmpl new file mode 100644 index 0000000..ef4760a --- /dev/null +++ b/sj3.tmpl @@ -0,0 +1,64 @@ +/* + * Copyright (c) 1997 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: sj3.tmpl,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1997/01/23 11:20:57 $ + */ + +SJ3TOP = /usr/local +SJ3BINDIR = $(SJ3TOP)/bin +SJ3HDRDIR = $(SJ3TOP)/include +SJ3LIBDIR = $(SJ3TOP)/lib +SJ3CONFDIR = $(SJ3TOP)/lib/sj3 +SJ3DICTDIR = $(SJ3CONFDIR)/dict + +/* + * Change for FreeBSD. + * Because When the LANG variable is EUC, setlocale function in library libc + * return NULL, use it in library libxpg4 + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ +#if defined(FreeBSDArchitecture) + +CODE_LIBS = -lxpg4 +SJ3OWNER = root +SJ3GROUP = bin + +#else + +SJ3OWNER = root +#if SystemV4 || SystemV +USETLI = -DTLI +SJ3GROUP = bin +#else +SJ3GROUP = staff +#endif + +#endif diff --git a/sj3/Imakefile b/sj3/Imakefile new file mode 100644 index 0000000..7050bdc --- /dev/null +++ b/sj3/Imakefile @@ -0,0 +1,105 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:53 $ + */ + +/* + * Change some make rules. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#include "../sj3.tmpl" + +INCLUDES = -I../sj3h -I../sj3lib -I../include +#if SystemV4 || SystemV +#if defined(SonySysvArchitecture) +CODE_LIBS = -lw16 -ljcode +CCOPTIONS = -Xa -Wf,-XNp9000,-XNd6000 +#else +CCOPTIONS = -Xa +#endif +#if HasSockets +EXTRA_LIBRARIES = -lnsl +#endif +#else +SRC0 = nmttyslot.c +OBJ0 = nmttyslot.o +#endif +DEFINES = $(ARCDEFS) $(SYSDEFS) -DKANJI -DOKB + +SYS_LIBRARIES = -ltermcap $(CODE_LIBS) + +SJ3_LIBDIR = ../sj3lib +RKDIR = ../sj3rkcv +SJLIB = $(SJ3_LIBDIR)/libsj3lib.a +INSTFLAGS = -o $(SJ3OWNER) -g $(SJ3GROUP) -m 4755 +DEPLIBS = $(SJLIB) +LOCAL_LIBRARIES = $(SJLIB) + + +SRC1 = conv.c display.c funckey.c\ + eucmessage.c sj3.c\ + sj3ver.c sjgetchar.c term.c $(SRC0) + +SRC2 = version.c stat_conv.c henkan.c\ + romaji.c code.c\ + etc.c toroku.c edit.c douon.c\ + sjrc.c kigou.c common.c screen.c\ + libif.c + +SRC3 = $(RKDIR)/rk_conv.c \ + $(RKDIR)/sj3_rkcv.c \ + $(RKDIR)/wc16_str.c + +SRC = $(SRC1) $(SRC2) $(SRC3) + +OBJS = sj3ver.o version.o sj3.o\ + funckey.o term.o\ + sjgetchar.o conv.o stat_conv.o henkan.o\ + romaji.o display.o code.o\ + etc.o toroku.o edit.o eucmessage.o douon.o\ + sjrc.o kigou.o common.o screen.o\ + libif.o rk_conv.o sj3_rkcv.o wc16_str.o $(OBJ0) + +AllTarget(sj3) +NormalProgramTarget(sj3,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),) +DependTarget() +LinkSourceFile(rk_conv.c,$(RKDIR)) +LinkSourceFile(sj3_rkcv.c,$(RKDIR)) +LinkSourceFile(wc16_str.c,$(RKDIR)) +InstallProgramWithFlags(sj3,$(SJ3BINDIR),$(INSTFLAGS)) +InstallNamedNonExec(Sjrc,sjrc,$(SJ3CONFDIR)) +InstallNamedNonExec(Sjrk,sjrk,$(SJ3CONFDIR)) +InstallNamedNonExec(Xterm.cvt,cvtkey.xterm,$(SJ3CONFDIR)) +InstallNamedNonExec(News.cvt,cvtkey.news,$(SJ3CONFDIR)) +InstallNamedNonExec(Nwp511.cvt,cvtkey.nwp511,$(SJ3CONFDIR)) +InstallNamedNonExec(Nwp517.cvt,cvtkey.nwp517,$(SJ3CONFDIR)) diff --git a/sj3/News.cvt b/sj3/News.cvt new file mode 100644 index 0000000..230c7bb --- /dev/null +++ b/sj3/News.cvt @@ -0,0 +1,55 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: News.cvt,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:03:02 $ +## + +# sj3 command key alias file +# for console +# +F1 ^[OP +F2 ^[OQ +F3 ^[OR +F4 ^[OS +F5 ^[OT +F6 ^[OU +F7 ^[OV +F8 ^[OW +F9 ^[OX +F10 ^[OY +Select ^[OP +Kanji ^[OH +Cancel ^[OQ +Execute ^[OS +Up ^[[A +Down ^[[B +Right ^[[C +Left ^[[D diff --git a/sj3/Nwp511.cvt b/sj3/Nwp511.cvt new file mode 100644 index 0000000..4f9d99b --- /dev/null +++ b/sj3/Nwp511.cvt @@ -0,0 +1,45 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: Nwp511.cvt,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:03:03 $ +## +# sj3 command key alias file +# for nwp511 +# +F6 ^[OV +F7 ^[OW +F8 ^[OX +F9 ^[OY +F10 ^[OZ +Up ^[[A +Down ^[[B +Right ^[[C +Left ^[[D diff --git a/sj3/Nwp517.cvt b/sj3/Nwp517.cvt new file mode 100644 index 0000000..d5db372 --- /dev/null +++ b/sj3/Nwp517.cvt @@ -0,0 +1,50 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: Nwp517.cvt,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:03:05 $ +## +# sj3 command key alias file +# for nwp517 +# +F1 ^[[17~ +F2 ^[[18~ +F3 ^[[19~ +F4 ^[[20~ +F5 ^[[21~ +F6 ^[[23~ +F7 ^[[24~ +F8 ^[[25~ +F9 ^[[26~ +F10 ^[[28~ +Up ^[[A +Down ^[[B +Right ^[[C +Left ^[[D diff --git a/sj3/Sjrc b/sj3/Sjrc new file mode 100644 index 0000000..879eccb --- /dev/null +++ b/sj3/Sjrc @@ -0,0 +1,152 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: Sjrc,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:03:06 $ +## + +# SJ3用セット・アップ・ファイル +# .sjrc file sample +# sj3 1.00, 1990 Sony Corp. + +# シェルの指定 +#.ForkShell /bin/csh + +# 文節長学習機能のoff +#.bstudy off + +# SJ3コマンド・キーのコントロール・コードへのバインド +# control function key examples + +.key.right ^F +.key.left ^B +.key.kakuchou ^O +.key.syukusyou ^I +.key.wrap ^N +.key.wrapback ^P +.key.saihenkan ^Y +.key.cancel ^K +.key.top ^A +.key.end ^E + +#.key.henkan ^T +#.key.edit ^W +#.key.buffer ^V +#.key.flush ^M +#.key.toggle ^G +#.key.reconnect ^R +#.delkey ^D + +# 文字種切り替えキーを押すと決定する +#.FlushAfterConversion on + +# other control function key +#.key.start +#.key.muhenkan +#.key.kettei +#.key.hiragana +#.key.halpha +#.key.zalpha +#.key.hkatakana +#.key.zkatakana +#.key.code +#.key.etc + +# その他キーが押されたときのコマンド・キーの指定 +#.etckey.toroku hira +#.etckey.syoukyo zkatakana +#.etckey.help hkatakana +#.etckey.sjrc zalpha + +# SJ3コマンド・キーのエスケープ・シーケンスへのバインド +# escape sequence function key (for nwp511) +nwp511.key.etc ^[OT +nwp511.key.code ^[OU +nwp511.key.halpha F6 +nwp511.key.zalpha F7 +nwp511.key.hkatakana F8 +nwp511.key.zkatakana F9 +nwp511.key.hiragana F10 +nwp511.guide.function 半ア 全ア 半カ 全カ かな code \ \ 変換 無変 etc\. 決定 +nwp511.guide.etc その他        +nwp511.guide.funcetc                編集 \ \ 登録 消去 help sjrc + +# SJ3コマンド・キーのエスケープ・シーケンスへのバインド +# escape sequence function key (for nwp517) +nwp517.key.henkan F1 +nwp517.key.muhenkan F2 +nwp517.key.etc F3 +nwp517.key.kettei F4 +nwp517.key.code F5 +nwp517.key.halpha F6 +nwp517.key.zalpha F7 +nwp517.key.hkatakana F8 +nwp517.key.zkatakana F9 +nwp517.key.hiragana F10 + +# viでESCキーを押した場合の動作 +# for vi +.SetNormal ^[ + +# emacsでコントロール−Xを押したときの動作 +# for emacs +#.ThroughNext ^X + +# 初期動作モード +.InitialMode unbuff.halpha.direct + +# ガイドラインのヘルプレベル +#.HelpMode off + +# code キーを押したときの最初のデフォルトコード +#.DefaultCode jis + +# 入力モード切り替えで、無変換キーを押したときのモード +.MuhenkanMode halpha + +# 入力モード切り替えで、無変換キーを押したときのトグル動作 +.MuhenkanToggle on + +# ガイドラインのメッセージの変更例 +#.guide.buffer +   +#.guide.unbuffer - +#.guide.function 変換 無変 ETC\. 決定 CODE \ 半ア 全ア 半カ 全カ かな +#.guide.hira 全かな +#.guide.zkata 全カタ +#.guide.hkata 半カナ +#.guide.zalpha 全アル +#.guide.halpha 半アル + +# サーバの指定 +#.server yourhost1 yourhost2 yourhost3 + +# ローマ字かな変換出来ないときベルを鳴らす +#.rkerrbell on + diff --git a/sj3/Sjrk b/sj3/Sjrk new file mode 100644 index 0000000..f9daac5 --- /dev/null +++ b/sj3/Sjrk @@ -0,0 +1,332 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: Sjrk,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:03:07 $ +## +# +# ローマ字かな変換規則定義ファイル +# デフォルトファイル +# +#フォーマット(区切りはスペースもしくはタブ) +#[in_romaji] [out_kana] [out_romaji] +A あ +I い +U う +E え +O お + +KA か +KI き +KU く +KE け +KO こ +CA か +CI き +CU く +CE け +CO こ +KYA きゃ +KYI き +KYU きゅ +KYE きぇ +KYO きょ +QYA きゃ +QYI き +QYU きゅ +QYE きぇ +QYO きょ + +SA さ +SI し +SU す +SE せ +SO そ +SYA しゃ +SYI し +SYU しゅ +SYE しぇ +SYO しょ +SHA しゃ +SHI し +SHU しゅ +SHE しぇ +SHO しょ + +TA た +TI ち +TU つ +TE て +TO と +TSA た +TSI ち +TSU つ +TSE て +TSO と +THA たぁ +THI てぃ +THU とぅ +TYA ちゃ +TYI ち +TYU ちゅ +TYE ちぇ +TYO ちょ +TSYA ちゃ +TSYI ち +TSYU ちゅ +TSYE ちぇ +TSYO ちょ +CHA ちゃ +CHI ち +CHU ちゅ +CHE ちぇ +CHO ちょ +CYA ちゃ +CYI ち +CYU ちゅ +CYE ちぇ +CYO ちょ + +NA な +NI に +NU ぬ +NE ね +NO の +NYA にゃ +NYI に +NYU にゅ +NYE にぇ +NYO にょ + +HA は +HI ひ +HU ふ +HE へ +HO ほ +HYA ひゃ +HYI ひ +HYU ひゅ +HYE ひぇ +HYO ひょ +FA ふぁ +FI ふぃ +FU ふ +FE ふぇ +FO ふぉ +FYA ふゃ +FYI ふぃ +FYU ふゅ +FYE ふぇ +FYO ふょ + +MA ま +MI み +MU む +ME め +MO も +MYA みゃ +MYI み +MYU みゅ +MYE みぇ +MYO みょ + +YA や +YI い +YU ゆ +YE いぇ +YO よ +RA ら +RI り +RU る +RE れ +RO ろ +LA ら +LI り +LU る +LE れ +LO ろ +RYA りゃ +RYI り +RYU りゅ +RYE りぇ +RYO りょ +LYA りゃ +LYI り +LYU りゅ +LYE りぇ +LYO りょ + +WA わ +WI うぃ +WU う +WE うぇ +WO を + +GA が +GI ぎ +GU ぐ +GE げ +GO ご +GYA ぎゃ +GYI ぎ +GYU ぎゅ +GYE ぎぇ +GYO ぎょ + +ZA ざ +ZI じ +ZU ず +ZE ぜ +ZO ぞ +ZYA じゃ +ZYI じ +ZYU じゅ +ZYE じぇ +ZYO じょ +JA じゃ +JI じ +JU じゅ +JE じぇ +JO じょ +JYA じゃ +JYI じ +JYU じゅ +JYE じぇ +JYO じょ + +DA だ +DI ぢ +DU づ +DE で +DO ど +DYA ぢゃ +DYI ぢ +DYU ぢゅ +DYE ぢぇ +DYO ぢょ +DHA だぁ +DHI でぃ +DHU どぅ +DHYU でゅ + +BA ば +BI び +BU ぶ +BE べ +BO ぼ +BYA びゃ +BYI び +BYU びゅ +BYE びぇ +BYO びょ +VA ヴぁ +VI ヴぃ +VU ヴ +VE ヴぇ +VO ヴぉ +VYA びゃ +VYI び +VYU びゅ +VYE びぇ +VYO びょ + +PA ぱ +PI ぴ +PU ぷ +PE ぺ +PO ぽ +PYA ぴゃ +PYI ぴ +PYU ぴゅ +PYE ぴぇ +PYO ぴょ + +QA くぁ +QI くぃ +QU くぅ +QE くぇ +QO くぉ + +N ん +NN ん +#MB ん B +#MM ん M +#MP ん P + +KK っ K +SS っ S +TT っ T +HH っ H +MM っ M +YY っ Y +RR っ R +LL っ L +WW っ W +GG っ G +ZZ っ Z +DD っ D +BB っ B +PP っ P +CC っ C +FF っ F +JJ っ J +VV っ V +QQ っ Q +XX っ X +#TCH っ CH + +XA ぁ +XI ぃ +XU ぅ +XE ぇ +XO ぉ +XYA ゃ +XYI ぃ +XYU ゅ +XYE ぇ +XYO ょ +XTU っ +XTSU っ +XWA ゎ +XKA ヵ +XKE ヶ + +X, ゛ +X. ゜ +~ 〜 + +#- ー +#, 、 +#. 。 +#@ ・ +#[ 「 +#] 」 +#Z. … +#SONY ソニー diff --git a/sj3/Xterm.cvt b/sj3/Xterm.cvt new file mode 100644 index 0000000..27013bd --- /dev/null +++ b/sj3/Xterm.cvt @@ -0,0 +1,64 @@ +## +## Copyright (c) 1994 Sony Corporation +## +## Permission is hereby granted, free of charge, to any person obtaining +## a copy of this software and associated documentation files (the +## "Software"), to deal in the Software without restriction, including +## without limitation the rights to use, copy, modify, merge, publish, +## distribute, sublicense, and/or sell copies of the Software, and to +## permit persons to whom the Software is furnished to do so, subject to +## the following conditions: +## +## The above copyright notice and this permission notice shall be +## included in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +## IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, +## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +## OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +## THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## +## Except as contained in this notice, the name of Sony Corporation +## shall not be used in advertising or otherwise to promote the sale, use +## or other dealings in this Software without prior written authorization +## from Sony Corporation. +## + +## +## $SonyRCSfile: Xterm.cvt,v $ +## $SonyRevision: 1.1 $ +## $SonyDate: 1994/06/03 08:03:08 $ +## +# sj3 command key alias file +# for xterm +# +F1 ^[[11~ +F2 ^[[12~ +F3 ^[[13~ +F4 ^[[14~ +F5 ^[[15~ +F6 ^[[17~ +F7 ^[[18~ +F8 ^[[19~ +F9 ^[[20~ +F10 ^[[21~ +#F11 ^[[23~ +#F12 ^[[24~ +#F13 ^[[25~ +#F14 ^[[26~ +#F15 ^[[28~ +#F16 ^[[29~ +#F17 ^[[31~ +#F18 ^[[32~ +#F19 ^[[33~ +#F20 ^[[34~ +Select ^[[4~ +Kanji ^[[7~ +Cancel ^[[8~ +Execute ^[[9~ +Up ^[[A +Down ^[[B +Right ^[[C +Left ^[[D diff --git a/sj3/code.c b/sj3/code.c new file mode 100644 index 0000000..05bf0c1 --- /dev/null +++ b/sj3/code.c @@ -0,0 +1,213 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: code.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:09 $ + */ + + + +#include "sj_sysvdef.h" +#include "wchar16.h" +#include "kctype.h" +#if defined(__sony_news) && defined(SVR4) +#include "jctype.h" +#endif +#include "sj2.h" +#include "key.h" +#include "rk.h" + +static u_char cbuf[5]; +static int cur_code = CODE_EUC; +extern int current_locale; +static int ccnt = 0; + +codeconv(c, rkstr) +wchar16_t c; +u_int *rkstr; +{ + register u_short ccode, i; + u_short CheckCcode(); + extern int erase_char; + + if (c == erase_char) { + if (ccnt) { + ccnt--; + *rkstr++ = erase_char + ERRCODE; + } else { + *rkstr++ = erase_char; + } + } else if (iswcntrl(c) || (WcIsKANJI(c) && ccnt == 0)) { + *rkstr++ = c; + if (iswcntrl(c)) + ccnt = 0; + } else if ((ccode = CheckCcode(c)) > 0) { + if (ccnt == 4) { + if ((cur_code != CODE_EUC) || (cur_code != CODE_EUC2)) { + if ((cur_code == CODE_KUTEN) || (cur_code == CODE_KUTEN2)) + ccode += 0x2020; + ccode = jis2euc(ccode & 0x7f7f); + } + if ((cur_code == CODE_KUTEN2) || + (cur_code == CODE_JIS2) || (cur_code == CODE_EUC2)) + ccode &= WcX0212MASK; + ccnt--; + for (; ccnt > 0; ccnt--) + *rkstr++ = erase_char + ERRCODE; + *rkstr++ = SetMojilen(4) + ccode; + } else + *rkstr++ = c + ERRCODE; + } else + *rkstr++ = ERRBEL; + *rkstr = RKEND; +} + +u_short +CheckCcode (c) +wchar16_t c; +{ + register u_char c1; + register u_short code; + + if (!WcIsASCII(c) || !isxdigit(WcLowByte(c)) || + (cur_code == CODE_KUTEN && !isdigit(WcLowByte(c)))) + return(0); + cbuf[ccnt] = WcLowByte(c); + cbuf[ccnt + 1] = '\0'; + + if ((cur_code == CODE_KUTEN) || (cur_code == CODE_KUTEN2)) { + if (ccnt % 2) { + code = (cbuf[ccnt-1] - '0') * 10 + cbuf[ccnt] - '0'; + if (code < 1 || code > 94) + return(0); + if (ccnt >= 3) + code += ((cbuf[0]-'0') * 10 + cbuf[1]-'0') << 8; + } else + code = 1; + } else { + code = (u_short)strtol((char *)cbuf, (char **)NULL, 16); + if (ccnt % 2) + c1 = code & 0xff; + else + c1 = code & 0xf; + switch(cur_code) { + case CODE_SJIS: + if (ccnt == 0 && (c1 == 8 || c1 == 9 || c1 >= 0xe)) + break; + if (ccnt == 1 && issjis1(c1)) + break; + if (ccnt == 2 && c1 >= 4) + break; + if (ccnt == 3 && issjis2(c1)) + break; + return(0); + case CODE_EUC: + case CODE_EUC2: + if (ccnt % 2 && iseuc(c1)) + break; + if (!(ccnt % 2) && (c1 >= 0xa && c1 <= 0xf)) + break; + return(0); + case CODE_JIS: + case CODE_JIS2: + if (ccnt % 2 && isjjis(c1)) + break; + if (!(ccnt % 2) && (c1 >= 2 && c1 <= 7)) + break; + return(0); + } +} + ccnt++; + return(code); +} + +u_short +strtocode() +{ + register int c; + u_short code; + + while (ccnt < 4) { + c = inkey(); + if (AnotherConversion ()) { + unget_key(c); + ccnt = 0; + return(-1); + } + if ((code = CheckCcode(c)) == 0) { + ccnt = 0; + beep(); + return(0); + } + } + ccnt = 0; + switch (cur_code) { + case CODE_SJIS : + return(sjis2jis(code)); + case CODE_KUTEN : + case CODE_KUTEN2: + return(code + 0x2020); + default : + return(code & 0x7f7f); + } +} + +ChangeCode () +{ + if (cur_code == CODE_KUTEN2) + cur_code = CODE_SJIS; + else { + if (current_locale == LC_CTYPE_SHIFTJIS) { + if( cur_code == CODE_KUTEN) { + cur_code = CODE_SJIS; + return; + } + if(cur_code == CODE_SJIS) { + cur_code++; + } else { + cur_code += 2; + } + } else + cur_code++; + } +} + +SetCode(code) +int code; +{ + cur_code = code; +} + +GetCcode() +{ + return(cur_code); +} + diff --git a/sj3/common.c b/sj3/common.c new file mode 100644 index 0000000..cc709b8 --- /dev/null +++ b/sj3/common.c @@ -0,0 +1,140 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: common.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:10 $ + */ + + + +#include "conversion.h" + +int allways_buff = 0; +int no_flush = 0; +int HHlevel = 2; +int Hlevel = 2; +int oasys = 0; +int flush_conversion; + +Conversion *current_conversion; +Conversion *default_conversion; + +Conversion * +AllocConversion () +{ + register Conversion *c; + + if ((c = (Conversion *)malloc (sizeof(Conversion))) == NULL) { + fprintf (stderr, "conversion: can't alloc memory\n\r"); + return (0); + } + + c->Imode = MODE_ZHIRA; + c->BuffMode = BUFF; + c->ha_point = 0; + c->out_point = 0; + c->span_point = 0; + c->word_regist = 0; + c->Cflag = 1; + + c->SavedRow = 0; + c->SavedCol = 0; + c->CurrentVcol = 0; + c->MaxVcol = 0; + c->wrap = 1; + return (c); +} + +static Conversion *push_conversion; + +FreeConversion (c) +Conversion *c; +{ + if (c == push_conversion) + push_conversion = 0; + free (c); +} + +SetConversion (c) +Conversion *c; +{ + PushConversion (current_conversion); + current_conversion = c; +} + +PushConversion (c) +Conversion *c; +{ + push_conversion = c; +} + +PopConversion () +{ + if (push_conversion) + current_conversion = push_conversion; +} + +Conversion * +GetConversion () +{ + return (current_conversion); +} + +InitConversion () +{ + default_conversion = AllocConversion (); + DefaultConversion (); +} + +DefaultConversion () +{ + current_conversion = default_conversion; +} + +EndConversion () +{ + free (default_conversion); +} + +int +wcbyte(str) +register wchar16_t *str; +{ + register count=0; + + while (*str) { + if (WcHighMASK & *str++) + count += 2; + else + count++; + } + return (count); +} diff --git a/sj3/conv.c b/sj3/conv.c new file mode 100644 index 0000000..477c447 --- /dev/null +++ b/sj3/conv.c @@ -0,0 +1,373 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: conv.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:11 $ + */ + + + +#include +#include "wchar16.h" +#include "select.h" +#include "key.h" +#include "inkey.h" +#include "common.h" + + +#define MSEC 300 + + + +int keyvalue; + +char *funckey[] = { + "\033OH", "\033OP", "\033OQ", + "\033OR", "\033OS", "\033OT", + "\033OU", "\033OV", "\033OW", + "\033OX", "\033OY", "\033OZ", + "\033[C", "\033OC", "\033[D", + "\033OD", "\033[A", "\033OA", + "\033[B", "\033OB", "\033[H", + "\033[4~", "\033[11~", "\033[8~", + "\033[12~", "\033[13~", "\033[9~", + "\033[14~", "\033[15~", "\033[17~", + "\033[18~", "\033[19~", "\033[20~", + "\033[21~", "\033[7~", + }; + +int funcvalue[] = { + KEY_CONV, KEY_HENKAN, KEY_MUHENKAN, + KEY_ETC, KEY_KETTEI, KEY_CODE, + KEY_HALPHA, KEY_ZALPHA, KEY_HKATA, + KEY_ZKATA, KEY_ZHIRA, KEY_OTHER, + KEY_RIGHT, KEY_RIGHT, KEY_LEFT, + KEY_LEFT, KEY_UP, KEY_UP, + KEY_DOWN, KEY_DOWN, KEY_CONV, + KEY_HENKAN, KEY_HENKAN, KEY_MUHENKAN, + KEY_MUHENKAN, KEY_ETC, KEY_KETTEI, + KEY_KETTEI, KEY_CODE, KEY_HALPHA, + KEY_ZALPHA, KEY_HKATA, KEY_ZKATA, + KEY_ZHIRA, KEY_CONV, + }; + +int keynumber = sizeof(funckey)/sizeof(char*); + + + +extern int Direct; +extern int master; +extern wchar16_t Ukey[UKEYNUM][SEQLEN+1]; +extern int Uvalue[]; +extern int Unumber; + + + +convert_stat () +{ + stat_init (); + stat_conv (); +} + +inputprocess () +{ + register int c; + wchar16_t obuf[2]; + + if (Direct) { + set_guide_line (KEY_CONV); + convert_stat (); + } + set_guide_line (KEY_NORMAL); + print_guide_line (); + for (;;) { + if ((c = inkey ()) == EOF) + continue; + switch (keyvalue) { + case KEY_NORMAL: + obuf[0] = c; + obuf[1] = 0; + SJ_write (obuf, 1); + break; + case KEY_CONV: + set_guide_line (KEY_CONV); + convert_stat (); + set_guide_line (KEY_NORMAL); + print_guide_line (); + break; + default: + write_pseq (0); + break; + } + } +} + + +wchar16_t ibuf[KEYBUFSIZ]; +wchar16_t pars_seq[KEYBUFSIZ]; +int buf_count = 0; +int pars_n; +static int escape = 0; + +inkey () +{ + register Conversion *cv; + register int i, j; + register wchar16_t c; + + cv = current_conversion; + keyvalue = KEY_NORMAL; + pars_n = 0; + if (buf_count) { + if (escape && cv->Cflag) + master_flush (); + c = *ibuf; + } + else { + if ((c = SJ_getchar ()) == (wchar16_t) EOF) + + return ((short) c); + *ibuf = c; + buf_count = 1; + } + + + if (*ibuf == ESC) { + keyvalue = sequence (ibuf, &buf_count); + escape = 1; + } + else { + escape = 0; + } + + if (keyvalue == KEY_NORMAL) + keyvalue = parse_command (ibuf, &buf_count); + + if (keyvalue == KEY_NORMAL) { + c = *ibuf; + for (i=1 ; i < buf_count ; i++) + ibuf[i - 1] = ibuf[i]; + buf_count--; + } + + if (buf_count > KEYBUFLIM) { + for (i = buf_count - 1; i >= 0 ; i --) { + if (ibuf[i] == ESC) { + + for (j = i ; j < buf_count ; j ++) + ibuf[j-i] = ibuf[j]; + buf_count -= i; + return(c); + } + } + + buf_count = 0; + } + return (c); +} + +sequence (buf, count) +wchar16_t *buf; +register int *count; +{ + + + + register int n; + SELECT_FD ifds; + struct timeval t; + extern int errno; + register wchar16_t *s; + int value; + + + if (*count > 1 && (value = parse_escape (buf, count, 1)) != KEY_MORE) + return (value); + + s = buf + *count; + for (;;) { + t.tv_sec = 0; + t.tv_usec = UsecWeight (0); + FD_ZERO (&ifds); + FD_SET (STDIN, &ifds); + if (select (STDIN + 1, &ifds, 0, 0, &t) <= 0) { + if (errno == EINTR) { + errno = 0; + continue; + } else { + return (parse_escape (buf, count, 0)); + } + } + if ((n = SJ_read (s, KEYBUFLIM)) <= 0) { + return (parse_escape (buf, *count, 0)); + } + s += n; + *count += n; + if ((value = parse_escape (buf, count, 1)) == KEY_MORE) + continue; + else { + return (value); + } + } +} + + + +parse_escape (s, count, more) +register wchar16_t *s; +register int *count; +int more; +{ + register int i, j; + wchar16_t temp[KEYBUFSIZ]; + int possible; + + possible = 0; + + + + for (i = 0 ; i < Unumber ; i ++) { + + + for (j=0 ; j < *count ; j++) { + if (s[j] != Ukey[i][j]) + break; + } + + + if (j == wslen (&Ukey[i][0])) { + + + Strncpy (pars_seq, s, j); + pars_seq[j] = (wchar16_t) '\0'; + pars_n = j; + + + *count -= j; + + + if (*count > 0) { + Strncpy (temp, &s[j], *count); + temp[*count] = (wchar16_t) '\0'; + wscpy(s, temp); + } + + return (Uvalue[i]); + } + else if (j == *count) + possible = 1; + } + + + + for (i = 0 ; i < keynumber ; i ++) { + + + for (j = 0 ; j < *count ; j ++) { + if (s[j] != (u_char)funckey[i][j]) + break; + } + + + if (j == strlen (funckey[i])) { + + + Strncpy (pars_seq, s, j); + pars_seq[j] = (wchar16_t) '\0'; + pars_n = j; + + + *count -= j; + + + if (*count > 0) { + Strncpy (temp, &s[j], *count); + temp[*count] = (wchar16_t) '\0'; + wscpy (s, temp); + } + + return (funcvalue[i]); + } + else if (j == *count) + possible = 1; + } + + if (*count == 1) + return (KEY_NORMAL); + else if (more && possible) + return (KEY_MORE); + else { + Strncpy (pars_seq, s, *count); + pars_seq[*count] = (wchar16_t) '\0'; + pars_n = *count; + *count = 0; + *s = '\0'; + return (KEY_OTHER); + } +} + +write_pseq (mod) +int mod; +{ + + + if (mod == 3) { + if (pars_n > 0) { + pars_n = 0; + return (*pars_seq); + } + } + if (mod == 2) { + if (pars_n == 1) { + pars_n = 0; + return (*pars_seq); + } + pars_n = 0; + return (0); + } + if (mod == 1) { + if (pars_n == 1) { + pars_n = 0; + return (*pars_seq); + } + else if (IsGoto (*pars_seq)) { + Strncpy (&ibuf[buf_count], &pars_seq[1], pars_n - 1); + buf_count += pars_n - 1; + pars_n = 0; + return (*pars_seq); + } + } + if (pars_n > 0) + SJ_through (pars_seq, pars_n); + pars_n = 0; + return (0); +} + diff --git a/sj3/display.c b/sj3/display.c new file mode 100644 index 0000000..e421bf7 --- /dev/null +++ b/sj3/display.c @@ -0,0 +1,496 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: display.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:12 $ + */ + + + +#include "sj_sysvdef.h" +#include +#include "common.h" +#include "inkey.h" +#include "select.h" + +char bp[TCBUFSIZE]; +char bpwork[AREASIZE]; +char cmove[SHORTLENGTH]; + + + +extern int master; +extern int vflag; +extern char term_name[]; + +int status_line; +char *CM,*US,*UE,*SO,*SE,*CE,*CS,*BEL,*RP,*AP,*TS,*FS,*DS,*I2; +char *SC,*RC,*SR,*DO; +static int keyboard = OTHER_KB; + + + +checkterm () +{ + char *kb, *area, *tgetstr (), *tmp; + int val; + register Conversion *cv; + + cv = current_conversion; + + val = tgetent (bp, term_name); + if (val == -1) { + aprintf ("Can't open termcap file\n\r"); + done3 (); + } else if (val == 0) { + aprintf ("No termcap entry for %s\n\r",term_name); + done3 (); + } + if ((val = tgetnum("co")) < 0) { + cv-> column = 0; + } else { + cv-> column = val; + } + if ((val = tgetnum("li")) < 0) { + cv->line = 0; + } else { + cv->line = val; + } + if (tmp = getenv("ROWS")) { + (void) sscanf(tmp, "%d", &val); + cv->line = val; + } + if (tmp = getenv("COLUMNS")) { + (void) sscanf(tmp, "%d", &val); + cv->column = val; + } + area = bpwork; + + if ((CM = tgetstr ("cm", &area)) == (char *)NULL) { + aprintf ("No termcap 'cm'\n\r"); + done3 (); + } + US = tgetstr ("us", &area); + UE = tgetstr ("ue", &area); + SO = tgetstr ("so", &area); + SE = tgetstr ("se", &area); + CE = tgetstr ("ce", &area); + if ((SC = tgetstr ("sc", &area)) == NULL) + SC = "\0337"; + if ((RC = tgetstr ("rc", &area)) == NULL) + RC = "\0338"; + if ((SR = tgetstr ("sr", &area)) == NULL) + SR = "\033M"; + if ((DO = tgetstr ("do", &area)) == NULL) + DO = "\033E"; + if ((CS = tgetstr ("cs", &area)) == NULL) + CS = "\033[%i%d;%dr"; + if ((BEL = tgetstr ("bl", &area)) == NULL) { + BEL = "\007"; + } + if ((RP = tgetstr ("RP", &area)) == NULL) { + RP = "\033[6n"; + } + if ((AP = tgetstr ("AP", &area)) == NULL) { + AP = "\033[%d;%dR"; + } + if ((status_line = tgetflag("hs")) && tgetflag("es")) { + TS = tgetstr ("ts", &area); + FS = tgetstr ("fs", &area); + DS = tgetstr ("ds", &area); +#ifdef SVR4 + I2 = tgetstr ("i1", &area); +#else + I2 = tgetstr ("i2", &area); +#endif + } else { + status_line = 0; + } +#ifdef SVR4 + + + if (strstr(term_name, "news") != NULL) { + keyboard = NEWS_KB; + set_news(); + } else + keyboard = OTHER_KB; +#else + + kb = tgetstr ("KB", &area); + if (kb == (char *)NULL || *kb == '\0') + keyboard = OTHER_KB; + else if (strcmp (kb, "news") == 0) { + keyboard = NEWS_KB; + set_news(); + } else + keyboard = OTHER_KB; +#endif + + strcpy (cmove, CM); +} + +void outc(c) +char c; +{ + putchar (c); +} + +void erroutc(c) +{ + fputc (c, stderr); +} + +start_guideline () +{ + if (status_line && I2) + tputs(I2, 1, erroutc); +} + +end_guideline () +{ + if (status_line) { + tputs(DS, 1, outc); + fflush(stdout); + } +} + +put_space (n) +int n; +{ + register int i; + + for (i = 0 ; i < n ; i ++) + putchar (' '); +} + +Backspace () +{ + putchar (BS); +} + +master_flush () +{ + SELECT_FD ifds; + int nc; + struct timeval t; + extern int errno; + + do { +cont: + t.tv_sec = 0; + t.tv_usec = UsecWeight (1); + FD_ZERO (&ifds); + FD_SET (STDIN, &ifds); + FD_SET (master, &ifds); + if (select (master + 1, &ifds, 0, 0, &t) > 0) { + if (FD_ISSET (STDIN, &ifds)) + if (ThroughIntr ()) + return; + if (FD_ISSET (master, &ifds)) + output_master (); + } else if (errno == EINTR) { + errno = 0; + goto cont; + } + if (ioctl (master, TIOCOUTQ, &nc) < 0) + return (1); + } while (nc > 0); + return (0); +} + +ThroughIntr () +{ + wchar16_t s[2]; + + SJ_read (s, 1); + s[1] = '\0'; + if (isintr (*s)) { + master_out (s, 1); + return (1); + } + else { + unget_inkey2 (s, 1); + return (0); + } +} + +under_in () +{ + tputs(US, 1, outc); +} + +under_out () +{ + tputs(UE, 1, outc); +} + +reverse_in () +{ + tputs(SO, 1, outc); +} + +reverse_out () +{ + tputs(SE, 1, outc); +} + + + +beep () +{ + tputs(BEL, 1, outc); + Flush (); +} + + + +CursorSet (row, col) +u_short row, col; +{ + tputs(tgoto(CM, col - 1, row - 1), 1, outc); + Flush (); +} + + + +RegionSet (row1, row2) +int row1, row2; +{ + + + + tputs (SC, 1, outc); + tputs (tgoto (CS, row2, row1 - 1), 1, outc); + tputs (RC, 1, outc); + tputs (DO, 1, outc); + tputs (SR, 1, outc); + tputs (SC, 1, outc); + tputs (tgoto (CS, row2 - 1, row1 - 1), 1, outc); + tputs (RC, 1, outc); + Flush (); +} + +#define SUCC 0 +#define FAIL 1 +#define CRLIMIT 4 + +int master_flush_flag = 1; + +CursorRead (row, col) +u_short *row, *col; +{ + + register int count; + int row1, col1, row2, col2; + + row2 = col2 = 0; + count = 0; + for (;;) { + if (++count > CRLIMIT) { + break; + } + tputs(RP, 1, outc); + fflush (stdout); + if (CRP (&row1, &col1) == FAIL) + continue; + if (master_flush_flag) + master_flush (); + tputs(RP, 1, outc); + fflush (stdout); + if (CRP (&row2, &col2) == FAIL) + continue; + if (row1 == row2 && col1 == col2) + break; + } + *row = row2; + *col = col2; +} + + + +#define CRPLIM 4 +#define BACKLIM 16 +#define MARKER '%' +#define SEPARA ';' + +CRP (row, col) +int *row, *col; +{ + register char *sa, *sd; + register int c; + char Rchar[4], Cchar[4]; + wchar16_t Back[BACKLIM]; + register int Back_count, count; + + + + count = 0; + Back_count = 0; + c = '\0'; +top: + sa = AP; + sd = Rchar; + + if (++count > CRPLIM) + return (FAIL); + + if (Back_count) { + unget_inkey2 (Back, Back_count); + Back_count = 0; + } + while ((c != ESC) && ((c = CRI ()) != ESC) && Back_count < BACKLIM) + Back[Back_count++] = c; + if (Back_count) { + unget_inkey2 (Back, Back_count); + Back_count = 0; + } + Back[Back_count++] = c; + + sa ++; + while (*sa != '\0') { + if (*sa == MARKER) { + sa += 2; + + while (c = CRI ()) { + if (c == ESC) + goto top; + Back[Back_count++] = c; + if (isdigit (c)) { + *(sd ++) = c; + *sd = '\0'; + } + else if (c == *sa) + break; + else + goto top; + } + if (c == SEPARA) + sd = Cchar; + } + else { + c = CRI (); + if (c == ESC) + goto top; + Back[Back_count++] = c; + if (c != *sa) + goto top; + } + sa ++; + } + *row = atoi (Rchar); + *col = atoi (Cchar); + + return (SUCC); +} + + + +unget_inkey2 (s, n) +register wchar16_t *s; +register int n; +{ + extern wchar16_t ibuf[]; + extern int buf_count; + register int i; + + if (buf_count < KEYBUFSIZ - n) { + for (i = 0 ; i < n ; i ++) + ibuf[buf_count ++] = *(s ++); + } +} + +unget_key (c) +int c; +{ + wchar16_t tmp[2]; + + tmp[0] = c; + unget_inkey2 (tmp, 1); +} + + + +CRI () +{ + wchar16_t c; + + SJ_read (&c, 1); + return (c); +} + + + +Clear_EOL () +{ + reverse_out(); + tputs(CE, 1, outc); +} + +StartGuide (row, col) +u_short *row, *col; +{ + register Conversion *cv; + + cv = current_conversion; + master_flush_flag = 0; + if (status_line) { + tputs (tgoto (TS, 0, 0), 1, outc); + } + else { + CursorRead (row, col); + CursorSet (cv->line + 1, 0); + } + Flush (); +} + +EndGuide (row, col) +u_short row, col; +{ + if (status_line) { + tputs (FS, 1, outc); + } + else { + CursorSet (row, col); + } + Flush (); + master_flush_flag = 1; +} + +Flush () +{ + fflush (stdout); +} + +Cscroll () +{ + + return (1); +} diff --git a/sj3/douon.c b/sj3/douon.c new file mode 100644 index 0000000..eb36122 --- /dev/null +++ b/sj3/douon.c @@ -0,0 +1,527 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: douon.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1996/02/23 11:04:02 $ + */ + + + +#include "common.h" +#include "key.h" +#include "wchar16.h" +#define DNUM 5 + +static int Dcount; +static int Dpoint; +static struct douon_sj3 HenkanDouon[DOUON_N]; +static wchar16_t Dkanji[BUFFLENGTH * 2]; + +SJ_getdouon (s, d, n, choice, reconv) +wchar16_t *s; +struct douon_sj3 *d; +int n; +int choice; +int reconv; +{ + register int len; + + Dcount = SJ2_getdouon (s, d, n, choice, reconv); + + + if (Dcount < 0 && !dconnect(1)) + Dcount = SJ2_getdouon (s, d, n, choice, reconv); + + if (Dcount <= 0) { + Dcount = 1; + len = wslen (s); + Strncpy ((char *)d[0].ddata, s, len); + d[0].dlen = wcbyte(s); + d[0].wlen = len; + return(0); + } else + return(1); +} + + + +exec_douon () +{ + register Conversion *cv; + int val; + + cv = GetConversion (); + if (cv->CurBun == -1) { + cv->CurBun = 0; + Rdisp (); + } + cv->PreBun = cv->CurBun; + if (cv->Bkettei[cv->CurBun] & Bmuhenkan) + val = Sdouon (2); + else + val = Sdouon (1); + if (!val) + Rdisp (); +} + +wrap_douon (back) +int back; +{ + register Conversion *cv; + int val; + + cv = current_conversion; + if (cv->CurBun == -1) { + cv->CurBun = 0; + Rdisp (); + } + cv->PreBun = cv->CurBun; + if (cv->Dflag == cv->CurBun) + val = Rdouon (back); + else { + val = Sdouon (2); + cv->Dflag = cv->CurBun; + } + if (!val) + Rdisp (); +} + + + +Cdouon (yomi, gnum) +wchar16_t *yomi; +int gnum; +{ + + + register int i, j; + register int len; + register wchar16_t *s; + register int dispnum; + int num; + int displen; + int base; + char tmp[BUFFLENGTH], tmp2[BUFFLENGTH * 2]; + wchar16_t wtmp[BUFFLENGTH], wtmp2[BUFFLENGTH * 2]; + + int gakusyuu; + u_short row, col; + register Conversion *cv; + + cv = current_conversion; + + gakusyuu = SJ_getdouon (yomi, HenkanDouon, gnum, 0, 0); + + dispnum = DNUM; + if (dispnum > Dcount) + j = Dcount; + else + j = dispnum; + len = 0; + for (i = 0 ; i < j ; i ++) + len += HenkanDouon[i].dlen; + len /= j; + if (len < 1) + len = 1; + len += 6; + sprintf (tmp, "%d/%d ", Dcount, Dcount); + displen = cv->column - strlen (tmp) - 1; + if (displen < 1) + displen = 1; + num = displen / len; + if (num < 1) + num = 1; + if (num < dispnum && num > 0) + dispnum = num; + + for (i = 0 ; ; ) { + if (i >= Dcount) + i = 0; + StartGuide (&row, &col); + Clear_EOL (); + base = i; + + sprintf (tmp, "%d/%d", i + 1, Dcount); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + printR (wtmp); + put_space (1); + + for (j = 0 ; j < dispnum ; j ++, i ++) { + if (i >= Dcount) + break; + len = HenkanDouon[i].dlen; + + if (len > displen) + len = displen; + + s = (wchar16_t *)HenkanDouon[i].ddata; + Strncpy (wtmp, s, HenkanDouon[i].wlen); + wtmp[HenkanDouon[i].wlen] = '\0'; + (void) wcstombs(tmp, wtmp, BUFFLENGTH); + sprintf (tmp2, "[%d] %s ", j+1, tmp); + (void) mbstowcs(wtmp2, tmp2, BUFFLENGTH); + SJ_print (wtmp2); + } + + EndGuide (row, col); + Flush (); + num = Dselect (j); + + + if (num == 0) + continue; + + + else if (num == -1) { + if ((i >= Dcount) && ((Dcount % dispnum) != 0)) + i = Dcount - (Dcount % dispnum); + else + i -= dispnum; + i -= dispnum; + if (i < 0) { + if (Dcount > dispnum) { + if ((Dcount % dispnum) == 0) + i = Dcount - dispnum; + else + i = Dcount - (Dcount % dispnum); + } + else + i = 0; + } + continue; + } + + + else if (num > j) { + disp_mode (); + return (FALSE); + } + + + else + break; + } + + disp_mode (); + + Dpoint = base + num - 1; + len = HenkanDouon[Dpoint].dlen; + s = (wchar16_t *)HenkanDouon[Dpoint].ddata; + Strncpy (Dkanji, s, HenkanDouon[Dpoint].wlen); + Dkanji[HenkanDouon[Dpoint].wlen] = '\0'; + if (HenkanDouon[Dpoint].valid) + PushGD (gnum, &HenkanDouon[Dpoint].dcid); + + if (gakusyuu) + if (HenkanDouon[Dpoint].valid) + SJ2_study (&HenkanDouon[Dpoint].dcid); + else + SJ2_toroku(yomi, HenkanDouon[Dpoint].ddata, SJ3_H_NRMNOUN); + + return (TRUE); +} + +Dselect (lim) +register int lim; +{ + extern int keyvalue; + register int c, num; + char s[2]; + + SaveConversion (); + while ((c = inkey ()) != EOF) { + if (AnotherConversion ()) { + unget_key (c); + break; + } + if (keyvalue == KEY_KETTEI) + break; + else if (keyvalue == KEY_HENKAN || keyvalue == KEY_RIGHT) + return (0); + else if (c == ' ') + return (0); + else if (keyvalue == KEY_MUHENKAN || keyvalue == KEY_LEFT + || is_bsdel (c)) + return (-1); + else if (WcIsASCII(c) && isdigit (WcLowByte(c))) { + *s = c; + s[1] = '\0'; + num = atoi (s); + if (num > 0 && num <= lim) + return (num); + } + else if (keyvalue != KEY_NORMAL) + break; + else if (keyvalue == KEY_NORMAL && IsESC (c)) + break; + } + return (lim + 1); +} + + +Gdouon (yomi, num, choice, reconv) +wchar16_t *yomi; +int num; +int choice; +int reconv; +{ + + + register int len; + register wchar16_t *s; + + SJ_getdouon (yomi, HenkanDouon, num, choice, reconv); + + Dpoint = 0; + len = HenkanDouon[Dpoint].wlen; + s = (wchar16_t *)HenkanDouon[Dpoint].ddata; + Strncpy (Dkanji, s, len); + Dkanji[len] = '\0'; + if (HenkanDouon[Dpoint].valid) + PushGD (num, &HenkanDouon[Dpoint].dcid); +} + +Sdouon (Choice) +int Choice; +{ + register Conversion *cv; + register int i, j; + int len; + wchar16_t yomi[BUFFLENGTH * 2]; + int count; + + cv = current_conversion; + count = 0; + if (Choice == 0) + i = cv->PreBun; + else + i = cv->CurBun; +top: + if ((len = load_bun(i, yomi, MODE_ZHIRA)) <= 0) { + cv->Bkettei[i] |= Bmuhenkan; + cv->Bkettei[i] &= ~Bhenkan; + cv->Pkettei[i] = MODE_ZHIRA; + *Dkanji = '\0'; + goto null; + } + else if (len > DLEN) { + cv->Bkettei[i] |= Bmuhenkan; + cv->Bkettei[i] &= ~Bhenkan; + *Dkanji = '\0'; + goto null; + } + else if (Choice == 0 && (cv->Bkettei[i] & Bmuhenkan)) { + goto tail; + } + else { + cv->Bkettei[i] |= Bhenkan; + cv->Bkettei[i] &= ~Bmuhenkan; + } + + if (Choice == 1) { + if (Cdouon (yomi, i) == FALSE) + return (1); + cv->Pkettei[i] = MODE_ZHIRA; + } + else if (Choice == 2) { + Gdouon (yomi, i, 0, 0); + } + else if (Choice == 3) + Gdouon (yomi, i, count, 1); + else + Gdouon (yomi, i, count, 0); +null: + len = wslen (Dkanji); + + if (!(cv->Bkettei[i] & Bedit)) { + if (cv->Enum >= MAXENUM) + return (1); + j = cv->Enum ++; + cv->Edit[i] = j; + cv->Epoint[j] = &(cv->Ebuff[cv->e_point]); + cv->e_point += DLEN; + } + else + j = cv->Edit[i]; + if (0 < len && len <= DLEN) { + cv->Bkettei[i] |= Bedit; + cv->Pkettei[i] = MODE_ZHIRA; + } + cv->Elen[j] = len; + wscpy (cv->Epoint[j], Dkanji); + +tail: + if (Choice == 0 && i != cv->CurBun) { + i = cv->CurBun; + goto top; + } + if (cv->PreBun == cv->Bnum) + cv->Bkettei[cv->Bnum] = Bend; + return (0); +} + + + +Rdouon (back) +int back; +{ + register Conversion *cv; + register int i, j; + register int len; + register wchar16_t *s; + + cv = current_conversion; + if (Dcount > 0) { + if (back) { + Dpoint --; + if (Dpoint < 0) + Dpoint = Dcount - 1; + } + else { + Dpoint ++; + if (Dpoint >= Dcount) + Dpoint = 0; + } + len = HenkanDouon[Dpoint].wlen; + s = (wchar16_t *)HenkanDouon[Dpoint].ddata; + Strncpy (Dkanji, s, len); + Dkanji[len] = '\0'; + + i = cv->CurBun; + j = cv->Edit[i]; + cv->Elen[j] = len; + wscpy (cv->Epoint[j], Dkanji); + return (0); + } + return (1); +} + +Bkanji (kanji) +wchar16_t *kanji; +{ + register Conversion *cv; + register int i; + int plen, len; + wchar16_t *s; + + cv = current_conversion; + s = kanji; + *s = '\0'; + plen = 0; + for (i = 0 ; i < cv->Bnum ; i ++) { + if ((len = Bstr (i, s)) <= 0) + continue; + s += len; + plen += len; + } + return(plen); +} + +struct studyrec Gdata[BUFFLENGTH]; + +PushGD (num, wordid) +int num; +struct studyrec *wordid; +{ + Gdata[num] = *wordid; +} + +cl_gakusyuu () +{ + register Conversion *cv; + register int i, j; + register int o_point, n_point; + + cv = current_conversion; + for (i = 0 ; i < cv->Bnum ; i ++) { + if (cv->OrgPlen[i] != cv->Plen[i]) { + o_point = n_point = 0; + j = i; + while (j < cv->Bnum) { + o_point += cv->OrgPlen[j]; + n_point += cv->Plen[j]; + j ++; + if (o_point == n_point) + break; + } + j--; + check_and_gakusyuu (i, j); + i = j; + } + } +} + +check_and_gakusyuu (m, n) +int m, n; +{ + register Conversion *cv; + register int i, j; + + cv = current_conversion; + i = m; + j = i + 1; + while (j <= n && j < cv->Bnum) { + if (cv->Bkettei[i] & Bedit && !(cv->Bkettei[i] & Bmuhenkan)) + go_gakusyuu (i); + i ++; + j ++; + } +} + +go_gakusyuu (n) +int n; +{ + register Conversion *cv; + register int i, j; + wchar16_t yomi1[BUFFLENGTH], yomi2[BUFFLENGTH]; + struct studyrec *gdatap; + int len; + + cv = current_conversion; + i = n; + j = i + 1; + + if (cv->Pedited[i] == 1 || cv->Pedited[j] == 1) + return; + + + if ((len = load_bun(i, yomi1, MODE_ZHIRA)) <= 0 && len > DLEN) + return; + if ((len = load_bun(j, yomi2, MODE_ZHIRA)) > DLEN) + return; + + + if (len <= 0) + gdatap = NULL; + else + gdatap = &Gdata[j]; + SJ2_clstudy (yomi1, yomi2, gdatap); +} diff --git a/sj3/edit.c b/sj3/edit.c new file mode 100644 index 0000000..3ccada6 --- /dev/null +++ b/sj3/edit.c @@ -0,0 +1,872 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: edit.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1997/01/23 11:09:36 $ + */ + + + +#include "common.h" +#include "key.h" + + + +static wchar16_t *jpoint; +static int iedit, jedit; +static int ilen, jlen; + +push_obj (i, j) +register int i, j; +{ + register Conversion *cv; + + cv = GetConversion (); + jpoint = cv->Ppoint[j]; + ilen = cv->Plen[i]; + jlen = cv->Plen[j]; + iedit = cv->Bkettei[i]; + jedit = cv->Bkettei[j]; +} + +pop_obj (i, j) +register int i, j; +{ + register Conversion *cv; + + cv = GetConversion (); + cv->Ppoint[j] = jpoint; + cv->Plen[i] = ilen; + cv->Plen[j] = jlen; + cv->Bkettei[i] = iedit; + cv->Bkettei[j] = jedit; +} + + + +Bbig () +{ + register Conversion *cv; + register int i, j, k; + int moji, last, val; + + cv = GetConversion (); + if (cv->CurBun < 0) + cv->CurBun = 0; + i = cv->CurBun; + j = i + 1; + while (j < cv->Bnum) { + if (cv->Plen[j] > 0) { + push_obj (i, j); + + k = cv->Ppoint[j] - cv->Ppoint[0]; + last = k + cv->Plen[j]; + moji = 0; + for (; k < last; k++) { + if (k < last-1 &&(cv->out_mode[k+1]&OMODE_ZEN)){ + moji += 2; + k++; + }else + moji++; + if (cv->out_mode[k+1] & OMODE_MASK) + break; + } + cv->Plen[i] += moji; + cv->Plen[j] -= moji; + cv->Ppoint[j] = cv->Ppoint[i] + cv->Plen[i]; + + cv->PreBun = j; + + if (cv->Bkettei[i] & Bhenkan) { + val = Sdouon (0); + + } + else { + cv->Bkettei[i] |= Bmuhenkan; + cv->Bkettei[i] &= ~Bhenkan; + cv->Bkettei[j] |= Bmuhenkan; + cv->Bkettei[j] &= ~Bhenkan; + val = 0; + } + if (!val) { + cv->Dflag = -1; + Rdisp (); + return (1); + } + break; + } + else + j ++; + } + beep (); + if (j < cv->Bnum) + pop_obj (i, j); + return (0); +} + + + +Bsmall (small) +int small; +{ + register Conversion *cv; + register int i, j, k, moji; + int val; + + cv = GetConversion (); + if (cv->CurBun < 0) + cv->CurBun = 0; + i = cv->CurBun; + j = i + 1; + if (j <= cv->Bnum && cv->Plen[i] > 1) { + if (j == cv->Bnum) { + cv->Bnum ++; + cv->Bkettei[cv->Bnum] = Bend; + cv->Plen[j] = 0; + cv->Pkettei[j] = cv->Pkettei[i]; + cv->Bkettei[j] |= Bmuhenkan; + cv->Bkettei[j] &= ~Bhenkan; + } + else if (small) { + while (j < cv->Bnum - 1 && cv->Plen[j] == 0) + j ++; + if (j == cv->Bnum) + j --; + } + else if (cv->Plen[j] != 0 && cv->Enum < MAXENUM) { + for (k = cv->Bnum ; k > j ; k --) { + cv->Plen[k] = cv->Plen[k - 1]; + cv->Ppoint[k] = cv->Ppoint[k - 1]; + cv->Pkettei[k] = cv->Pkettei[k - 1]; + + cv->Bpoint[k] = cv->Bpoint[k - 1]; + cv->Bkettei[k] = cv->Bkettei[k - 1]; + + cv->Displen[k] = cv->Displen[k - 1]; + cv->Dispmod[k] = cv->Dispmod[k - 1]; + + cv->Edit[k] = cv->Edit[k - 1]; + } + cv->Bnum ++; + cv->Plen[j] = 0; + cv->Bkettei[j] = Bmuhenkan; + cv->Displen[j] = 0; + } + else if (cv->Plen[j] != 0) { + while (j < cv->Bnum - 1 && cv->Plen[j] == 0) + j ++; + if (j == cv->Bnum) + j --; + } + else { + while (j < cv->Bnum - 1 && cv->Plen[j] == 0 && + cv->Plen[j+1] == 0) + j ++; + } + + push_obj (i, j); + + k = cv->Ppoint[i] - cv->Ppoint[0] + cv->Plen[i] - 1; + if (cv->out_mode[k] & OMODE_ZEN) + moji = 2; + else + moji = 1; + cv->Plen[i] -= moji; + cv->Plen[j] += moji; + cv->Ppoint[j] = cv->Ppoint[i] + cv->Plen[i]; + + if (cv->Plen[i] < 1) { + beep (); + pop_obj (i, j); + return(0); + } + + cv->PreBun = j; + + if (cv->Bkettei[i] & Bhenkan) { + val = Sdouon (0); + + } + else { + cv->Bkettei[i] |= Bmuhenkan; + cv->Bkettei[i] &= ~Bhenkan; + cv->Bkettei[j] |= Bmuhenkan; + cv->Bkettei[j] &= ~Bhenkan; + val = 0; + } + if (!val) { + cv->Dflag = -1; + Rdisp (); + return (1); + } + beep (); + pop_obj (i, j); + } + else { + beep (); + } + return (0); +} + + + +Bdelete () +{ + register Conversion *cv; + register int i, j, deletelen, val; + + cv = GetConversion (); + if (cv->CurBun < 0) { + cv->CurBun = 0; + return; + } + i = cv->CurBun; + j = i + 1; + if (j <= cv->Bnum && cv->Plen[i] > 0) { + while (j < cv->Bnum && cv->Plen[j] == 0) + j ++; + if (j == cv->Bnum) { + j = i - 1; + while (j >= 0 && cv->Plen[j] == 0) + j --; + if (j == -1) + j = i; + } + + push_obj (i, j); + + deletelen = cv->Plen[i]; + cv->Plen[i] = 0; + + cv->PreBun = i; + cv->CurBun = j; + + val = Sdouon (0); + if (!val) { + cv->Dflag = -1; + Chain (i, deletelen); + Rdisp (); + if (i == j) + all_set_up (); + } else { + beep (); + pop_obj (i, j); + } + } + else { + beep (); + all_set_up (); + } +} + + + +Chain (n, len) +register int n; +register int len; +{ + register Conversion *cv; + register int i; + register wchar16_t *p; + register u_short *pp; + int mlen, plen, ipos, rlen, imlen; + + cv = GetConversion (); + if (cv->Ppoint[n+1] == 0) + return; +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + mlen = strlen ((char *)cv->Ppoint[n+1]); + plen = cv->Ppoint[n] - cv->Ppoint[0]; + p = cv->Ppoint[n]; + pp = &cv->out_mode[plen]; + ipos = getipos(plen); + if (cv->Ppoint[n+1] > cv->Ppoint[0]) + rlen = getipos(cv->Ppoint[n+1] - cv->Ppoint[0]) - ipos; + else + rlen = 0; + imlen = 0; + for (i = 0 ; i < mlen ; i ++) { + p[i] = p[i+len]; + pp[i] = pp[i+len]; + imlen += pp[i] & OMODE_MASK; + } + p[mlen] = '\0'; + cv->out_point -= len; + + p = &cv->Halpha[ipos]; + for (i = 0; i < imlen; i++) + p[i] = p[i+rlen]; + p[imlen] = '\0'; + cv->ha_point -= rlen; + + for (i = n + 1 ; i < cv->Bnum ; i ++) + cv->Ppoint[i] -= len; + +} + +static int Elimit; +static int Ehlimit; +exec_edit () +{ + register Conversion *cv; + register int edit, inc, i; + register wchar16_t *s; + wchar16_t Htmp[BUFFLENGTH], Ztmp[BUFFLENGTH * 2]; + u_short Omode[BUFFLENGTH * 2]; + int bun; + int edited, editlen; + int len, rlen, hlen, diff; + int Zcol, cur, icur, res, ncur; + extern int keyvalue; + wchar16_t number[3]; + wchar16_t tmp[3]; + int num, numpoint; + extern char *Gedit; + + cv = GetConversion (); + bun = cv->CurBun; + len = load_bun2(bun, Htmp, Ztmp, Omode); + rlen = wslen(Htmp); + if (len > DLEN) { + guide_print_pause(WCGedit, WCTooLong); + return(0); + } + TopGuide (); + spaceR (WCGedit); + SJ_print (Ztmp); + Clear_EOL (); + backspace (wcbyte (Ztmp)); + Zcol = 0; + Flush (); + + + cur = cv->Ppoint[bun] - cv->Ppoint[0]; + ncur = cur + cv->Plen[bun]; + s = cv->Ppoint[bun]; + s += cv->Plen[bun]; + res = wslen(s); + i = BUFFLENGTH * 2 - res - cur - 1; + if (i < DLEN) + Elimit = i; + else + Elimit = DLEN; + i = BUFFLENGTH - wslen(cv->Halpha) + rlen - 1; + if (i < DLEN) + Ehlimit = i; + else + Ehlimit = DLEN; + edited = 0; + edit = 1; + numpoint = 0; + SaveConversion (); + while (edit) { + inc = inkey (); + cv = GetConversion (); + if (AnotherConversion ()) { + unget_key (inc); + edited = 0; + break; + } + if (keyvalue == KEY_CONV) + return (0); + if (keyvalue == KEY_HENKAN || keyvalue == KEY_KETTEI) + break; + else if (keyvalue == KEY_UP) + inc = 'a'; + else if (keyvalue == KEY_DOWN) + inc = 'i'; + else if (keyvalue == KEY_RIGHT) + inc = 'l'; + else if (keyvalue == KEY_LEFT) + inc = 'h'; + switch (inc) { + case EOF: + case ESC: + edit = 0; + break; + case 'l': + case ' ': + num = getnum (number, &numpoint); + if (Zcol >= len - 1) { + beep (); + break; + } + for (i = 0 ; i < num && Zcol < len - 1 ; i++) { + tmp[0] = Ztmp[Zcol]; + tmp[1] = 0; + SJ_print(tmp); + Zcol ++; + } + Flush (); + break; + case 'h': + case BS: + num = getnum (number, &numpoint); + if (Zcol <= 0) { + beep (); + break; + } + for (i = 0 ; i < num && Zcol >= 1 ; i ++) + backspace(2); + Zcol -= 1; + Flush (); + break; + case '\014': + case '$': + num = getnum (number, &numpoint); + if (len <= 0) + break; + Zcol = len - 1; + TopGuide (); + spaceR (WCGedit); + SJ_print (Ztmp); + Clear_EOL (); + backspace (2); + Flush (); + break; + case 'a': + if (len >= 1) { + tmp[0] = Ztmp[Zcol]; + tmp[1] = 0; + SJ_print (tmp); + Zcol ++; + Flush (); + } + + case 'i': + num = getnum (number, &numpoint); + if (editlen = Insert(Htmp, Ztmp, Omode, Zcol)) { + len += editlen; + Zcol += editlen; + edited = 1; + } + if (Zcol >= 1) { + backspace(2); + Zcol -= 1; + } + Print_EOL (&Ztmp[Zcol]); + Flush (); + break; + case DEL: + case 'x': + num = getnum (number, &numpoint); + if (len <= 0) { + beep (); + break; + } + len -= EditDel (Htmp, Ztmp, Omode, Zcol, num); + if (Zcol >= len && Zcol >= 1) { + backspace(2); + Zcol -= 1; + } + Print_EOL (&Ztmp[Zcol]); + Flush (); + edited = 1; + break; + case 'r': + num = getnum (number, &numpoint); + if (len <= 0) { + beep (); + break; + } + i = Replace(Htmp, Ztmp, Omode, Zcol, num); + if (i > 0) { + i -= 1; + Zcol += i; + backspace(2); + edited = 1; + } + Print_EOL (&Ztmp[Zcol]); + Flush (); + break; + case 's': + num = getnum (number, &numpoint); + if (len <= 0) { + beep (); + break; + } + if (editlen = Substitute(Htmp,Ztmp,Omode,&Zcol,num)) { + len += editlen; + } + if (Zcol >= 1) { + backspace(2); + Zcol -= 1; + } + Print_EOL (&Ztmp[Zcol]); + Flush (); + edited = 1; + break; + case '0': + if (numpoint == 0) { + num = getnum (number, &numpoint); + TopGuide (); + spaceR (WCGedit); + Flush (); + Zcol = 0; + break; + } + + default: + if (iswdigit (inc)) { + if (numpoint > 1) { + + + number[0] = number[1]; + number[1] = inc; + } + else + number[numpoint ++] = inc; + } + else { + num = getnum (number, &numpoint); + beep (); + } + break; + } + } + + if (edited) { + for (i = 0; i < res; i++) { + Ztmp[i + len] = *s++; + Omode[i + len] = cv->out_mode[i + ncur]; + } + res += len; + s = cv->Ppoint[bun]; + for (i = 0; i < res; i++) { + *s++ = Ztmp[i]; + cv->out_mode[i + cur] = Omode[i]; + } + *s = '\0'; + hlen = wslen(Htmp); + icur = getipos(cur); + s = &cv->Halpha[icur]; + s += rlen; + if (*s) + wscat (Htmp, s); + wscpy (&cv->Halpha[icur], Htmp); + if ((diff = len - cv->Plen[bun]) != 0) { + cv->Plen[bun] = len; + cv->out_point += diff; + cv->out_epoint += diff; + for (i = bun + 1 ; i < cv->Bnum ; i ++) + cv->Ppoint[i] += diff; + } + if ((diff = hlen - rlen) != 0) { + cv->ha_point += diff; + cv->ha_epoint += diff; + } + if ((i = cv->Bpoint[bun]) < (unsigned int)cv->Bpoint[0]) + i = cv->span_point; + cv->kettei[i - 1] = MODE_ZHIRA; + cv->Pedited[bun] = 1; + cv->Dflag = -1; + return (1); + } + return (0); +} + +getnum (number, numpoint) +wchar16_t number[]; +int *numpoint; +{ + char temp[3]; + int i=0; + + if (*numpoint == 0) + return (1); + number[*numpoint] = '\0'; + *numpoint = 0; + do { + temp[i] = WcLowByte(number[i]); + } while (number[i++] != 0) ; + + return (atoi (temp)); +} + +Replace(Hs, Zs, omode, cur, num) +wchar16_t *Hs, *Zs; +u_short *omode; +int cur, num; +{ + register int i, len, inc; + int beep_on, icur1, icur2; + wchar16_t roma[SHORTBUFFSIZE+1], kana[SHORTBUFFSIZE+1]; + wchar16_t work[DLEN+1]; + u_short otmp[SHORTBUFFSIZE+1]; + + *roma = '\0'; + *kana = '\0'; + SaveConversion(GetConversion()); + while (1) { + inc = inkey(); + if (AnotherConversion(GetConversion())) { + unget_key(inc); + *kana = '\0'; + break; + } + len = wslen(roma); + if (inc == ESC) { + if (len > 0) + (void)exec_romaji2(0, roma, kana, otmp, + wslen(kana), len); + break; + } + if (iswcntrl(inc) && !(len > 0 && is_bs(inc))) { + beep(); + *kana = '\0'; + break; + } + if (exec_romaji2(inc, roma, kana, otmp, wslen(kana), len)) + break; + } + sj3_rkclear(); + if ((len = wslen(kana)) <= 0) + return(0); + if (kana[2] != '\0') { + beep_on = 1; + *otmp = sj_zentohan(roma, kana, 2); + kana[2] = '\0'; + } else + beep_on = 0; + backspace(wcbyte(kana)); + len = wslen(&Zs[cur]); + if (num <= 0) + num = 2; + if (!(omode[cur] & OMODE_MASK)) + chhstr(Hs, Zs, omode, cur); + icur1 = getipos2(omode, cur); + if (len <= num) { + num = len; + *work = '\0'; + } else { + if (!(omode[cur + num] & OMODE_MASK)) + chhstr(Hs, Zs, omode, cur + num); + icur2 = getipos2(omode, cur + num); + wscpy(work, &Hs[icur2]); + } + Hs[icur1] = '\0'; + for (i = 0; i < num; i += 2) { + SJ_print(kana); + Zs[cur] = kana[0]; + omode[cur++] = otmp[0]; + Zs[cur] = kana[1]; + omode[cur++] = otmp[1]; + wscat(Hs, roma); + } + Flush(); + wscat(Hs, work); + if (beep_on) + beep(); + return(num); +} + + +Substitute(Hs, Zs, omode, cur, num) +wchar16_t *Hs, *Zs; +u_short *omode; +int *cur, num; +{ + wchar16_t work[DLEN + 1]; + wchar16_t work2[DLEN + 1]; + register int len; + + len = wslen(&Zs[*cur]); + if (len < num) + num = len; + + Strncpy (work, &Zs[*cur], num - 1); + work[num - 1] = '\0'; + wscpy(work2, work); + wscat(work2, WCDollar); + SJ_print (work2); + backspace (wcbyte(&Zs[*cur])); + + Flush (); + (void)EditDel(Hs, Zs, omode, *cur, num); + if (len = Insert(Hs, Zs, omode, *cur)) + *cur += len; + len -= num; + return (len); +} + +Insert(Hs, Zs, omode, cur) +wchar16_t *Hs, *Zs; +u_short *omode; +int cur; +{ + register int inc, len, i; + int limit, hlimit, ylen, res, icur, rlen; + wchar16_t ztmp[DLEN + 1], htmp[DLEN + 1]; + u_short otmp[DLEN + 1]; + + ylen = wslen(Zs); + limit = Elimit - ylen; +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + hlimit = Ehlimit - strlen((char *)Hs); + *ztmp = '\0'; + *htmp = '\0'; + SaveConversion (GetConversion ()); + while (1) { + inc = inkey (); + if (AnotherConversion (GetConversion ())) { + unget_key (inc); + sj3_rkclear(); + return(0); + } + if (inc == ESC) + break; + if (iswcntrl(inc) && !is_bs(inc)) + beep (); + else if (((len = wslen(ztmp)) >= limit || + (rlen = wslen(htmp)) >= hlimit) && !is_bs(inc)) + beep(); + else + (void)exec_romaji2(inc, htmp, ztmp, otmp, len, rlen); + } +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + (void)exec_romaji2(0, htmp, ztmp, otmp, strlen((char *)ztmp), strlen((char *)htmp)); + sj3_rkclear(); + len = wslen (ztmp); + backspace(wcbyte(ztmp)); + SJ_print(ztmp); + Flush(); + if (len) { + if (!(omode[cur] & OMODE_MASK)) + chhstr(Hs, Zs, omode, cur); + icur = getipos2(omode, cur); + res = ylen - cur; + for (i = 0; i < res; i++) { + ztmp[i + len] = Zs[i + cur]; + otmp[i + len] = omode[i + cur]; + } + res += len; + for (i = 0; i < res; i++) { + Zs[i + cur] = ztmp[i]; + omode[i + cur] = otmp[i]; + } + Zs[i + cur] = '\0'; + wscat(htmp, &Hs[icur]); + wscpy(&Hs[icur], htmp); + } + return (len); +} + +EditDel (Hs, Zs, omode, cur, num) +wchar16_t *Hs, *Zs; +u_short *omode; +int cur, num; +{ + register int i, j; + int icur, len, rlen; + + if (!(omode[cur] & OMODE_MASK)) + chhstr(Hs, Zs, omode, cur); + len = wslen(&Zs[cur]); + icur = getipos2(omode, cur); + if (len < num) { + Zs[cur] = '\0'; + Hs[icur] = '\0'; + } else { + if (!(omode[cur + num] & OMODE_MASK)) + chhstr(Hs, Zs, omode, cur + num); + rlen = getipos2(omode, cur + num) - icur; + j = len - num + cur; + for (i = cur; i < j; i++) { + Zs[i] = Zs[i + num]; + omode[i] = omode[i + num]; + } + Zs[i] = '\0'; + j = wslen(Hs) - rlen; + for (i = icur; i < j; i++) + Hs[i] = Hs[i + rlen]; + Hs[i] = '\0'; + len = num; + } + return (len); +} + +chhstr(Hs, Zs, omode, cur) +wchar16_t *Hs, *Zs; +u_short *omode; +int cur; +{ + register int i, j, len; + int prep, nextp; + int hprep, hnextp; + wchar16_t hkana[BUFFLENGTH], *hkp; + + len = wslen(Zs); + prep = cur; + hprep = getipos2(omode, prep); + nextp = cur + 1; + hnextp = getipos2(omode, nextp); + hkp = hkana; + for(i = prep; i < nextp; i++) { + if (i < nextp - 1 && (WcIsZENKAKU(Zs[i]))) { + j = sj_zentohan(hkp, &Zs[i], 1); + hkp += j; + omode[i] = j; + } else { + *hkp++ = Zs[i]; + omode[i] = 1; + } + } + wscpy(hkp, &Hs[hnextp]); + wscpy(&Hs[hprep], hkana); +} + +Print_EOL (s) +register wchar16_t *s; +{ + if (*s != '\0') + SJ_print (s); + Clear_EOL (); + if (*s != '\0') + backspace (wcbyte (s)); +} + +backspace (n) +int n; +{ + register int i; + + for (i = 0 ; i < n ; i ++) + Backspace (); +} diff --git a/sj3/etc.c b/sj3/etc.c new file mode 100644 index 0000000..484ad5d --- /dev/null +++ b/sj3/etc.c @@ -0,0 +1,479 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: etc.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:15 $ + */ + + + +#include "common.h" +#include "key.h" + +extern int keyvalue; +static char rehname[SHORTLENGTH * 2]; +extern char *cur_serv; +static int dcflag = 0; + +exec_etc (key) +int key; +{ + u_short row, col; + register int inc; + int chbun; + int edited; + int etckey; + register Conversion *cv; + + cv = GetConversion (); + + edited = 0; + chbun = 0; + StartGuide (&row, &col); + if (key == KEY_ETC) { + printR (WCGEtc); + if (cv->column >= MINCOL) + spaceR (WCGetc); + Clear_EOL (); + EndGuide (row, col); + SaveConversion (); + inc = inkey (); + if (AnotherConversion ()) + return(KEY_NORMAL); + cv = GetConversion (); + etckey = etc_map (keyvalue); + } + else { + EndGuide (row, col); + etckey = key; + } + + switch (etckey) { + case KEY_NORMAL: +normal: + switch (inc) { + case 'h': + helplevel (); + break; + case 't': + if (!IsCflag ()) + chbun = exec_toroku (); + break; + case 's': + if (!IsCflag ()) + chbun = exec_syoukyo (); + break; + case 'v': + case 'd': + disp_version (inc); + break; + case 'w': + change_weight (); + break; + default: + break; + } + break; + case KEY_HELP: + helplevel (); + break; + case KEY_TOROKU: + if (!IsCflag ()) + chbun = exec_toroku (); + break; + case KEY_SYOUKYO: + if (!IsCflag ()) + chbun = exec_syoukyo (); + break; + case KEY_SJRC: + if (IsCflag ()) + exec_sjrc (); + break; + case KEY_EDIT: + if (IsHenkan ()) { + if (cv->CurBun < 0) { + cv->CurBun = 0; + Bdisp (1); + } + edited = exec_edit (); + } + break; + case KEY_RECONNECT: + if (reconnect() && IsHenkan()) { + EndGuide (row, col); + Clear_EOL(); + Ccheck(); + Cclear(1); + ResetHenkan(); + vprintU(cv->out_buf, 1); + cv->Kanji = 0; + return(KEY_NORMAL); + } + break; + case KEY_ETC: + break; + default: + if ((inc = write_pseq (2)) != 0) + goto normal; + return(etckey); + break; + } + + EndGuide (row, col); + if (edited) { + if (!Sdouon (3)) + Rdisp (); + } + if (chbun) + Ssbun(1); + return(KEY_NORMAL); +} + +Ssbun(flag) +int flag; +{ + register Conversion *cv; + static short ScurBun, SpreBun; + + cv = GetConversion(); + if (flag) { + if (cv->CurBun != ScurBun || cv->PreBun != SpreBun) { + cv->CurBun = ScurBun; + cv->PreBun = SpreBun; + Bdisp(); + } + } else { + ScurBun = cv->CurBun; + SpreBun = cv->PreBun; + } +} + +etc_map (key) +int key; +{ + extern int u_etckeys; + extern int Uetckey[], Uetcval[]; + register int i; + int val; + + for (i = 0 ; i < u_etckeys ; i ++) { + if (key == Uetckey[i]) + return (Uetcval[i]); + } + + switch (key) { + case KEY_HENKAN: + val = KEY_TOROKU; + break; + case KEY_MUHENKAN: + val = KEY_SYOUKYO; + break; + case KEY_ETC: + val = KEY_HELP; + break; + case KEY_KETTEI: + val = KEY_SJRC; + break; + case KEY_CODE: + val = KEY_EDIT; + break; + case KEY_HALPHA: + val = KEY_RECONNECT; + break; + default: + val = KEY_NORMAL; + break; + } + return (val); +} + +helplevel () +{ + wchar16_t wtmp[BUFFLENGTH]; + u_char mtmp[BUFFLENGTH]; + u_char tmp[BUFFLENGTH]; + register Conversion *cv; + + cv = GetConversion (); + + if (Hlevel == 1 && cv->column >= MINCOL) { + HHlevel = 2; + Hlevel = 2; + (void) wcstombs((char *)mtmp, WCMHelp, BUFFLENGTH); + sprintf ((char *)tmp, (char *)mtmp, "on"); + (void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH); + } + else { + HHlevel = 1; + Hlevel = 1; + (void) wcstombs((char *)mtmp, WCMHelp, BUFFLENGTH); + sprintf ((char *)tmp, (char *)mtmp, "off"); + (void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH); + } + guide_print_pause (WCGHelp, wtmp); +} + +disp_version (c) +int c; +{ + extern char *Version, *Copyright, *Date; + char tmp[BUFFLENGTH]; + + wchar16_t wtmp[BUFFLENGTH]; + + if (c == 'v') + sprintf (tmp, "%s, %s ", Version, Copyright); + else if (c == 'd') + sprintf (tmp, "%s ", Date); + else + return; + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + guide_print_pause (0, wtmp); +} + +exec_sjrc () +{ + extern char RCfile[]; + char tmp[BUFFLENGTH]; + u_char SUCCorFAIL[BUFFLENGTH]; + wchar16_t wtmp[BUFFLENGTH]; + + + if (*RCfile == (char)NULL) { + getsjrc(); + if (*RCfile == (char)NULL) + { + (void) wcstombs((char *)SUCCorFAIL, WCNOTHsjrc, BUFFLENGTH); + sprintf((char *)tmp, (char *)SUCCorFAIL); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + } + else + { + (void) wcstombs((char *)SUCCorFAIL, WCSUCCsjrc, BUFFLENGTH); + sprintf (tmp, "%s %s ", RCfile, SUCCorFAIL); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + } + } else { + if (setrc () == TRUE) + { + (void) wcstombs((char *)SUCCorFAIL, WCSUCCsjrc, BUFFLENGTH); + } else { + (void) wcstombs((char *)SUCCorFAIL, WCFAILsjrc, BUFFLENGTH); + } + sprintf (tmp, "%s %s ", RCfile, SUCCorFAIL); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + } + guide_print_pause (0, wtmp); +} + +static int weight = 3; +static int seed = 100000; + +change_weight () +{ + register int c; + char s[2]; + char tmp[BUFFLENGTH]; + u_char mtmp[BUFFLENGTH]; + wchar16_t wtmp[BUFFLENGTH]; + + (void) wcstombs((char *)mtmp, WCWeight_mes, BUFFLENGTH); + sprintf(tmp, (char *)mtmp, weight); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + c = guide_print_pause (0, wtmp); + + if (isdigit (c) && (c != '0')) { + s[0] = c; + s[1] = '\0'; + weight = atoi (s); + } +} + +UsecWeight (sw) +int sw; +{ + + + if (sw) + return (seed); + else + return (seed * weight); +} + +dconnect(aflag) +int aflag; +{ + register int err; + char tmp[BUFFLENGTH]; + wchar16_t wtmp[BUFFLENGTH]; + u_char dtmp[BUFFLENGTH]; + + if (!dcflag) { + (void) wcstombs((char *)dtmp, WCDiscon, BUFFLENGTH); + sprintf(tmp, (char *)dtmp, cur_serv); + beep(); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + guide_print_pause (0, wtmp); + + + if (aflag && keyvalue == KEY_HENKAN) { + if ((err = sj3_autocon()) == 0) { + (void) wcstombs((char *)dtmp, WCRserv_OK, BUFFLENGTH); + sprintf(tmp, (char *)dtmp, cur_serv); + (void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH); + guide_print_pause(0, wtmp); + } else { + guide_print_pause(WCSpace, WCNconnect); + dcflag = 1; + } + } else + dcflag = 1; + disp_mode(); + } + return(dcflag); +} + +set_dcflag(flag) +int flag; +{ + dcflag = flag; +} + +IsDcflag() +{ + return(dcflag); +} + +reconnect () +{ + register int inc, err; + char tmp[BUFFLENGTH], *hp; + char newserv[SHORTLENGTH * 2], *nsp; + wchar16_t wtmp[BUFFLENGTH]; + u_char rtmp[BUFFLENGTH]; + + strncpy(newserv, cur_serv, SHORTLENGTH * 2 - 1); + newserv[SHORTLENGTH * 2 - 1] = '\0'; + while(1) { + SaveConversion(); + TopGuide(); + printR(WCGrcon); + (void) wcstombs((char *)rtmp, WCRserv, BUFFLENGTH); + sprintf(tmp, (char *)rtmp, newserv); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + SJ_print (wtmp); + Clear_EOL(); + Flush(); + nsp = newserv; + while ((inc = inkey()) != EOF) { + if (AnotherConversion()) { + unget_key(inc); + return(0); + } + if (keyvalue != KEY_NORMAL && keyvalue != KEY_FLUSH) + return(0); + if (inc == '\n' || inc == '\r' || IsESC(inc)) + break; + if (is_bs (inc) && nsp > newserv) { + nsp--; + *nsp = '\0'; + backspace(1); + Flush(); + } else if (isgraph(inc) && + nsp < &newserv[SHORTLENGTH * 2 - 1]) { + *nsp++ = inc; + printf("%c", inc); + Flush(); + } else + beep(); + } + if (nsp > newserv) { + *nsp = '\0'; + strcpy(rehname, newserv); + cur_serv = rehname; + } else if (newserv[0] == '\0') { + strncpy(newserv, cur_serv, SHORTLENGTH * 2 - 1); + newserv[SHORTLENGTH * 2 - 1] = '\0'; + } + if ((err = SJ2_reconnect()) == 0) { + TopGuide(); + printR(WCGrcon); + (void) wcstombs((char *)rtmp, WCRserv_OK, BUFFLENGTH); + sprintf(tmp, (char *)rtmp, newserv); + (void) mbstowcs(wtmp, tmp, BUFFLENGTH); + SJ_print(wtmp); + Clear_EOL(); + Flush(); + set_dcflag(0); + inc = inkey(); + if (AnotherConversion ()) + unget_key(inc); + break; + } else { + TopGuide(); + printR(WCGrcon); + SJ_print(WCSpace); + sj_check_error(err); + SJ_print(WCContinue); + Clear_EOL(); + Backspace(); + Flush(); + inc = inkey(); + if (AnotherConversion()) { + unget_key(inc); + set_dcflag(1); + break; + } + if (inc == 'n' || inc == 'N' || inc == EOF) { + set_dcflag(1); + break; + } + } + } + return(1); +} + +guide_print_pause (s1, s2) +wchar16_t *s1, *s2; +{ + int c; + + guide_print (s1, s2); + SaveConversion (); + c = inkey (); + if (AnotherConversion ()) { + unget_key (c); + return (EOF); + } + return (c); +} + + diff --git a/sj3/eucmessage.c b/sj3/eucmessage.c new file mode 100644 index 0000000..837b59d --- /dev/null +++ b/sj3/eucmessage.c @@ -0,0 +1,490 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: eucmessage.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/12/09 11:27:08 $ + */ + + + +#include "wchar16.h" +#include +#include "kctype.h" +#include "sj3libsj3.h" +#include "sj2.h" + +unsigned char *EucMessages[] = { + (u_char *)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241", + + (u_char *)"Buffer\241\241\241\241", + (u_char *)"Unbuffer\241\241", + + (u_char *)"\301\264\244\322\244\351\244\254\244\312", + (u_char *)"\301\264\245\253\245\277\245\253\245\312", + (u_char *)"\310\276\245\253\245\277\245\253\245\312", + (u_char *)"\301\264\245\242\245\353\245\325\245\241", + (u_char *)"\310\276\245\242\245\353\245\325\245\241", + + + (u_char *)" \312\321\264\271 \314\265\312\321 etc. \267\350\304\352 code \310\276\245\242 \301\264\245\242 \310\276\245\253 \301\264\245\253 \244\253\244\312", + (u_char *)"\244\275\244\316\302\276\241\241\241\241\241\241\241\241\241\241\241\241\241\241", + + (u_char *)" \305\320\317\277 \276\303\265\356 Help sjrc \312\324\275\270 \272\306\300\334 \241\241\241\241 \241\241\241\241 \241\241\241\241 \241\241\241\241", + + (u_char *)"Help\241\241Mode", + (u_char *)" \245\254\245\244\245\311\241\246\245\351\245\244\245\363 %s \244\313\244\312\244\352\244\336\244\267\244\277 ", + + + + (u_char *)"ShiftJIS\241\241", + (u_char *)"\241\241\243\305\243\325\243\303\241\241", + (u_char *)"\243\305\243\325\243\303\312\344\275\365", + (u_char *)"\241\241\243\312\243\311\243\323\241\241", + (u_char *)"\243\312\243\311\243\323\312\344\275\365", + (u_char *)"\241\241\241\241\266\350\305\300\241\241", + (u_char *)"\266\350\305\300\241\241\312\344\275\365", + + + + (u_char *)"\305\320\317\277", + (u_char *)" \310\317\260\317\244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ", + (u_char *)" \264\301\273\372 [%s] : \306\311\244\337\306\376\316\317 ", + (u_char *)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s] (y/n)? ", + (u_char *)" \264\301\273\372 [%s] : \306\311\244\337 [%s] (y/n)? ", + (u_char *)" \312\270\313\241\276\360\312\363 : 1.\314\276\273\354 2.\314\276\273\372 3.\314\276\301\260 4.\303\317\314\276 5.\245\265\312\321\306\260\273\354", + (u_char *)" \305\320\317\277\244\267\244\336\244\267\244\277 ", + (u_char *)" \306\311\244\337\306\376\316\317 ", + (u_char *)" 1", + (u_char *)"y", + (u_char *)" \306\261\260\354\244\316\303\261\270\354\244\254\244\271\244\307\244\313\302\270\272\337\244\267\244\306\244\244\244\336\244\271", + (u_char *)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363", + (u_char *)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363", + (u_char *)" \244\263\244\354\260\312\276\345\306\261\244\270\306\311\244\337\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363", + (u_char *)" \244\263\244\354\260\312\276\345\245\346\241\274\245\266\274\255\275\361\244\313\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363", + (u_char *)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271", + (u_char *)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\305\320\317\277\244\307\244\255\244\336\244\273\244\363", + (u_char *)",", + + + (u_char *)"\276\303\265\356", + (u_char *)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s]\244\362\276\303\265\356\244\267\244\336\244\267\244\277 ", + (u_char *)" \273\330\304\352\244\265\244\354\244\277\306\311\244\337\241\246\264\301\273\372\244\317\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\273\244\363", + (u_char *)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271", + (u_char *)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363", + (u_char *)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363", + (u_char *)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\276\303\265\356\244\307\244\255\244\336\244\273\244\363", + + + + (u_char *)"\244\362\306\311\244\337\271\376\244\337\244\336\244\267\244\277", + (u_char *)"\244\362\306\311\244\337\271\376\244\341\244\336\244\273\244\363\244\307\244\267\244\277", + (u_char *)"\245\273\245\303\245\310\245\242\245\303\245\327\245\325\245\241\245\244\245\353\244\254\244\242\244\352\244\336\244\273\244\363 ", + + + (u_char *)"Change weight (1-9) current weight %d ", + + + + (u_char *)"\272\306\300\334\302\263 ", + (u_char *)" \245\265\241\274\245\320\314\276 [%s] \244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ", + (u_char *)" \245\265\241\274\245\320 [%s] \244\313\300\334\302\263\244\267\244\336\244\267\244\277 ", + (u_char *)"\245\265\241\274\245\320 [%s] \244\310\244\316\300\334\302\263\244\254\300\332\244\354\244\336\244\267\244\277", + + (u_char *)" ", + (u_char *)" ", + (u_char *)" \302\263\244\261\244\336\244\271\244\253? y", + + + (u_char *)"\245\265\241\274\245\320\241\274\244\254\273\340\244\313\244\336\244\267\244\277\241\243", + (u_char *)"\245\265\241\274\245\320\241\274\244\313\300\334\302\263\272\321\244\307\244\271\241\243", + (u_char *)"\245\265\241\274\245\320\241\274\244\330\244\316\300\334\302\263\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243", + (u_char *)"\245\341\245\244\245\363\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243", + (u_char *)"\245\346\241\274\245\266\241\246\245\307\245\243\245\354\245\257\245\310\245\352\244\316\272\356\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243", + (u_char *)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243", + (u_char *)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243", + (u_char *)"\263\330\275\254\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243", + (u_char *)"\263\330\275\254\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243", + + + + (u_char *)"\312\324\275\270 ", + (u_char *)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241", + + (u_char *)" \312\324\275\270\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271", + (u_char *)"$$", + + + (u_char *)"on", + (u_char *)"off", + + + (u_char *)"\314\276\273\354", + (u_char *)"\314\276\273\372", + (u_char *)"\314\276\301\260", + (u_char *)"\303\317\314\276", + (u_char *)"\245\265\312\321\306\260\273\354", + + + (u_char *)"", + (u_char *)"F1", + (u_char *)"F2", + (u_char *)"F3", + (u_char *)"F4", + (u_char *)"F5", + (u_char *)"F6", + (u_char *)"F7", + (u_char *)"F8", + (u_char *)"F9", + (u_char *)"F10", + (u_char *)"F11", + (u_char *)"F12", + (u_char *)"F13", + (u_char *)"F14", + (u_char *)"F15", + (u_char *)"F16", + (u_char *)"F17", + (u_char *)"F18", + (u_char *)"F19", + (u_char *)"F20", + (u_char *)"Select", + (u_char *)"Kanji", + (u_char *)"Cancel", + (u_char *)"Execute", + (u_char *)"Up", + (u_char *)"Down", + (u_char *)"Right", + (u_char *)"Left", + + (u_char *)"start", + (u_char *)"henkan", + (u_char *)"muhen", + (u_char *)"kettei", + (u_char *)"hira", + (u_char *)"halpha", + (u_char *)"zalpha", + (u_char *)"hkata", + (u_char *)"zkata", + (u_char *)"code", + (u_char *)"etc", + (u_char *)"right", + (u_char *)"left", + (u_char *)"kaku", + (u_char *)"syuku", + (u_char *)"edit", + (u_char *)"toggle", + (u_char *)"wrapback", + (u_char *)"wrap", + (u_char *)"sjrc", + (u_char *)"buffer", + (u_char *)"toroku", + (u_char *)"syoukyo", + (u_char *)"help", + (u_char *)"ha-kettei", + (u_char *)"flush", + (u_char *)"debug", + (u_char *)"cancel", + (u_char *)"saihenkan", + (u_char *)"ignore", + (u_char *)"top", + (u_char *)"end", + (u_char *)"reconnect", + (u_char *)"kill", + + + (u_char *)"key", + (u_char *)"escape", + (u_char *)"sjxkey", + (u_char *)"etckey", + (u_char *)"intr", + (u_char *)"bskey", + (u_char *)"delkey", + (u_char *)"setnormal", + (u_char *)"throughnext", + (u_char *)"initialmode", + (u_char *)"helpmode", + (u_char *)"defaultcode", + (u_char *)"muhenkanmode", + (u_char *)"muhenkaninedit", + (u_char *)"muhenkantoggle", + (u_char *)"guide", + (u_char *)"forkshell", + (u_char *)"execshell", + (u_char *)"dictionary", + (u_char *)"userdic", + (u_char *)"maindic", + (u_char *)"romaji", + (u_char *)"bstudy", + (u_char *)"silent", + (u_char *)"flushafterconversion", + (u_char *)"rkerrbell", + (u_char *)"server", + + (u_char *)"shiftjis", + (u_char *)"sjis", + (u_char *)"euc", + (u_char *)"euc2", + (u_char *)"jis", + (u_char *)"jis2", + (u_char *)"kuten", + (u_char *)"kuten2", + + (u_char *)"buff", + (u_char *)"unbuff", + (u_char *)"direct", + + (u_char *)"sj2", + (u_char *)"shift", + + (u_char *)"function", + + (u_char *)"unbuffer", + (u_char *)"funcetc" + +}; + + +#define CURMESSAGES 182 +wchar16_t *WcMessages[CURMESSAGES]; + +#define CURWCVTKEY 29 +struct wcvtkey wcvtkeytbl[CURWCVTKEY]; + + + +int +init_wcvtkey() +{ + register int i = 0; + + for (i = 0; i < CURWCVTKEY; i++) { + wcvtkeytbl[i].key_seq[0] = 0; + } + wcvtkeytbl[0].key_word = WCF1; + wcvtkeytbl[1].key_word = WCF2; + wcvtkeytbl[2].key_word = WCF3; + wcvtkeytbl[3].key_word = WCF4; + wcvtkeytbl[4].key_word = WCF5; + wcvtkeytbl[5].key_word = WCF6; + wcvtkeytbl[6].key_word = WCF7; + wcvtkeytbl[7].key_word = WCF8; + wcvtkeytbl[8].key_word = WCF9; + wcvtkeytbl[9].key_word = WCF10; + wcvtkeytbl[10].key_word = WCF11; + wcvtkeytbl[11].key_word = WCF12; + wcvtkeytbl[12].key_word = WCF13; + wcvtkeytbl[13].key_word = WCF14; + wcvtkeytbl[14].key_word = WCF15; + wcvtkeytbl[15].key_word = WCF16; + wcvtkeytbl[16].key_word = WCF17; + wcvtkeytbl[17].key_word = WCF18; + wcvtkeytbl[18].key_word = WCF19; + wcvtkeytbl[19].key_word = WCF20; + wcvtkeytbl[20].key_word = WCSelect; + wcvtkeytbl[21].key_word = WCKanji; + wcvtkeytbl[22].key_word = WCCancel; + wcvtkeytbl[23].key_word = WCExecute; + wcvtkeytbl[24].key_word = WCUp; + wcvtkeytbl[25].key_word = WCDown; + wcvtkeytbl[26].key_word = WCRight; + wcvtkeytbl[27].key_word = WCLeft; + wcvtkeytbl[28].key_word = NULL; +} + +wchar16_t *comstr[KEY_OTHER]; + + + +int +init_comstr() +{ + comstr[0] = WCStart; comstr[1] = WCHenkan; comstr[2] = WCMuhen; + comstr[3] = WCKettei; comstr[4] = WCHira; comstr[5] = WCHalpha; + comstr[6] = WCZalpha; comstr[7] = WCHkata; comstr[8] = WCZkata; + comstr[9] = WCCode; comstr[10] = WCEtc; comstr[11] = WCRightl; + comstr[12] = WCLeftl; comstr[13] = WCKaku; comstr[14] = WCSyuku; + comstr[15] = WCEdit; comstr[16] = WCToggle; comstr[17] = WCWrapback; + comstr[18] = WCWrap; comstr[19] = WCSjrc; comstr[20] = WCBuffer; + comstr[21] = WCToroku; comstr[22] = WCSyoukyo; comstr[23] = WCHelp; + comstr[24] = WCHaKettei; comstr[25] = WCFlush; comstr[26] = WCDebug; + comstr[27] = WCCancell; comstr[28] = WCSaihenkan; comstr[29] = WCIgnore; + comstr[30] = WCTop; comstr[31] = WCEnd; comstr[32] = WCReconnect; + comstr[33] = WCKill; comstr[34] = WCKara; +} + +struct valtbl hin_val[5]; + + + +int +init_hin_val() +{ + hin_val[0].keyword = WCMeishi; hin_val[0].ivalue = SJ3_H_NRMNOUN; + hin_val[1].keyword = WCMyouji; hin_val[1].ivalue = SJ3_H_LNAME; + hin_val[2].keyword = WCNamae; hin_val[2].ivalue = SJ3_H_FNAME; + hin_val[3].keyword = WCTimei; hin_val[3].ivalue = SJ3_H_LOCNAME; + hin_val[4].keyword = WCSahen; hin_val[4].ivalue = SJ3_H_SILVERB; +} + + +extern int set_func(), set_etckeys(), set_intr(), + set_delkey(), set_goto(), set_trap(), set_init_mode(), + set_helpmenu(), set_defcode(), set_muhenkan(), set_muedit(), + set_m_toggle(), set_guide(), set_forkshell(), set_bstudy(), + set_silent(), set_flush_conversion(), set_rkebell(), set_server(), + set_dict(); +#define CURFUNCS 29 +struct functbl funcs[CURFUNCS]; + + + +int +init_funcs() +{ + funcs[0].keyword = WCKey; funcs[0].func = set_func; + funcs[1].keyword = WCEscape; funcs[1].func = set_func; + funcs[2].keyword = WCEtckey; funcs[2].func = set_etckeys; + funcs[3].keyword = WCIntr; funcs[3].func = set_intr; + funcs[4].keyword = WCDelkey; funcs[4].func = set_delkey; + funcs[5].keyword = WCSetnormal; funcs[5].func = set_goto; + funcs[6].keyword = WCThroughnext; funcs[6].func = set_trap; + funcs[7].keyword = WCInitialmode; funcs[7].func = set_init_mode; + funcs[8].keyword = WCHelpmode; funcs[8].func = set_helpmenu; + funcs[9].keyword = WCDefaultcode; funcs[9].func = set_defcode; + funcs[10].keyword = WCMuhenkanmode; funcs[10].func = set_muhenkan; + funcs[11].keyword = WCMuhenkaninedit; funcs[11].func = set_muedit; + funcs[12].keyword = WCMuhenkantoggle; funcs[12].func = set_m_toggle; + funcs[13].keyword = WCGuide; funcs[13].func = set_guide; + funcs[14].keyword = WCForkshell; funcs[14].func = set_forkshell; + funcs[15].keyword = WCExecshell; funcs[15].func = set_forkshell; + funcs[16].keyword = WCBstudy; funcs[16].func = set_bstudy; + funcs[17].keyword = WCSilent; funcs[17].func = set_silent; + funcs[18].keyword = WCFlushafterconversion; funcs[18].func = set_flush_conversion; + funcs[19].keyword = WCRkerrbell; funcs[19].func = set_rkebell; + funcs[20].keyword = WCServer; funcs[20].func = set_server; + funcs[21].keyword = WCDictionary; funcs[21].func = set_dict; + funcs[22].keyword = NULL; funcs[22].func = NULL; +} + +struct valtbl mode_val[5]; + + + +int +init_mode_val() +{ + mode_val[0].keyword = WCHalpha; mode_val[0].ivalue = MODE_HALPHA; + mode_val[1].keyword = WCZalpha; mode_val[1].ivalue = MODE_ZALPHA; + mode_val[2].keyword = WCHkata; mode_val[2].ivalue = MODE_HKATA; + mode_val[3].keyword = WCZkata; mode_val[3].ivalue = MODE_ZKATA; + mode_val[4].keyword = WCHira; mode_val[4].ivalue = MODE_ZHIRA; +} + +struct valtbl code_val[8]; + + + +int +init_code_val() +{ + code_val[0].keyword = WCShiftjis; code_val[0].ivalue = CODE_SJIS; + code_val[1].keyword = WCSjis; code_val[1].ivalue = CODE_SJIS; + code_val[2].keyword = WCEuc; code_val[2].ivalue = CODE_EUC; + code_val[3].keyword = WCEuc2; code_val[3].ivalue = CODE_EUC2; + code_val[4].keyword = WCJis; code_val[4].ivalue = CODE_JIS; + code_val[5].keyword = WCJis2; code_val[5].ivalue = CODE_JIS2; + code_val[6].keyword = WCKuten; code_val[6].ivalue = CODE_KUTEN; + code_val[7].keyword = WCKuten2; code_val[7].ivalue = CODE_KUTEN2; +} + +int +init_messages() +{ +#define LOCALELEN 20 + char cur_loc[LOCALELEN]; + char *loc; + short message_len[CURMESSAGES]; + int ret; + register int i; + int all_len = 0; + int saved_locale = 0; + extern int current_locale; + + if (current_locale != LC_CTYPE_EUC) { + saved_locale = current_locale; + current_locale = LC_CTYPE_EUC; +#ifdef __sony_news + strncpy((char *)cur_loc, setlocale(LC_CTYPE, NULL), LOCALELEN); + loc = setlocale(LC_CTYPE, "ja_JP.EUC"); +#endif + } + for (i = 0; i < CURMESSAGES; i++) { + message_len[i] = jstrlen((char *)EucMessages[i]) + 1; + all_len += message_len[i]; + } + + WcMessages[0] = (wchar16_t *) malloc(all_len * sizeof(wchar16_t)); + if (WcMessages[0] == NULL) + goto Fail; + + ret = (int) mbstowcs(WcMessages[0], (char *)EucMessages[0], message_len[0]); + if (ret < -1) + goto Fail; + for (i = 1; i < CURMESSAGES; i++) { + WcMessages[i] = WcMessages[i-1] + message_len[i-1]; + ret = mbstowcs(WcMessages[i], (char *)EucMessages[i], message_len[i]); + if (ret < -1) + goto Fail; + } + + init_wcvtkey(); + init_comstr(); + init_hin_val(); + init_funcs(); + init_mode_val(); + init_code_val(); + + if (saved_locale) { + current_locale = saved_locale; +#ifdef __sony_news + setlocale(LC_CTYPE, cur_loc); +#endif + } + return TRUE; +Fail: + if (saved_locale) { + current_locale = saved_locale; +#ifdef __sony_news + setlocale(LC_CTYPE, cur_loc); +#endif + } + return FALSE; +} + diff --git a/sj3/funckey.c b/sj3/funckey.c new file mode 100644 index 0000000..191cfaa --- /dev/null +++ b/sj3/funckey.c @@ -0,0 +1,342 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: funckey.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:53 $ + */ + + +#include "wchar16.h" +#include "sj2.h" +#include "key.h" +#include "Paths.h" + +struct cvtkey { + char *key_word; + char key_seq[SEQLEN]; +} cvtkeytbl[] = { + "F1", "", + "F2", "", + "F3", "", + "F4", "", + "F5", "", + "F6", "", + "F7", "", + "F8", "", + "F9", "", + "F10", "", + "F11", "", + "F12", "", + "F13", "", + "F14", "", + "F15", "", + "F16", "", + "F17", "", + "F18", "", + "F19", "", + "F20", "", + "Select", "", + "Kanji", "", + "Cancel", "", + "Execute", "", + "Up", "", + "Down", "", + "Right", "", + "Left", "", + NULL, NULL +}; + +extern struct wcvtkey wcvtkeytbl[]; + +int Uvalue[UKEYNUM]; +wchar16_t Ukey[UKEYNUM][SEQLEN + 1]; +int Unumber = 0; + +int comvalue[COMNUM]; +wchar16_t comkey[COMNUM]; +int comnumber = 0; + +#define ETCKEYS 10 +int u_etckeys = 0; +int Uetckey[ETCKEYS]; +int Uetcval[ETCKEYS]; + + +extern wchar16_t *comstr[]; + +int comstrvalue[KEY_OTHER] = { + KEY_CONV, KEY_HENKAN, KEY_MUHENKAN, + KEY_KETTEI, KEY_ZHIRA, KEY_HALPHA, + KEY_ZALPHA, KEY_HKATA, KEY_ZKATA, + KEY_CODE, KEY_ETC, KEY_RIGHT, + KEY_LEFT, KEY_UP, KEY_DOWN, + KEY_EDIT, KEY_TOGGLE, KEY_WRAPBACK, + KEY_WRAP, KEY_SJRC, KEY_BUFFER, + KEY_TOROKU, KEY_SYOUKYO, KEY_HELP, + KEY_HA_KET, KEY_FLUSH, KEY_DEBUG, + KEY_CANCEL, KEY_RECONV, KEY_IGNORE, + KEY_TOP, KEY_END, KEY_RECONNECT, + KEY_KILL, + KEY_OTHER + }; + +mk_cvtkey(term) +char *term; +{ + register char *p; + char line[MAXLINE], rstr[16], *getkey2(); + FILE *fd, *fopen(); + char cvtkey_file[LONGLENGTH], *strchr(); + struct cvtkey *ckeyp; + struct wcvtkey *wckeyp; + +/* + * Change a default value. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + strcpy(cvtkey_file, DEFKEYFILE); + strcpy(line, term); + if((p = strchr(line, '-')) != NULL) + *p = '\0'; + strcat(cvtkey_file, line); + + if ((fd = fopen(cvtkey_file, "r")) != NULL) { + while ((p = fgets(line, MAXLINE, fd)) != NULL) { + if (*p == '#' ||*p == '\n' ||*p == '\0') + continue; + if ((p = getkey2(p, rstr)) == NULL) + continue; + ckeyp = cvtkeytbl; + wckeyp = wcvtkeytbl; + while(ckeyp->key_word != NULL) { + if (strcmp(ckeyp->key_word, rstr) == 0) { + p = getkey2(p, ckeyp->key_seq); + + (void) mbstowcs(wckeyp->key_seq, + ckeyp->key_seq, SEQLEN); + break; + } + ckeyp++; + wckeyp++; + } + } + fclose(fd); + } +} + +char * +getkey2(istr, ostr) +char *istr, *ostr; +{ + register char *p; + register int i; + + while (*istr == ' ' || *istr == '\t') + istr++; + + p = istr; + i = 0; + while (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\0') { + *ostr++ = *p; + if (++i > SEQLEN) { + i = 0; + break; + } + p++; + } + *ostr = '\0'; + if (i > 0) + return(p); + return(NULL); +} + +clear_ukeys () +{ + Unumber = 0; +} + +set_func (word) +struct wordent word[]; +{ + register int i, num; + register wchar16_t *p, *s; + struct wcvtkey *ckeyp; + + if (Unumber >= UKEYNUM) + return; + for (i = 0 ; i < KEY_OTHER && *comstr[i] != '\0' ; i ++) { + if (match (word[1].word_str, comstr[i])) { + p = word[2].word_str; + if (iswupper(*p)) { + ckeyp = wcvtkeytbl; + while(ckeyp->key_word != NULL) { + if (wscmp(p, ckeyp->key_word) == 0) { + p = ckeyp->key_seq; + if (*p == '\0') + return; + break; + } + ckeyp++; + } + } + s = Ukey[Unumber]; + if ((num = eval_keys (p, s)) > 1) { + if (Unumber < UKEYNUM) + Uvalue[Unumber++] = comstrvalue[i]; + } else if (num >= 0) { + if (comnumber < COMNUM) { + comkey[comnumber] = *s; + comvalue[comnumber++] = comstrvalue[i]; + } + } + return; + } + } +} + +eval_keys (s, p) +wchar16_t *s, *p; +{ + register wchar16_t c, i; + + if (wslen (s) > SEQLEN) + return (-1); + i = 0; + while ((c = *(s ++)) != '\0') { + if (c == '^') { + c = *(s ++); + if ('@' <= c && c <= '_') + c = c - '@'; + else if (c == '?') + c = DEL; + else + c = *(--s); + } + i++; + *(p ++) = c; + } + *p = '\0'; + return (i); +} + +clear_key () +{ + clear_commkeys (); + clear_etckeys (); + clear_ukeys (); +} + +clear_commkeys () +{ + comnumber = 0; +} + +eval_key (s) +wchar16_t *s; +{ + register wchar16_t c; + + c = *s; + + + if (c == '^') { + c = s[1]; + if ('@' <= c && c <= '_') + return (c - '@'); + else if (c == '?') + return (DEL); + } + + + else if (c <= '~') + return (c); + + return (-1); +} + +clear_etckeys () +{ + u_etckeys = 0; +} + +set_etckeys (word) +struct wordent word[]; +{ + register int i; + + if (u_etckeys >= ETCKEYS) + return (1); + for (i = 0 ; i < KEY_OTHER && *comstr[i] != '\0' ; i ++) { + if (match (word[1].word_str, comstr[i])) { + Uetcval[u_etckeys] = comstrvalue[i]; + break; + } + } + if (i >= KEY_OTHER) + return (1); + for (i = 0 ; i < KEY_OTHER && *comstr[i] != '\0' ; i ++) { + if (match (word[2].word_str, comstr[i])) { + Uetckey[u_etckeys] = comstrvalue[i]; + break; + } + } + if (i >= KEY_OTHER) + return (1); + u_etckeys ++; + return (0); +} + + + +parse_command (s, count) +register wchar16_t *s; +register int *count; +{ + extern wchar16_t pars_seq[]; + extern int pars_n; + register int i, j; + register wchar16_t c; + + c = *s; + for (i = 0; i < comnumber ; i ++) { + if (c == comkey[i]) { + for (j = 1 ; j < *count ; j ++) + s[j - 1] = s[j]; + (*count)--; + *pars_seq = c; + pars_seq[1] = 0; + pars_n = 1; + return (comvalue[i]); + } + } + return (KEY_NORMAL); +} + diff --git a/sj3/henkan.c b/sj3/henkan.c new file mode 100644 index 0000000..bc08a0e --- /dev/null +++ b/sj3/henkan.c @@ -0,0 +1,887 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: henkan.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1997/01/23 11:09:37 $ + */ + + + +#include "common.h" +#include "key.h" +#include "wchar16.h" +#include "kctype.h" + + + +int i_point; + +exec_henkan () +{ + register Conversion *cv; + register int i, j; + register wchar16_t *s, *p; + short sp; + int len, rlen, ilen; + int opos, ipos, bnum; + u_char index[BUFFLENGTH * 2], mode; + + cv = GetConversion (); + sp = 0; + mode = cv->in_mode[sp]; + cv->kettei[sp] = mode; + for (i = 1; i < cv->out_point; i++) { + if (mode != cv->in_mode[i]) { + p = &cv->out_buf[i]; + cv->span_l[sp] = p - cv->span_p[sp]; + sp++; + cv->span_p[sp] = p; + mode = cv->in_mode[i]; + cv->kettei[sp] = mode; + } + } + cv->span_l[sp] = &cv->out_buf[i] - cv->span_p[sp]; + sp++; + cv->span_point = sp; + + p = cv->yomiout; + i_point = 0; + ipos = -1; + for (i = 0; i < cv->span_point; i++) { + len = cv->span_l[i]; + + s = cv->span_p[i]; + if (cv->kettei[i] == MODE_ZHIRA) { + if (ipos >= 0) { + ilen = getipos(s - cv->out_buf) - ipos; + Strncpy(p, &cv->Halpha[ipos], ilen); + p += ilen; + ipos = -1; + for (j = 0; j < ilen; j++) + index[i_point++] = ObjMuhenkan; + } + Strncpy(p, s, len); + p += len; + for (j = 0; j < len; j++) + index[i_point++] = ObjHenkan; + } else if (ipos == -1) + ipos = getipos(s - cv->out_buf); + } + + if (ipos >= 0) { + ilen = cv->ha_point - ipos; + Strncpy(p, &cv->Halpha[ipos], ilen); + p += ilen; + for (j = 0; j < ilen; j++) + index[i_point++] = ObjMuhenkan; + } + index[i_point] = ObjEnd; + *p = '\0'; + + bnum = SJ2_henkan(cv->yomiout, cv->Bun, cv->kanjiout, BUFFLENGTH*4); + + + if (bnum < 0 && !dconnect(1)) + bnum = SJ2_henkan(cv->yomiout, cv->Bun, cv->kanjiout, BUFFLENGTH*4); + + if (bnum <= 0) { + cv->Bun[0].srclen = i_point; + cv->Bun[0].srcstr = cv->yomiout; + cv->Bun[0].destlen = 0; + cv->Bun[0].deststr = NULL; + bnum = 1; + } + + i_point = 0; + cv->Bnum = 0; + i = 0; + while (i < bnum && i < cv->span_point) { + s = cv->span_p[i]; + len = cv->span_l[i]; + + if (index[i_point] == ObjMuhenkan) { + cv->Bkettei[cv->Bnum] = Bmuhenkan; + opos = s - cv->out_buf; + len = getipos(opos + len) - getipos(opos); + if (len < cv->Bun[i].srclen) { + i_point += len; + rlen = cv->Bun[i].srclen - len; + opos = cv->span_p[i+1] - cv->out_buf; + if (index[i_point+rlen] == ObjMuhenkan || + rlen != 1 || cv->out_mode[opos+rlen] == 0) { + addBun(i, bnum); + cv->Bun[i].srclen = len; + cv->Bun[i+1].srclen -= len; + cv->Bun[i+1].srcstr += len; + if (cv->Bun[i].deststr != NULL) { + cv->Bun[i].destlen = len; + cv->Bun[i+1].destlen -= len; + cv->Bun[i+1].deststr += len; + } + bnum++; + } else { + cv->span_l[i] += rlen; + if ((unsigned int)cv->span_l[i + 1] >= rlen) { + cv->span_l[i + 1] -= rlen; + cv->span_p[i + 1] += rlen; + } else { + delspan(i + 1); + cv->span_point--; + } + i_point += rlen; + } + } else if (len > cv->Bun[i].srclen) { + delBun(i, bnum); + bnum--; + continue; + } else { + i_point += len; + } + } else if (index[i_point] == ObjHenkan) { + cv->Bkettei[cv->Bnum] = Bhenkan; + if (len < cv->Bun[i].srclen) { + i_point += len; + addBun(i, bnum); + cv->Bun[i].srclen = len; + cv->Bun[i+1].srclen -= len; + cv->Bun[i+1].srcstr += len; + if (cv->Bun[i].deststr != NULL) { + rlen = cv->Bun[i+1].srclen; + cv->Bun[i].destlen -= rlen; + cv->Bun[i+1].destlen = rlen; + cv->Bun[i+1].deststr += + cv->Bun[i].destlen; + } + bnum++; + } else if (len > cv->Bun[i].srclen) { + for (j = cv->span_point; j > i; j--) { + cv->span_p[j] = cv->span_p[j-1]; + cv->span_l[j] = cv->span_l[j-1]; + cv->kettei[j] = cv->kettei[j-1]; + } + cv->span_point++; + rlen = cv->Bun[i].srclen; + i_point += rlen; + cv->span_l[i] = rlen; + cv->span_l[i + 1] -= rlen; + cv->span_p[i + 1] += rlen; + } else { + i_point += len; + } + } else { + cv->Bnum++; + break; + } + cv->Bnum++; + i++; + } + cv->Bkettei[cv->Bnum] = Bend; + + for (i = 0 ; i < cv->Bnum ; i ++) { + cv->Pkettei[i] = cv->kettei[i]; + cv->Ppoint[i] = cv->span_p[i]; + cv->OrgPlen[i] = cv->Plen[i] = cv->span_l[i]; + cv->Pedited[i] = 0; + cv->Bpoint[i] = i + 1; + } + + if (flush_conversion) + cv->PreBun = cv->CurBun = -1; + else + cv->PreBun = cv->CurBun = 0; + + Bdisp (1); + + cv->Dflag = -1; + cv->Enum = 0; + cv->e_point = 0; + cv->Kanji = 1; +} + +addBun(cur, end) +int cur, end; +{ + register int i; + register Conversion *cv; + + cv = GetConversion(); + for (i = end; i > cur; i--) { + cv->Bun[i].srclen = cv->Bun[i - 1].srclen; + cv->Bun[i].srcstr = cv->Bun[i - 1].srcstr; + cv->Bun[i].destlen = cv->Bun[i - 1].destlen; + cv->Bun[i].deststr = cv->Bun[i - 1].deststr; + } +} + +delspan(cur) +int cur; +{ + register int i; + register Conversion *cv; + + cv = GetConversion(); + for (i = cur; i < cv->span_point - 1; i++) { + cv->span_l[i] = cv->span_l[i + 1]; + cv->span_p[i] = cv->span_p[i + 1]; + cv->kettei[i] = cv->kettei[i + 1]; + } +} + +delBun(cur, end) +int cur, end; +{ + register int i; + register Conversion *cv; + + cv = GetConversion(); + cv->Bun[cur].srclen += cv->Bun[cur + 1].srclen; + cv->Bun[cur].destlen += cv->Bun[cur + 1].destlen; + for (i = cur + 1; i < end; i++) { + cv->Bun[i].srclen = cv->Bun[i + 1].srclen; + cv->Bun[i].srcstr = cv->Bun[i + 1].srcstr; + cv->Bun[i].destlen = cv->Bun[i + 1].destlen; + cv->Bun[i].deststr = cv->Bun[i + 1].deststr; + } +} + + +IsHex (c) +register wchar16_t c; +{ + return(iswxdigit(c)); +} + +Getcode (in, out) +wchar16_t *in, *out; +{ + register int c, i, j; + u_char s[5]; + int base, c_code; + u_short code; + wchar16_t sw[5]; + wchar16_t tmp[3]; + + *out = (wchar16_t) '\0'; + i = 0; + if (((c_code = GetCcode()) == CODE_KUTEN) || (c_code == CODE_KUTEN2)) + base = 10; + else + base = 16; + while ((c = *in) != '\0') { + if (WcIsKANJI(c)) { + in ++; + *(out ++) = c; + i = 0; + continue; + } else if (IsHex(c)) + s[i++] = WcLowByte(c); + else + break; + in ++; + if (i == 4) { + s[i] = '\0'; + code = (u_short)strtol((char *)s, (char **)NULL, base); + switch (c_code) { + case CODE_KUTEN : + case CODE_KUTEN2 : + c = ((code / 100) << 8) + code % 100; + code = c + 0x2020; + case CODE_JIS : + case CODE_JIS2 : + code = jis2euc(code); + break; + case CODE_SJIS : + code = sjis2euc(code); + break; + } + if ((c_code == CODE_KUTEN2) || + (c_code == CODE_JIS2) || (c_code == CODE_EUC2)) + code &= WcX0212MASK; + if (!WcIsZENKAKU(code)) + break; + *out++ = code; + i = 0; + } + } + *out = (wchar16_t) '\0'; + if (i) { + for (j = 0; j < i; j++) + sw[j] = (wchar16_t) s[j]; + sw[i] = (wchar16_t) '\0'; + i = sj_hantozen(out, sw, i); + out += i; + } + if (*in != '\0') +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + (void)sj_hantozen(out, in, strlen((char *)in)); +} + + +static u_char load_mode; + +load_bun (num, s, type) +int num; +wchar16_t *s; +u_char type; +{ + register Conversion *cv; + register int len, ilen; + u_char itype; + wchar16_t Htmp[BUFFLENGTH], Ztmp[BUFFLENGTH * 2]; + + cv = GetConversion (); + if (num < 0 || (len = cv->Plen[num]) == 0) { + *s = '\0'; + return(0); + } + if (type == 0) + type = MODE_ZHIRA; + if (cv->Bpoint[num] < cv->Bpoint[0]) + itype = MODE_ALPHA; + else + itype = cv->kettei[cv->Bpoint[num] - 1]; + + if (type & MODE_ZEN) + load_mode = 1; + else + load_mode = 0; + if (type == itype) { + Strncpy(s, cv->Ppoint[num], len); + s += len; + *s = '\0'; + } else { + + if (type == MODE_CODE && itype != MODE_CODE) { + ilen = getistr(Htmp, cv->Ppoint[num], len); + Getcode(Htmp, s); + len = wslen(s); + } else if ((type & MODE_CONV) && (itype == MODE_ALPHA || + itype == MODE_ZALPHA)) { + ilen = sj_zentohan(Htmp, cv->Ppoint[num], len); + ilen = sj_rkconv(Ztmp, Htmp, ilen); + if (type & MODE_ZEN) { + len = sj_hantozen(s, Ztmp, ilen); + if (type == MODE_ZKATA) { + wscpy(Ztmp, s); + sj_htok(s, Ztmp); + } + } else + len = sj_zentohan(s, Ztmp, ilen); + + } else if (!(type & MODE_CONV) && (itype == MODE_CODE || + itype & MODE_CONV)) { + if (type & MODE_ZEN) { + ilen = getistr(Htmp, cv->Ppoint[num], len); + len = sj_hantozen(s, Htmp, ilen); + } else { + len = getistr(s, cv->Ppoint[num], len); + } + + } else { + if (type & MODE_ZEN) { + len = sj_hantozen(Ztmp, cv->Ppoint[num], len); + if (type == MODE_ZKATA) + sj_htok(s, Ztmp); + else + sj_ktoh(s, Ztmp); + } else + len = sj_zentohan(s, cv->Ppoint[num], len); + } + + } + return(len); +} + +load_bun2(num, htmp, ztmp, omode) +int num; +wchar16_t *htmp, *ztmp; +u_short *omode; +{ + register Conversion *cv; + register int i; + register int len, ilen; + u_short *op; + u_char type; + wchar16_t Ztmp[DLEN + 1]; + + + cv = GetConversion (); + if (num < 0 || (len = cv->Plen[num]) == 0) { + *ztmp = '\0'; + return(0); + } + + if (cv->Bpoint[num] < cv->Bpoint[0]) + i = cv->span_point; + else + i = cv->Bpoint[num]; + type = cv->kettei[i - 1]; + if (type == MODE_ZHIRA || type == MODE_ZKATA) { + if (len > DLEN) + return(len); + if (type == MODE_ZHIRA) { + Strncpy(ztmp, cv->Ppoint[num], len); + ztmp += len; + *ztmp = '\0'; + } else { + Strncpy(Ztmp, cv->Ppoint[num], len); + Ztmp[len] = '\0'; + sj_ktoh(ztmp, Ztmp); + } + (void)load_bun(num, htmp, MODE_ALPHA); + op = &cv->out_mode[cv->Ppoint[num] - cv->Ppoint[0]]; + for (i = 0; i < len; i++) + *omode++ = *op++; + } else { + ilen = load_bun(num, htmp, MODE_ALPHA); + len = sj_rkconv2(ztmp, htmp, omode, ilen); + } + return(len); +} + +getistr(s, ostr, len) +wchar16_t *s, *ostr; +int len; +{ + register int ipos, opos; + register Conversion *cv; + int rlen; + + cv = GetConversion(); + opos = ostr - cv->out_buf; + if (!(cv->out_mode[opos] & OMODE_MASK)) + chhstr(cv->Halpha, cv->out_buf, cv->out_mode, opos); + ipos = getipos(opos); + if (*(ostr + len) != '\0' && !(cv->out_mode[opos + len] & OMODE_MASK)) + chhstr(cv->Halpha, cv->out_buf, cv->out_mode, opos + len); + rlen = getipos(opos + len) - ipos; + Strncpy(s, &cv->Halpha[ipos], rlen); + s += rlen; + *s = (wchar16_t) '\0'; + return(rlen); +} + +exec_muhenkan (first) +int first; +{ + register Conversion *cv; + + cv = GetConversion (); + cv->Bnum = 1; + cv->Ppoint[0] = &(cv->out_buf[0]); + cv->Plen[0] = cv->out_point; + cv->OrgPlen[0] = cv->Plen[0]; + cv->Pedited[0] = 0; + if (first) { + cv->Bkettei[0] = Bmuhenkan; + cv->Pkettei[0] = cv->Imode; + } + else if (cv->Bkettei[0] != Bmuhenkan) { + cv->Bkettei[0] = Bmuhenkan; + cv->Pkettei[0] = MODE_ZHIRA; + } + else if (cv->Pkettei[0] != MODE_ZHIRA) { + cv->Pkettei[0] = MODE_ZHIRA; + } + else { + cv->Pkettei[0] = MODE_ZKATA; + } + + if (flush_conversion) + cv->PreBun = cv->CurBun = -1; + else + cv->PreBun = cv->CurBun = 0; + cv->Dflag = -1; + cv->Enum = 0; + cv->e_point = 0; + cv->Kanji = 1; + + Bdisp (1); +} + + + +static u_char Bstr_mode; + +Bstr (bnum, s) +int bnum; +wchar16_t *s; +{ + register Conversion *cv; + register int i, len; + + cv = GetConversion (); + if (cv->Bkettei[bnum] & Bmuhenkan) { + len = load_bun (bnum, s, cv->Pkettei[bnum]); + Bstr_mode = load_mode; + } + else if (cv->Bkettei[bnum] & Bedit) { + i = cv->Edit[bnum]; + len = cv->Elen[i]; + if (len <= DLEN) { + if (cv->Epoint[i] != NULL) { + Strncpy(s, cv->Epoint[i], len); + s += len; + *s = '\0'; + } else + len = -1; + } + else + len = load_bun (bnum, s, 0); + Bstr_mode = 1; + } + else if (cv->Bkettei[bnum] & Bhenkan) { + if (!(i = cv->Bpoint[bnum])) { + len = -1; + return len; + } + if (cv->Bun[i - 1].deststr != NULL) { + len = cv->Bun[i - 1].destlen; + Strncpy(s, cv->Bun[i - 1].deststr, len); + s += len; + *s = '\0'; + } else if (cv->Bun[i - 1].srcstr != NULL) { + len = cv->Bun[i - 1].srclen; + Strncpy(s, cv->Bun[i - 1].srcstr, len); + s += len; + *s = '\0'; + } else + len = -1; + Bstr_mode = 1; + } + else + len = -1; + return (len); +} + + + +mode_muhenkan (mod, bkettei) +register int mod, bkettei; +{ + register int def; + + if (!(bkettei & Bmuhenkan)) + return (KEY_ZHIRA); + def = value_muhenkan (); + if (mod == MODE_ZHIRA) + return (KEY_ZKATA); + else if (mod == MODE_ZKATA) { + if (def != KEY_ZHIRA && def != KEY_ZKATA) + return (def); + } + return (KEY_ZHIRA); +} + +Bchange (mod) +register int mod; +{ + register Conversion *cv; + register int i; + int PushKettei; + + cv = GetConversion (); + if (cv->CurBun == -1) + cv->CurBun = 0; + i = cv->PreBun = cv->CurBun; + + if (mod == KEY_MUHENKAN) + mod = mode_muhenkan (cv->Pkettei[i], cv->Bkettei[i]); + else if (mod == KEY_TOGGLE) + mod = toggle_mode (cv->Pkettei[i]); + + PushKettei = cv->Bkettei[i]; + if (!(cv->Bkettei[i] & Bmuhenkan)) { + cv->Bkettei[i] |= Bmuhenkan; + cv->Bkettei[i] &= ~Bhenkan; + } + switch (mod) { + case KEY_CODE: + cv->Pkettei[i] = MODE_CODE; + Rdisp (); + break; + case KEY_ZHIRA: + cv->Pkettei[i] = MODE_ZHIRA; + Rdisp (); + break; + case KEY_HALPHA: + cv->Pkettei[i] = MODE_HALPHA; + Rdisp (); + break; + case KEY_ZALPHA: + cv->Pkettei[i] = MODE_ZALPHA; + Rdisp (); + break; + case KEY_HKATA: + cv->Pkettei[i] = MODE_HKATA; + Rdisp (); + break; + case KEY_ZKATA: + cv->Pkettei[i] = MODE_ZKATA; + Rdisp (); + break; + default: + cv->Bkettei[i] = PushKettei; + beep (); + break; + } +} + + + +Bdisp (redraw) +{ + register Conversion *cv; + register int i; + int len; + wchar16_t BDtmp[BUFFLENGTH * 2]; + int displen; + int amount = 0; + int tmpcol=0; + u_short row, col; + + CursorRead(&row, &col); + + cv = GetConversion (); + Cclear (redraw); + SetVcol (0); + for (i = 0 ; i < cv->Bnum ; i ++) { + if ((len = Bstr (i, BDtmp)) < 0) + continue; + amount += len; + if (amount > BUFFLENGTH * 2) { + cv->Bnum = i + 1; + break; + } + displen = wcbyte(BDtmp); + tmpcol += displen; + if ((tmpcol > (unsigned int)cv->column) && (row == cv->line) + && (row == cv->SavedRow) && (row > 0)) { + cv->SavedRow--; + tmpcol -= cv->column; + } + cv->Displen[i] = displen; + cv->Dispmod[i] = Bstr_mode; + + if (len <= 0) + continue; + if (i == cv->CurBun) + vprintR (BDtmp, Bstr_mode); + else + vprintU (BDtmp, Bstr_mode); + } + Flush (); +} + + + +Rdisp () +{ + register Conversion *cv; + register int i; + register int Total; + int len; + wchar16_t BDtmp[BUFFLENGTH * 2]; + int displen; + int amount=0; + int tmpcol=0; + u_short row, col; + + CursorRead(&row, &col); + + cv = GetConversion (); + Total = 0; + for (i = 0 ; i < cv->Bnum ; i ++) { + if ((len = Bstr (i, BDtmp)) < 0) + continue; + amount += len; + if (amount > BUFFLENGTH * 2) { + cv->Bnum = i + 1; + break; + } + displen = wcbyte(BDtmp); + tmpcol += displen; + if ((tmpcol > (unsigned int)cv->column) && (row == cv->line) + && (row == cv->SavedRow) && (row > 0)) { + cv->SavedRow--; + tmpcol -= cv->column; + } + if (cv->Displen[i] != displen || cv->Dispmod[i] != Bstr_mode) { + AfterAllPrint (i, Total); + return; + } + if (len <= 0) + continue; + if (i == cv->CurBun || i == cv->PreBun) { + if (i == cv->CurBun) + IprintR (BDtmp, Total); + else + IprintU (BDtmp, Total); + } + Total += displen; + } + Cgoto (Total); + Flush (); +} + +AfterAllPrint (from, Total) +int from; +register int Total; +{ + register Conversion *cv; + register int i; + int len; + wchar16_t BDtmp[BUFFLENGTH * 2]; + int displen; + int amount=0; + int tmpcol=0; + u_short row, col; + + CursorRead(&row, &col); + + cv = GetConversion (); + Cgoto (Total); + for (i = from ; i < cv->Bnum ; i ++) { + if ((len = Bstr (i, BDtmp)) < 0) + continue; + amount += len; + if (amount > BUFFLENGTH * 2) { + cv->Bnum = i + 1; + break; + } + displen = wcbyte(BDtmp); + tmpcol += displen; + if ((tmpcol > (unsigned int)cv->column) && (row == cv->line) + && (row == cv->SavedRow) && (row > 0)) { + cv->SavedRow--; + tmpcol -= cv->column; + } + cv->Displen[i] = displen; + cv->Dispmod[i] = Bstr_mode; + + if (len <= 0) + continue; + if (i == cv->CurBun) + vprintR (BDtmp, Bstr_mode); + else + vprintU (BDtmp, Bstr_mode); + Total += displen; + } + ClearToMax (); + Cgoto (Total); + Flush (); +} + + + +Bright () +{ + register Conversion *cv; + int flag; + + cv = GetConversion (); + flag = 0; + cv->PreBun = cv->CurBun; + do { + cv->CurBun ++; + if (cv->CurBun >= cv->Bnum) { + if (flag) + return; + else + flag = 1; + cv->CurBun = 0; + } + } while (cv->Plen[cv->CurBun] <= 0); + Rdisp (); +} + + + +Bleft () +{ + register Conversion *cv; + int flag; + + cv = GetConversion (); + flag = 0; + cv->PreBun = cv->CurBun; + do { + cv->CurBun --; + if (cv->CurBun < 0) { + if (flag) + return; + else + flag = 1; + cv->CurBun = cv->Bnum - 1; + } + } while (cv->Plen[cv->CurBun] <= 0); + Rdisp (); +} + + + +Blast () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->PreBun = cv->CurBun; + cv->CurBun = cv->Bnum - 1; + while (cv->Plen[cv->CurBun] <= 0) { + cv->CurBun--; + if (cv->CurBun < 0) + return; + } + Rdisp(); + +} + + + +Btop () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->PreBun = cv->CurBun; + cv->CurBun = 0; + while (cv->Plen[cv->CurBun] <= 0) { + cv->CurBun++; + if (cv->CurBun >= cv->Bnum) + return; + } + Rdisp(); +} + + diff --git a/sj3/kigou.c b/sj3/kigou.c new file mode 100644 index 0000000..31fe396 --- /dev/null +++ b/sj3/kigou.c @@ -0,0 +1,307 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: kigou.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:19 $ + */ + + + +#include "common.h" +#include "kctype.h" +#include "key.h" + +#define BEGIN_CODE 0x2121 +#define END_CODE 0x7f7e +#define INCRESE 16 + +static int lastcode = BEGIN_CODE; + +static u_short row, col; + +kigou () +{ + extern int keyvalue; + register int increse, code, basecode; + int inc, ki, low; + u_short num, CheckCcode(), strtocode(); + int rval; + + increse = INCRESE; + disp_mode (); + basecode = lastcode & 0xfff0; + code = lastcode; + StartGuide (&row, &col); + Clear_EOL (); + guide_kigou (basecode, code, increse); + + rval = 0; + ki = 1; + SaveConversion (); + while (ki) { + inc = inkey (); + if (AnotherConversion ()) { + unget_key (inc); + break; + } +top: + switch (keyvalue) { + case KEY_CONV: + rval = 1; + ki = 0; + break; + case KEY_RIGHT: + if (code >= END_CODE) { + code = BEGIN_CODE; + basecode = code & 0xfff0; + } else { + low = ++code & 0xff; + if (low > 0x7e) { + code &= 0xff00; + code += 0x121; + low = 0x21; + } + if (code >= basecode + increse) { + if (low <= 0x21) + basecode = code & 0xfff0; + else + basecode += increse; + } + } + guide_kigou (basecode, code, increse); + break; + case KEY_LEFT: + if (code <= BEGIN_CODE) { + code = END_CODE; + basecode = code & 0xfff0; + } else { + low = --code & 0xff; + if (low < 0x21) { + code &= 0xff00; + code -= 0x82; + low = 0x7e; + } + if (code < basecode) { + if (low >= 0x7e) + basecode = code & 0xfff0; + else + basecode -= increse; + } + } + guide_kigou (basecode, code, increse); + break; + case KEY_UP: + if (basecode <= BEGIN_CODE) { + code = basecode = END_CODE & 0xfff0; + } else { + basecode -= increse; + low = basecode & 0xff; + if (low == 0x20) { + code = (basecode & 0xff00) + 0x21; + } else { + if (low < 0x20) { + basecode &= 0xff00; + basecode -= 0x90; + } + code = basecode; + } + } + guide_kigou (basecode, code, increse); + break; + case KEY_DOWN: + if (basecode >= (END_CODE & 0xfff0)) { + code = BEGIN_CODE; + basecode = code & 0xfff0; + } else { + basecode += increse; + low = basecode & 0xff; + if (low > 0x70) { + basecode &= 0xff00; + basecode += 0x120; + code = basecode + 1; + } else + code = basecode; + } + guide_kigou (basecode, code, increse); + break; + case KEY_HENKAN: + input_kigou (basecode, code, increse); + break; + case KEY_KETTEI: + input_kigou (basecode, code, increse); + ki = 0; + break; + default: + if ((keyvalue = IsCKey (inc)) != KEY_NORMAL) + goto top; + if (CheckCcode(inc)) { + if ((num = strtocode()) > 0) { + code = num; + basecode = code & 0xfff0; + guide_kigou(basecode, code, increse); + } + } + else if (inc == ESC) + ki = 0; + else if (inc == '\n' || inc == '\r' || inc == ' ') + input_kigou (basecode, code, increse); + else if (IsRedraw (inc)) + guide_kigou (basecode, code, increse); + else + beep (); + break; + } + } + + EndGuide (row, col); + disp_mode (); + return (rval); +} + +IsRedraw (c) +int c; +{ + if (c == 0x0c) + return (1); + else + return (0); +} + +IsCKey (inc) +register int inc; +{ + switch (inc) { + case 'l': + return (KEY_RIGHT); + case 'k': + return (KEY_UP); + case 'j': + return (KEY_DOWN); + case 'h': + return (KEY_LEFT); + default: + return (KEY_NORMAL); + } +} + +guide_kigou (bcode, code, increse) +register int bcode, code, increse; +{ + register int i; + extern wchar16_t Mguide[]; + wchar16_t wtmp[20]; + char tmp[20]; + u_short prcode; + + TopGuide (); + printR (Mguide); + put_space (1); + put_space (1); + for (i = 0 ; i < increse ; i ++) + pkigou (bcode + i); + prcode = code; + if (((i = GetCcode()) == CODE_KUTEN) || (i == CODE_KUTEN2)) { + prcode -= 0x2020; + sprintf (tmp, " [%02d%02d]", prcode >> 8, prcode & 0xff); + } else { + if (i == CODE_SJIS) + prcode = jis2sjis(prcode); + else if ((i == CODE_EUC) || (i == CODE_EUC2)) + prcode |= 0x8080; + sprintf (tmp, " [%04x]", prcode); + } + (void) mbstowcs(wtmp, tmp, 20); + SJ_print (wtmp); + backspace (8 + (bcode + increse - code) * 2); + Flush (); +} + + +pkigou (code) +register int code; +{ + wchar16_t tmp[3]; + u_short ccode; + + if (jis2euc(code) == 0) { + ccode = BEGIN_CODE; + } else { + ccode = code; + } + if ((GetCcode() == CODE_EUC2) || (GetCcode() == CODE_JIS2) || + (GetCcode() == CODE_KUTEN2)) { + ccode = WcJIS2X0212(ccode); + } else { + ccode = WcJIS2X0208(ccode); + } + tmp[0] = ccode; + tmp[1] = '\0'; + SJ_print (tmp); +} + +input_kigou (basecode, code, increse) +register int basecode, code, increse; +{ + wchar16_t s[2]; + u_short ccode, svlen; + register Conversion *cv; + + if (jis2euc(code) == 0) { + beep(); + return; + } + if ((GetCcode() == CODE_EUC2) || (GetCcode() == CODE_JIS2) || + (GetCcode() == CODE_KUTEN2)) { + ccode = WcJIS2X0212(code); + } else { + ccode = WcJIS2X0208(code); + } + EndGuide (row, col); + s[0] = ccode; + s[1] = '\0'; + if (BuffYes ()) { + cv = GetConversion(); + save_obuf(); + (void)exec_romaji(s[0]); + if (os_point > 0) { + svlen = cv->Vlen; + vprintU(osave_buf, 1); + Cgoto(svlen); + } + restore_obuf(); + } else { + master_out (s, 2); + master_flush(); + } + StartGuide (&row, &col); + guide_kigou (basecode, code, increse); + lastcode = code; +} diff --git a/sj3/libif.c b/sj3/libif.c new file mode 100644 index 0000000..b0118cc --- /dev/null +++ b/sj3/libif.c @@ -0,0 +1,365 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: libif.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1996/02/23 11:04:02 $ + */ + + +#include "sj_sysvdef.h" +#ifdef SVR4 +#include +#endif +#include "wchar16.h" +#include +#include "kctype.h" +#include "common.h" + + +extern char user_name[]; +extern char *cur_serv, **serv_list; +extern char **dict_list; +extern int dict_num; +char *chmyhname(); + +extern int current_locale; +int sjislen(), euclen(); + +int (*len_func[3])() = {0, sjislen, euclen}; + + +#define YOMILEN 32 +#define KLEN 64 + + + + + +SJ2_henkan (yomiout, bun, kanjiout, kanjilen) +struct bunsetu_sj3 *bun; +wchar16_t *yomiout, *kanjiout; +int kanjilen; +{ + int retv; + SJ3_BUNSETU sbun[BUFFLENGTH]; + int i, sentou, saigo; + u_char yomi[BUFFLENGTH * 3]; + u_char kanji[BUFFLENGTH * 6]; + + (void) wcstombs((char *) yomi, yomiout, BUFFLENGTH*3); + if (current_locale == LC_CTYPE_SHIFTJIS) { + retv = sj3_getkan(yomi, sbun, kanji, BUFFLENGTH * 6); + } else { + retv = sj3_getkan_euc(yomi, sbun, kanji, BUFFLENGTH * 6); + } + + if (retv <= 0) return(retv); + (void) mbstowcs(kanjiout, (char *)kanji, kanjilen); + + for(i = 0; i < retv; i++) { + sentou = (*len_func[current_locale])(yomi, sbun[i].srcstr - yomi); + saigo = (*len_func[current_locale])(sbun[i].srcstr, sbun[i].srclen); + bun[i].srclen = saigo; + bun[i].srcstr = yomiout + sentou; + sentou = (*len_func[current_locale])(kanji, sbun[i].deststr - kanji); + saigo = (*len_func[current_locale])(sbun[i].deststr, sbun[i].destlen); + bun[i].destlen = saigo; + bun[i].deststr = kanjiout + sentou; + (void) memcpy(&(bun[i].dcid), &(sbun[i].dcid), sizeof(sbun[i].dcid)); + } + + return(retv); +} +int +sjislen(str, max) +unsigned char *str; +int max; +{ + register int len = 0, bytes = 1; + + if (!max) return 0; + while ((bytes <= max) && *str) { + if (issjis1(*str)) { + str++; + bytes++; + if (!*str) break; + len++; + } else { + len++; + } + str++; + bytes++; + } + return len; +} + +euclen(str, max) +unsigned char *str; +int max; +{ + register int len = 0, bytes = 1; + + if (!max) return 0; + while ((bytes <= max) && *str) { + if (*str == SS3) { + str++; + bytes++; + if (!*str) break; + str++; + bytes++; + if (!*str) break; + len++; + } else if ((*str == SS2) || (*str & 0x80)) { + str++; + bytes++; + if (!*str) break; + len++; + } else { + len++; + } + str++; + bytes++; + } + return len; +} + + + +SJ2_getdouon (s, d, n, choice, reconv) +wchar16_t *s; +struct douon_sj3 *d; +int n; +int choice; +int reconv; +{ + int i, ret; + SJ3_DOUON d_sjis[DOUON_N]; + u_char yomi[BUFFLENGTH * 3]; + + (void) wcstombs((char *) yomi, s, BUFFLENGTH*3); + + if (current_locale == LC_CTYPE_SHIFTJIS) { + ret = sj3_getdouon(yomi, d_sjis); + } else { + ret = sj3_getdouon_euc(yomi, d_sjis); + } + for (i = 0; i < ret; i++) { + (void) memcpy(&(d[i].dcid), + &(d_sjis[i].dcid), SJ3_WORD_ID_SIZE); + d[i].wlen = (int) mbstowcs(d[i].ddata, (char *)d_sjis[i].ddata, + SJ3_BUNSETU_KANJI*2); + d[i].dlen = wcbyte(d[i].ddata); + d[i].valid = (char)1; + } + if (ret < DOUON_N) { + (void) memset(&(d[ret].dcid), 0, SJ3_WORD_ID_SIZE); + d[ret].wlen = wslen(s); + for (i = 0; i < d[ret].wlen; i++) { + d[ret].ddata[i] = sj_tokata(s[i]); + } + d[ret].ddata[i] = (wchar_t) 0; + d[ret].dlen = wcbyte(s); + d[ret].valid = (char)0; + } + return(ret + 1); +} + +SJ2_study (dcid) +struct studyrec *dcid; +{ + sj3_gakusyuu(dcid); +} + +SJ2_clstudy (yomi1, yomi2, dcid) +wchar16_t *yomi1, *yomi2; +struct studyrec *dcid; +{ + u_char y1[BUFFLENGTH*2]; + u_char y2[BUFFLENGTH*2]; + + (void) wcstombs((char *) y1, yomi1, BUFFLENGTH*2); + (void) wcstombs((char *) y2, yomi2, BUFFLENGTH*2); + + if (current_locale == LC_CTYPE_SHIFTJIS) { + sj3_gakusyuu2(y1, y2, dcid); + } else { + sj3_gakusyuu2_euc(y1, y2, dcid); + } +} + +SJ2_toroku (yomi, kanji, hinshi) +wchar16_t *yomi, *kanji; +int hinshi; +{ + u_char y[(YOMILEN+1)*3]; + u_char k[(KLEN+1)*3]; + int ret; + + (void)wcstombs((char *) y, yomi, (YOMILEN+1)*3); + (void)wcstombs((char *) k, kanji, (KLEN+1)*3); + if (current_locale == LC_CTYPE_SHIFTJIS) { + ret = sj3_touroku (y, k, hinshi); + } else { + ret = sj3_touroku_euc (y, k, hinshi); + } + return(ret); +} + +SJ2_syoukyo (yomi, kanji, hinshi) +wchar16_t *yomi, *kanji; +int hinshi; +{ + u_char y[(YOMILEN+1)*3]; + u_char k[(KLEN+1)*3]; + int ret; + + (void)wcstombs((char *) y, yomi, (YOMILEN+1)*3); + (void)wcstombs((char *) k, kanji, (KLEN+1)*3); + if (current_locale == LC_CTYPE_SHIFTJIS) { + ret = sj3_syoukyo (y, k, hinshi); + } else { + ret = sj3_syoukyo_euc (y, k, hinshi); + } + return(ret); +} + +sj_check_error (err) +int err; +{ + if (err & SJ3_SERVER_DEAD) + SJ_warnning(WCServer_Dead); + if (err & SJ3_ALREADY_CONNECTED) + SJ_warnning(WCConnected); + if (err & SJ3_CONNECT_ERROR) + SJ_warnning(WCNconnect); + if (err & SJ3_CANNOT_OPEN_MDICT) + SJ_warnning(WCNopen_Mdic); + if (err & SJ3_CANNOT_MAKE_UDIR) + SJ_warnning(WCNmake_Udir); + if (err & SJ3_CANNOT_MAKE_UDICT) + SJ_warnning(WCNmake_Udic); + if (err & SJ3_CANNOT_OPEN_UDICT) + SJ_warnning(WCNopen_Udic); + if (err & SJ3_CANNOT_MAKE_STUDY) + SJ_warnning(WCNmake_Study); + if (err & SJ3_CANNOT_OPEN_STUDY) + SJ_warnning(WCNopen_Study); +} + +SJ2_reconnect () +{ + int err; + + sj3_close(); + if (dict_num && dict_list) + err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num, dict_list, NULL, NULL); + else + err = sj3_open(chmyhname(cur_serv), user_name); + return(err); +} + + +SJ2_henkan_end () +{ + sj3_close (); +} + +SJ2_henkan_init () +{ + register int i, err; + int *err_dict = NULL; + int err_num = 0; + + sj3_set_timeout(5); + + if (dict_num && dict_list) + err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num, + dict_list, &err_num, &err_dict); + else + err = sj3_open(chmyhname(cur_serv), user_name); + i = 0; + while (err && i < MAXSERVER - 1 && serv_list[i + 1] != NULL) { + if (dict_num && dict_list) + err = sj3_open_with_list(chmyhname(serv_list[++i]), user_name, + dict_num, dict_list, &err_num, &err_dict); + else + err = sj3_open(chmyhname(cur_serv), user_name); + } + if (err) { + printf("Warning "); + sj_check_error(err); + printf("\n\r"); + set_dcflag(1); + return(1); + } else if (err_num && err_dict) { + printf("Warning "); + for( i = 0; i < err_num; i++) { + printf("%s ", dict_list[err_dict[i]]); + } + printf(" files can't open\n"); + cur_serv = serv_list[i]; + return (0); + } else { + cur_serv = serv_list[i]; + return (0); + } +} + +sj3_autocon() +{ + register int i, err; + + if (dict_num && dict_list) { + if (!(err = sj3_open_with_list(chmyhname(cur_serv), user_name, dict_num, + dict_list, NULL, NULL))) + return(0); + } else { + if (!(err = sj3_open(chmyhname(cur_serv), user_name))) + return(0); + } + i = 0; + while (serv_list[i] != NULL && i < MAXSERVER) { + if (strcmp(cur_serv, serv_list[i]) != 0) { + if (dict_num && dict_list) { + err = sj3_open_with_list(chmyhname(serv_list[i]), user_name, + dict_num, dict_list, NULL, NULL); + } else { + err = sj3_open(chmyhname(cur_serv), user_name); + } + if (!err) { + cur_serv = serv_list[i]; + break; + } + } + i++; + } + return(err); +} diff --git a/sj3/nmttyslot.c b/sj3/nmttyslot.c new file mode 100644 index 0000000..5aaa172 --- /dev/null +++ b/sj3/nmttyslot.c @@ -0,0 +1,114 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: nmttyslot.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:20 $ + */ + + + +#include "sj2.h" +#define LINESIZE 128 + + + + + + + + +char *ttyname(); +char *getttys(); +char *strrchr(); +static char *ttys = "/etc/ttys"; + +#define NULL 0 + +nmttyslot (name) +char *name; +{ + register char *tp, *p; + register int s, tf; + + tp = name; + + if ((p = strrchr (tp, '/')) == NULL) + p = tp; + else + p++; + if ((tf = open (ttys, 0)) < 0) + return(0); + s = 0; + while (tp = getttys (tf)) { + s++; + if (strcmp (p, tp) == 0) { + close (tf); + return (s); + } + } + close (tf); + return (0); +} + +static char * +getttys (f) +int f; +{ + static char line[LINESIZE]; + register char *lp; +top: + for (lp = line ; lp < &line[LINESIZE] ; lp ++) { + if (read (f, lp, 1) != 1) + return (NULL); + if (*lp == '\n') { + *lp = '\0'; + break; + } + else if (*lp == ' ' || *lp == '\t') { + + while (1) { + if (read (f, lp, 1) != 1) + break; + if (*lp == '\n') + break; + } + *lp = '\0'; + break; + } + } + lp = line; + if (*lp == '0' || *lp == '1') + lp += 2; + else if (*lp == '#') + goto top; + return (lp); +} + diff --git a/sj3/romaji.c b/sj3/romaji.c new file mode 100644 index 0000000..56a97ad --- /dev/null +++ b/sj3/romaji.c @@ -0,0 +1,550 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: romaji.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1997/01/23 11:09:37 $ + */ + + + +#include "common.h" +#include "rk.h" +#include "key.h" + +extern int rkerrbell; + + + +exec_romaji(c) +wchar16_t c; +{ + register Conversion *cv; + register wchar16_t *p; + register u_short c1, cc; + register u_int c2; + u_short op; + u_char mode; + int len, i; + u_int rkstr[MAXLLEN], *rkp; + extern char erase_str[]; + + cv = GetConversion (); + op = cv->out_point; + + if (!is_bs(c) && BuffYes()) { + if ((unsigned int) cv->ha_point + hs_point >= BUFFLENGTH - 2 && + !iswcntrl(c)) { + beep(); + return(1); + } + cv->Halpha[cv->ha_point++] = c; + } + + if ((mode = cv->Imode) & MODE_CONV) { + sj3_rkconvc(c, rkstr); + } else if (mode == MODE_CODE) { + codeconv(c, rkstr); + } else { + rkstr[0] = SetMojilen(1) + c; + rkstr[1] = RKEND; + } + + rkp = rkstr; + i = 1; + while(*rkp != RKEND) { + c1 = ((c2 = *rkp++) & RKMASK); + if (c2 == ERRBEL) { + beep(); + cv->ha_point--; + break; + } + if (is_bs(c1)) { + if (op <= 0) { + if (os_point <= 0) { + master_write(erase_str, 1); + } + } else { + if (WcIsZENKAKU(cv->out_buf[op - 1])) { + vbackchar(2); + op -=1; + } else { + vbackchar(1); + op--; + } + cv->out_point = op; + if (BuffYes() && is_bs(c)) { + if (!(cv->out_mode[op] & OMODE_MASK)) + chhstr(cv->Halpha, cv->out_buf, + cv->out_mode, op); + cv->ha_point = getipos(op); + } + } + continue; + } + if (WcIsZENKAKU(c1)) { + if (op >= 1 && (cc = addten(op - 1, c1)) != 0) { + c1 = cc; + vbackchar(2); + op -= 1; + cv->out_point = op; + len = cv->out_mode[op] + GetMojilen(c2); + c2 = SetMojilen(len); + } else { + if (!GetMojilen(c2) && (mode == MODE_CODE)) + c2 = SetMojilen(1); + } + if (mode == MODE_ZKATA) { + c1 = sj_tokata(c1); + } else if (mode == MODE_HKATA) { + c1 = sj_zen2han(c1); + } + } else { + if ((c2 & ERRCODE) && is_bs(c)) + cv->Halpha[cv->ha_point++] = c1; + if (WcIsKANJI(c1)) { + c2 = SetMojilen(1); + } else if (iswcntrl(c1) && !(c2 & ERRCODE)) { + if (BuffYes()) + cv->ha_point--; + sj3_rkreset(); + i = 0; + break; + } else if (mode & MODE_ZEN) { + c1 = sj_han2zen(c1); + if (mode == MODE_ZKATA) + c1 = sj_tokata(c1); + if (op >=1 && (cc = addten(op-1, c1)) != 0){ + c1 = cc; + vbackchar(2); + op --; + cv->out_point = op; + len = cv->out_mode[op] + + GetMojilen(c2); + c2 = SetMojilen(len); + } + } + } + if ((unsigned int)cv->out_point + os_point >= BUFFLENGTH * 2 - 2) { + beep(); + op = cv->out_point; + break; + } + if (WcIsZENKAKU(c1)) { + cv->out_buf[op] = c1; + cv->in_mode[op] = mode; + cv->out_mode[op++] = GetMojilen(c2); + if (mode == MODE_HKATA || WcIsKANA(cv->out_buf[op - 1])) { + cv->out_buf[op - 1] = c1 >> 8; + cv->out_buf[op] = c1 &MASK; + cv->in_mode[op] = mode; + cv->out_mode[op++] = 0; + sj3_rkreset(); + } + } else { + cv->out_buf[op] = c1; + cv->in_mode[op] = mode; + cv->out_mode[op++] = GetMojilen(c2); + } + if (!BuffYes() && !(c2 & ERRCODE)) { + cv->out_buf[op] = '\0'; + master_out(cv->out_buf, op); + sj3_rkreset(); + op = 0; + } + } + cv->out_buf[op] = '\0'; + cv->Halpha[cv->ha_point] = '\0'; + if (is_bs(c) && op <= 0 && os_point <= 0) { + ResetHenkan(); + if (BuffYes()) { + SetCflag(); + buffers_clear(); + } + } + else if ((len = op - cv->out_point) > 0) { + p = &cv->out_buf[cv->out_point]; + if (BuffYes() && IsCflag ()) { + Csave (); + ClearCflag (); + } + if (mode & MODE_ZEN) { + if (!BuffYes() && len == 2) + Csave(); + vprintU(p, 1); + } else { + if (!BuffYes() && len == 1) + Csave(); + vprintU(p, 0); + } + } + cv->out_point = op; + return(i); +} + +move_cur(kval) +int kval; +{ + register Conversion *cv; + register int i; + + cv = GetConversion(); + switch(kval) { + case KEY_TOP: + cv->out_point = 0; + break; + case KEY_END: + cv->out_point = cv->out_epoint; + cv->ha_point = cv->ha_epoint; + break; + case KEY_LEFT: + if ((i = cv->out_point) > 0) { + i--; + if (i > 0 && (WcIsZENKAKU(cv->out_buf[i]))) + i--; + cv->out_point = i; + } + break; + case KEY_RIGHT: + if ((i = cv->out_point) < cv->out_epoint) { + i++; + if (i < cv->out_epoint && (WcIsZENKAKU(cv->out_buf[i]))) + i++; + cv->out_point = i; + if (cv->out_point >= cv->out_epoint) + cv->ha_point = cv->ha_epoint; + } + break; + } + if (cv->out_point != cv->Vlen) { + Cgoto(cv->out_point); + if (cv->out_point == cv->out_epoint) { + os_point = 0; + hs_point = 0; + } + } +} + +addten(pos, c) +u_short pos, c; +{ + register u_short prefix; + register Conversion *cv; + + cv = GetConversion(); + prefix = cv->out_buf[pos]; + return(sj_addten(prefix, c)); +} + +getipos(pos) +u_short pos; +{ + register Conversion *cv; + + cv = GetConversion(); + return(getipos2(cv->out_mode, pos)); +} + +getipos2(omode, pos) +u_short *omode; +u_short pos; +{ + register u_short ipos; + register int i; + + ipos = 0; + for (i = 0; i < (unsigned int)pos; i++) { + ipos += omode[i] & OMODE_MASK; + } + return(ipos); +} + +sj_rkconv(s1, s2, len) +wchar16_t *s1, *s2; +int len; +{ + register int i, rlen; + register u_int *kp; + int res, klen; + wchar16_t roma[SHORTBUFFSIZE + 1]; + u_int kstr[MAXLLEN]; + + sj3_rkebell(0); + klen = 0; + res = 0; + while (len > 0) { + if (len + res > SHORTBUFFSIZE) { + i = SHORTBUFFSIZE - res; + len -= i; + } else { + i = len; + len = 0; + } + Strncpy(&roma[res], s2, i); + s2 += i; + roma[res + i] = '\0'; + rlen = sj3_rkconv2(roma, kstr, i + res - 1); + res = wslen(roma); + if (rlen > 0) { + kp = kstr; + while (*kp != 0) { + *s1++ = (wchar16_t) *kp++; + klen++; + } + } + } + if (res > 0) { + roma[res] = 0x0a; + roma[res + 1] = '\0'; + rlen = sj3_rkconv2(roma, kstr, res); + if (rlen > 0) { + kp = kstr; + while ((*kp & RKMASK) != 0x0a && *kp != 0) { + *s1++ = (wchar16_t) *kp++; + klen++; + } + } else { + klen += res; + roma[res] = '\0'; + wscpy(s1, roma); + s1 += res; + } + } + *s1 = '\0'; + sj3_rkebell(rkerrbell); + return(klen); +} + +sj_rkconv2(s1, s2, omode, len) +wchar16_t *s1, *s2; +u_short *omode; +int len; +{ + register int i, rlen; + register u_int *kp; + int res, klen, mlen; + u_short cc, c, prefix; + wchar16_t roma[SHORTBUFFSIZE + 1]; + u_int kstr[BUFFLENGTH]; + + sj3_rkebell(0); + klen = 0; + res = 0; + prefix = 0; + while (len > 0) { + if (len + res > SHORTBUFFSIZE) { + i = SHORTBUFFSIZE - res; + len -= i; + } else { + i = len; + len = 0; + } + Strncpy(&roma[res], s2, i); + s2 += i; + roma[res + i] = '\0'; + rlen = sj3_rkconv2(roma, kstr, i + res - 1); +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + res = strlen((char *)roma); + if (rlen <= 0) + continue; + kp = kstr; + while ((c = *kp & RKMASK) != 0) { + if (c & RKZEN) { + if ((cc = sj_addten(prefix, c)) != 0) { + omode -= 1; + s1 -= 1; + *omode += GetMojilen(*kp); + c = cc; + prefix = 0; + } else { + *omode = GetMojilen(*kp); + klen += 1; + prefix = c; + } + *s1++ = (wchar16_t) c; + omode++; + kp++; + } else { + mlen = GetMojilen(*kp); + *kp = sj_han2zen(c) + SetMojilen(mlen); + } + } + } + if (res > 0) { + roma[res] = 0x0a; + roma[res + 1] = '\0'; + rlen = sj3_rkconv2(roma, kstr, res); + if (rlen > 0) { + kp = kstr; + while ((c = *kp & RKMASK) != 0x0a && c != 0) { + if (*kp & RKZEN) { + if ((cc = sj_addten(prefix, c)) != 0) { + omode -= 1; + s1 -= 1; + *omode += GetMojilen(*kp); + c = cc; + prefix = 0; + } else { + *omode = GetMojilen(*kp); + klen += 1; + prefix = c; + } + *s1++ = (wchar16_t) c; + omode++; + kp++; + } else { + mlen = GetMojilen(*kp); + *kp = sj_han2zen(c) + SetMojilen(mlen); + } + } + } else { + for (i = 0; i < res; i++) { + if (WcIsKANJI(roma[i])) { + c = roma[i]; + mlen = 1; + } else { + c = sj_han2zen(roma[i]); + mlen = 1; + } + if ((cc = sj_addten(prefix, c)) != 0) { + s1 -= 1; + omode -= 1; + *omode += mlen; + c = cc; + prefix = 0; + } else { + prefix = c; + klen += 2; + *omode = mlen; + } + *s1++ = c; + omode++; + } + } + } + *s1 = '\0'; + sj3_rkebell(rkerrbell); + return(klen); +} + + + +exec_romaji2(c, hbuf, kbuf, omode, cur, hcur) +wchar16_t c, *hbuf, *kbuf; +u_short *omode; +int cur, hcur; +{ + register u_short c1, cc; + register u_int c2; + register int i; + int ocur, len, retv; + u_int rkstr[MAXLLEN], *rkp; + + retv = 1; + ocur = cur; + if (hcur >= 0 && !is_bs(c)) + hbuf[hcur++] = c; + sj3_rkconvc(c, rkstr); + + rkp = rkstr; + while(*rkp != RKEND) { + c1 = ((c2 = *rkp++) & RKMASK); + if (c2 == ERRBEL) { + if (c != 0) + beep(); + hcur--; + break; + } + if (is_bs(c1)) { + if (cur <= 0) { + beep(); + } else { + vbackchar(2); + cur -= 1; + ocur = cur; + } + if (hcur >= 0 && is_bs(c)) { + for (i = cur; i > 0 ; i--){ + if (omode[i] & OMODE_MASK) + break; + } + hcur -= omode[i]; + while (i < cur) { + len = sj_zentohan(&hbuf[hcur],&kbuf[i],1); + omode[i] = len; + hcur += len; + i ++; + } + } + continue; + } + if (!WcIsZENKAKU(c1)) { + if (hcur >= 0 && (c2 & ERRCODE) && is_bs(c)) + hbuf[hcur++] = c1; + if (c1 == 0) { + hcur--; + break; + } else { + if (c2 & ERRCODE) + retv = 0; + c1 = sj_han2zen(c1); + } + } + if (cur >= 1) { + cc = kbuf[cur - 1]; + if ((cc = sj_addten(cc, c1)) != 0){ + c1 = cc; + vbackchar(2); + cur --; + ocur = cur; + if (hcur >= 0) { + len = omode[cur] + GetMojilen(c2); + c2 = SetMojilen(len); + } + } + } + kbuf[cur] = c1; + if (hcur >= 0) { + omode[cur] = GetMojilen(c2); + } + cur ++; + } + kbuf[cur] = '\0'; + if (hcur >= 0) + hbuf[hcur] = '\0'; + if (cur > ocur) + vprintU(&kbuf[ocur], 1); + return(retv); +} + + diff --git a/sj3/screen.c b/sj3/screen.c new file mode 100644 index 0000000..25e7cc5 --- /dev/null +++ b/sj3/screen.c @@ -0,0 +1,506 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: screen.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:22 $ + */ + + + +#include "common.h" +#include "key.h" + +#define LINE_LENGTH 80 + +static wchar16_t *Guide; +static wchar16_t Nguide[LINE_LENGTH + 1]; +static wchar16_t Cguide[LINE_LENGTH + 1]; +wchar16_t Mguide[LINE_LENGTH + 1]; + + +vbackchar (n) +register int n; +{ + register int i; + + for (i=0 ; i < n ; i++) + VBackspace (); + for (i=0 ; i < n ; i++) + Vput_space (); + for (i=0 ; i < n ; i++) + VBackspace (); + Flush (); +} + + + +wrap_off () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->wrap = 0; + cv->PushCurrentVcol = cv->CurrentVcol; +} + +wrap_on () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->wrap = 1; + cv->CurrentVcol = cv->PushCurrentVcol; +} + + + +Vput_space () +{ + register Conversion *cv; + + cv = GetConversion (); + put_space (1); + cv->Vindex[cv->Vlen ++] = cv->CurrentVcol ++; + if (cv->wrap && ((cv->CurrentVcol % cv->column) == 1)) { + put_space (1); + Backspace (); + } +} + + + +VBackspace () +{ + register Conversion *cv; + register int i; + + cv = GetConversion (); + if (cv->wrap && ((cv->CurrentVcol % cv->column) == 1)) { + Ccheck (); + i = cv->Vindex[cv->Vlen - 1] % cv->column; + if (cv->Vlen > 0 && i > 1) { + CursorSet ( + cv->SavedRow + (cv->CurrentVcol / cv->column) - 1, + cv->Vindex[cv->Vlen - 1] % cv->column + ); + } + else + CursorSet ( + cv->SavedRow + (cv->CurrentVcol / cv->column) - 1, + cv->column + ); + } + else + Backspace (); + if (cv->Vlen > 0) + cv->CurrentVcol = cv->Vindex[--(cv->Vlen)]; + else { + cv->Vlen = 0; + cv->CurrentVcol = cv->Vindex[cv->Vlen]; + } +} + + + +master_out (s, n) +wchar16_t *s; +int n; +{ + master_write (s, n); + master_flush (); +} + +master_write (s, n) +wchar16_t *s; +int n; +{ + SJ_write (s, n); +} + + + +vprintU (s, mod) +wchar16_t *s; +char mod; +{ + register Conversion *cv; + register int i, col, oldcol, len; + register u_short *p; + + cv = GetConversion (); + printU (s); + oldcol = cv->CurrentVcol % cv->column; + if (cv->wrap && (mod == 1) && (oldcol == 0)) + cv->CurrentVcol ++; + len = wcbyte (s); + p = &(cv->Vindex[cv->Vlen]); + cv->Vlen += len; + for (i = 0 ; i < len ; i ++) + *(p ++) = cv->CurrentVcol ++; + if (cv->wrap) { + col = cv->CurrentVcol % cv->column; + if (col == 1) { + put_space (1); + Backspace (); + } + if ((mod == 1) && (oldcol + len > (unsigned int)cv->column) + && ((col & 1) == 0)) { + cv->CurrentVcol ++; + } + } + *p = cv->CurrentVcol; + if (cv->CurrentVcol > cv->MaxVcol) + cv->MaxVcol = cv->CurrentVcol; + Flush (); +} + + + +vprintR (s, mod) +wchar16_t *s; +char mod; +{ + register Conversion *cv; + register int i, col, oldcol, len; + register u_short *p; + + cv = GetConversion (); + printR (s); + oldcol = cv->CurrentVcol % cv->column; + if (cv->wrap && (mod == 1) && (oldcol == 0)) + cv->CurrentVcol ++; + len = wcbyte (s); + p = &(cv->Vindex[cv->Vlen]); + cv->Vlen += len; + for (i = 0 ; i < len ; i ++) + *(p ++) = cv->CurrentVcol ++; + if (cv->wrap) { + col = cv->CurrentVcol % cv->column; + if (col == 1) { + put_space (1); + Backspace (); + } + if ((mod == 1) && (oldcol + len > (unsigned int)cv->column) + && ((col & 1) == 0)) { + cv->CurrentVcol ++; + } + } + *p = cv->CurrentVcol; + if (cv->CurrentVcol > cv->MaxVcol) + cv->MaxVcol = cv->CurrentVcol; + Flush (); +} + + + +IprintU (s, index) +wchar16_t *s; +int index; +{ + Cgoto (index); + printU (s); + Flush (); +} + + + +IprintR (s, index) +wchar16_t *s; +int index; +{ + Cgoto (index); + printR (s); + Flush (); +} + + + +printU (s) +wchar16_t *s; +{ + under_in (); + SJ_print (s); + under_out (); +} + + + +printR (s) +wchar16_t *s; +{ + reverse_in (); + SJ_print (s); + reverse_out (); +} + + + +Csave () +{ + register Conversion *cv; + + cv = GetConversion (); + CursorRead (&(cv->SavedRow), &(cv->SavedCol)); + cv->CurrentVcol = cv->SavedCol; + cv->Vlen = 0; + cv->Vindex[cv->Vlen] = cv->MaxVcol = cv->CurrentVcol; +} + +SetVcol (index) +int index; +{ + register Conversion *cv; + + cv = GetConversion (); + cv->Vlen = index; + cv->CurrentVcol = cv->Vindex[cv->Vlen]; +} + +Cload () +{ + register Conversion *cv; + + cv = GetConversion (); + CursorSet (cv->SavedRow, cv->SavedCol); +} + +Cclear (redraw) +int redraw; +{ + register Conversion *cv; + register int spaces; + u_short row, col; + + if (redraw) { + cv = GetConversion (); + CursorRead (&row, &col); + spaces = (row - cv->SavedRow) * cv->column + + (col - cv->SavedCol) + 1; + Cload (); + put_space (spaces); + } + Cload (); + Flush (); +} + +Cgoto (index) +register int index; +{ + register Conversion *cv; + register int row, col; + + cv = GetConversion (); + SetVcol (index); + row = cv->SavedRow + (int)(cv->CurrentVcol / cv->column); + col = cv->CurrentVcol % cv->column; + CursorSet (row, col); +} + +ClearToMax () +{ + register Conversion *cv; + register int space; + + cv = GetConversion (); + space = cv->MaxVcol - cv->CurrentVcol; + put_space (space); +} + +Ccheck () +{ + register Conversion *cv; + register int row, tmp, diff; + + if (Cscroll ()) { + cv = GetConversion (); + tmp = (int)(cv->CurrentVcol / cv->column); + diff = cv->CurrentVcol - (tmp * cv->column); + if (diff == 0) + tmp --; + row = cv->SavedRow + tmp; + if (row >= (unsigned int)cv->line) + cv->SavedRow -= (row - cv->line); + } +} + +spaceR (s) +register wchar16_t *s; +{ + register wchar16_t *t; + wchar16_t tmp[40]; + t = tmp; + while (*s != '\0') { + if (*s == ' ') { + *t = '\0'; + printR (tmp); + t = tmp; + put_space (1); + } + else + *(t ++) = *s; + s ++; + } + *t = '\0'; + printR (tmp); + Flush (); +} + + + +clear_guide_line () +{ + u_short row, col; + + StartGuide (&row, &col); + Clear_EOL (); + EndGuide (row, col); + Flush (); +} + +print_guide_line () +{ + u_short row, col; + + StartGuide (&row, &col); + spaceR (Guide); + Clear_EOL (); + EndGuide (row, col); + Flush (); +} + +set_guide_line (mode) +int mode; +{ + + + + switch (mode) { + case KEY_NORMAL: + wscpy (Nguide, WCSJrun); + Guide = Nguide; + break; + case KEY_CONV: + Guide = Cguide; + break; + default: + break; + } +} + +disp_mode () +{ + register Conversion *cv; + int c_code; + register wchar16_t *Pmode, *Bmode; + cv = GetConversion (); + switch (cv->Imode) { + case MODE_CODE: + c_code = GetCcode(); + switch (c_code) { + case CODE_SJIS: + Pmode = WCGCshift; + break; + case CODE_EUC: + Pmode = WCGCeuc; + break; + case CODE_JIS: + Pmode = WCGCjis; + break; + case CODE_KUTEN: + Pmode = WCGCkuten; + break; + case CODE_EUC2: + Pmode = WCGCeuc2; + break; + case CODE_JIS2: + Pmode = WCGCjis2; + break; + case CODE_KUTEN2: + Pmode = WCGCkuten2; + break; + } + break; + case MODE_ZHIRA: + Pmode = WCMode_Zhira; + break; + case MODE_ZKATA: + Pmode = WCMode_Zkata; + break; + case MODE_HKATA: + Pmode = WCMode_Hkata; + break; + case MODE_ZALPHA: + Pmode = WCMode_Zalpha; + break; + case MODE_HALPHA: + Pmode = WCMode_Halpha; + break; + default: + break; + } + switch (cv->BuffMode) { + case BUFF: + Bmode = WCMode_buff; + break; + case UNBUFF: + Bmode = WCMode_unbuff; + break; + default: + break; + } + wscpy (Cguide, Bmode); + wscat (Cguide, Pmode); + wscpy (Mguide, Cguide); + if (Hlevel > 1) + wscat (Cguide, WCGmode); + print_guide_line (); +} + +TopGuide () +{ + u_short row, col; + + StartGuide (&row, &col); +} + +guide_print (s1, s2) +wchar16_t *s1, *s2; +{ + u_short row, col; + + StartGuide (&row, &col); + if (s1) + printR (s1); + SJ_print (s2); + Clear_EOL (); + EndGuide (row, col); + Flush (); +} diff --git a/sj3/sj3.c b/sj3/sj3.c new file mode 100644 index 0000000..26dca09 --- /dev/null +++ b/sj3/sj3.c @@ -0,0 +1,1340 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3.c,v $ + * $SonyRevision: 1.7 $ + * $SonyDate: 1997/01/23 11:26:30 $ + */ + + + +#include "sj_sysvdef.h" +#include "wchar16.h" +#include +#include +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__bsdi__) +#if defined(__NetBSD__) || defined(__bsdi__) +#define USE_OLD_TTY +#if defined(__NetBSD__) +#define LACKOF_SETLOCALE +#endif +#endif +#include +#endif + +#include "select.h" +#include "common.h" +#ifdef SVR4 +#include +#include +#include +#endif +#include + +#ifndef _PATH_UTMP +#define _PATH_UTMP "/etc/utmp" +#endif + +int fail (); + + +#ifdef SVR4 +#define killpg(pid, sig) kill(-(pid),(sig)) +#define signal sigset +#endif +#ifndef linux +#define DEFAULTSHELL "/bin/csh" +#else +#define DEFAULTSHELL "/bin/sh" +#endif + +#if defined(linux) && defined (__GLIBC__) && (__GLIBC__ >= 2) +#include +#endif + +int Lflag = 0; +int shell_flag = 0; + + + +char progname[LONGLENGTH]; +char shellname[LONGLENGTH]; +char home[LONGLENGTH]; +char user_name[SHORTLENGTH]; +char term_name[SHORTLENGTH]; +char shellprog[LONGLENGTH]; +char tty_name[SHORTLENGTH]; +#ifdef SVR4 +char *slave_name; +#else +char slave_name[SHORTLENGTH]; +#endif +char *shellargs[SHORTLENGTH]; +#ifdef SVR4 +char *mptname = "/dev/ptmx"; +char *ptsname(); +#else +static char line[SHORTLENGTH]; +#endif +char *cur_serv; + +char my_hname[MAXHOSTNAMELEN]; +char **serv_list; + + + +extern int vflag; +extern char **environ; +extern int status_line; + + + + +#ifdef SYSV_TERMIOS +struct winsize Ttysize; +#define ts_lines ws_row +#define ts_cols ws_col +#else +int Ttyslot; +struct ttysize Ttysize; +#endif +int master; +int slave; +int exitprocess (); +int onwinch (); + +#ifdef SYSV_TERMIOS +struct termios b; +#else +struct sgttyb b; +struct tchars tc, tc1; +struct ltchars lc, lc1; +int lb; +int l; +#endif +#ifdef __sony_news +int jmode, jmode2; +struct jtchars jtc; +#endif +int erase_char; +wchar16_t erase_str[2]; +#ifdef SIGTYPE_VOID +void (*sigpipe)(); +#else +int (*sigpipe)(); +#endif + +int Pid_shell; + + +int current_locale; +int done(); + +main (argc, argv) +int argc; +char **argv; +{ + init (argv); + get_ttymode (); + init_messages (); + parsearg (argc, argv); + InitConversion (); + checkterm (); + getsjrc (); + print_version (); + getsjrk(erase_char); + sjinit (); + forkshell (); + inputprocess (); + done (); +} + +makecore () +{ + chdir ("/tmp"); + setgid (getgid ()); + setuid (getuid ()); + abort (); +} + + + +init (argv) +char **argv; +{ + char *cp, *strrchr (); + + (void) signal (SIGTERM, (void (*)())done); + (void) signal (SIGWINCH, SIG_IGN); + (void) signal (SIGQUIT, (void (*)())makecore); + (void) signal (SIGBUS, (void (*)())makecore); + (void) signal (SIGSEGV, (void (*)())makecore); + (void) signal (SIGFPE, (void (*)())makecore); +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ +#ifdef SIGTYPE_VOID + sigpipe = (void(*)()) signal (SIGPIPE, SIG_IGN); +#else + sigpipe = (int(*)()) signal (SIGPIPE, SIG_IGN); +#endif + + if (argv [0][0] == '-') + Lflag ++; + if ((cp = strrchr (argv [0], '/')) == NULL) + cp = argv [0]; + else + cp ++; + strcpy (progname, cp); + init_env(); +} + + + +init_env() +{ + register char *uname, *hp, *tname; + register int i; + struct passwd *pwd, *getpwnam(), *getpwuid(); + char *getlogin(), *getenv(); + + user_name[0] = '\0'; + home[0] = '\0'; + shellprog[0] = '\0'; + + gethostname(my_hname, MAXHOSTNAMELEN); + if ((serv_list = (char **)malloc(MAXSERVER * sizeof(char *))) == NULL){ + fprintf (stderr, "init_env: can't alloc memory\n\r"); + done3(); + } + for (i = 0; i < MAXSERVER; i++) + serv_list[i] = NULL; + cur_serv = NULL; + + uname = getlogin (); + hp = getenv("HOME"); + + setpwent (); + if( uname == NULL || *uname == '\0' ) + pwd = getpwuid(getuid()); + else + pwd = getpwnam(uname); + if (pwd != NULL) { + strcpy(user_name, pwd -> pw_name); + if (hp == NULL) + hp = pwd->pw_dir; + endpwent(); + } + if (hp != NULL) + strcpy(home, hp); + + if ((tname = getenv("TERM")) == NULL) { + aprintf ("Can't getenv TERM\n\r"); + perror("getenv"); + exit(1); + } + strcpy(term_name, tname); +} + + + +parsearg (argc, argv) +register int argc; +register char **argv; +{ + register int ap; + register char c; + register int sp; + register char **shella; + char *getenv(); + + shella = shellargs; + ap = 1; + -- argc; + while (argc > 0) { + if (*argv[ap] == '-') { + c = argv[ap][1]; + switch (c) { + case 'L': + Lflag ++; + break; + case 'E': + aprintf ("euc mode\n\r"); + set_eucmode (); + break; + case 'V': + vflag = 0; + break; + case 'v': + aprintf ("verbose\n\r"); + vflag ++; + break; + case 'f': + if (argv[ap + 1] == (char *) NULL) + usage (); + strcpy (shellprog, argv[ap+1]); + shell_flag ++; + break; + case 'e': + if (argv[ap + 1] == (char *) NULL) + usage (); + strcpy (shellprog, argv[++ap]); + sp = 0; + while (argv[ap] != (char *) NULL) + shella[sp++] = argv[ap++]; + shella[sp] = (char *) NULL; + break; +#ifdef OKB + case 'o': + oasys ++; + break; +#endif + case 'H': + if (argv[ap + 1] == (char *) NULL) + usage(); + + + sp = 0; + while (argc > 1 && *argv[ap + 1] != '-') { + if (sp >= MAXSERVER) + break; + serv_list[sp++] = argv[ap + 1]; + ap++; + argc--; + } + cur_serv = serv_list[0]; + + + break; + case 'h': + default: + usage (); + break; + } + } + argc --; + ap ++; + } + if (cur_serv == NULL || *cur_serv == '\0') + setsjserv(getenv("SJ3SERV")); +} + + + +usage() +{ + aprintf ("Usage: %s [-option ...]\n\r", progname); + aprintf ("\t-option\n\r"); + aprintf ("\t\t-h \thelp\n\r"); + aprintf ("\t\t-L \tlogin shell\n\r"); + aprintf ("\t\t-f shellname \texec shell name\n\r"); + aprintf ("\t\t-e command... \texec command arguments\n\r"); +#ifdef OKB + aprintf ("\t\t-o \toyayubi shift keyboard\n\r"); +#endif + aprintf ("\t\t-H hostname... \tname list of server hosts\n\r"); + if (vflag > 2) { + aprintf ("\t\t-v \tverbose mode\n\r"); + aprintf ("\t\t-E \tEUC mode\n\r"); + } + exit (1); +} + + + +sjinit () +{ + getfixtty (); + setshellname (); + + if (cur_serv == NULL) + cur_serv = serv_list[0] = my_hname; + SJ2_henkan_init (); + start_guideline (); +} + + + +setshellname () +{ + register char *s; + char *namep, *strrchr (), *getenv(); + + if (shellprog[0] == '\0') { + s = getenv ("SHELL"); + if ((s == NULL) || (*s == '\0') || Lflag) + strcpy (shellprog, DEFAULTSHELL); + else + strcpy (shellprog, s); + } + if (Lflag) + strcpy (shellname, "-"); +#ifndef SVR4 + else + strcpy (shellname, "J"); +#endif + if ((namep = strrchr (shellprog, '/')) == NULL) + namep = shellprog; + else + namep ++; + strcat (shellname, namep); + strcat (shellname, "["); + strcat (shellname, user_name); + strcat (shellname, " on "); + strcat (shellname, progname); + strcat (shellname, "]"); +} + + + +getfixtty () +{ + getmaster (); + fixtty (); + setdev (); +} + + + +get_ttymode () +{ +#ifdef SYSV_TERMIOS + ioctl (0, TCGETS, (char *)&b); + erase_char = b.c_cc[VERASE]; + set_bs(erase_char); + erase_str[0] = erase_char; + erase_str[1] = '\0'; +#else + ioctl (0, TIOCGETP, (char *)&b); + erase_char = b.sg_erase; + set_bs(erase_char); + erase_str[0] = erase_char; + erase_str[1] = '\0'; + ioctl (0, TIOCGETC, (char *)&tc); + ioctl (0, TIOCGETC, (char *)&tc1); + ioctl (0, TIOCGETD, (char *)&l); + ioctl (0, TIOCGLTC, (char *)&lc); + ioctl (0, TIOCGLTC, (char *)&lc1); + ioctl (0, TIOCLGET, (char *)&lb); +#endif +#ifdef __sony_news + ioctl (0, TIOCKGET, (char *)&jmode); + jmode2 = set_jmode (jmode); + ioctl (0, TIOCKGETC, (char *)&jtc); +#else + (void) set_jmode(); +#endif +} + + + +getmaster () +{ +#ifdef SVR4 + struct stat stb; + + if ((master = open(mptname, O_RDWR)) < 0) { + aprintf ("Out of pty's\n\r"); + done3 (); + } + + ioctl(master, I_PUSH, "pckt"); +#else +/* + * Change pseudo-devices. + * Because FreeBSD's master pseudo-devices are pty[p-sP-S][0-9a-v]. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ +#if defined(__FreeBSD__) + struct stat stb; + int h, i, j, k1, k2; +#else /* !__FreeBSD__ */ + char c; + struct stat stb; + int i, j, k1, k2; +#endif /* __FreeBSD__ */ + + strcpy(line, "/dev/ptyXX"); + + k1 = strlen("/dev/pty"); + k2 = strlen ("/dev/ptyp"); + +/* + * Change pseudo-devices. + * Because FreeBSD's master pseudo-devices are pty[p-sP-S][0-9a-v]. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ +#if defined(__FreeBSD__) + for (h = 0; h < 8; h++) { + line[k1] = "pqrsPQRS"[h]; + line[k2] = '0'; + if (stat (line, &stb) < 0) + break; + for (i = 0; i < 32; i++) { + line[k2] = "0123456789abcdefghijklmnopqrstuv"[i]; +#else /* !__FreeBSD__ */ + for (c = 'p'; c <= 'z'; c ++) { + line[k1] = c; + line[k2] = '0'; + if (stat (line, &stb) < 0) + break; + for (i = 0; i < 16; i++) { + line[k2] = "0123456789abcdef"[i]; +#endif /* __FreeBSD__ */ + master = open (line, 2); + if (master >= 0) { + j = 1; + ioctl (master, TIOCPKT, &j); + return; + } + } + } + aprintf ("Out of pty's\n\r"); + done3 (); +#endif +} + +set_jmode (mode) +register int mode; +{ +#ifdef __sony_news + register int term_mode; + + term_mode = mode & KM_KANJI; + if (term_mode == KM_JIS) { + aprintf ("error: tty jis terminal mode\n\r"); + fflush (stdout); + exit (1); + } + if (term_mode == KM_ASCII) { + aprintf ("error: tty ascii terminal mode\n\r"); + fflush (stdout); + exit (1); + } + else if (term_mode == KM_EUC) { + set_eucmode (); + mode &= ~KM_SYSSJIS; + mode |= KM_SYSEUC; + (void) setlocale(LC_CTYPE, "ja_JP.EUC"); + current_locale = LC_CTYPE_EUC; + } + else if (term_mode == KM_SJIS) { + mode &= ~KM_SYSEUC; + mode |= KM_SYSSJIS; + (void) setlocale(LC_CTYPE, "ja_JP.SJIS"); + current_locale = LC_CTYPE_SHIFTJIS; + } else { + aprintf ("error: unknown tty terminal code\n\r"); + fflush (stdout); + exit (1); + } + return (mode); +#else + char *loc; + +#ifdef LACKOF_SETLOCALE + loc = getenv("LANG"); +#else + loc = setlocale(LC_CTYPE, ""); +#endif + if (!loc) { + aprintf("error: bad locale\n"); + fflush(stdout); + exit(1); + } + if (strcmp(loc, "ja_JP.SJIS") == 0) { + current_locale = LC_CTYPE_SHIFTJIS; + } else if (strncmp(loc, "ja", 2) == 0 || + strncmp(loc, "Ja", 2) == 0) { + current_locale = LC_CTYPE_EUC; + set_eucmode(); + } else { + aprintf("error: This locale will not use japanese.\n"); + fflush(stdout); + exit(1); + } +#endif /* __sony_news */ +} + + + +fixtty () +{ +#ifdef SYSV_TERMIOS + struct termios sbuf; + + sbuf = b; + sbuf.c_iflag &= ~(INLCR|IGNCR|ICRNL|IUCLC|IXON); + sbuf.c_oflag &= ~(ONLCR|OPOST); + sbuf.c_lflag &= ~(ICANON|ECHO); + sbuf.c_cc[VMIN] = 1; + sbuf.c_cc[VTIME] = 0; + sbuf.c_cc[VINTR] = 0; + sbuf.c_cc[VQUIT] = 0; + sbuf.c_cc[VSUSP] = 0; +#ifdef VDSUSP + sbuf.c_cc[VDSUSP] = 0; +#endif /* VDSUSP */ + sbuf.c_cc[VREPRINT] = 0; + sbuf.c_cc[VDISCARD] = 0; + sbuf.c_cc[VWERASE] = 0; + sbuf.c_cc[VLNEXT] = 0; + (void) ioctl(0, TCSETSW, (char *)&sbuf); +#else + struct sgttyb sbuf; + + sbuf = b; + sbuf.sg_flags &= ~(EVENP|ODDP|ECHO|CRMOD|RAW|TBDELAY); + sbuf.sg_flags |= CBREAK; + sbuf.sg_flags |= TANDEM; + ioctl (0, TIOCSETN, (char *)&sbuf); + + + + tc1.t_intrc = -1; + tc1.t_quitc = -1; + tc1.t_eofc = -1; + ioctl (0, TIOCSETC, (char *)&tc1); + + lc1.t_suspc = -1; + lc1.t_dsuspc = -1; + lc1.t_rprntc = -1; + lc1.t_flushc = -1; + lc1.t_werasc = -1; + lc1.t_lnextc = -1; + ioctl (0, TIOCSLTC, (char *)&lc1); +#endif + +#ifdef __sony_news + ioctl (0, TIOCKSET, (char *)&jmode2); +#endif +} + +#ifdef BSD43 +#include +#endif + +setdev () +{ + char *cp, *ttyname (); +#ifdef BSD43 + struct group *ttygrp; +#endif + register Conversion *cv; + + cv = current_conversion; + + if (cp = ttyname (2)) + strcpy (tty_name, cp); + else + *tty_name = '\0'; +#ifndef SVR4 + strcpy (slave_name, line); + slave_name[strlen ("/dev/")] = 't'; +#endif +#ifdef BSD43 + if (ttygrp = getgrnam ("tty")) + chown(slave_name, getuid(), ttygrp->gr_gid); + else + chown(slave_name, getuid(), getgid()); + chmod(slave_name, 0620); +#else + chown(slave_name, getuid(), getgid()); + chmod(slave_name, 0622); +#endif +#ifndef SYSV_TERMIOS + Ttyslot = nmttyslot (slave_name); +#endif + + + +#ifdef SYSV_TERMIOS + if (ioctl(0, TIOCGWINSZ, &Ttysize) == 0) { +#else + if (ioctl(0, TIOCGSIZE, &Ttysize) == 0) { +#endif + if (!status_line) + --Ttysize.ts_lines; + if (Ttysize.ts_lines < 1) { + aprintf ("not enough lines\n\r"); + done3 (); + } + if (Ttysize.ts_cols < 1) { + aprintf ("not enough columns\n\r"); + done3 (); + } + cv->line = Ttysize.ts_lines; + cv->column = Ttysize.ts_cols; + SetRegion (); + } else { + if (cv->line < 1) cv->line = 24; + if (cv->column < 1) cv->column = 80; + Ttysize.ts_lines = cv->line; + Ttysize.ts_cols = cv->column; + if (ioctl(0, TIOCSWINSZ, &Ttysize) < 0) { + aprintf("Warnning: Can't get tty size, use rows(%d) and columns(%d).\n\r", + cv->line, cv->column); + } + if (!status_line) { + Ttysize.ts_lines--; + cv->line--; + } + SetRegion (); + } + if (cv->column < MINCOL) { + if (Hlevel > 1) + Hlevel = 1; + } + else if (HHlevel > 1) { + Hlevel = 2; + } + + if (vflag > 1) { + aprintf ("line %d\n\r", cv->line); + aprintf ("column %d\n\r", cv->column); + } + +#ifndef SVR4 +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + (void) signal (SIGCHLD, (void (*)())exitprocess); +#endif +} + + + +static char shellbuf[128]; + +forkshell () +{ +#ifdef SVR4 + struct sigaction action; + sigset_t sset; +#endif + Pid_shell = fork (); + if (Pid_shell < 0) { + perror ("fork"); + done (); + } + if (Pid_shell == 0) { + shellprocess (); + } + + if (vflag > 1) { + aprintf ("sj3 pid = %d\n\r", getpid ()); + aprintf ("shell pid = %d\n\r", Pid_shell); + } + + (void) signal (SIGHUP, (void (*)())fail); + (void) signal (SIGINT, (void (*)())fail); + (void) signal (SIGTERM, (void (*)())fail); + (void) signal (SIGWINCH, (void (*)())onwinch); +#ifdef SVR4 + (void) sigemptyset(&sset); + (void) sigaddset(&sset, SIGCHLD); + action.sa_handler = (void (*)()) exitprocess; + action.sa_mask = sset; + action.sa_flags = SA_RESTART; + (void) sigaction(SIGCHLD, &action, NULL); +#endif +} + +sj3_setenv (ename, eval, buf) + char *ename, *eval, *buf; +{ + register char *cp, *dp; + register char **ep = environ; + + + + while (dp = *ep++) { + for (cp = ename; *cp == *dp && *cp; cp++, dp++) + continue; + if (*cp == 0 && (*dp == '=' || *dp == 0)) { + strcat(buf, eval); + *--ep = buf; + return; + } + } +} + + + +shellprocess () +{ + int t, f; +#ifdef SYSV_TERMIOS +#ifdef SYSV_UTMP + struct utmp Utmp; +#else + struct utmpx Utmp; +#endif + + + setsid(); + getslave (); + + memset ((char *) &Utmp, '\0', sizeof (Utmp)); + (void) strncpy(Utmp.ut_user, user_name, sizeof(Utmp.ut_user)); + (void) strncpy(Utmp.ut_line, &slave_name[sizeof("/dev/")-1], + sizeof(Utmp.ut_line)); + Utmp.ut_type = USER_PROCESS; +#ifdef SYSV_UTMP + Utmp.ut_pid = (pid_t)getpid(); + strncpy(Utmp.ut_id, &Utmp.ut_line[2], 4); + Utmp.ut_id[0] = 't'; + Utmp.ut_time = time(0); + setutent(); + getutid(&Utmp); + pututline(&Utmp); + endutent(); +#else + Utmp.ut_pid = (o_pid_t)getpid(); + Utmp.ut_id[0] = 's'; + Utmp.ut_id[1] = 'j'; + Utmp.ut_id[2] = SC_WILDC; + Utmp.ut_id[3] = SC_WILDC; + Utmp.ut_exit.e_termination = 0; + Utmp.ut_exit.e_exit = 0; + (void) time (&Utmp.ut_tv.tv_sec); + if (makeutx(&Utmp) == NULL) + aprintf ("%s:\tmakeutx failed\r\n", progname); +#endif /* SYSV_UTMP */ +#else /* SYSV_TERMIOS */ + struct utmp Utmp; + register char *p; +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + char *ttyname (), *strrchr (); +#define SCPYN(a, b) strncpy(a, b, sizeof(a)) + + if ((p = ttyname (0)) == NULL) + SCPYN(Utmp.ut_host, progname); + else { + SCPYN(Utmp.ut_host, progname); + strcat (Utmp.ut_host, " on "); + p = strrchr (p, '/') + 1; + strcat (Utmp.ut_host, p); + } + SCPYN(Utmp.ut_name, user_name); + SCPYN(Utmp.ut_line, strrchr (slave_name, '/') + 1); + time (&Utmp.ut_time); + +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__bsdi__) + if (setsid() < 0) + perror("setsid()"); +#else + t = open ("/dev/tty", 2); + if (t >= 0) { + ioctl (t, TIOCNOTTY, (char *)0); + (void) close(t); + } +#endif + + getslave (); +#endif /* SYSV_TERMIOS */ + (void) close (master); + dup2 (slave, 0); + dup2 (slave, 1); + dup2 (slave, 2); + (void) close (slave); + +#ifndef SYSV_TERMIOS + if (Ttyslot > 0 && (f = open (_PATH_UTMP, 1)) >= 0) { + lseek (f, (long) (Ttyslot * sizeof (Utmp)), 0); + write (f, (char *)&Utmp, sizeof (Utmp)); + close (f); + } +#endif /* SYSV_TERMIOS */ + + setgid (getgid ()); + setuid (getuid ()); + + if (shellargs[0] == (char *) NULL) { + shellargs[0] = shellname; + shellargs[1] = (char *) 0; + } + +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + (void) signal (SIGPIPE, (void (*)())sigpipe); + if ( *shellprog == '/' ) { + if (shell_flag) { + strcpy (shellbuf, "SHELL="); + sj3_setenv("SHELL", shellprog, shellbuf); + } + (void) execve (shellprog, shellargs, environ); + } + else + execcmd (shellprog, shellargs); + + perror (shellprog); + exit (1); +} + + + +getslave () +{ +#ifdef SVR4 + grantpt(master); + unlockpt(master); + slave_name = ptsname(master); + slave = open(slave_name, O_RDWR); + if (slave < 0) { + perror(slave_name); + done2(); + } + ioctl(slave, I_PUSH, "ptem"); + ioctl(slave, I_PUSH, "ldterm"); + ioctl(slave, I_PUSH, "ttcompat"); + + (void) ioctl(slave, TCSETSF, (char *)&b); + (void) ioctl(slave, TIOCSWINSZ, (char *)&Ttysize); +#ifdef __sony_news + (void) ioctl(slave, TIOCKSET, (char *)&jmode); + (void) ioctl(slave, TIOCKSETC, (char *)&jtc); +#endif +#else + line[strlen ("/dev/")] = 't'; + slave = open (line, 2); + if (slave < 0) { + perror (line); + done2 (); + } +#ifndef SYSV_TERMIOS +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__bsdi__) + ioctl(slave, TIOCSCTTY, NULL); +#endif + ioctl (slave, TIOCSETP, (char *)&b); + ioctl (slave, TIOCSETC, (char *)&tc); + ioctl (slave, TIOCSLTC, (char *)&lc); + ioctl (slave, TIOCLSET, (char *)&lb); + ioctl (slave, TIOCSETD, (char *)&l); +#ifdef __sony_news + ioctl (slave, TIOCKSET, (char *)&jmode); + ioctl (slave, TIOCKSETC, (char *)&jtc); +#endif + ioctl (slave, TIOCSSIZE, &Ttysize); +#else /* SYSV_TERMIOS */ + (void) ioctl(slave, TCSETSF, (char *)&b); + (void) ioctl(slave, TIOCSWINSZ, (char *)&Ttysize); +#endif /* SYSV_TERMIOS */ +#endif /* SVR4 */ +} + + + +execcmd (cmd, ap) +char *cmd, **ap; +{ + int c; + char *getenv (); + char *path, *cp, fullcmd[BUFSIZ]; + + path = getenv ("PATH"); + cp = fullcmd; + + while (c = *path++) { + if (c == ':') { + *cp++ = '/'; + *cp = '\0'; + cp = fullcmd; + (void) strcat (cp, cmd); + if (shell_flag) { + strcpy (shellbuf, "SHELL="); + sj3_setenv ("SHELL", cp, shellbuf); + } + (void) execve (cp, ap, environ); + cp = fullcmd; + } else + *cp++ = c; + } + + *cp++ = '/'; + *cp = '\0'; + cp = fullcmd; + (void) strcat (cp, cmd); + if (shell_flag) { + strcpy (shellbuf, "SHELL="); + sj3_setenv ("SHELL", cp, shellbuf); + } + (void) execve (cp, ap, environ); +} + + + +fail () +{ + (void) kill (0, SIGTERM); + done (); +} + + + +done () +{ + (void) signal (SIGWINCH, SIG_IGN); + + clear_guide_line (); + end_guideline (); + done2 (); +} + +done2 () +{ + chown (slave_name, 0, 0); + chmod (slave_name, 0666); +#ifdef SYSV_TERMIOS + ioctl (0, TCSETSW, (char *)&b); +#else /* SYSV_TERMIOS */ + ioctl (0, TIOCSETP, (char *)&b); + ioctl (0, TIOCSETC, (char *)&tc); + ioctl (0, TIOCSLTC, (char *)&lc); +#endif /* SYSV_TERMIOS */ +#ifdef __sony_news + ioctl (0, TIOCKSET, (char *)&jmode); +#endif + if (!status_line) { + ++Ttysize.ts_lines; + SetRegion(); + } + clearutmpentry (); + SJ2_henkan_end (); + EndConversion (); + done3 (); +} + +done3 () +{ + aprintf ("\r\nexit %s.\r\n", progname); + exit (0); +} + + + +exitprocess () +{ +#ifdef SVR4 + siginfo_t info; + + (void) waitid (P_ALL, 0, &info, + WNOHANG | WUNTRACED | WEXITED | WTRAPPED | WCONTINUED); + if ((info.si_code == CLD_CONTINUED) ||(info.si_code == CLD_TRAPPED)) + return; + if (info.si_code == CLD_STOPPED) +#else + union wait status; + int pid; + +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + pid = wait3 ((int *)&status, (WNOHANG|WUNTRACED), 0); + if (WIFSTOPPED (status)) +#endif + suspend(); + else + done (); +} + + + +suspend () +{ +#ifdef SIGTYPE_VOID + void (*old_sigtstp) (); +#else + int (*old_sigtstp) (); +#endif + SELECT_FD ifds; + int nc; + struct timeval t; + extern int errno; + + clear_guide_line (); + + do { +cont: + t.tv_sec = 0; + t.tv_usec = UsecWeight (1); + FD_ZERO (&ifds); + FD_SET (master, &ifds); + if (select (master + 1, &ifds, 0, 0, &t) > 0) { + if (FD_ISSET (master, &ifds)) + output_master (); + } + else if (errno == EINTR) { + errno = 0; + goto cont; + } + if (ioctl (master, TIOCOUTQ, &nc) < 0) +#ifdef SVR4 + break; +#else + fail (); +#endif + } while (nc > 0); + +#ifdef SYSV_TERMIOS + ioctl (0, TCSETSW, (char *)&b); +#else /* SYSV_TERMIOS */ + ioctl (0, TIOCSETP, (char *)&b); + ioctl (0, TIOCSETC, (char *)&tc); + ioctl (0, TIOCSLTC, (char *)&lc); +#endif /* SYSV_TERMIOS */ +#ifdef __sony_news + ioctl (0, TIOCKSET, (char *)&jmode); +#endif + + if (!status_line) { + ++Ttysize.ts_lines; + SetRegion(); + } + +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ +#ifdef SIGTYPE_VOID + old_sigtstp = (void(*)()) signal (SIGTSTP, SIG_DFL); +#else + old_sigtstp = (int(*)()) signal (SIGTSTP, SIG_DFL); +#endif + + kill (0, SIGTSTP); + + + +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + (void) signal (SIGTSTP, (void (*)())old_sigtstp); + killpg (Pid_shell, SIGCONT); + fixtty (); + + if (!status_line) { + --Ttysize.ts_lines; + SetRegion(); + } + + print_guide_line (); +} + +#ifdef SVR4 +clearutmpentry() +{ + struct utmpx *up; +#ifdef SVR4 + struct sigaction action; + sigset_t sset; + + sigemptyset(&sset); + sigaddset(&sset, SIGCHLD); + action.sa_handler = SIG_IGN; + action.sa_mask = sset; + action.sa_flags = SA_RESTART; + (void) sigaction(SIGCHLD, &action, NULL); +#else + signal(SIGCHLD, SIG_IGN); +#endif + setutxent(); + while ( (up = getutxent()) ) { + if (up->ut_pid != (o_pid_t)Pid_shell) + continue; + up->ut_type = DEAD_PROCESS; + up->ut_exit.e_termination = 0; + up->ut_exit.e_exit = 0; + (void) time (&up->ut_tv.tv_sec); + if (modutx(up) == NULL) + aprintf("%s:\tmodutx failed\r\n", progname); + break; + } + endutxent(); +#ifdef SVR4 + action.sa_handler = (void (*)()) exitprocess; + action.sa_mask = sset; + action.sa_flags = SA_RESTART; + (void) sigaction(SIGCHLD, &action, NULL); +#else + signal (SIGCHLD, (void (*)())exitprocess); +#endif +} +#else /* SVR4 */ +#ifdef SYSV_UTMP +clearutmpentry () +{ + struct utmp Utmp; + + memset ((char *) &Utmp, '\0', sizeof (Utmp)); + (void) strncpy(Utmp.ut_user, user_name, sizeof(Utmp.ut_user)); + (void) strncpy(Utmp.ut_line, &slave_name[sizeof("/dev/")-1], + sizeof(Utmp.ut_line)); + Utmp.ut_type = DEAD_PROCESS; + Utmp.ut_pid = (pid_t)getpid(); + strncpy(Utmp.ut_id, &Utmp.ut_line[2], 4); + Utmp.ut_id[0] = 't'; + Utmp.ut_time = time(0); + setutent(); + getutid(&Utmp); + pututline(&Utmp); + endutent(); +} +#else /* SYSV_UTMP */ +clearutmpentry () +{ + int f; + struct utmp Utmp; + + Utmp.ut_line[0] = '\0'; + Utmp.ut_name[0] = '\0'; + Utmp.ut_host[0] = '\0'; + Utmp.ut_time = 0; + + if (Ttyslot > 0 && (f = open (_PATH_UTMP, 1)) >= 0) { + lseek (f, (long) (Ttyslot * sizeof (Utmp)), 0); + write (f, (char *)&Utmp, sizeof (Utmp)); + close (f); + } +} +#endif /* SYSV_UTMP */ +#endif /* SVR4 */ + + + +onwinch () +{ + int ttypgrp; + register Conversion *cv; + + cv = current_conversion; + (void) signal (SIGWINCH, SIG_IGN); + +#ifdef SYSV_TERMIOS + if (ioctl (0, TIOCGWINSZ, &Ttysize) == 0) { +#else /* SYSV_TERMIOS */ + if (ioctl (0, TIOCGSIZE, &Ttysize) == 0) { +#endif /* SYSV_TERMIOS */ + if (!status_line) { + clear_guide_line (); + --Ttysize.ts_lines; + } + + cv->line = Ttysize.ts_lines; + cv->column = Ttysize.ts_cols; + + if (cv->column < MINCOL) { + if (Hlevel > 1) + Hlevel = 1; + } + else if (HHlevel > 1) { + Hlevel = 2; + } + + SetRegion(); + if (!status_line) { + print_guide_line (); + } + + + + killpg (Pid_shell, SIGWINCH); + + if (ioctl (master, TIOCGPGRP, &ttypgrp) == 0) + killpg (ttypgrp, SIGWINCH); + } + + (void) signal (SIGWINCH, (void (*)())onwinch); +} + +SetRegion () +{ + set_tty_size (); + + if (!status_line) + RegionSet (1, Ttysize.ts_lines); +} + +set_tty_size () +{ + +#ifdef SYSV_TERMIOS + ioctl (master, TIOCSWINSZ, &Ttysize); +#else /* SYSV_TERMIOS */ + ioctl (master, TIOCSSIZE, &Ttysize); +#endif /* SYSV_TERMIOS */ +} + +setsjserv(hname) +char *hname; +{ + register char *p; + register int i; + char *sbuf; + + if (hname == NULL || *hname == '\0') + return; + if ((sbuf = (char *)malloc(strlen(hname))) == NULL) { + fprintf(stderr, "setsjserv: can't alloc memory\n\r"); + done3(); + } + strcpy(sbuf, hname); + p = sbuf; + for (i = 0; i < MAXSERVER; i++) { + serv_list[i] = p; + while(*p != '\0' && *p != ' ' && *p != '\t') + p++; + if (*p == '\0') + break; + *p++ = '\0'; + } + cur_serv = serv_list[0]; +} + +char * +chmyhname(hname) +char *hname; +{ + if (hname != NULL) { + if (strcmp(my_hname, hname) == 0 || + strcmp("localhost", hname) == 0) + hname = NULL; + } + return(hname); +} diff --git a/sj3/sj3ver.c b/sj3/sj3ver.c new file mode 100644 index 0000000..1fd0e87 --- /dev/null +++ b/sj3/sj3ver.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3ver.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:24 $ + */ + + + +#include "sj2.h" + +print_version () +{ + extern int vflag; + extern char *version; + extern char *Date; + extern char *Copyright; + extern char *Allrights; + + if (vflag == 1) { + aprintf ("%s\n\r%s\n\r%s\n\r%s\n\r", version, Date, Copyright, Allrights); + fflush (stdout); + } +} diff --git a/sj3/sjgetchar.c b/sj3/sjgetchar.c new file mode 100644 index 0000000..f59937b --- /dev/null +++ b/sj3/sjgetchar.c @@ -0,0 +1,490 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sjgetchar.c,v $ + * $SonyRevision: 1.5 $ + * $SonyDate: 1997/01/23 11:26:31 $ + */ + + + +#include "sj_sysvdef.h" +#include "wchar16.h" +#include "kctype.h" +#ifdef SVR4 +#include +#include +#include +#include +#endif +#ifdef linux +#include +#include +#endif +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__bsdi__) +#if defined(__NetBSD__) || defined(__bsdi__) +#define USE_OLD_TTY +#endif +#include +#endif + +#include +#include +#include "sj2.h" +#include "select.h" + +#if !defined(FREAD) && defined(O_RDONLY) +#define FREAD (O_RDONLY+1) +#define FWRITE (O_WRONLY+1) +#endif + +#define Isknj1(s) ((eucmode) ? (iseuc(s) || (SS2 == (s))) : (issjis1(s))) +#define Isknj2(s) ((eucmode) ? (SS3 == (s)) : 0) + +static wchar16_t backup = (wchar16_t) 0; + +static int eucmode = 0; +extern int master; +extern int errno; + +wchar16_t SJ_getchar() +{ + SELECT_FD ifds; + wchar16_t c; + + if (backup) { + if (SJ_read (&c, 1) > 0) + return (c); + } + for (;;) { + FD_ZERO (&ifds); + FD_SET (STDIN, &ifds); + FD_SET (master, &ifds); + if (select (master + 1, &ifds, 0, 0, 0) <= 0) { + if (errno == EINTR) { + errno = 0; + continue; + } else + return (EOF); + } + + if (FD_ISSET (STDIN, &ifds)) { + if (SJ_read (&c, 1) > 0) { + if (FD_ISSET (master, &ifds)) { + output_master(); + } + return (c); + } + return (EOF); + } + if (FD_ISSET (master, &ifds)) { + output_master(); + } + } +} + +#ifdef SVR4 +#define TIOCPKT_DOSTOP 0x10 +#define TIOCPKT_NOSTOP 0x20 + +static int stopmode = TIOCPKT_DOSTOP; +static char stopc = CTRL('s'); +static char startc = CTRL('q'); +static char outbuf[BUFSIZ]; +extern int slave; +extern char *slave_name, *ptsname(); + +output_master() +{ + struct strbuf ctlbuf; + struct strbuf databuf; + int flags = 0; + u_char ctlstuff; + int f, stop, ixon, ret; + register struct iocblk *ioc; + register struct termios *tp; + register struct termio *ti; + struct tchars tc, tc1; + + memset((char *)&ctlbuf, '\0', sizeof(ctlbuf)); + memset((char *)&databuf,'\0', sizeof(databuf)); + ctlbuf.maxlen = sizeof(ctlstuff); + ctlbuf.buf = (char *)&ctlstuff; + databuf.maxlen = BUFSIZ; + databuf.buf = outbuf; + if ((ret = getmsg(master, &ctlbuf, &databuf, &flags)) == -1) { + return; + } + if (ctlbuf.len <= 0) { + errno = EWOULDBLOCK; + return; + } + if (ret & MORECTL) { + errno = EWOULDBLOCK; + return; + } + if ((ctlstuff != M_DATA) && (ret & MOREDATA)) { + errno = EWOULDBLOCK; + return; + } + if (ctlbuf.len != sizeof(ctlstuff)) { + errno = EWOULDBLOCK; + return; + } + switch (ctlstuff) { + case M_DATA: + + write_stdout((u_char *)&outbuf[0], databuf.len); + fflush (stdout); + while (ret & MOREDATA) { + if ((ret = getmsg(master, &ctlbuf, &databuf, &flags)) == -1) { + return; + } + write_stdout((u_char *)&outbuf[0], databuf.len); + fflush (stdout); + } + return; + break; + + case M_FLUSH: + if (databuf.len <= 0) { + errno = EWOULDBLOCK; + return; + } + fflush (stdout); + break; + + case M_IOCTL: + ioc = (struct iocblk *)databuf.buf; + if (databuf.len <= sizeof(struct iocblk)) { + errno = EWOULDBLOCK; + return; + } + switch (ioc->ioc_cmd) { + case TCSETS: + case TCSETSW: + case TCSETSF: + if (databuf.len < (sizeof(struct termios) + + sizeof(struct iocblk))) { + errno = EWOULDBLOCK; + return; + } + tp = (struct termios *)(databuf.buf + sizeof (struct iocblk)); + stopc = tp->c_cc[VSTOP]; + startc = tp->c_cc[VSTART]; + ixon = tp->c_iflag & IXON; + break; + case TCSETA: + case TCSETAW: + case TCSETAF: + if (databuf.len < (sizeof (struct termio) + + sizeof (struct iocblk))) { + errno = EWOULDBLOCK; + return; + } + ti = (struct termio *)(databuf.buf + sizeof (struct iocblk)); + ixon = ti->c_iflag & IXON; + break; + + default: + errno = EWOULDBLOCK; + return; + } + stop = (ixon && (stopc == CTRL('s')) && (startc == CTRL('q'))); + if (stopmode == TIOCPKT_NOSTOP) { + if (stop) { + ioctl (STDOUT, TIOCGETC, &tc); + + + if (slave == 0) { + slave_name = ptsname(master); + slave = open(slave_name, O_RDWR); + } + ioctl (slave, TIOCGETC, &tc1); + tc.t_stopc = tc1.t_stopc; + tc.t_startc = tc1.t_startc; + ioctl (STDOUT, TIOCSETC, &tc); + stopmode = TIOCPKT_DOSTOP; + } + } else { + if (!stop) { + ioctl (STDOUT, TIOCGETC, &tc); + tc.t_stopc = -1; + tc.t_startc = -1; + ioctl (STDOUT, TIOCSETC, &tc); + stopmode = TIOCPKT_NOSTOP; + } + } + errno = EWOULDBLOCK; + return; + break; + default: + + errno = EWOULDBLOCK; + return; + break; + } +} +#else +#if defined(linux) && defined (__GLIBC__) && (__GLIBC__ >= 2) +#include +#endif + +output_master() +{ + register int n, m; + char outbuf[BUFSIZ]; + int f; +#ifdef SYSV_TERMIOS + struct termios tc, tc1; +#else + struct tchars tc, tc1; +#endif + extern int master; + + if ((n = read (master, outbuf, BUFSIZ)) > 0) { + m = outbuf[0]; + if (m == TIOCPKT_DATA) { + + write_stdout((u_char *)&outbuf[1], n - 1); + + fflush (stdout); + return; + } + else if (m & (TIOCPKT_FLUSHREAD | TIOCPKT_FLUSHWRITE)) { + f = 0; + if (m & TIOCPKT_FLUSHREAD) + f |= FREAD; + if (m & TIOCPKT_FLUSHWRITE) + f |= FWRITE; + fflush (stdout); +#ifdef TCFLSH + ioctl (STDOUT, TCFLSH, &f); +#else + ioctl (STDOUT, TIOCFLUSH, &f); +#endif + } + else if (m & TIOCPKT_NOSTOP) { +#ifdef SYSV_TERMIOS + ioctl (1, TCGETS, &tc); + tc.c_cc[VSTOP] = 0; + tc.c_cc[VSTART] = 0; + ioctl (STDOUT, TCSETS, &tc); +#else + + ioctl (1, TIOCGETC, &tc); + tc.t_stopc = -1; + tc.t_startc = -1; + ioctl (STDOUT, TIOCSETC, &tc); +#endif + } + else if (m & TIOCPKT_DOSTOP) { +#ifdef SYSV_TERMIOS + ioctl (master, TCGETS, &tc1); + ioctl (STDOUT, TCGETS, &tc); + tc.c_cc[VSTOP] = tc1.c_cc[VSTOP]; + tc.c_cc[VSTART] = tc1.c_cc[VSTART]; + ioctl (STDOUT, TCSETS, &tc); +#else + ioctl (master, TIOCGETC, &tc1); + ioctl (STDOUT, TIOCGETC, &tc); + tc.t_stopc = tc1.t_stopc; + tc.t_startc = tc1.t_startc; + ioctl (STDOUT, TIOCSETC, &tc); +#endif + } + } +} +#endif + +set_eucmode () +{ + eucmode = 1; +} + +SJ_write (s, n) +wchar16_t *s; +register int n; +{ + register int val; + wchar16_t wb[BUFFLENGTH]; + u_char buff[BUFFLENGTH * 3]; + + wsncpy(wb, s, n); + wb[n] = 0; + val = wcstombs((char *) buff, wb, (size_t) n * 3); + if ((val == 0) && n) { + int i; + val = n; + for (i = 0; i <= n; i++) + buff[i] = 0; + } + if (val > 0) + val = write(master, buff, val); + return(val); +} + +write_stdout(s, n) +u_char *s; +register int n; +{ + static u_char knj1st = 0, knj2nd = 0; + + while (n-- > 0) { + if (knj1st) { + if (knj2nd) { + putchar(knj2nd); + putchar(knj1st); + putchar(*s++); + knj2nd = 0; + knj1st = 0; + } else { + putchar(knj1st); + putchar(*s++); + knj1st = 0; + } + } else if (knj2nd) { + knj1st = *s++; + } else if (Isknj2(*s)) { + knj2nd = *s++; + } else if (Isknj1(*s)) + knj1st = *s++; + else + putchar(*s++); + } +} + + +SJ_read (s, n) +wchar16_t *s; +int n; +{ + u_char buff[BUFFLENGTH]; + wchar16_t wcbuff[BUFFLENGTH]; + register int i, count, remain, c; + size_t wnum; + extern int current_locale; + + if (backup) { + *s = backup; + backup = 0; + return (1); + } + if ((count = read(STDIN, buff, n)) <= 0) + return (count); + remain = 0; + for (i = 0; i < count; i++) { + c = buff[i]; +#ifdef __sony_news + if (is3byte(c)) { + if (i + 2 >= count) { + if (i + 2 == count) { + remain = 1; + break; + } else + remain = 2; + } else + i += 2; + } else if (is2byte(c)) { + if (i + 1 >= count) + remain = 1; + else + i++; + } +#else + if (current_locale == LC_CTYPE_EUC) { + if (iseuc3byte(c)) { + if (i + 2 >= count) { + if (i + 2 == count) { + remain = 1; + break; + } else + remain = 2; + } else + i += 2; + } else if (iseuc2byte(c)) { + if (i + 1 >= count) + remain = 1; + else + i++; + } + } else { + if (issjis1(c)) { + if (i + 1 >= count) + remain = 1; + else + i++; + } + } +#endif + + } + if (remain) { + if ((i = read(STDIN, &buff[count], remain)) > 0) + count += i; + } + buff[count] = 0; + wnum = mbstowcs((wchar16_t *) wcbuff, (char *) buff, count); + if ((wnum == 0) && count) { + wnum = count; + for ( i = 0; i <= count; i++) + wcbuff[i] = (wchar16_t) 0; + } + if (wnum > n) { + backup = wcbuff[--wnum]; + } + memcpy((void *) s, (void *) wcbuff, wnum * sizeof(wchar16_t)); + return(wnum); +} + +SJ_warnning (s) +wchar16_t *s; +{ + SJ_print (s); +} + +SJ_print (s) +wchar16_t *s; +{ + u_char buff[BUFFLENGTH * 3]; + size_t num; + + num = wcstombs((char *) buff, s, (size_t ) (BUFFLENGTH * 3)); + if ((int) num > 0) + printf("%s", buff); +} + +SJ_through (s, n) +wchar16_t *s; +int n; +{ + SJ_write (s, n); +} + diff --git a/sj3/sjrc.c b/sj3/sjrc.c new file mode 100644 index 0000000..b6152b1 --- /dev/null +++ b/sj3/sjrc.c @@ -0,0 +1,859 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sjrc.c,v $ + * $SonyRevision: 1.4 $ + * $SonyDate: 1997/01/23 11:20:54 $ + */ + + + +#include "wchar16.h" +#include "kctype.h" +#if defined(__sony_news) && defined(SVR4) +#include +#endif +#include "common.h" +#include "key.h" +#include +#include "Paths.h" + +int vflag = 1; +extern int shell_flag; + +char RCfile[LONGLENGTH]; +extern char shellprog[]; +extern char home[]; +extern char term_name[]; +extern int current_locale; + +#define GUIDELEN 80 + +wchar16_t guide_sj2[GUIDELEN]; +wchar16_t guide_buffer[GUIDELEN]; +wchar16_t guide_unbuffer[GUIDELEN]; +wchar16_t guide_hira[GUIDELEN]; +wchar16_t guide_zkata[GUIDELEN]; +wchar16_t guide_hkata[GUIDELEN]; +wchar16_t guide_halpha[GUIDELEN]; +wchar16_t guide_zalpha[GUIDELEN]; +wchar16_t guide_shift[GUIDELEN]; +wchar16_t guide_jis[GUIDELEN]; +wchar16_t guide_kuten[GUIDELEN]; +wchar16_t guide_etc[GUIDELEN]; +wchar16_t guide_etcfunc[GUIDELEN]; +wchar16_t guide_function[GUIDELEN]; + +wchar16_t guide_euc[GUIDELEN]; +wchar16_t guide_euc2[GUIDELEN]; +wchar16_t guide_jis2[GUIDELEN]; +wchar16_t guide_kuten2[GUIDELEN]; +static char *rcfile = ".sjrc"; +static char *rkfile = ".sjrk"; + +static int intr_code = 0x03; +static char goto_code[LONGLENGTH]; +static int goto_num = 0; +static char trap_code[LONGLENGTH]; +static int trap_num = 0; +static int def_muhenkan = KEY_HALPHA; +static int def_muedit = KEY_ZHIRA; +static int muhenkan_toggle = 1; +static int bstudy = 1; + +char **dict_list = NULL; +int dict_num = 0; + +#define SJ3_NO -1 +#define SJ3_SJIS 0 +#define SJ3_EUC 1 + + +static int user_euc = 0; +static int file_code = SJ3_NO; +static int locale_code = SJ3_SJIS; +extern wchar16_t *Key, *Escape, *Sjxkey, *Etckey, *Intr, *Bskey, *Delkey, + *Setnormal, *Throughnext, *Initialmode, *Helpmode, + *Defaultcode, *Muhenkanmode, *Muhenkaninedit, *Muhenkantoggle, + *Guide, *Forkshell, *Execshell, *Dictionary, *Userdic, + *Maindic, *Romaji, *Bstrudy, *Silent, *Flushafterconversion, + *Rkerrbell, *Server; +extern wchar16_t *Halpha, *Zalpha, *Hkata, *Zkata, *Hira; +extern wchar16_t *Shiftjis, *Sjis, *Euc, *Euc2, *Jis, *Jis2, *Kuten, *Kuten2; + +int set_func(), set_etckeys(), set_intr(), + set_delkey(), set_goto(), set_trap(), set_init_mode(), + set_helpmenu(), set_defcode(), set_muhenkan(), set_muedit(), + set_m_toggle(), set_guide(), set_forkshell(), set_bstudy(), + set_silent(), set_flush_conversion(), set_rkebell(), set_server(), + set_dicts(); + + +extern struct functbl funcs[]; +extern struct valtbl mode_val[], code_val[]; + +#define TOLOWER(c) (isupper(c) ? tolower(c) : (c)) + +sjset_code() +{ + char *loc; + + if (current_locale == LC_CTYPE_EUC) { + locale_code = SJ3_EUC; + user_euc = 1; + file_code = SJ3_NO; + } else + user_euc = 0; +} + +sjrc_init () +{ + clear_del (); + clear_key (); + intr_code = 0x03; + goto_num = 0; + trap_num = 0; + def_muhenkan = KEY_HALPHA; + def_muedit = KEY_ZHIRA; + muhenkan_toggle = 1; + bstudy = 1; + flush_conversion = 0; + if (dict_list) { + if (dict_list[0]) free(dict_list[0]); + free(dict_list); + dict_list = NULL; + } + dict_num = 0; +} + + + +getsjrc () +{ + register char *p; + char *getenv(); + + sjset_code(); + mk_cvtkey(term_name); + RCfile[0] = '\0'; + if ((p = getenv("SJRC")) != NULL && *p != '\0') { + if (*p != '/') { + strcpy(RCfile, home); + strcat(RCfile, "/"); + } + strcat(RCfile, p); + if (setrc(RCfile) == TRUE) + return; + } + if (home[0] != '\0') { + strcpy(RCfile, home); + strcat(RCfile, "/"); + strcat(RCfile, rcfile); + if (setrc(RCfile) == TRUE) + return; + } + strcpy(RCfile, DEFRCFILE); + if (setrc(RCfile) == TRUE) + return; + + RCfile[0] = '\0'; +} + + + +setrc (file) +char *file; +{ + register wchar16_t *p; + char line[MAXLINE]; + struct wordent word[WORDN]; + struct functbl *functp; + FILE *fd, *fopen(); + + if (vflag > 1) + aprintf ("sjrc file is %s\n", file); + + if ((fd = fopen(RCfile, "r")) == NULL) + return(FALSE); + sjrc_init (); + while (fgets (line, MAXLINE, fd) != NULL) { + if (getword(line, word) <= 0) + continue; + functp = funcs; + p = word[0].word_str; + while (functp->keyword != NULL) { + if (match(p, functp->keyword)) { + (*(functp->func))(word); + break;; + } + functp++; + } + } + fclose(fd); + return(TRUE); +} + + + +getsjrk (erase) +int erase; +{ + register char *p; + register int i; + char *getenv(); + char RKfile[LONGLENGTH]; + + RKfile[0] = '\0'; + sj3_rkcode(1); + if ((p = getenv("SJRK")) != NULL && *p != '\0') { + if (*p != '/') { + strcpy(RKfile, home); + strcat(RKfile, "/"); + } + strcat(RKfile, p); + if ((i = sj3_rkinit2(RKfile, erase)) == TRUE) { + if (!oasys) + mkkigou(); + return; + } + if (i == FALSE) + done3(); + } + if (home[0] != '\0') { + strcpy(RKfile, home); + strcat(RKfile, "/"); + strcat(RKfile, rkfile); + if ((i = sj3_rkinit2(RKfile, erase)) == TRUE) { + if (!oasys) + mkkigou(); + return; + } + if (i == FALSE) + done3(); + } + sj3_rkcode(0); + if ((i = sj3_rkinit2(DEFRKFILE, erase)) != TRUE) { + if (i == 1) { + fprintf(stderr, "Warning cannot open rule file %s\n\r", + DEFRKFILE); + (void)sj3_rkinit2("/dev/null", erase); + } else + done3(); + } + if (!oasys) + mkkigou(); +} + + + +match(s1, s2) +wchar16_t *s1, *s2; +{ + register wchar16_t c1, c2; + + if (s1 == NULL) + return(0); + while (*s2 != '\0') { + c1 = *s1++; + c2 = *s2++; + if (TOLOWER(WcLowByte(c1)) != TOLOWER(WcLowByte(c2))) + return(0); + } + return(1); +} + + +getword (s, word) +register u_char *s; +struct wordent word[]; +{ + register u_char c; + register wchar16_t *w; + wchar16_t wcbuf[MAXLINE*2]; + wchar16_t ttmp[MAXLINE]; + u_char buf[MAXLINE*2]; + register u_char *p; + register int i, wcount; + u_short cc; + + if (IsDelimitor(*s)) { + s++; + } else { + p = s; + while(!IsDelimitor(*s)) { + if (IsTerminator(*s) || isTerminator(*s)) + break; + s++; + } + *s++ = '\0'; + if (file_code == locale_code) { + (void) mbstowcs(wcbuf, (char *)p, MAXLINE*2); + } else { + if (file_code == SJ3_SJIS) { + (void) sjistoeuc(buf, MAXLINE*2, (u_char *)p, MAXLINE); + } else if (file_code == SJ3_EUC) { + (void) euctosjis(buf, MAXLINE*2, (u_char *)p, MAXLINE); + } else { + (void) strcpy(buf, p); + } + (void) mbstowcs(wcbuf, (char *)buf, MAXLINE*2); + } + (void) mbstowcs(ttmp, term_name, MAXLINE); + if (match(wcbuf, ttmp) == 0) + return(0); + } + i = wcount = 0; + w = word[wcount].word_str; + while (*s != '\0') { + c = *s++; + if (file_code == SJ3_SJIS) { + if (issjis1(c) && issjis2(*s)) { + if (i < MAXWORD - 1) { + cc = (c << 8) + *s; + *w++ = sjis2euc(cc); + i ++ ; + } + s++; + continue; + } + } else if (file_code == SJ3_EUC) { + if (iseuc(c) && iseuc(*s)) { + if (i < MAXWORD - 1) { + *w++ = (c << 8) + (*s & 0xff); + i ++; + } + s++; + continue; + } + if (iseuckana(c) && iskana2(*s)) + c = *s++; + if (IsEUCHojo(c) && iseuc(*s) && iseuc(s[1])) { + cc = WcSetX0212(*s, s[1]); + *w++ = cc; + s += 2; + continue; + } + } else { + if (issjis1(c) && issjis2(*s)) { + file_code = SJ3_SJIS; + s--; + continue; + } + if ((iseuc(c) && iseuc(*s)) || + (iseuckana(c) && iskana2(*s)) || + (IsEUCHojo(c) && iseuc(*s) && iseuc(s[1]))) { + file_code = SJ3_EUC; + s--; + continue; + } + } + if (isTerminator(c)) + break; + if (IsDelimitor(c)) { + if (i > 0) { + if (++wcount >= WORDN - 1) + break; + *w = '\0'; + i = 0; + w = word[wcount].word_str; + } + continue; + } + if (IsEscape(c)) + c = *s++; + if (IsTerminator(c)) + break; + if (i < MAXWORD - 1) { + *w++ = c; + i++; + } + } + *w = '\0'; + if (word[wcount].word_str[0] != '\0') + word[++wcount].word_str[0] = '\0'; + return(wcount); +} + +IsTerminator (c) +u_char c; +{ + if (c == '\n') + return (1); + else + return (0); +} + +isTerminator (c) +u_char c; +{ + if (c == '#') + return (1); + else + return (0); +} + +IsEscape (c) +u_char c; +{ + if (c == '\\') + return (1); + else + return (0); +} + +IsDelimitor (c) +u_char c; +{ + if (c == ' ' || c == '\t' || c == '.') + return (1); + else + return (0); +} + +set_forkshell (word) +struct wordent word[]; +{ + if (word[1].word_str[0] != '\0' && shellprog[0] == '\0') { +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + strcpy (shellprog, (char *)word[1].word_str); + shell_flag++; + } +} + +set_intr (word) +struct wordent word[]; +{ + int c; + + if (word[1].word_str[0] != '\0') + if ((c = eval_key (word[1].word_str)) != -1) + intr_code = c; +} + +set_delkey (word) +struct wordent word[]; +{ + int c; + + if (word[1].word_str[0] != '\0') + if ((c = eval_key (word[1].word_str)) != -1) + set_del (c); +} + +isintr (c) +u_char c; +{ + if (c == intr_code) + return (1); + else + return (0); +} + +set_goto (word) +struct wordent word[]; +{ + int c; + + if (word[1].word_str[0] != '\0') + if ((c = eval_key (word[1].word_str)) != -1) + goto_code[goto_num ++] = c; +} + +IsGoto (c) +register u_char c; +{ + register int i; + + for (i = 0 ; i < goto_num ; i ++) { + if (c == goto_code[i]) + return (1); + } + return (0); +} + +set_trap (word) +struct wordent word[]; +{ + int c; + + if (word[1].word_str[0] != '\0') + if ((c = eval_key (word[1].word_str)) != -1) + trap_code[trap_num ++] = c; +} + +IsTrap (c) +register u_char c; +{ + register int i; + + for (i = 0 ; i < trap_num ; i ++) { + if (c == trap_code[i]) + return (1); + } + return (0); +} + +mode_key (mode) +register int mode; +{ + switch (mode) { + case MODE_HALPHA: + return (KEY_HALPHA); + break; + case MODE_ZALPHA: + return (KEY_ZALPHA); + break; + case MODE_HKATA: + return (KEY_HKATA); + break; + case MODE_ZKATA: + return (KEY_ZKATA); + break; + case MODE_ZHIRA: + default: + return (KEY_ZHIRA); + break; + } +} + +int Direct = 0; + +set_init_mode (word) +struct wordent word[]; +{ + register Conversion *cv; + register int i, j; + register wchar16_t *p; + + cv = GetConversion (); + j = 1; + p = word[j].word_str; + while (*p != '\0') { + if (match (p, WCBuff)) + cv->BuffMode = BUFF; + else if (match (p, WCUnbuff)) + cv->BuffMode = UNBUFF; + else if (match (p, WCDirect)) + Direct = 1; + else { + for (i = 0 ; i < 5 ; i ++) { + if (match (p, mode_val[i].keyword)) { + cv->Imode = mode_val[i].ivalue; + break; + } + } + } + p = word[++j].word_str; + } +} + +set_helpmenu (word) +struct wordent word[]; +{ + if (match (word[1].word_str, WCOff)) + HHlevel = Hlevel = 1; + else if (match (word[1].word_str, WCOn)) + HHlevel = Hlevel = 2; +} + +set_defcode (word) +struct wordent word[]; +{ + register wchar16_t *p; + register int i; + + p = word[1].word_str; + for (i = 0; i < 5; i++) { + if (match(p, code_val[i].keyword)) { + SetCode(code_val[i].ivalue); + break; + } + } +} + +set_muhenkan (word) +struct wordent word[]; +{ + register int i; + register wchar16_t *p; + + p = word[1].word_str; + for (i = 0 ; i < 5 ; i ++) { + if (match (p, mode_val[i].keyword)) { + def_muhenkan = mode_key (mode_val[i].ivalue); + break; + } + } +} + +set_muedit (word) +struct wordent word[]; +{ + register int i; + register wchar16_t *p; + + p = word[1].word_str; + for (i = 0 ; i < 5 ; i ++) { + if (match (p, mode_val[i].keyword)) { + def_muedit = mode_key (mode_val[i].ivalue); + break; + } + } +} + +set_m_toggle (word) +struct wordent word[]; +{ + if (match (word[1].word_str, WCOn)) + muhenkan_toggle = 1; + if (match (word[1].word_str, WCOff)) + muhenkan_toggle = 0; +} + +set_silent (word) +struct wordent word[]; +{ + vflag = 0; +} + +set_bstudy (word) +struct wordent word[]; +{ + if (match (word[1].word_str, WCOn)) + bstudy = 1; + if (match (word[1].word_str, WCOff)) + bstudy = 0; +} + +is_bstudy () +{ + return (bstudy); +} + +eval_muhenkan () +{ + register Conversion *cv; + + cv = GetConversion (); + if (muhenkan_toggle && (KEY_ZHIRA != mode_key (cv->Imode))) + return (KEY_ZHIRA); + else + return (def_muhenkan); +} + +value_muhenkan () +{ + return (def_muedit); +} + +set_guide (word) +struct wordent word[]; +{ + register int i; + + if (*word[2].word_str == '\0') { + return; + } + else if (match (word[1].word_str, WCSj2)) { + wscpy (guide_sj2, word[2].word_str); + WCSJrun = guide_sj2; + } + else if (match (word[1].word_str, WCBuffer)) { + wscpy (guide_buffer, word[2].word_str); + WCMode_buff = guide_buffer; + } + else if (match (word[1].word_str, WCUnbuffer)) { + wscpy (guide_unbuffer, word[2].word_str); + WCMode_unbuff = guide_unbuffer; + } + else if (match (word[1].word_str, WCHira)) { + wscpy (guide_hira, word[2].word_str); + WCMode_Zhira = guide_hira; + } + else if (match (word[1].word_str, WCZkata)) { + wscpy (guide_zkata, word[2].word_str); + WCMode_Zkata = guide_zkata; + } + else if (match (word[1].word_str, WCHkata)) { + wscpy (guide_hkata, word[2].word_str); + WCMode_Hkata = guide_hkata; + } + else if (match (word[1].word_str, WCHalpha)) { + wscpy (guide_halpha, word[2].word_str); + WCMode_Halpha = guide_halpha; + } + else if (match (word[1].word_str, WCZalpha)) { + wscpy (guide_zalpha, word[2].word_str); + WCMode_Zalpha = guide_zalpha; + } + else if (match (word[1].word_str, WCShift)) { + wscpy (guide_shift, word[2].word_str); + WCGCshift = guide_shift; + } + else if (match (word[1].word_str, WCJis)) { + wscpy (guide_jis, word[2].word_str); + WCGCjis = guide_jis; + } + else if (match (word[1].word_str, WCJis2)) { + wscpy (guide_jis2, word[2].word_str); + WCGCjis2 = guide_jis2; + } + else if (match (word[1].word_str, WCKuten)) { + wscpy (guide_kuten, word[2].word_str); + WCGCkuten = guide_kuten; + } + else if (match (word[1].word_str, WCKuten2)) { + wscpy (guide_kuten2, word[2].word_str); + WCGCkuten2 = guide_kuten2; + } + else if (match (word[1].word_str, WCEuc)) { + wscpy (guide_euc, word[2].word_str); + WCGCeuc = guide_euc; + } + else if (match (word[1].word_str, WCEuc2)) { + wscpy (guide_euc2, word[2].word_str); + WCGCeuc2 = guide_euc2; + } + else if (match (word[1].word_str, WCEtc)) { + wscpy (guide_etc, word[2].word_str); + WCGEtc = guide_etc; + } + else if (match (word[1].word_str, WCFuncetc)) { + i = 2; + *guide_etcfunc = '\0'; + while (*word[i].word_str != '\0') { + if (i == 2) + wscat (guide_etcfunc, WCSpace2); + else + wscat (guide_etcfunc, WCSpace); + wscat (guide_etcfunc, word[i].word_str); + i ++; + } + WCGetc = guide_etcfunc; + } + else if (match (word[1].word_str, WCFunction)) { + i = 2; + *guide_function = '\0'; + while (*word[i].word_str != '\0') { + if (i == 2) + wscat (guide_function, WCSpace2); + else + wscat (guide_function, WCSpace); + wscat (guide_function, word[i].word_str); + i ++; + } + WCGmode = guide_function; + } +} + +set_flush_conversion (word) +struct wordent word[]; +{ + if (match (word[1].word_str, WCOn)) + flush_conversion = 1; + if (match (word[1].word_str, WCOff)) + flush_conversion = 0; +} + +set_server(word) +struct wordent word[]; +{ + register int i, j, size; + register char *p; + char *sbuf; + extern char *cur_serv, **serv_list; + char host[LONGLENGTH]; + + if (cur_serv != NULL && *cur_serv != '\0') + return; + size = 0; + i = 0; + while (word[i + 1].word_str[0] != '\0') { + if (i >= MAXSERVER) + break; + size += wslen(word[++i].word_str); + size++; + } + if ((sbuf = malloc(size)) == NULL) { + fprintf (stderr, "set_server: can't alloc memory\n\r"); + done3(); + } + p = sbuf; + for (j = 0; j < i; j++) { + serv_list[j] = p; + (void) wcstombs(host, word[j+1].word_str, LONGLENGTH); + strcpy(p, host); + size = strlen(p) + 1; + p += size; + } + cur_serv = serv_list[0]; +} + +#define DICT_SUFFIX ".dic" + +set_dict(word) +struct wordent word[]; +{ + register int i, j, size, suffix_len; + register char *p; + char *sbuf; + char dict[LONGLENGTH]; + + suffix_len = strlen(DICT_SUFFIX); + size = 0; + i = 0; + while (word[i + 1].word_str[0] != '\0') { + size += wslen(word[++i].word_str) + suffix_len; + size++; + } + if ((sbuf = malloc(size)) == NULL) { + fprintf (stderr, "set_dict: can't alloc memory\n\r"); + done3(); + } + if ((dict_list = (char **)malloc(sizeof(char *) * i)) == NULL) { + free(sbuf); + fprintf (stderr, "set_dict: can't alloc memory\n\r"); + done3(); + } + dict_num = i; + p = sbuf; + for (j = 0; j < i; j++) { + dict_list[j] = p; + (void) wcstombs(dict, word[j+1].word_str, LONGLENGTH); + strcpy(p, dict); + strcat(p, DICT_SUFFIX); + size = strlen(p) + 1; + p += size; + } + +} diff --git a/sj3/stat_conv.c b/sj3/stat_conv.c new file mode 100644 index 0000000..d242c3a --- /dev/null +++ b/sj3/stat_conv.c @@ -0,0 +1,945 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: stat_conv.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:28 $ + */ + + + +#include "common.h" +#include "key.h" +#include "rk.h" + + + +extern int keyvalue; + +int rkerrbell = 0; +static int delkey = -1; +static int bskey; + +#define SPAN_FLUSH 0 +#define SPAN_END 1 + +save_span (mode) +register int mode; +{ + register Conversion *cv; + + cv = GetConversion (); + switch (mode) { + case SPAN_FLUSH: + cv->span_point = 0; + cv->ha_point = 0; + cv->out_point = 0; + save_span_p (); + break; + case SPAN_END: + if (cv->out_point < cv->out_epoint) { + Clear_EOL(); + cv->out_point = cv->out_epoint; + cv->ha_point = cv->ha_epoint; + } + break; + default: + break; + } +} + +save_span_p () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->span_p[cv->span_point] = &(cv->out_buf[cv->out_point]); + cv->span_l[cv->span_point] = 0; +} + +isspaned () +{ + register Conversion *cv; + + cv = GetConversion (); + if (cv->out_buf[0] != '\0') + return (1); + else + return (0); +} + + + +buffers_clear () +{ + register Conversion *cv; + + cv = GetConversion (); + pointer_clear (); + if (flush_conversion) + cv->CurBun = -1; + else + cv->CurBun = 0; +} + +pointer_clear () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->ha_point = cv->ha_epoint = 0; + *(cv->Halpha) = '\0'; + os_point = 0; + cv->out_point = cv->out_epoint = 0; + *(cv->out_buf) = '\0'; + cv->Kanji = 0; + save_span (SPAN_FLUSH); + sj3_rkclear(); +} + +typedef struct _SaveSet { + wchar16_t out_buf[BUFFLENGTH * 2]; + u_short out_mode[BUFFLENGTH * 2]; + u_short out_point; + u_short ha_point; + wchar16_t Halpha[BUFFLENGTH]; + u_char in_mode[BUFFLENGTH * 2]; +} SaveSet; + +static SaveSet save_set0; + +StoreSaveSet () +{ + register Conversion *cv; + register SaveSet *sv; + + cv = GetConversion (); + if (cv->out_point) { + sv = &save_set0; + sv->out_point = cv->out_point; + sv->ha_point = cv->ha_point; + memcpy (sv->out_mode, cv->out_mode, + cv->out_point * sizeof(u_short)); + memcpy (sv->in_mode, cv->in_mode, + cv->out_point * sizeof(u_char)); + wscpy (sv->Halpha, cv->Halpha); + wscpy (sv->out_buf, cv->out_buf); + } +} + +RestoreSaveSet () +{ + register Conversion *cv; + register SaveSet *sv; + + sv = &save_set0; + if (sv->out_point) { + cv = GetConversion (); + cv->out_point = sv->out_point; + cv->ha_point = sv->ha_point; + memcpy (cv->out_mode, sv->out_mode, + sv->out_point * sizeof(u_short)); + memcpy (cv->in_mode, sv->in_mode, + sv->out_point * sizeof(u_char)); + wscpy (cv->Halpha, sv->Halpha); + wscpy (cv->out_buf, sv->out_buf); + } +} + +history_empty () +{ + SaveSet *sv; + + sv = &save_set0; + if (sv->out_point) + return (0); + else + return (1); +} + +History () +{ + Conversion *cv; + SaveSet *sv; + + sv = &save_set0; + if (sv->out_point) { + RestoreSaveSet (); + cv = GetConversion (); + if (flush_conversion) + cv->CurBun = -1; + else + cv->CurBun = 0; + } +} + +ClearBuffer () +{ + Clear_EOL(); + Ccheck (); + Cclear (1); + all_set_up (); +} + + + +SetCflag () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->Cflag = 1; +} + +ClearCflag () +{ + register Conversion *cv; + + cv = GetConversion (); + cv->Cflag = 0; +} + +IsCflag () +{ + register Conversion *cv; + + cv = GetConversion (); + return (cv->Cflag); +} + +exec_kettei () +{ + register Conversion *cv; + int len; + wchar16_t kanji[BUFFLENGTH * 2]; + + cv = GetConversion (); + save_span(SPAN_END); + if (cv->Kanji != 0) { + len = Bkanji (kanji); + Ccheck (); + Cclear (1); + master_write (kanji, len); + if (cv->word_regist) { + cv->word_regist = 0; + } + else { + if (is_bstudy ()) { + cl_gakusyuu (); + } + } + } else if (isspaned ()) { + if (BuffYes ()) { + Ccheck (); + Cclear (1); + } + if (!BuffYes ()) + vbackchar (cv->out_point); + if (cv->out_point) + master_write (cv->out_buf, cv->out_point); + + if (BuffYes ()) + master_flush (); + StoreSaveSet (); + } + buffers_clear (); + ResetHenkan (); + SetCflag (); +} + +set_rkebell(word) +struct wordent word[]; +{ + if (match (word[1].word_str, WCOn)) + rkerrbell = 1; + if (match (word[1].word_str, WCOff)) + rkerrbell = 0; +} + + + +ChangeBuffMode () +{ + register Conversion *cv; + + cv = GetConversion (); + if (cv->BuffMode == BUFF) { + sj3_rkebell(0); + cv->BuffMode = UNBUFF; + } else { + sj3_rkebell(rkerrbell); + cv->BuffMode = BUFF; + } +} + +BuffYes () +{ + register Conversion *cv; + + cv = GetConversion (); + if (cv->BuffMode == BUFF) + return (1); + else + return (0); +} + + + +#define STAT_HENKAN 1 +#define STAT_MUHENKAN 2 + +IsHenkan () +{ + Conversion *cv; + + cv = GetConversion (); + return (cv->henkanflag); +} + +IsMuhenkan () +{ + Conversion *cv; + + cv = GetConversion (); + return (cv->henkanflag & STAT_MUHENKAN); +} + +SetMuhenkan () +{ + Conversion *cv; + + cv = GetConversion (); + cv->henkanflag |= STAT_MUHENKAN; +} + +SetHenkan () +{ + Conversion *cv; + + cv = GetConversion (); + cv->henkanflag = STAT_HENKAN; +} + +ResetHenkan () +{ + Conversion *cv; + + cv = GetConversion (); + cv->henkanflag = 0; +} + +all_set_up () +{ + buffers_clear (); + SetCflag (); + ResetHenkan (); +} + + +static int convertflag; +static int small; + +stat_conv_on () +{ + convertflag = 1; +} + +stat_init () +{ + stat_conv_on (); + all_set_up (); + disp_mode (); + small = 0; +} + +get_pseq () +{ + return (write_pseq (1)); +} + +stat_conv () +{ + register Conversion *cv; + extern int allways_buff; + register int inc; + register int i; + u_short svlen; + + cv = GetConversion (); + cv->word_regist = 0; + while (convertflag) { + if ((inc = inkey ()) == EOF) + break; + + + + + cv = GetConversion (); + if (allways_buff) + cv->BuffMode = BUFF; +more: + switch (keyvalue) { + + + case KEY_NORMAL: + small = 0; + if (inc == EOF) + break; + if (IsHenkan ()) { + if (is_bsdel (inc)) { + Bdelete (); + break; + } else if (inc < ' ' && inc != '\n' && + inc != '\r' && inc != '\t' && + !IsESC (inc) && !isintr (inc)){ + beep (); + break; + } else { + exec_kettei (); + } + } + + save_obuf(); + svlen = cv->Vlen; + while (exec_romaji(inc)) { + if (os_point > 0 && svlen != cv->Vlen) { + i = svlen - cv->Vlen; + svlen = cv->Vlen; + vprintU(osave_buf, 1); + if (i > 0) + Clear_EOL(); + Cgoto(svlen); + } + inc = inkey(); + if (keyvalue != KEY_NORMAL && + (exec_romaji(0)==0||keyvalue == KEY_CONV)){ + restore_obuf(); + goto more; + } + } + restore_obuf(); + if (is_del(inc) && (!IsCflag() && isspaned())) { + if (cv->out_point < cv->out_epoint) { + move_cur(KEY_RIGHT); + inc = bskey; + goto more; + } + } else + exec_ctrl(inc); + break; + case KEY_KETTEI: + small = 0; + if (!IsCflag ()) { + exec_kettei (); + } else if (cv->Imode != MODE_HALPHA || BuffYes ()) { + if (cv->Imode != MODE_HALPHA) + exec_mode (KEY_HALPHA); + if (BuffYes ()) + ChangeBuffMode (); + disp_mode (); + } + break; + case KEY_CONV: + small = 0; + if (!no_flush) + exec_kettei (); + convertflag = 0; + break; + case KEY_CANCEL: + small = 0; + if (!IsCflag ()) + ClearBuffer (); + else if ((inc = get_pseq ()) != 0) + exec_ctrl(inc); + break; + case KEY_RECONV: + small = 0; + if (IsCflag ()) { + if (history_empty ()) { + if ((inc = get_pseq ()) != 0) + exec_ctrl(inc); + break; + } else { + History (); + Csave (); + ClearCflag (); + } + } else { + if (IsHenkan ()) { + History (); + ResetHenkan (); + } else { + beep (); + break; + + } + } + exec_henkan (); + SetHenkan (); + break; + case KEY_HENKAN: + small = 0; + if (!IsCflag ()) { + if (IsMuhenkan ()) { + exec_henkan (); + SetHenkan (); + } + if (IsHenkan ()) { + exec_douon (); + } else { + save_span (SPAN_END); + Ccheck (); + StoreSaveSet (); + exec_henkan (); + SetHenkan (); + } + } else if ((inc = write_pseq (3)) >= ' ' && inc <= '~') + exec_ctrl(inc); + else if (cv->Imode != MODE_ZHIRA || !BuffYes ()) { + if (cv->Imode != MODE_ZHIRA) { + exec_mode (KEY_ZHIRA); + } + if (!BuffYes ()) { + ChangeBuffMode (); + } + disp_mode (); + } + break; + case KEY_MUHENKAN: + small = 0; + if (flush_conversion && !IsCflag () && + cv->CurBun == -1) { + if (IsHenkan ()) { + exec_muhenkan (0); + SetHenkan (); + } else { + save_span (SPAN_END); + Ccheck (); + exec_muhenkan (1); + SetHenkan (); + SetMuhenkan (); + } + break; + } + case KEY_TOGGLE: + case KEY_ZHIRA: + case KEY_HALPHA: + case KEY_ZALPHA: + case KEY_HKATA: + case KEY_ZKATA: + case KEY_CODE: + small = 0; + if (cv->CurBun == -1) + exec_kettei (); + else if (IsHenkan ()) { + Bchange (keyvalue); + break; + } + if (keyvalue == KEY_TOGGLE) + keyvalue = toggle_mode (cv->Imode); + exec_mode (keyvalue); + disp_mode (); + break; + case KEY_WRAP: + small = 0; + if (IsHenkan ()) + wrap_douon (0); + else if ((inc = get_pseq ()) != 0) + exec_ctrl(inc); + break; + case KEY_WRAPBACK: + small = 0; + if (IsHenkan ()) + wrap_douon (1); + else if ((inc = get_pseq ()) != 0) + exec_ctrl(inc); + break; + case KEY_LEFT: + case KEY_RIGHT: + case KEY_UP: + case KEY_DOWN: + if (IsHenkan ()) { + switch (keyvalue) { + case KEY_LEFT: + Bleft (); + small = 0; + break; + case KEY_RIGHT: + Bright (); + small = 0; + break; + case KEY_UP: + small = Bbig (); + break; + case KEY_DOWN: + small = Bsmall (small); + break; + } + } else if (cv->Imode == MODE_CODE) { + small = 0; + if (BuffYes () && IsCflag ()) { + Csave (); + ClearCflag (); + } + kigou (); + if (flush_conversion) + exec_kettei (); + } else if (!IsCflag() && (keyvalue == KEY_LEFT || + keyvalue == KEY_RIGHT)) { + small = 0; + move_cur(keyvalue); + } else if (!BuffYes() && cv->Imode == MODE_HALPHA) { + small = 0; + write_pseq(0); + + } else if (IsCflag() && (inc = get_pseq ()) != 0) { + small = 0; + exec_ctrl(inc); + } + break; + case KEY_TOP: + case KEY_END: + if (IsHenkan ()) { + switch (keyvalue) { + case KEY_TOP: + Btop (); + small = 0; + break; + case KEY_END: + Blast (); + small = 0; + break; + } + } else if (!IsCflag()) { + small = 0; + move_cur(keyvalue); + } else if ((inc = get_pseq ()) != 0) { + small = 0; + exec_ctrl(inc); + } + break; + case KEY_EDIT: + case KEY_TOROKU: + case KEY_SYOUKYO: + small = 0; + if (IsCflag () && (inc = get_pseq ()) != 0) + exec_ctrl(inc); + case KEY_ETC: + case KEY_HELP: + case KEY_SJRC: + case KEY_RECONNECT: + small = 0; + i = exec_etc (keyvalue); + disp_mode (); + if (i != KEY_NORMAL) { + keyvalue = i; + goto more; + } + break; + case KEY_BUFFER: + small = 0; + if (BuffYes ()) + exec_kettei (); + ChangeBuffMode (); + disp_mode (); + break; + case KEY_HA_KET: + small = 0; + if (!IsCflag ()) { + if (cv->Imode != MODE_HALPHA || BuffYes ()) { + if (BuffYes ()) { + exec_kettei (); + ChangeBuffMode (); + } + if (cv->Imode != MODE_HALPHA) + exec_mode (KEY_HALPHA); + disp_mode (); + } + } else if ((inc = get_pseq ()) != 0) + exec_ctrl(inc); + break; + case KEY_FLUSH: + small = 0; + if (!IsCflag ()) { + exec_kettei (); + } else if ((inc = get_pseq ()) != 0) + exec_ctrl(inc); + break; + default: + small = 0; + if ((inc = get_pseq ()) != 0) + exec_ctrl(inc); + break; + } + if (keyvalue == KEY_CONV) { + if (!no_flush) + exec_kettei (); + convertflag = 0; + } + } +} + + +save_obuf() +{ + register Conversion *cv; + register int i, cur; + + cv = GetConversion(); + + if (cv->out_point < cv->out_epoint) { + + + cur = cv->out_point; + if (!(cv->out_mode[cur] & OMODE_MASK)) { + chhstr(cv->Halpha, cv->out_buf, cv->out_mode, cur); + cv->ha_epoint = wslen(cv->Halpha); + } + cv->ha_point = getipos(cur); + hs_point = 0; + for (i = cv->ha_point; i < cv->ha_epoint; i++) + hsave_buf[hs_point++] = cv->Halpha[i]; + hsave_buf[hs_point] = '\0'; + + + os_point = 0; + for (i = cv->out_point; i < cv->out_epoint; i++) { + osave_buf[os_point] = cv->out_buf[i]; + osave_mode[os_point] = cv->out_mode[i]; + isave_mode[os_point] = cv->in_mode[i]; + os_point++; + } + osave_buf[os_point] = '\0'; + } +} + + +restore_obuf() +{ + register Conversion *cv; + register int i; + + cv = GetConversion(); + + cv->out_epoint = cv->out_point; + cv->ha_epoint = cv->ha_point; + + + if (os_point > 0) { + for (i = 0; i < (unsigned int)os_point; i++) { + cv->out_buf[cv->out_epoint] = osave_buf[i]; + cv->out_mode[cv->out_epoint] = osave_mode[i]; + cv->in_mode[cv->out_epoint] = isave_mode[i]; + cv->out_epoint++; + } + cv->out_buf[cv->out_epoint] = '\0'; + for (i = 0; i < (unsigned int)hs_point; i++) + cv->Halpha[cv->ha_epoint++] = hsave_buf[i]; + cv->Halpha[cv->ha_epoint] = '\0'; + } +} + +exec_ctrl(c) +register int c; +{ + register Conversion *cv; + wchar16_t s[3]; + extern wchar16_t pars_seq[]; + + cv = GetConversion (); + + *s = c; + s[1] = 0; + exec_kettei(); + if (c == ' ' && keyvalue == KEY_HENKAN && cv->Imode & MODE_ZEN) { + s[0] = 0xa1a1; + s[1] = 0; + master_write (s, 1); + } else + master_write (s, 1); + + + if (IsGoto (c) && (BuffYes() || cv->Imode != MODE_HALPHA)) { + cv->BuffMode = UNBUFF; + cv->Imode = MODE_HALPHA; + disp_mode(); + sj3_rkebell(0); + } + + if (IsTrap (c)) { + *s = inkey (); + if (keyvalue != KEY_NORMAL) + *s = pars_seq[0]; + master_write (s, 1); + } +} + +exec_mode (key) +register int key; +{ + register Conversion *cv; + + cv = GetConversion (); + if (key == KEY_MUHENKAN) + key = eval_muhenkan (); + if (key == KEY_CODE) { + if (cv->Imode == MODE_CODE) + ChangeCode(); + else + cv->Imode = MODE_CODE; + } else + cv->Imode = eval_mode(key); +} + +toggle_mode (mod) +register int mod; +{ + register int value; + + switch (mod) { + case MODE_ZHIRA: + value = KEY_ZKATA; + break; + case MODE_ZKATA: + value = KEY_HKATA; + break; + case MODE_HKATA: + value = KEY_ZALPHA; + break; + case MODE_ZALPHA: + value = KEY_HALPHA; + break; + default: + value = KEY_ZHIRA; + break; + } + return (value); +} + +eval_mode (key) +register int key; +{ + int mod; + + switch (key) { + case KEY_ZHIRA: + mod = MODE_ZHIRA; + break; + case KEY_ZKATA: + mod = MODE_ZKATA; + break; + case KEY_HKATA: + mod = MODE_HKATA; + break; + case KEY_ZALPHA: + mod = MODE_ZALPHA; + break; + default: + mod = MODE_HALPHA; + break; + } + return (mod); +} + +IsESC (c) +wchar16_t c; +{ + if (c == ESC) + return (1); + else + return (0); +} + +Strncpy (d, s, len) +wchar16_t *d, *s; +int len; +{ + if ((len > 0) && (s != (wchar16_t *) NULL)) + (void)wsncpy(d, s, len); +} + +is_bsdel (c) +register int c; +{ + if (is_bs (c) || is_del (c)) + return (1); + else + return (0); +} + +clear_del () +{ + delkey = -1; +} + +set_bs (c) +int c; +{ + bskey = c; +} + +set_del (c) +int c; +{ + delkey = c; +} + +is_bs (c) +register int c; +{ + if (c == bskey) + return (1); + else + return (0); +} + +is_del (c) +register int c; +{ + if (c == delkey) + return (1); + else + return (0); +} + +static Conversion *saved_conversion; + +SaveConversion () +{ + saved_conversion = GetConversion (); +} + +AnotherConversion () +{ + if (saved_conversion == GetConversion ()) + return (0); + else + return (1); +} diff --git a/sj3/term.c b/sj3/term.c new file mode 100644 index 0000000..c640812 --- /dev/null +++ b/sj3/term.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: term.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:29 $ + */ + + + +#include "sj2.h" + + + + + +char *n_key_set ="\033P%d|%02x;%02x;%02xp"; + +char *s_key_set ="\033P%d|%02x;%02x;%02xP"; + +#define ESCAPE '\033' + +set_news () +{ + + + + aprintf (s_key_set, 24, ESCAPE, 'O', 'H'); + aprintf (n_key_set, 24, ESCAPE, 'O', 'P'); + aprintf (n_key_set, 23, ESCAPE, 'O', 'Q'); + aprintf (n_key_set, 25, ESCAPE, 'O', 'S'); + fflush (stdout); +} diff --git a/sj3/toroku.c b/sj3/toroku.c new file mode 100644 index 0000000..61d7112 --- /dev/null +++ b/sj3/toroku.c @@ -0,0 +1,480 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: toroku.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:29 $ + */ + + + +#include "common.h" +#include "key.h" +#include "wchar16.h" +#define YOMILEN 32 +#define KLEN 64 + +extern struct valtbl hin_val[]; + +extern int keyvalue; + +exec_toroku () +{ + register Conversion *cv; + wchar16_t yomi[YOMILEN+1], kanji[KLEN+1]; + wchar16_t *hinshi; + int inc; + int h_code, retv; + int val; + + if (IsDcflag()) + return(0); + cv = GetConversion (); + val = getkstr (kanji, KLEN, WCGtoroku); + if (*kanji == '\0') + return (val); + + while (1) { + if (getyomi (yomi, YOMILEN, WCGtoroku, kanji) || *yomi == '\0') + break; + h_code = gethinshi(); + hinshi= hin_val[h_code - 1].keyword; + if (getcheck (yomi, kanji, hinshi, WCGtoroku)) + break; + } + if (*yomi == '\0') + return (val); + + TopGuide (); + printR (WCGtoroku); + Clear_EOL (); + Flush (); + cv->word_regist = 1; + if ((retv = SJ2_toroku(yomi, kanji, hin_val[h_code -1].ivalue)) != 0) { + switch (retv) { + case -1: + (void)dconnect(0); + return(val); + case SJ3_WORD_EXIST: + SJ_print(WCExist); + break; + case SJ3_BAD_YOMI_STR: + SJ_print(WCYomiTouroku); + break; + case SJ3_BAD_KANJI_STR: + SJ_print(WCKanjiTouroku); + break; + case SJ3_DOUON_FULL: + SJ_print(WCOnajiTouroku); + break; + case SJ3_DICT_FULL: + SJ_print(WCUserTouroku); + break; + case SJ3_DICT_LOCKED: + SJ_print(WCJishoLock); + break; + default: + SJ_print(WCSystemError); + break; + } + } else + SJ_print (WCTOUROKU_SUCC); + Clear_EOL (); + Flush (); + + inc = inkey (); + if (AnotherConversion ()) { + unget_key (inc); + } + return (val); +} + +getyomi (yomi, lim, prompt, kanji) +wchar16_t *yomi, *prompt, *kanji; +int lim; +{ + register int inc, c; + register Conversion *cv; + int len; + wchar16_t wtmp[BUFFLENGTH], ytmp[YOMILEN+1], ktmp[KLEN+1]; + u_char tmp[BUFFLENGTH]; + + cv = GetConversion(); + TopGuide (); + printR (prompt); + len = cv->column - (wcbyte(kanji) + 24); + if (len >= lim) + { + (void) wcstombs((char *)ytmp, WCMyomi, YOMILEN+1); + (void) wcstombs((char *)ktmp, kanji, KLEN+1); + sprintf ((char *)tmp, (char *)ytmp, ktmp); + (void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH); + } + else + { + (void) wcstombs((char *)ytmp, WCMyomi, YOMILEN+1); + (void) sprintf ((char *)tmp, (char *)ytmp); + (void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH); + } + + SJ_print (wtmp); + Clear_EOL (); + Flush (); + + *wtmp = '\0'; + *tmp = '\0'; + *yomi = '\0'; + wrap_off(); + SaveConversion (); + while ((inc = inkey ()) != EOF) { + if (AnotherConversion ()) { + unget_key (inc); + sj3_rkclear(); + wrap_on(); + return (1); + } + if (keyvalue == KEY_CONV) { + sj3_rkclear(); + wrap_on(); + return (1); + } + if (keyvalue == KEY_KETTEI || keyvalue == KEY_HENKAN) { + break; + } + else if (keyvalue != KEY_NORMAL) { + if ((c = write_pseq (2)) != 0) + inc = c; + } + + if (inc == '\n' || inc == '\r'|| IsESC (inc)) + break; + else if (iscntrl(inc) && !is_bs(inc)) + beep(); + else if ((len = wslen(wtmp)) >= lim && !is_bs(inc)) + beep(); + else + (void)exec_romaji2(inc, NULL, wtmp, NULL, len, -1); + } + (void)exec_romaji2(0, NULL, wtmp, NULL, wslen(wtmp), -1); + wscpy(yomi, wtmp); + sj3_rkclear(); + wrap_on(); + return (0); +} + +gethinshi() +{ + register int inc, hcode; + + TopGuide(); + printR(WCGtoroku); + SJ_print (WCTOUROKU_HIN); + Clear_EOL(); + SJ_print(WCOne); + Backspace(); + Flush(); + inc = inkey(); + if (inc >= '2' && inc <= '5') + hcode = inc - '0'; + else + hcode = 1; + return(hcode); +} + +getcheck (yomi, kanji, hinshi, prompt) +wchar16_t *yomi, *kanji, *hinshi, *prompt; +{ + register int c; + u_char tmp[BUFFLENGTH + KLEN]; + extern wchar16_t *Y; + wchar16_t wtmp[BUFFLENGTH + KLEN]; + u_char ktmp[KLEN+1], ytmp[YOMILEN+1], htmp[YOMILEN+1], + ttmp[BUFFLENGTH]; + + TopGuide (); + printR (prompt); + if (hinshi == NULL) + { + (void) wcstombs((char *)ktmp, kanji, KLEN+1); + (void) wcstombs((char *)ytmp, yomi, YOMILEN+1); + (void) wcstombs((char *)ttmp, WCSYOUKYO_OK, BUFFLENGTH); + sprintf ((char *)tmp, (char *)ttmp, ktmp, ytmp); + } + else + { + (void) wcstombs((char *)ktmp, kanji, KLEN+1); + (void) wcstombs((char *)ytmp, yomi, YOMILEN+1); + (void) wcstombs((char *)htmp, hinshi, YOMILEN+1); + (void) wcstombs((char *)ttmp, WCTOUROKU_OK, BUFFLENGTH); + sprintf ((char *)tmp, (char *)ttmp, ktmp, ytmp, htmp); + } + + (void) mbstowcs(wtmp, (char *)tmp, BUFFLENGTH + KLEN); + SJ_print (wtmp); + Clear_EOL (); + SJ_print (WCY); + Backspace (); + Flush (); + + SaveConversion (); + c = inkey (); + if (AnotherConversion ()) { + unget_key (c); + return (0); + } + + if (keyvalue == KEY_CONV) { + *yomi = '\0'; + return (1); + } + + if (c == 'y' || c == 'Y' || c == '\n' || c == '\r' || c == ' ') + return (1); + if (keyvalue == KEY_HENKAN || keyvalue == KEY_KETTEI) + return (1); + if (IsESC (c)) { + *yomi = '\0'; + return (1); + } + return (0); +} + +getkstr (s, lim, guide) +wchar16_t *s, *guide; +int lim; +{ + register Conversion *cv; + register int i; + wchar16_t tmp[BUFFLENGTH * 2]; + wchar16_t *p; + int plen, chbun; + + chbun = 0; + cv = GetConversion (); + if (cv->Kanji != 0) { + if (cv->Bnum > 1) { + Ssbun(0); + chbun++; + plen = getbunsetu (tmp, guide); + } else + plen = Bkanji (tmp); + } + else if (isspaned ()) { + plen = cv->out_point; + Strncpy (tmp, cv->out_buf, plen); + tmp[plen] = '\0'; + } + p = tmp; + for (i = 0 ; i < plen && i < lim ; i ++) + *(s ++) = *(p ++); + *s = '\0'; + return (chbun); +} + +getbunsetu (kanji, guide) +wchar16_t *kanji, *guide; +{ + register Conversion *cv; + register int c; + register int bstart, bend; + register int i; + u_short row, col; + wchar16_t *p; + int plen, len; + + cv = GetConversion (); + len = 0; + p = kanji; + *p = '\0'; + bstart = bend = cv->CurBun; + + StartGuide (&row, &col); + printR (guide); + SJ_print (WCMhani); + Clear_EOL (); + EndGuide (row, col); + Flush (); + SaveConversion (); + while ((c = inkey ()) != EOF) { + if (AnotherConversion ()) { + unget_key (c); + return (0); + } + cv = GetConversion (); + if (keyvalue == KEY_RIGHT) { + if ((bend == bstart) && (bend < cv->Bnum - 1)) { + cv->PreBun = bend; + bend ++; + cv->CurBun = bstart = bend; + Rdisp (); + } + else + beep (); + } + else if (keyvalue == KEY_LEFT) { + if ((bend == bstart) && (bend > 0)) { + cv->PreBun = bend; + bend --; + cv->CurBun = bstart = bend; + Rdisp (); + } + else + beep (); + } + else if (keyvalue == KEY_UP) { + if (bend < cv->Bnum - 1) { + bend ++; + cv->CurBun = cv->PreBun = bend; + Rdisp (); + } + else + beep (); + } + else if (keyvalue == KEY_DOWN) { + if (bend > bstart) { + cv->PreBun = bend; + bend --; + cv->CurBun = bend; + Rdisp (); + } + else + beep (); + } + else if (keyvalue == KEY_HENKAN || keyvalue == KEY_KETTEI || + keyvalue == KEY_FLUSH) { + break; + } + else if (keyvalue == KEY_NORMAL) { + if (c == '\n' || c == '\r') { + bstart = 0; + bend = cv->Bnum - 1; + break; + } + else if (c == ' ') { + break; + } + else if (IsESC (c)) { + return (0); + } + else + beep (); + } + else + beep (); + Flush (); + } + + for (i = bstart ; i <= bend ; i ++) { + if ((plen = Bstr (i, p)) <= 0) + continue; + p += plen; + len += plen; + } + return (len); +} + +exec_syoukyo () +{ + register int i; + wchar16_t yomi[YOMILEN+1], kanji[KLEN+1]; + wchar16_t tmp[BUFFLENGTH], tmp2[BUFFLENGTH * 2]; + u_char ytmp[YOMILEN+1], ktmp[KLEN+1], + mtmp[BUFFLENGTH], mtmp2[BUFFLENGTH * 2], + ttmp[BUFFLENGTH]; + int inc; + int val, retv; + + if (IsDcflag()) + return(0); + val = getkstr (kanji, KLEN, WCGsyoukyo); + if (*kanji == '\0') + return (val); + + while (1) { + if (getyomi (yomi, YOMILEN, WCGsyoukyo, kanji) || *yomi == '\0') + break; + if (getcheck (yomi, kanji, NULL, WCGsyoukyo)) + break; + } + if (*yomi == '\0') + return (val); + + TopGuide (); + printR (WCGsyoukyo); + tmp[0] = '\0'; + for (i = 0; i < 5; i++) { + retv = SJ2_syoukyo (yomi, kanji, hin_val[i].ivalue); + if (retv == 0) { + wscat(tmp, hin_val[i].keyword); + wscat(tmp, WCKanma); + } else if (retv != SJ3_WORD_NOT_EXIST) + break; + } + if (tmp[0] == '\0') { + switch (retv) { + case -1: + (void)dconnect(0); + return(val); + case SJ3_WORD_NOT_EXIST: + SJ_print(WCNotExist); + break; + case SJ3_DICT_LOCKED: + SJ_print(WCUserLock); + break; + case SJ3_BAD_YOMI_STR: + SJ_print(WCYomiShokyo); + break; + case SJ3_BAD_KANJI_STR: + SJ_print(WCKanjiShokyo); + break; + default: + SJ_print(WCShokyoError); + break; + } + } else { + i = wslen(tmp); + tmp[i - 1] = '\0'; + (void) wcstombs((char *)mtmp, tmp, BUFFLENGTH); + (void) wcstombs((char *)ytmp, yomi, YOMILEN+1); + (void) wcstombs((char *)ktmp, kanji, KLEN+1); + (void) wcstombs((char *)ttmp, WCSYOUKYO_SUCC, BUFFLENGTH); + sprintf((char *)mtmp2, (char *)ttmp, ktmp, ytmp, mtmp); + (void) mbstowcs(tmp2, (char *)mtmp2, BUFFLENGTH * 2); + SJ_print(tmp2); + } + Clear_EOL (); + Flush (); + + inc = inkey (); + if (AnotherConversion ()) { + unget_key (inc); + } + return (val); +} diff --git a/sj3/ttytest/ttytest.c b/sj3/ttytest/ttytest.c new file mode 100644 index 0000000..d1c0d82 --- /dev/null +++ b/sj3/ttytest/ttytest.c @@ -0,0 +1,274 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: ttytest.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:31 $ + */ + + +#include +#include +#include +#include +#include +#include + +#define PTY_MASTER "/dev/ptmx" +#define BUFFSIZE 512 +#define err_sys(x) fprintf(stderr, (x)) +#define err_quit(x) { \ + fprintf(stderr, (x)); \ + exit(0); \ + } + + +static struct termio tty_termio; +static struct termio tty_mode; +static int sigcaught; + +exec_shell(fd, argv, envp) +int fd; +char **argv; +char **envp; +{ + char *shell; + char *getenv(), *rindex(); + struct termio b; + + close(0); close(1); close(2); + if (dup(fd) != 0 || dup(fd) != 1 || dup(fd) != 2) + err_sys("dup error"); + close(fd); + + if ((shell = getenv("SHELL")) == NULL) + shell = "/bin/sh"; + if ((argv[0] = rindex(shell, '/')) != NULL) + argv[0]++; + else + argv[0] = shell; + + if (ioctl(0, TCGETA, (char *) &b) < 0) + return(-1); +fprintf(stderr, "erase=%x\n", b.c_cc[VERASE]); + execve(shell, argv, envp); + err_sys("execve error"); +} + +pass_all(fd, childpid) +int fd; +int childpid; +{ + int newpid, nread; + int sig_term(); + char buff[BUFFSIZE]; + + if ((newpid = fork()) < 0) { + err_sys("parent1: can't fork"); + } else if (newpid == 0) { + for ( ; ; ) { + nread = read(0, buff, BUFFSIZE); + if (nread < 0) + err_sys("read error fram stdin"); + else if (nread == 0) + break; + + if (write(fd, buff, nread) != nread) + err_sys("writen error to stream pipe"); + } + kill(getppid(), SIGTERM); + exit(0); + } + + + sigcaught = 0; + + + for ( ; ; ) { + if ((nread = read(fd, buff, BUFFSIZE)) <= 0) + break; + + if (write(1, buff, nread) != nread) + err_sys("write error to stdout"); + } + + if (sigcaught == 0) + kill(newpid, SIGTERM); + + return; +} + +int +pty_master() +{ + int master_fd; + + if ((master_fd = open(PTY_MASTER, O_RDWR)) < 0) + return(-1); + + return(master_fd); +} + +int +pty_slave(master_fd) +int master_fd; +{ + int slave_fd; + char *slavename; + int grantpt(); + int unlockpt(); + char *ptsname(); + + if (grantpt(master_fd) < 0) { + close(master_fd); + return(-1); + } + + if (unlockpt(master_fd) < 0) { + close(master_fd); + return(-1); + } + + slavename = ptsname(master_fd); + if (slavename == NULL) { + close(master_fd); + return(-1); + } + + slave_fd = open(slavename, O_RDWR); + if (slave_fd < 0) { + close(master_fd); + return(-1); + } + + if (ioctl(slave_fd, I_PUSH, "ptem") < 0 ) { + close(master_fd); + return(-1); + } + + if (ioctl(slave_fd, I_PUSH, "ldterm") < 0) { + close(master_fd); + return(-1); + } + return(slave_fd); +} + +int +tty_raw(fd) +int fd; +{ + struct termio temp_mode; + + if (ioctl(fd, TCGETA, (char *) &temp_mode) < 0) + return(-1); + + tty_mode = temp_mode; + + temp_mode.c_iflag = 0; + temp_mode.c_oflag &= ~OPOST; + temp_mode.c_lflag &= ~(ISIG | ICANON | ECHO | XCASE); + temp_mode.c_cflag &= ~(CSIZE | PARENB); + temp_mode.c_cflag |= CS8; + temp_mode.c_cc[VMIN] = 1; + temp_mode.c_cc[VTIME] = 1; + + if (ioctl(fd, TCSETA, (char *) &temp_mode) <0) + return(-1); + + return(0); +} + +int +tty_reset(fd) +int fd; +{ + if (ioctl(fd, TCSETA, (char *) &tty_mode) < 0) + return(-1); + + return(0); +} + +int tty_getmode(oldfd) +int oldfd; +{ + if (ioctl(oldfd, TCGETA, (char *) &tty_termio) < 0) + return(-1); +fprintf(stderr, "tty_getmode erase=%x\n", tty_termio.c_cc[VERASE]); + return(0); +} + +int +tty_setmode(newfd) +int newfd; +{ + if (ioctl(newfd, TCSETA, (char *) &tty_termio) < 0) + return(-1); + +fprintf(stderr, "tty_setmode erase=%x\n", tty_termio.c_cc[VERASE]); + return(0); +} + +main(argc, argv, envp) +int argc; +char **argv; +char **envp; +{ + int master_fd, slave_fd, childpid; + + if (!isatty(0) || !isatty(1)) + err_quit("stdin and stdout must be a terminal"); + + if ((master_fd = pty_master()) < 0) + err_sys("can't open master pty"); + if(tty_getmode(0) < 0) + err_sys("can't get tty mode of standard input"); + + if ((childpid = fork()) < 0) + err_sys("can't fork"); + else if (childpid == 0) { + setpgrp(); + if ((slave_fd = pty_slave(master_fd)) < 0) + err_sys("can't open pty slave"); + close(master_fd); + if (tty_setmode(slave_fd) < 0) + err_sys("can't set tty mode of pty slave"); + + exec_shell(slave_fd, argv, envp); + } + + + if (tty_raw(0) < 0) + err_sys("tty_raw error"); + pass_all(master_fd, childpid); + + if (tty_reset(0) < 0) + err_sys("tty_reset error"); + + exit(0); diff --git a/sj3/version.c b/sj3/version.c new file mode 100644 index 0000000..ebbfb9a --- /dev/null +++ b/sj3/version.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: version.c,v $ + * $SonyRevision: 1.10 $ + * $SonyDate: 1996/02/23 11:04:02 $ + */ + + + + +#include "sj2.h" + +char *Version = "SJ3 2.09C (sjis/euc version)"; +char *version = "SJ3 Version 2.09C (sjis/euc version)"; + +char *Copyright = "Copyright (c) 1990-1996 Sony Corporation"; +char *Allrights = "All Rights Reserved"; +char *Date = "Fri Feb 23 19:31:47 JST 1996"; diff --git a/sj3dic/Imakefile b/sj3dic/Imakefile new file mode 100644 index 0000000..ba3b511 --- /dev/null +++ b/sj3dic/Imakefile @@ -0,0 +1,81 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:54 $ + */ + +/* + * Change some make rules. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#include "../sj3.tmpl" + +INCLUDES = -I../include -I../sj3lib +#if SystemV4 || SystemV +#if defined(SonySysvArchitecture) +CODE_LIBS = -ljcode +#endif +#endif + +SYS_LIBRARIES = $(CODE_LIBS) + +LIBDIR = ../sj3lib +SJLIB = $(LIBDIR)/libsj3lib.a + +DEPLIBS = $(SJLIB) +LOCAL_LIBRARIES = $(SJLIB) + +INSTFLAGS = -o $(SJ3OWNER) -g $(SJ3GROUP) -m 755 + +SRCS = codecnv.c \ + dictdisp.c \ + dictmake.c \ + hinsi.c \ + sj3dic.c \ + sj3err.c \ + sjrc.c + + +OBJS = codecnv.o \ + sj3err.o \ + sj3dic.o \ + dictdisp.o \ + dictmake.o \ + hinsi.o \ + sjrc.o + +PROGRAMS = sj3dic + +AllTarget($(PROGRAMS)) +NormalProgramTarget(sj3dic,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),) +DependTarget() +InstallProgramWithFlags(sj3dic,$(SJ3BINDIR),$(INSTFLAGS)) diff --git a/sj3dic/codecnv.c b/sj3dic/codecnv.c new file mode 100644 index 0000000..a7a0f04 --- /dev/null +++ b/sj3dic/codecnv.c @@ -0,0 +1,154 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: codecnv.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:26:31 $ + */ + + + + +#include +#include +#include +#include "sjctype.h" +#include "sjtool.h" + +static int euc_mode; + +init_code() +{ + char *loc; + +#ifdef LACKOF_SETLOCALE + loc = getenv("LANG"); +#else + loc = setlocale(LC_CTYPE, ""); +#endif + if (!loc) { + fprintf(stderr, "Error: can't get current locale\n"); + exit(1); + } + if (strncmp(loc, "ja_JP.SJIS", 10) == 0) { + euc_mode = 0; + } else if (strncmp(loc, "ja", 2) == 0 || + strncmp(loc, "Ja", 2) == 0) { + euc_mode = -1; + } else +#ifdef __sony_news + return 0; +#else + { + fprintf(stderr, "Warrning: In this locale japanese will not be used.\n"); + euc_mode = -1; + } +#endif + return 1; +} + +cnvcode(s) +unsigned char *s; +{ + if (euc_mode) { + unsigned short i; + unsigned char *d = s; + + while (i = *s++) { + if (iseuckana(i)) { + if (*s) { + *d++ = *s++; + } + else { + *d++ = i; + break; + } + } + else if (iseuc(i)) { + if (*s) { + i = euc2sjis((i << 8) + *s++); + *d++ = (i >> 8); + *d++ = i; + } + else { + *d++ = i; + break; + } + } + else { + *d++ = i; + } + } + *d = 0; + } +} + +printout_mb(fp, s) +FILE *fp; +unsigned char *s; +{ + fputs((char *)s, fp); + fflush(fp); +} + +printout(fp, s) +FILE *fp; +unsigned char *s; +{ + unsigned char buf[BUFSIZ]; + + if (euc_mode) + strcpy((char *)buf, s); + else + euctosjis(buf, BUFSIZ, s, strlen(s)+1); + fputs((char *)buf, fp); + fflush(fp); +} + +normal_out(fmt, p1, p2, p3, p4, p5) +char *fmt; +int p1, p2, p3, p4, p5; +{ + char buf[BUFSIZ]; + + sprintf(buf, fmt, p1, p2, p3, p4, p5); + printout(stdout, buf); +} + +error_out(fmt, p1, p2, p3, p4, p5) +char *fmt; +int p1, p2, p3, p4, p5; +{ + char buf[BUFSIZ]; + + sprintf(buf, fmt, p1, p2, p3, p4, p5); + strcat(buf, "\n"); + printout(stderr, buf); +} diff --git a/sj3dic/dictdisp.c b/sj3dic/dictdisp.c new file mode 100644 index 0000000..5d5455d --- /dev/null +++ b/sj3dic/dictdisp.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: dictdisp.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:34 $ + */ + + + + +#include +#include + +dictdisp(output) +char *output; +{ + unsigned char buf[BUFSIZ]; + unsigned char *p; + FILE *fp; + int flg; + int i; + + if (output && *output) { + fp = fopen(output, "w"); + if (!fp) { + error_out("%s \244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363", output); + exit(1); + } + } + else + fp = stdout; + + flg = sj3_getdict_mb(buf); + while (flg == 0) { + p = buf; + printout_mb(fp, p); + i = strlen(p); + if (i < 24) + while (i < 24) { + printout_mb(fp, "\t"); + i += 8; + } + else + printout_mb(fp, " "); + while (*p++) ; + printout_mb(fp, p); + i = strlen(p); + if (i < 24) + while (i < 24) { + printout_mb(fp, "\t"); + i += 8; + } + else + printout_mb(fp, " "); + while (*p++) ; + printout(fp, hns2str(*p)); + printout_mb(fp, ":\n"); + + flg = sj3_nextdict_mb(buf); + } + + if (fp != stdout) fclose(fp); +} diff --git a/sj3dic/dictmake.c b/sj3dic/dictmake.c new file mode 100644 index 0000000..0aa3bbb --- /dev/null +++ b/sj3dic/dictmake.c @@ -0,0 +1,223 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: dictmake.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:35 $ + */ + + + + +#include "sj_sysvdef.h" +#include +#ifdef SVR4 +#include +#else +#include +#endif +#include +#include "sjctype.h" +#include "sj3lib.h" +#include "sjtool.h" + +#define IsEOL(c) ((c) == '\0') +#define IsBlank(c) ((c) == ' ' || (c) == '\t') + +extern int force_flag; +extern int verbose_flag; +extern int _sys_code; + +static void touroku(y, k, h) +char *y, *k, *h; +{ + int err; + int grm; + unsigned char buf[BUFSIZ], *hp; + extern int sjistoeuc(); + + if (_sys_code == SYS_SJIS) { + (void) sjistoeuc(buf, BUFSIZ, h, strlen(h)+1); + hp = buf; + } else { + hp = (unsigned char *) h; + } + if (!(grm = str2hns(hp))) { + error_out("\311\312\273\354\312\270\273\372\316\363\244\362\262\341\244\303\244\306\244\244\244\336\244\271 %s:%s:%s", y, k, h); + if (force_flag) return; + exit(1); + } + + err = sj3_touroku_mb(y, k, grm); + + switch (err) { + case -1: + error_out("\245\265\241\274\245\320\244\254\315\356\244\301\244\336\244\267\244\277"); + exit(1); + + case 0: + if (verbose_flag) + normal_out("%s:%s:%s \244\362\305\320\317\277\244\267\244\336\244\267\244\277\n", y, k, h); + break; + + case SJ3_DICT_ERROR: + error_out("\274\255\275\361\244\254\244\312\244\244\241\242\244\242\244\353\244\244\244\317\274\255\275\361\244\313\275\361\244\255\271\376\244\341\244\336\244\273\244\363"); + exit(1); + + case SJ3_DICT_LOCKED: + error_out("\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\306\275\361\244\255\271\376\244\341\244\336\244\273\244\363"); + exit(1); + + case SJ3_WORD_EXIST: + if (verbose_flag) + normal_out("%s:%s:%s \244\317\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\271\n", y, k, h); + break; + + case SJ3_DOUON_FULL: + error_out("\244\263\244\354\260\312\276\345\306\261\262\273\270\354\244\362\305\320\317\277\244\307\244\255\244\336\244\273\244\363 %s:%s:%s", y, k, h); + break; + + case SJ3_DICT_FULL: + error_out("\244\263\244\354\260\312\276\345\274\255\275\361\244\362\302\347\244\255\244\257\244\307\244\255\244\336\244\273\244\363 %s:%s:%s", y, k, h); + if (force_flag) break; + exit(1); + + case SJ3_BAD_YOMI_STR: + error_out("\305\320\317\277\244\307\244\255\244\312\244\244\306\311\244\337\244\307\244\271 %s", y); + if (force_flag) break; + exit(1); + + case SJ3_BAD_KANJI_STR: + error_out("\305\320\317\277\244\307\244\255\244\312\244\244\264\301\273\372\244\307\244\271 %s:%s", y, k); + if (force_flag) break; + exit(1); + + case SJ3_BAD_HINSI_CODE: + error_out("\305\320\317\277\244\307\244\255\244\312\244\244\311\312\273\354\244\307\244\271 %s:%s:%s", y, k, h); + if (force_flag) break; + exit(1); + + case SJ3_INDEX_FULL: + error_out("\245\244\245\363\245\307\245\303\245\257\245\271\244\254\244\244\244\303\244\321\244\244\244\307\244\271"); + + case SJ3_TOUROKU_FAILED: + default: + error_out("\305\320\317\277\244\307\244\255\244\336\244\273\244\363\244\307\244\267\244\277 %s:%s:%s(%d)", + y, k, hns2str(h), h); + break; + } +} + +dictmake(input) +char *input; +{ + unsigned char buf[BUFSIZ]; + FILE *fp; + unsigned char *p; + unsigned char *yom, *knj, *grm; + int c; + int flg; + static char *FormatErrorString = "\245\325\245\251\241\274\245\336\245\303\245\310\245\250\245\351\241\274:%s"; + + if (input && *input) { + fp = fopen(input, "r"); + if (!fp) { + error_out("%s \244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363", input); + exit(1); + } + } + else + fp = stdin; + + while (fgets((char *)buf, sizeof(buf), fp)) { + if (p = (unsigned char *)strchr((char *)buf, '\n')) + *p = '\0'; + else { + do { + c = fgetc(fp); + } while (c != '\n' && c != EOF); + } + + yom = buf; + while (IsBlank(*yom)) yom++; + if (IsEOL(*yom)) { + error_out(FormatErrorString, buf); + if (force_flag) continue; + break; + } + + knj = yom; + while (!IsEOL(*knj) && !IsBlank(*knj)) knj++; + if (IsEOL(*knj)) { + error_out(FormatErrorString, buf); + if (force_flag) continue; + break; + } + *knj++ = '\0'; + while (IsBlank(*knj)) knj++; + if (IsEOL(*knj)) { + error_out(FormatErrorString, buf); + if (force_flag) continue; + break; + } + + grm = knj; + while (!IsEOL(*grm) && !IsBlank(*grm)) grm++; + if (IsEOL(*grm)) { + error_out(FormatErrorString, buf); + if (force_flag) continue; + break; + } + *grm++ = '\0'; + while (IsBlank(*grm)) grm++; + if (IsEOL(*grm)) { + error_out(FormatErrorString, buf); + if (force_flag) continue; + break; + } + + flg = -1; + while (*grm && flg) { + p = grm; + while (!IsEOL(*p) && !IsBlank(*p) && (*p != ':')) p++; + if (IsEOL(*p)) + flg = 0; + else + *p++ = '\0'; + + touroku(yom, knj, grm); + + if (flg) { + grm = p; + while (IsBlank(*grm)) grm++; + } + } + } +} diff --git a/sj3dic/hinsi.c b/sj3dic/hinsi.c new file mode 100644 index 0000000..dbc3e12 --- /dev/null +++ b/sj3dic/hinsi.c @@ -0,0 +1,259 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: hinsi.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:36 $ + */ + + + + +#include "sj_hinsi.h" + +static struct hlist { + int code; + char *str; +} hinsi[] = { + MEISI_1, "\314\276\273\354", + MEISI_1, "\314\276\243\261", + MEISI_2, "\314\276\243\262", + MEISI_3, "\314\276\243\263", + MEISI_4, "\314\276\243\264", + MEISI_5, "\314\276\243\265", + MEISI_6, "\314\276\243\266", + MEISI_7, "\314\276\243\267", + MEISI_8, "\314\276\243\270", + MEISI_9, "\314\276\243\271", + MEISI_10, "\314\276\243\261\243\260", + MEISI_11, "\314\276\243\261\243\261", + MEISI_20, "\314\276\243\262\243\260", + D_MEISI_1, "\302\345\314\276\273\354", + D_MEISI_1, "\302\345\243\261", + D_MEISI_2, "\302\345\243\262", + D_MEISI_3, "\302\345\243\263", + D_MEISI_4, "\302\345\243\264", + D_MEISI_5, "\302\345\243\265", + D_MEISI_6, "\302\345\243\266", + MYOUJI, "\311\304\273\372", + NAMAE, "\314\276\301\260", + KIGYOU, "\264\353\266\310", + TIMEI, "\303\317\314\276", + KEN_KU, "\270\251\241\277\266\350\314\276", + KEN_KU, "\270\251\266\350", + RENTAISI, "\317\242\302\316\273\354", + RENTAISI, "\317\242\302\316", + SETUZOKU, "\300\334\302\263\273\354", + SETUZOKU, "\300\334\302\263", + KANDOUSI, "\264\266\306\260", + JOSUUSI, "\275\365\277\364\273\354", + JOSUUSI, "\275\365\277\364", + SUUSI, "\277\364\273\354", + SETTOU_1, "\300\334\306\254\270\354", + SETTOU_1, "\300\334\306\254\243\261", + SETTOU_2, "\300\334\306\254\243\262", + SETTOU_3, "\300\334\306\254\243\263", + SETTOU_4, "\300\334\306\254\243\264", + SETTOU_5, "\300\334\306\254\243\265", + SETUBI_1, "\300\334\310\370\270\354", + SETUBI_1, "\300\334\310\370\243\261", + SETUBI_2, "\300\334\310\370\243\262", + SETUBI_3, "\300\334\310\370\243\263", + SETUBI_4, "\300\334\310\370\243\264", + SETUBI_5, "\300\334\310\370\243\265", + SETUBI_6, "\300\334\310\370\243\266", + SETUBI_7, "\300\334\310\370\243\267", + SETUBI_8, "\300\334\310\370\243\270", + SETUBI_9, "\300\334\310\370\243\271", + FUKUSI_1, "\311\373\273\354", + FUKUSI_1, "\311\373\243\261", + FUKUSI_2, "\311\373\243\262", + FUKUSI_3, "\311\373\243\263", + FUKUSI_4, "\311\373\243\264", + FUKUSI_5, "\311\373\243\265", + FUKUSI_6, "\311\373\243\266", + FUKUSI_7, "\311\373\243\267", + FUKUSI_8, "\311\373\243\270", + FUKUSI_9, "\311\373\243\271", + JOSUUSI2, "\275\365\277\364\243\262", + KEIYOUSI_1, "\267\301\315\306\273\354", + KEIYOUSI_1, "\267\301\243\261", + KEIYOUSI_2, "\267\301\243\262", + KEIYOUSI_3, "\267\301\243\263", + KEIYOUSI_4, "\267\301\243\264", + KEIYOUSI_5, "\267\301\243\265", + KEIYOUSI_6, "\267\301\243\266", + KEIYOUSI_7, "\267\301\243\267", + KEIYOUSI_8, "\267\301\243\270", + KEIYOUSI_9, "\267\301\243\271", + KEIYOUSI_10, "\267\301\243\261\243\260", + KEIYOUSI_11, "\267\301\243\261\243\261", + KE_DOUSI_1, "\267\301\315\306\306\260\273\354", + KE_DOUSI_1, "\267\301\306\260\243\261", + KE_DOUSI_2, "\267\301\306\260\243\262", + KE_DOUSI_3, "\267\301\306\260\243\263", + KE_DOUSI_4, "\267\301\306\260\243\264", + KE_DOUSI_5, "\267\301\306\260\243\265", + KE_DOUSI_6, "\267\301\306\260\243\266", + KE_DOUSI_7, "\267\301\306\260\243\267", + KE_DOUSI_8, "\267\301\306\260\243\270", + KE_DOUSI_9, "\267\301\306\260\243\271", + DO_SAHEN, "\306\260\241\246\245\265\312\321", + DO_SAHEN, "\245\265\312\321", + DO_ZAHEN, "\306\260\241\246\245\266\312\321", + DO_ZAHEN, "\245\266\312\321", + DO_1DAN_1, "\306\260\241\246\260\354\303\312", + DO_1DAN_1, "\260\354\303\312\243\261", + DO_KAGO_1, "\306\260\241\246\245\253\270\336", + DO_KAGO_1, "\245\253\270\336\243\261", + DO_GAGO_1, "\306\260\241\246\245\254\270\336", + DO_GAGO_1, "\245\254\270\336\243\261", + DO_SAGO_1, "\306\260\241\246\245\265\270\336", + DO_SAGO_1, "\245\265\270\336\243\261", + DO_TAGO_1, "\306\260\241\246\245\277\270\336", + DO_TAGO_1, "\245\277\270\336\243\261", + DO_NAGO_1, "\306\260\241\246\245\312\270\336", + DO_NAGO_1, "\245\312\270\336", + DO_BAGO_1, "\306\260\241\246\245\320\270\336", + DO_BAGO_1, "\245\320\270\336\243\261", + DO_MAGO_1, "\306\260\241\246\245\336\270\336", + DO_MAGO_1, "\245\336\270\336\243\261", + DO_RAGO_1, "\306\260\241\246\245\351\270\336", + DO_RAGO_1, "\245\351\270\336\243\261", + DO_WAGO_1, "\306\260\241\246\245\357\270\336", + DO_WAGO_1, "\245\357\270\336\243\261", + DO_1DAN_2, "\260\354\303\312\243\262", + DO_KAGO_2, "\245\253\270\336\243\262", + DO_GAGO_2, "\245\254\270\336\243\262", + DO_SAGO_2, "\245\265\270\336\243\262", + DO_TAGO_2, "\245\277\270\336\243\262", + DO_BAGO_2, "\245\320\270\336\243\262", + DO_MAGO_2, "\245\336\270\336\243\262", + DO_RAGO_2, "\245\351\270\336\243\262", + DO_WAGO_2, "\245\357\270\336\243\262", + DO_KAGO_5, "\245\253\270\336\243\265", + DO_GAGO_5, "\245\254\270\336\243\265", + DO_SAGO_5, "\245\265\270\336\243\265", + DO_TAGO_5, "\245\277\270\336\243\265", + DO_BAGO_5, "\245\320\270\336\243\265", + DO_MAGO_5, "\245\336\270\336\243\265", + DO_RAGO_5, "\245\351\270\336\243\265", + DO_WAGO_5, "\245\357\270\336\243\265", + DO_KAGO_6, "\245\253\270\336\243\266", + DO_GAGO_6, "\245\254\270\336\243\266", + DO_SAGO_6, "\245\265\270\336\243\266", + DO_TAGO_6, "\245\277\270\336\243\266", + DO_BAGO_6, "\245\320\270\336\243\266", + DO_MAGO_6, "\245\336\270\336\243\266", + DO_RAGO_6, "\245\351\270\336\243\266", + DO_WAGO_6, "\245\357\270\336\243\266", + DO_1DAN_3, "\260\354\303\312\243\263", + DO_KAGO_3, "\245\253\270\336\243\263", + DO_GAGO_3, "\245\254\270\336\243\263", + DO_SAGO_3, "\245\265\270\336\243\263", + DO_TAGO_3, "\245\277\270\336\243\263", + DO_BAGO_3, "\245\320\270\336\243\263", + DO_MAGO_3, "\245\336\270\336\243\263", + DO_RAGO_3, "\245\351\270\336\243\263", + DO_WAGO_3, "\245\357\270\336\243\263", + DO_1DAN_4, "\260\354\303\312\243\264", + DO_KAGO_4, "\245\253\270\336\243\264", + DO_GAGO_4, "\245\254\270\336\243\264", + DO_SAGO_4, "\245\265\270\336\243\264", + DO_TAGO_4, "\245\277\270\336\243\264", + DO_BAGO_4, "\245\320\270\336\243\264", + DO_MAGO_4, "\245\336\270\336\243\264", + DO_RAGO_4, "\245\351\270\336\243\264", + DO_WAGO_4, "\245\357\270\336\243\264", + DO_KAGO_7, "\245\253\270\336\243\267", + DO_GAGO_7, "\245\254\270\336\243\267", + DO_SAGO_7, "\245\265\270\336\243\267", + DO_TAGO_7, "\245\277\270\336\243\267", + DO_BAGO_7, "\245\320\270\336\243\267", + DO_MAGO_7, "\245\336\270\336\243\267", + DO_RAGO_7, "\245\351\270\336\243\267", + DO_WAGO_7, "\245\357\270\336\243\267", + DO_KAGO_8, "\245\253\270\336\243\270", + DO_GAGO_8, "\245\254\270\336\243\270", + DO_SAGO_8, "\245\265\270\336\243\270", + DO_TAGO_8, "\245\277\270\336\243\270", + DO_BAGO_8, "\245\320\270\336\243\270", + DO_MAGO_8, "\245\336\270\336\243\270", + DO_RAGO_8, "\245\351\270\336\243\270", + DO_WAGO_8, "\245\357\270\336\243\270", + SP_SA_MI1, "\245\265\312\321\314\244\243\261", + SP_SA_MI2, "\245\265\312\321\314\244\243\262", + SP_SA_YOU, "\245\265\312\321\314\244\315\321", + SP_SA_SYU, "\245\265\312\321\275\252\302\316", + SP_SA_KAT, "\245\265\312\321\262\276", + SP_SA_ME1, "\245\265\312\321\314\277\243\261", + SP_SA_ME2, "\245\265\312\321\314\277\243\262", + SP_KA_MIZ, "\245\253\312\321\314\244", + SP_KA_YOU, "\245\253\312\321\315\321", + SP_KA_SYU, "\245\253\312\321\275\252\302\316", + SP_KA_KAT, "\245\253\312\321\262\276", + SP_KA_MEI, "\245\253\312\321\314\277", + TEINEI1, "\303\372\307\253\243\261", + TEINEI2, "\303\372\307\253\243\262", + SP_KA_ONB, "\245\253\270\336\262\273\312\330", + SP_FUKUSI, "\306\303\274\354\311\373", + AISATU, "\260\247\273\242", + SP_KEIYOUSI, "\306\303\274\354\267\301\315\306", + TANKANJI, "\303\261\264\301\273\372", + TANKANJI, "\303\261\264\301", + IKKATU, "\260\354\263\347", + 0, 0 +}; + +char *hns2str(code) +int code; +{ + struct hlist *p; + + for (p = hinsi ; p -> code ; p++) { + if (p -> code == code) + return p -> str; + } + + return "ERROR"; +} + +int str2hns(str) +char *str; +{ + struct hlist *p; + + for (p = hinsi ; p -> code ; p++) { + if (strcmp(p -> str, str) == 0) + return p -> code; + } + + return 0; +} diff --git a/sj3dic/sj3dic.c b/sj3dic/sj3dic.c new file mode 100644 index 0000000..484a1ef --- /dev/null +++ b/sj3dic/sj3dic.c @@ -0,0 +1,332 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3dic.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1996/02/15 02:22:58 $ + */ + + + + +#include "sj_sysvdef.h" +#include +#ifdef SVR4 +#include +#else +#include +#endif +#include +#include +#include +#include "sjtool.h" +#include "sj3lib.h" + +char *getlogin(), *getenv(); +struct passwd *getpwnam(), *getpwuid(); + +static _open_error(); +static _close_error(); +void make_dicname(); +void setsjserv(); + +#ifdef __sony_news +extern int _sys_code; +#else +int _sys_code = SYS_EUC; +#endif + +#ifndef lint +static char rcsid_sony[] = "$Header: /export/work/contrib/sj3/sj3dic/RCS/sj3dic.c,v 1.11 1994/06/03 07:41:59 notanaka Exp $ SONY;"; +#endif + +static struct option { + char *str; + int code; +} options[] = { + "text", EXEC_TEXT, + "dict", EXEC_DICT, + "init", EXEC_INIT, + "verbose", EXEC_VERBOSE, + "host", EXEC_SERVER, + "server", EXEC_SERVER, + "force", EXEC_FORCE, + 0, 0 +}; + +char prog_name[LONGLENGTH]; +char home_dir[LONGLENGTH]; +char user_name[LONGLENGTH]; +char term_name[LONGLENGTH]; +char serv_name[LONGLENGTH]; +char file_name[LONGLENGTH]; +char dict_name[LONGLENGTH]; +int verbose_flag = 0; +int init_flag = 0; +int force_flag = 0; + +main(argc, argv) +int argc; +char **argv; +{ + int err; + int mode; + + if (!init_code()) { + fprintf(stderr, "Can't excute on this locale\n"); + exit(1); + } + init_env(); + mode = parsearg(argc, argv); + setsjserv(getenv("SJ3SERV")); + getsjrc(); + make_dicname(); + + if (err = sj3_open(serv_name, user_name, prog_name)) _open_error(err); + + switch (mode) { + case EXEC_TEXT: + dictdisp(file_name); + break; + + case EXEC_DICT: + dictmake(file_name); + break; + default: + break; + } + + if (err = sj3_close()) _close_error(err); +} + +init_env() +{ + char *un, *hp, *tn; + struct passwd *pwd; + + prog_name[0] = + home_dir[0] = + user_name[0] = + term_name[0] = + serv_name[0] = + file_name[0] = + dict_name[0] = '\0'; + + un = getlogin(); + hp = getenv("HOME"); + + setpwent(); + pwd = (un == NULL || *un == '\0') ? getpwuid(getuid()) : getpwnam(un); + if (pwd != NULL) { + strcpy(user_name, pwd -> pw_name); + if (hp == NULL) hp = pwd -> pw_dir; + endpwent(); + } + if (hp != NULL) strcpy(home_dir, hp); + + if ((tn = getenv("TERM")) == NULL) { + fprintf(stderr, "Can't getenv TERM\n\r"); + perror("getenv"); + exit(1); + } + strcpy(term_name, tn); +} + +usage(ret) +int ret; +{ + fprintf(stderr, + "Usage: %s -{text|dict} [-H host_name] [file_name]\n", + prog_name); + exit(ret); +} + +parsearg(argc, argv) +int argc; +char *argv[]; +{ + int errflg = 0; + int i, j; + char *p, *q; + struct option *opt; + int cmd; + int mode = 0; + char tmp[LONGLENGTH]; + extern char *strrchr(); + + strcpy(prog_name, (p = strrchr(argv[0], '/')) ? p + 1 : argv[0]); + + for (i = 1 ; i < argc ; i++) { + if (*argv[i] == '-') { + for (p = argv[i]+1, q = tmp ; *p ; p++) + *q++ = isupper(*p) ? tolower(*p) : *p; + *q = 0; + j = strlen(tmp); + cmd = 0; + for (opt = options ; opt -> code ; opt++) { + if (strncmp(opt -> str, tmp, j)) + continue; + else if (cmd) { + errflg++; break; + } + else + cmd = opt -> code; + } + if (errflg) break; + if (cmd == 0) { errflg++; break; } + switch (cmd) { + case EXEC_TEXT: + case EXEC_DICT: + if (mode) + errflg++; + else + mode = cmd; + break; + + case EXEC_INIT: + init_flag++; break; + + case EXEC_VERBOSE: + verbose_flag++; break; + + case EXEC_SERVER: + if (++i >= argc) { errflg++; break; } + setsjserv(argv[i]); + break; + + case EXEC_FORCE: + force_flag++; break; + + default: + errflg++; break; + } + } + else if (file_name[0]) { + errflg++; break; + } + else + strcpy(file_name, argv[i]); + } + + if (errflg || mode == 0) usage(1); + + return mode; +} + +void +make_dicname() +{ + if (dict_name[0] != '\0') return; + + strcpy(dict_name, home_dir); + strcat(dict_name, "/"); + strcat(dict_name, "sj2usr.dic"); +} + +void +setdicname(dictname) +char *dictname; +{ + if (dict_name[0] != '\0') return; + if (dictname == NULL) return; + strcpy(dict_name, dictname); +} + +void +setsjserv(hostname) +char *hostname; +{ + if (serv_name[0] != '\0') return; + if (hostname == NULL) return; + strcpy(serv_name, hostname); +} + +struct errlist { + int code; + char *msg; + int flg; +}; + +static _error_and(err, list) +int err; +struct errlist *list; +{ + int flag = 0; + + while (list -> code) { + if (err & list -> code) { + error_out(list -> msg); + err &= ~(list -> code); + if (list -> flg) flag++; + } + list++; + } + if (flag) exit(1); +} + +static _open_error(err) +int err; +{ + static struct errlist err_msg[] = { + SJ3_SERVER_DEAD, "\245\265\241\274\245\320\244\254\273\340\244\363\244\307\244\244\244\336\244\271", 1, + SJ3_CONNECT_ERROR, "\245\265\241\274\245\320\244\310\300\334\302\263\244\307\244\255\244\336\244\273\244\363\244\307\244\267\244\277", 1, + SJ3_ALREADY_CONNECTED, "\245\265\241\274\245\320\244\310\300\334\302\263\272\321\244\307\244\271", 1, + SJ3_CANNOT_OPEN_MDICT, "\245\341\245\244\245\363\274\255\275\361\244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363", 0, + SJ3_CANNOT_OPEN_UDICT, "\245\346\241\274\245\266\274\255\275\361\244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363", 1, + SJ3_CANNOT_OPEN_STUDY, "\263\330\275\254\245\325\245\241\245\244\245\353\244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363", 0, + SJ3_CANNOT_MAKE_UDIR, "\245\346\241\274\245\266\241\274\245\307\245\243\245\354\245\257\245\310\245\352\244\254\272\356\300\256\244\307\244\255\244\336\244\273\244\363", 1, + SJ3_CANNOT_MAKE_UDICT, "\245\346\241\274\245\266\274\255\275\361\244\254\272\356\300\256\244\307\244\255\244\336\244\273\244\363", 1, + SJ3_CANNOT_MAKE_STUDY, "\263\330\275\254\245\325\245\241\245\244\245\353\244\254\272\356\300\256\244\307\244\255\244\336\244\273\244\363", 0, + -1, "\245\250\245\351\241\274", 1, + 0, 0, 0 + }; + + _error_and(err, err_msg); +} + +static _close_error(err) +int err; +{ + static struct errlist err_msg[] = { + SJ3_SERVER_DEAD, "\245\265\241\274\245\320\241\274\244\254\273\340\244\363\244\307\244\244\244\336\244\271", 1, + SJ3_DISCONNECT_ERROR, "\300\332\244\352\312\374\244\267\244\307\245\250\245\351\241\274\244\254\244\242\244\352\244\336\244\267\244\277", 1, + SJ3_NOT_CONNECTED, "\245\265\241\274\245\320\244\310\300\334\302\263\244\265\244\354\244\306\244\244\244\336\244\273\244\363", 1, + SJ3_NOT_OPENED_MDICT, "\245\341\245\244\245\363\274\255\275\361\244\317\245\252\241\274\245\327\245\363\244\265\244\354\244\306\244\244\244\336\244\273\244\363", 0, + SJ3_NOT_OPENED_UDICT, "\245\346\241\274\245\266\274\255\275\361\244\317\245\252\241\274\245\327\245\363\244\265\244\354\244\306\244\244\244\336\244\273\244\363", 1, + SJ3_NOT_OPENED_STUDY, "\263\330\275\254\245\325\245\241\245\244\245\353\244\317\245\252\241\274\245\327\245\363\244\265\244\354\244\306\244\244\244\336\244\273\244\363", 0, + SJ3_CLOSE_MDICT_ERROR, "\245\341\245\244\245\363\274\255\275\361\244\254\245\257\245\355\241\274\245\272\244\307\244\255\244\336\244\273\244\363", 0, + SJ3_CLOSE_UDICT_ERROR, "\245\346\241\274\245\266\274\255\275\361\244\254\245\257\245\355\241\274\245\272\244\307\244\255\244\336\244\273\244\363", 1, + SJ3_CLOSE_STUDY_ERROR, "\263\330\275\254\245\325\245\241\245\244\245\353\244\254\245\257\245\355\241\274\245\272\244\307\244\255\244\336\244\273\244\363", 0, + -1, "\245\250\245\351\241\274", 1, + 0, 0, 0 + }; + + _error_and(err, err_msg); +} diff --git a/sj3dic/sj3err.c b/sj3dic/sj3err.c new file mode 100644 index 0000000..366c4d4 --- /dev/null +++ b/sj3dic/sj3err.c @@ -0,0 +1,109 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3err.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:38 $ + */ + + + + +#include +#include "sj3err.h" + +sj3error(fp, code) +FILE *fp; +int code; +{ + unsigned char tmp[BUFSIZ]; + + switch (code) { +#define CASE(X, str) case (X): printout(fp, str); break; + CASE(SJ3_InternalError, "\245\244\245\363\245\277\241\274\245\312\245\353\245\250\245\351\241\274"); + CASE(SJ3_NormalEnd, "\300\265\276\357\275\252\316\273"); + CASE(SJ3_ServerDown, "\245\265\241\274\245\320\241\274\244\254\315\356\244\301\244\306\244\244\244\336\244\271"); + CASE(SJ3_OpenSocket, "socket \244\316 open \244\313\274\272\307\324\244\267\244\336\244\267\244\277"); + CASE(SJ3_ConnectSocket, "socket \244\316 connect \244\313\274\272\307\324\244\267\244\336\244\267\244\277"); + CASE(SJ3_GetHostByName, "gethostbyname \244\313\274\272\307\324\244\267\244\336\244\267\244\277"); + CASE(SJ3_NotOpened, "\245\252\241\274\245\327\245\363\244\265\244\354\244\306\244\244\244\336\244\273\244\363"); + CASE(SJ3_NotEnoughMemory, "\245\341\245\342\245\352\244\254\302\255\244\352\244\336\244\273\244\363"); + CASE(SJ3_IllegalCommand, "\245\263\245\336\245\363\245\311\244\254\304\352\265\301\244\265\244\354\244\306\244\244\244\336\244\273\244\363"); + CASE(SJ3_DifferentVersion, "\245\320\241\274\245\270\245\347\245\363\244\254\260\343\244\244\244\336\244\271"); + CASE(SJ3_NoHostName, "\245\333\245\271\245\310\314\276\244\254\244\242\244\352\244\336\244\273\244\363"); + CASE(SJ3_NoUserName, "\245\346\241\274\245\266\314\276\244\254\244\242\244\352\244\336\244\273\244\363"); + CASE(SJ3_NotAllowedUser, "\300\334\302\263\244\362\265\366\244\265\244\354\244\306\244\244\244\336\244\273\244\363"); + CASE(SJ3_AlreadyConnected, "\300\334\302\263\272\321\244\307\244\271"); + CASE(SJ3_NotConnected, "\300\334\302\263\244\265\244\354\244\306\244\244\244\336\244\273\244\363"); + CASE(SJ3_TooLongParameter, "\245\321\245\351\245\341\241\274\245\277\244\254\304\271\244\271\244\256\244\336\244\271"); + CASE(SJ3_IllegalParameter, "\245\321\245\351\245\341\241\274\245\277\244\254\260\333\276\357\244\307\244\271"); + CASE(SJ3_BadDictID, "\244\275\244\316\244\350\244\246\244\312\274\255\275\361\244\317\244\242\244\352\244\336\244\273\244\363"); + CASE(SJ3_IllegalDictFile, "\274\255\275\361\245\325\245\241\245\244\245\353\244\254\260\333\276\357\244\307\244\271"); + CASE(SJ3_IllegalStdyFile, "\263\330\275\254\245\325\245\241\245\244\245\353\244\254\260\333\276\357\244\307\244\271"); + CASE(SJ3_IncorrectPasswd, "\245\321\245\271\245\357\241\274\245\311\244\254\260\333\244\312\244\352\244\336\244\271"); + CASE(SJ3_FileNotExist, "\245\325\245\241\245\244\245\353\244\254\302\270\272\337\244\267\244\336\244\273\244\363"); + CASE(SJ3_CannotAccessFile, "\245\325\245\241\245\244\245\353\244\313\245\242\245\257\245\273\245\271\244\307\244\255\244\336\244\273\244\363"); + CASE(SJ3_CannotOpenFile, "\245\325\245\241\245\244\245\353\244\254\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363"); + CASE(SJ3_CannotCreateFile, "\245\325\245\241\245\244\245\353\244\254\272\356\300\256\244\307\244\255\244\336\244\273\244\363"); + CASE(SJ3_FileReadError, "\245\352\241\274\245\311\245\250\245\351\241\274\244\254\244\242\244\352\244\336\244\267\244\277"); + CASE(SJ3_FileWriteError, "\245\351\245\244\245\310\245\250\245\351\241\274\244\254\244\242\244\352\244\336\244\267\244\277"); + CASE(SJ3_FileSeekError, "\245\267\241\274\245\257\245\250\245\351\241\274\244\254\244\242\244\352\244\336\244\267\244\277"); + CASE(SJ3_StdyAlreadyOpened, "\263\330\275\254\245\325\245\241\245\244\245\353\244\317\245\252\241\274\245\327\245\363\244\265\244\354\244\306\244\244\244\336\244\271"); + CASE(SJ3_StdyFileNotOpened, "\263\330\275\254\245\325\245\241\245\244\245\353\244\254\245\252\241\274\245\327\245\363\244\265\244\354\244\306\244\244\244\336\244\273\244\363"); + CASE(SJ3_TooSmallStdyArea, "\312\270\300\341\304\271\263\330\275\254\316\316\260\350\244\254\276\256\244\265\244\271\244\256\244\336\244\271"); + CASE(SJ3_LockedByOther, "\302\276\244\316\245\257\245\351\245\244\245\242\245\363\245\310\244\313\245\355\245\303\245\257\244\265\244\354\244\306\244\336\244\271"); + CASE(SJ3_NotLocked, "\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\273\244\363"); + CASE(SJ3_NoSuchDict, "\244\275\244\316\244\350\244\246\244\312\274\255\275\361\244\317\244\242\244\352\244\336\244\273\244\363"); + CASE(SJ3_ReadOnlyDict, "\275\361\244\255\271\376\244\337\244\307\244\255\244\312\244\244\274\255\275\361\244\307\244\271"); + CASE(SJ3_DictLocked, "\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271"); + CASE(SJ3_BadYomiString, "\265\366\244\265\244\354\244\312\244\244\306\311\244\337\312\270\273\372\316\363\244\307\244\271"); + CASE(SJ3_BadKanjiString, "\265\366\244\265\244\354\244\312\244\244\264\301\273\372\312\270\273\372\316\363\244\307\244\271"); + CASE(SJ3_BadHinsiCode, "\311\312\273\354\245\263\241\274\245\311\260\333\276\357\244\307\244\271"); + CASE(SJ3_AddDictFailed, "\274\255\275\361\305\320\317\277\244\362\274\272\307\324\244\267\244\336\244\267\244\277"); + CASE(SJ3_AlreadyExistWord, "\244\271\244\307\244\313\302\270\272\337\244\267\244\306\244\244\244\336\244\271"); + CASE(SJ3_NoMoreDouonWord, "\244\263\244\354\260\312\276\345\306\261\262\273\270\354\244\362\305\320\317\277\244\307\244\255\244\336\244\273\244\363"); + CASE(SJ3_NoMoreUserDict, "\244\263\244\354\260\312\276\345\274\255\275\361\244\313\305\320\317\277\244\307\244\255\244\336\244\273\244\363"); + CASE(SJ3_NoMoreIndexBlock, "\244\263\244\354\260\312\276\345\245\244\245\363\245\307\245\303\245\257\245\271\244\313\305\320\317\277\244\307\244\255\244\336\244\273\244\363"); + CASE(SJ3_DelDictFailed, "\274\255\275\361\272\357\275\374\244\362\274\272\307\324\244\267\244\336\244\267\244\277"); + CASE(SJ3_NoSuchWord, "\244\275\244\316\244\350\244\246\244\312\275\317\270\354\244\317\244\242\244\352\244\336\244\273\244\363"); + CASE(SJ3_DirAlreadyExist, "\244\275\244\316\245\307\245\243\245\354\245\257\245\310\245\352\244\254\302\270\272\337\244\267\244\306\244\244\244\336\244\271"); + CASE(SJ3_CannotCreateDir, "\245\307\245\243\245\354\245\257\245\310\245\352\244\254\272\356\300\256\244\307\244\255\244\336\244\273\244\363"); + CASE(SJ3_NoMoreDictData, "\244\263\244\354\260\312\276\345\274\255\275\361\245\307\241\274\245\277\244\254\244\242\244\352\244\336\244\273\244\363"); + CASE(SJ3_UserConnected, "\300\334\302\263\244\267\244\306\244\244\244\353\245\346\241\274\245\266\244\254\244\242\244\352\244\336\244\271"); + CASE(SJ3_TooLongPasswd, "\245\321\245\271\245\357\241\274\245\311\244\254\304\271\244\271\244\256\244\336\244\271"); + CASE(SJ3_TooLongComment, "\245\263\245\341\245\363\245\310\244\254\304\271\244\271\244\256\244\336\244\271"); +#undef CASE + default: + sprintf((char *)tmp, "\314\244\304\352\265\301\244\316\245\250\245\351\241\274(%d)", code); + printout(fp, tmp); + break; + } + printout(fp, "\r\n"); +} diff --git a/sj3dic/sjctype.h b/sj3dic/sjctype.h new file mode 100644 index 0000000..1b13e21 --- /dev/null +++ b/sj3dic/sjctype.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sjctype.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:39 $ + */ + + + +#ifndef __sony_news +#ifndef __SJCTYPE +#define __SJCTYPE + +#include "sj_sysvdef.h" +#define sjis2euc sj3_sjis2euc +#define jis2sjis sj3_jis2sjis +#define euctosjis sj3_euctosjis +#define sjis2jis sj3_sjis2jis +#define euc2sjis sj3_euc2sjis +#define jis2euc sj3_jis2euc +#define sjistoeuc sj3_sjistoeuc + +#define issjis1(c) (((0x81 <= ((unsigned char)(c))) && (((unsigned char)(c)) <= 0x9f)) || \ + ((0xe0 <= ((unsigned char)(c))) && (((unsigned char)(c)) <= 0xfc))) + +#define issjis2(c) (((0x40 <= ((unsigned char)(c))) && (((unsigned char)(c)) <= 0xfc)) && (((unsigned char)(c)) != 0x7f)) + +#define iseuc(c) ((0xa1 <= ((unsigned char)(c))) && (((unsigned char)(c)) <= 0xfe)) + +#define iseuckana(c) (((unsigned char)(c)) == 0x8e) + +#define iskana2(c) ((0xa1 <= ((unsigned char)(c))) && (((unsigned char)(c)) <= 0xdf)) + +#define jiszen(c) (issjis1(((c) >> 8) & 0xff) && issjis2((c) & 0xff)) + +#define isjjis(c) ((0x21 <= (c)) && ((c) <= 0x7e)) + +#define jstrlen(s) euclen(s, 65535) + +#define iseuc3byte(c) ((c) == 0x8f) + +#define iseuc2byte(c) (iseuc(c) || ((c) == 0x8e)) + +#define iskanji issjis1 +#define iskanji2 issjis2 +#define iskana iskana2 +#endif +#else +#ifndef SVR4 +#define euctosjis sj3_euctosjis +#define sjistoeuc sj3_sjistoeuc +#endif +#endif + diff --git a/sj3dic/sjrc.c b/sj3dic/sjrc.c new file mode 100644 index 0000000..438cfb0 --- /dev/null +++ b/sj3dic/sjrc.c @@ -0,0 +1,310 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sjrc.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:26:31 $ + */ + + + + + +#include +#include +#include +#include +#include "sjctype.h" +#include "sjtool.h" + +struct wordent { + char word_str[MAXWORD]; + }; + +extern char home_dir[]; +extern char term_name[]; + +char RCfile[LONGLENGTH]; + +static char *rcfile = ".sjrc"; + + +static int user_euc = 0; +static int file_code = SYS_SJIS; + +int set_dict(), set_server(); + +struct functbl { + char *keyword; + int (*func)(); +} funcs[] = { + "dictionary", set_dict, + "userdic", set_dict, + "server", set_server, + NULL, NULL +}; + +#define TOLOWER(c) (isupper(c) ? tolower(c) : (c)) + +sjset_code() +{ + char *loc; + +#ifdef LACKOF_SETLOCALE + loc = getenv("LANG"); +#else + loc = setlocale(LC_CTYPE, ""); +#endif + if (!loc) { + fprintf(stderr, "Error: can't get current locale\n"); + exit(1); + } + if (strncmp(loc, "ja_JP.SJIS", 10) == 0) { + user_euc = 0; + } else if (strncmp(loc, "ja", 2) == 0 || + strncmp(loc, "Ja", 2) == 0) { + user_euc = 1; + file_code = -1; + } else +#ifdef __sony_news + return 0; +#else + { + fprintf(stderr, "Warrning: In this locale japanese will not be used.\n"); + user_euc = 1; + file_code = -1; + } +#endif + return 1; +} + + +getsjrc () +{ + FILE *fd, *fopen(); + register char *p; + char *getenv(); + + sjset_code(); + RCfile[0] = '\0'; + if ((p = getenv("SJRC")) != NULL && *p != '\0') { + if (*p != '/') { + strcpy(RCfile, home_dir); + strcat(RCfile, "/"); + } + strcat(RCfile, p); + if ((fd = fopen (RCfile, "r")) != NULL) { + setrc (RCfile, fd); + fclose (fd); + return TRUE; + } + } + if (home_dir[0] != '\0') { + strcpy(RCfile, home_dir); + strcat(RCfile, "/"); + strcat(RCfile, rcfile); + if ((fd = fopen (RCfile, "r")) != NULL) { + setrc (RCfile, fd); + fclose (fd); + return TRUE; + } + } + RCfile[0] = '\0'; + return FALSE; +} + + +setrc (file, fd) +char *file; +FILE *fd; +{ + char line[MAXLINE]; + register int w; + struct wordent word[WORDN]; + register char *p; + struct functbl *functp; + + while ((p = fgets (line, MAXLINE, fd)) != NULL) { + if ((w = getword(line, word)) <= 0) + continue; + functp = funcs; + p = word[0].word_str; + while (functp->keyword != NULL) { + if (much(p, functp->keyword)) { + if (functp->func) (*(functp->func))(word); + break;; + } + functp++; + } + } +} + + +much(s1, s2) +char *s1, *s2; +{ + register char c1, c2; + + if (s1 == NULL) + return 0; + while (*s2 != '\0') { + c1 = *s1++; + c2 = *s2++; + if (TOLOWER(c1) != TOLOWER(c2)) + return 0; + } + return 1; +} + + +getword (s, word) +register char *s; +struct wordent word[]; +{ + register u_char c, cc; + register char *p; + register int i, wcount; + + if (IsDelimitor(*s)) { + s++; + } else { + p = s; + while(!IsDelimitor(*s)) { + if (IsTerminator(*s) || isTerminator(*s)) + break; + s++; + } + *s++ = '\0'; + if (much(p, term_name) == 0) + return 0; + } + i = wcount = 0; + p = word[wcount].word_str; + while (*s != '\0') { + c = *s++; + if (file_code == SYS_SJIS) { + if (issjis1(c) && issjis2(*s)) { + if (i < MAXWORD - 2) { + *p++ = c; + *p++ = *s; + i += 2; + } + s++; + continue; + } + } else if (file_code == SYS_EUC) { + if (iseuc(c) && iseuc(*s)) { + if (i < MAXWORD - 2) { + cc = (c << 8) + (*s & 0xff); + cc = euc2sjis(cc); + *p++ = (cc >> 8) & 0xff; + *p++ = cc & 0xff; + i += 2; + } + s++; + continue; + } + if (iseuckana(c) && iskana2(*s)) + c = *s++; + } else { + if (issjis1(c) && issjis2(*s)) { + file_code = SYS_SJIS; + s--; + continue; + } + if ((iseuc(c) && iseuc(*s)) || + (iseuckana(c) && iskana2(*s))) { + file_code = SYS_EUC; + s--; + continue; + } + } + if (isTerminator(c)) + break; + if (IsDelimitor(c)) { + if (i > 0) { + if (++wcount >= WORDN - 1) + break; + *p = '\0'; + i = 0; + p = word[wcount].word_str; + } + continue; + } + if (IsEscape(c)) + c = *s++; + if (IsTerminator(c)) + break; + if (i < MAXWORD - 1) { + *p++ = c; + i++; + } + } + *p = '\0'; + if (word[wcount].word_str[0] != '\0') + word[++wcount].word_str[0] = '\0'; + return wcount; +} + +IsTerminator (c) +u_char c; +{ + return (c == '\n') ? 1 : 0; +} + +isTerminator (c) +u_char c; +{ + return (c == '#') ? 1 : 0; +} + +IsEscape (c) +u_char c; +{ + return (c == '\\') ? 1 : 0; +} + +IsDelimitor (c) +u_char c; +{ + return (c == ' ' || c == '\t' || c == '.') ? 1 : 0; +} + +set_dict (word) +struct wordent word[]; +{ + setdicname(word[1].word_str); +} + +set_server(word) +struct wordent word[]; +{ + setsjserv(word[1].word_str); +} diff --git a/sj3dic/sjtool.h b/sj3dic/sjtool.h new file mode 100644 index 0000000..70dfc52 --- /dev/null +++ b/sj3dic/sjtool.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sjtool.h,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1996/02/15 02:22:59 $ + */ + +#if defined(__NetBSD__) +#define LACKOF_SETLOCALE +#endif + +#define LONGLENGTH 256 +#define MAXLINE 256 +#define MAXWORD 256 +#define WORDN 32 + +#ifndef SYS_SJIS +# define SYS_SJIS 0 +#endif +#ifndef SYS_EUC +# define SYS_EUC 1 +#endif + +#define TRUE -1 +#define FALSE !(TRUE) + +#define EXEC_TEXT 1 +#define EXEC_DICT 2 +#define EXEC_CONV 3 +#define EXEC_INIT 10 +#define EXEC_VERBOSE 11 +#define EXEC_SERVER 12 +#define EXEC_FORCE 13 + +#define SingleShift2 0x8e diff --git a/sj3h/common.h b/sj3h/common.h new file mode 100644 index 0000000..c76c328 --- /dev/null +++ b/sj3h/common.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: common.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:42 $ + */ + + + + + +#include "conversion.h" + +extern Conversion *current_conversion; + +extern int allways_buff; +extern int no_flush; +extern int termflag; +extern int HHlevel; +extern int Hlevel; +extern int oasys; +extern int flush_conversion; + +Conversion *AllocConversion (); +Conversion *GetConversion (); + +#ifdef DEBUG +FILE *dbfp; +#endif diff --git a/sj3h/conversion.h b/sj3h/conversion.h new file mode 100644 index 0000000..7316b3c --- /dev/null +++ b/sj3h/conversion.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: conversion.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:43 $ + */ + + + +#include "sj2.h" +#include "sj3libsj3.h" +#include "henkan.h" + +typedef struct bunsetu_sj3 Bunsetu; + +typedef struct _Conversion { + u_short out_mode[BUFFLENGTH*2]; + + u_short Plen[BUFFLENGTH]; + u_short OrgPlen[BUFFLENGTH]; + u_short Bpoint[BUFFLENGTH]; + u_short Edit[BUFFLENGTH]; + u_short span_l[BUFFLENGTH]; + u_short Elen[BUFFLENGTH]; + u_short Displen[BUFFLENGTH]; + + u_short Vindex[BUFFLENGTH * 2]; + + short ha_point; + short ha_epoint; + short out_point; + short out_epoint; + short span_point; + short Bnum; + short Enum; + short e_point; + + u_short line; + u_short column; + + u_short PushCurrentVcol; + u_short Vlen; + u_short SavedRow; + u_short SavedCol; + u_short CurrentVcol; + u_short MaxVcol; + + short CurBun; + short PreBun; + + Bunsetu Bun[BUFFLENGTH]; + + wchar16_t out_buf[BUFFLENGTH * 2]; + u_char in_mode[BUFFLENGTH * 2]; + wchar16_t *span_p[BUFFLENGTH]; + wchar16_t *Ppoint[BUFFLENGTH]; + wchar16_t *Epoint[BUFFLENGTH]; + wchar16_t Halpha[BUFFLENGTH]; + u_char kettei[BUFFLENGTH]; + u_char Pkettei[BUFFLENGTH]; + u_char Pedited[BUFFLENGTH]; + wchar16_t Ebuff[EDITLEN]; + u_char Bkettei[BUFFLENGTH]; + u_char Dispmod[BUFFLENGTH]; + wchar16_t yomiout[BUFFLENGTH * 2]; + wchar16_t kanjiout[BUFFLENGTH * 4]; + + u_char Imode; + u_char BuffMode; + u_char Kanji; + u_char Dflag; + u_char word_regist; + u_char Cflag; + u_char henkanflag; + + u_char wrap; +} Conversion; + + +wchar16_t osave_buf[BUFFLENGTH * 2]; +u_short osave_mode[BUFFLENGTH * 2]; +u_short isave_mode[BUFFLENGTH * 2]; +u_short os_point; + +wchar16_t hsave_buf[BUFFLENGTH]; +u_short hs_point; diff --git a/sj3h/henkan.h b/sj3h/henkan.h new file mode 100644 index 0000000..c28dd28 --- /dev/null +++ b/sj3h/henkan.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: henkan.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:43 $ + */ + + + +#define ObjEnd 0 +#define ObjHenkan 1 +#define ObjMuhenkan 2 + +#define Bend 0 +#define Bhenkan 1 +#define Bmuhenkan 2 +#define Bedit 4 +#define BEDIT 8 + +#define DLEN (DOUONLEN*2) +#define EDITLEN (BUFFLENGTH*DLEN) +#define MAXENUM (EDITLEN/DLEN) diff --git a/sj3h/inkey.h b/sj3h/inkey.h new file mode 100644 index 0000000..99603d7 --- /dev/null +++ b/sj3h/inkey.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: inkey.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:44 $ + */ + + + + + + +#define KEYBUFSIZ 520 +#define KEYBUFLIM 512 +#define AVLEN 3 + diff --git a/sj3h/kana.h b/sj3h/kana.h new file mode 100644 index 0000000..2017501 --- /dev/null +++ b/sj3h/kana.h @@ -0,0 +1,92 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: kana.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:45 $ + */ + + + + +#define ZKATA1 0xa5 +#define ZHIRA1 0xa4 +#define ZKATAF2 0xa1 +#define ZKATAE2 0xf6 +#define ZHIRAF2 0xa1 +#define ZHIRAE2 0xf3 +#define ZKATAMU 0xe0 +#define ZHIRAMU 0xe0 + +#define ZKATAn (ZKATAE2-ZKATAF2+1) + + + +#define ZEN_SPACE 0xa1a1 +#define ZEN_KTEN 0xa1a3 +#define ZEN_FKAKKO 0xa1d6 +#define ZEN_EKAKKO 0xa1d7 +#define ZEN_TTEN 0xa1a2 +#define ZEN_CTEN 0xa1a6 +#define ZEN_CHOUON 0xa1bc +#define ZEN_DTEN 0xa1ab +#define ZEN_HDTEN 0xa1ac +#define ZEN_VU 0xa5f4 + +#define KANA_KTEN 0xa1 +#define KANA_FKAKKO 0xa2 +#define KANA_EKAKKO 0xa3 +#define KANA_TTEN 0xa4 +#define KANA_CTEN 0xa5 +#define KANA_CHOUON 0xb0 +#define KANA_DTEN 0xde +#define KANA_HDTEN 0xdf + +#define KANA_XA 0xa7 +#define KANA_XYA 0xac +#define KANA_XTSU 0xaf + +#define KANA_A 0xb1 +#define KANA_KA 0xb6 +#define KANA_SA 0xbb +#define KANA_TA 0xc0 +#define KANA_NA 0xc5 +#define KANA_HA 0xca +#define KANA_MA 0xcf +#define KANA_YA 0xd4 +#define KANA_RA 0xd7 +#define KANA_WA 0xdc +#define KANA_WO 0xa6 + +#define KANA_GA (KANA_KA << 8) + KANA_DTEN +#define KANA_ZA (KANA_SA << 8) + KANA_DTEN +#define KANA_DA (KANA_TA << 8) + KANA_DTEN +#define KANA_BA (KANA_HA << 8) + KANA_DTEN +#define KANA_PA (KANA_HA << 8) + KANA_HDTEN diff --git a/sj3h/kctype.h b/sj3h/kctype.h new file mode 100644 index 0000000..e1940a7 --- /dev/null +++ b/sj3h/kctype.h @@ -0,0 +1,115 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: kctype.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:46 $ + */ + + + +#if !defined(__sony_news) || (defined(__sony_news) && !defined(SVR4)) +#ifndef __KCTYPE +#define __KCTYPE + +#define sjis2euc sj3_sjis2euc +#define jis2sjis sj3_jis2sjis +#define euctosjis sj3_euctosjis +#define sjis2jis sj3_sjis2jis +#define euc2sjis sj3_euc2sjis +#define jis2euc sj3_jis2euc +#define sjistoeuc sj3_sjistoeuc + +#ifdef issjis1 +#undef issjis1 +#endif +#define issjis1(c) (((0x81 <= (c)) && ((c) <= 0x9f)) || \ + ((0xe0 <= (c)) && ((c) <= 0xfc))) + +#ifdef issjis2 +#undef issjis2 +#endif +#define issjis2(c) (((0x40 <= (c)) && ((c) <= 0xfc)) && ((c) != 0x7f)) + +#ifdef iseuc +#undef iseuc +#endif +#define iseuc(c) ((0xa1 <= (c)) && ((c) <= 0xfe)) + +#ifdef iseuckana +#undef iseuckana +#endif +#define iseuckana(c) ((c) == 0x8e) + +#ifdef iskana2 +#undef iskana2 +#endif +#define iskana2(c) ((0xa1 <= (c)) && ((c) <= 0xdf)) + +#ifdef jiszen +#undef jiszen +#endif +#define jiszen(c) (issjis1(((c) >> 8) & 0xff) && issjis2((c) & 0xff)) + +#ifdef isjjis +#undef isjjis +#endif +#define isjjis(c) ((0x21 <= (c)) && ((c) <= 0x7e)) + +#ifdef jstrlen +#undef jstrlen +#endif +#define jstrlen(s) euclen(s, 65535) + +#ifdef iseuc3byte +#undef iseuc3byte +#endif +#define iseuc3byte(c) ((c) == 0x8f) + +#ifdef iseuc2byte +#undef iseuc2byte +#endif +#define iseuc2byte(c) (iseuc(c) || ((c) == 0x8e)) + +#ifdef iskanji +#undef iskanji +#endif +#define iskanji issjis1 +#ifdef iskanji2 +#undef iskanji2 +#endif +#define iskanji2 issjis2 +#ifdef iskana +#undef iskana +#endif +#define iskana iskana2 +#endif +#endif + diff --git a/sj3h/key.h b/sj3h/key.h new file mode 100644 index 0000000..192b805 --- /dev/null +++ b/sj3h/key.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: key.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:47 $ + */ + + + + + +#define KEY_NORMAL 0 +#define KEY_CONV 1 +#define KEY_HENKAN 2 +#define KEY_MUHENKAN 3 +#define KEY_KETTEI 4 +#define KEY_ZHIRA 5 +#define KEY_HALPHA 6 +#define KEY_ZALPHA 7 +#define KEY_HKATA 8 +#define KEY_ZKATA 9 +#define KEY_CODE 10 +#define KEY_ETC 11 +#define KEY_RIGHT 12 +#define KEY_LEFT 13 +#define KEY_UP 14 +#define KEY_DOWN 15 +#define KEY_TOGGLE 16 +#define KEY_EDIT 17 + +#define KEY_WRAP 18 +#define KEY_WRAPBACK 19 +#define KEY_HELP 20 +#define KEY_TOROKU 21 +#define KEY_SYOUKYO 22 +#define KEY_SJRC 23 + +#define KEY_HA_KET 24 +#define KEY_FLUSH 25 +#define KEY_BUFFER 26 + +#define KEY_HANKAKU 27 +#define KEY_ZENKAKU 28 + +#define KEY_HIRAGANA 29 +#define KEY_KATAKANA 30 +#define KEY_EISUU 31 +#define KEY_EIDAI 32 +#define KEY_ROMA 33 + +#define KEY_CANCEL 34 +#define KEY_RECONV 35 + +#define KEY_IGNORE 36 +#define KEY_DEBUG 37 + +#define KEY_TOP 38 +#define KEY_END 39 +#define KEY_RECONNECT 40 +#define KEY_KILL 41 +#define KEY_OTHER 42 + +#define KEY_MORE 43 + + + +#define UKEYNUM 64 +#define SEQLEN 8 +#define COMNUM 64 + diff --git a/sj3h/rk.h b/sj3h/rk.h new file mode 100644 index 0000000..0ea755d --- /dev/null +++ b/sj3h/rk.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: rk.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:48 $ + */ + + + +#include +#include "wchar16.h" + +#define SPACE 0x20 +#define TAB 0x09 +#define EOL 0x0a +#define NSTR '\0' +#ifndef ESC +#define ESC 0x1b +#endif +#define QUOTA '\'' +#define BSL '\\' +#define MASK 0xff + +#define MAXLEN 256 +#define MAXWLEN 16 +#define MAXLLEN 64 +#define MAXCODE 256 + +#define CONTINUE 0 +#define NOMACH -1 +#define FAIL -1 +#define RKEND 0xffffffff +#define ERRBEL 0xfffffffc +#define ERRCODE 0x80000000 +#define RKMASK 0x0000ffff +#define RKZEN 0xff00 + +#define SetMojilen(c) ((c << 16) & 0x00ff0000) +#define GetMojilen(c) ((c & ERRCODE) ? (1) : ((c >> 16) & 0xff)) + +typedef struct rktable_w16 { + wchar16_t *r_key; + u_short *k_yomi; + wchar16_t *r_str; + struct rktable_w16 *next; +} RkTablW16; + +typedef struct rktable { + u_char *r_key; + u_short *k_yomi; + u_char *r_str; + struct rktable *next; +} RkTabl; + diff --git a/sj3h/select.h b/sj3h/select.h new file mode 100644 index 0000000..2d59e02 --- /dev/null +++ b/sj3h/select.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: select.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:49 $ + */ + + + +#include +#include +#include +#ifdef SVR4 +#include +#endif + +typedef fd_set SELECT_FD; diff --git a/sj3h/sj.h b/sj3h/sj.h new file mode 100644 index 0000000..c06ecc8 --- /dev/null +++ b/sj3h/sj.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj.h,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1996/02/23 11:04:02 $ + */ + + +#include "sj_sysvdef.h" +#include +#include +#include +#include +#include +#ifdef SVR4 +#ifdef __sony_news +#include "/usr/include/sys/ioctl.h" +#endif +#include +#include +#else +#include +#endif +#include +#include +#include +#ifdef HUPCL +#undef HUPCL +#endif + + +#include +#ifdef SVR4 +#include +#include +#else +#include +#endif +#if defined(__sony_news) && defined(SVR4) +#include +#endif + +#if defined(BSD4_3) || defined(SVR4) +#define BSD43 +#endif + +#ifdef __sony_news +#ifdef KM_EUC +#ifndef EUC +#define EUC +#endif +#endif +#else +#ifndef EUC +#define EUC +#endif +#endif + + + +#ifdef NOTDEF +#define WBUFF 512 +#endif +#define BUFFLENGTH 128 +#define LONGLENGTH 256 +#define SHORTLENGTH 32 +#define DOUONLEN 32 +#define DOUON_N 257 /* 256 + 1 (Zenkaku Kana) */ +#define SHORTBUFFSIZE 16 +#define RSIZE 256 + +#define TCBUFSIZE 1024 +#define AREASIZE 256 + +#define MAXLINE 256 +#define MAXWORD 256 +#define WORDN 32 + +#define KB_KANA 0 +#define KB_ROMA 1 + + +#define MAXSERVER 16 + diff --git a/sj3h/sj2.h b/sj3h/sj2.h new file mode 100644 index 0000000..8e28dd0 --- /dev/null +++ b/sj3h/sj2.h @@ -0,0 +1,125 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj2.h,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1997/01/23 11:09:39 $ + */ + + + +#include "wchar16.h" +#include "sj.h" + + +#define MODE_ZEN 0x10 +#define MODE_CONV 0x04 +#define MODE_ALPHA 0x02 +#define MODE_KATA 0x01 +#define MODE_CODE 0x08 + MODE_ZEN +#define CODE_SJIS 0 +#define CODE_JIS 1 +#define CODE_JIS2 2 +#define CODE_EUC 3 +#define CODE_EUC2 4 +#define CODE_KUTEN 5 +#define CODE_KUTEN2 6 +#define OMODE_ZEN 0x80 +#define OMODE_MASK 0x1f + +#define MODE_HALPHA MODE_ALPHA +#define MODE_ZALPHA MODE_ZEN + MODE_ALPHA +#define MODE_HKATA MODE_CONV +#define MODE_ZHIRA MODE_ZEN + MODE_CONV +#define MODE_ZKATA MODE_ZHIRA + MODE_KATA + + + +#ifdef NOTDEF +#define OTHER 0 +#define NEWS 1 +#define ONEWS 2 +#define JTERM 3 +#define OJTERM 4 +#define NWP511 5 +#define NWP517 6 +#endif + +#define OTHER_KB 0 +#define NEWS_KB 1 + +#define MINCOL 72 + + + +#define STDIN 0 +#define STDOUT 1 + + + +#define BS '\010' +#define ESC '\033' +#define DEL '\177' + + + +#define UNBUFF 0 +#define BUFF 1 + + + +/* + * Remove warning. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ +#if defined(TRUE) && defined(FALSE) +#if (TRUE != 0) || (TRUE != -1) +#undef TRUE +#undef FALSE +#define TRUE 0 +#define FALSE -1 +#endif +#else +#define TRUE 0 +#define FALSE -1 +#endif + + +struct wordent { + wchar16_t word_str[MAXWORD]; + }; + + +struct valtbl { + wchar16_t *keyword; + int ivalue; +}; + +#define aprintf printf diff --git a/sj3h/sj3libsj3.h b/sj3h/sj3libsj3.h new file mode 100644 index 0000000..0375e1c --- /dev/null +++ b/sj3h/sj3libsj3.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3libsj3.h,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1996/05/27 10:52:05 $ + */ + + + +#include "wchar16.h" +#include "sj3lib.h" + + + +typedef struct bunsetu_sj3 { + int srclen; + int destlen; + wchar16_t *srcstr; + wchar16_t *deststr; + struct studyrec dcid; +} SJ3_BUNSETU_SJ3; + +#ifdef valid +#undef valid +#endif + +typedef struct douon_sj3 { + wchar16_t ddata[SJ3_BUNSETU_KANJI]; + int dlen; + SJ3_STUDYREC dcid; + int wlen; + char valid; +} SJ3_DOUON_SJ3; + + diff --git a/sj3h/wchar16.h b/sj3h/wchar16.h new file mode 100644 index 0000000..5ad83e8 --- /dev/null +++ b/sj3h/wchar16.h @@ -0,0 +1,392 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: wchar16.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:52 $ + */ + + + +#ifndef _WCHARH +#define _WCHARH + + +#if defined(__sony_news) && defined(SVR4) +#define _WCHAR_T +typedef unsigned short wchar_t; +#include +#include +#include +#include +typedef wchar_t wchar16_t; +#else +#include +#include +typedef unsigned short wchar16_t; +#endif +#include "key.h" + +#ifndef SS2 +#define SS2 0x8e +#define SS3 0x8f +#endif + +#if !defined(__sony_news) || (defined(__sony_news) && !defined(SVR4)) + +#ifdef iswcntrl +#undef iswcntrl +#endif +#define iswcntrl(wc) sj3_iswcntrl16(wc) +#ifdef iswupper +#undef iswupper +#endif +#define iswupper(wc) sj3_iswupper16(wc) +#ifdef iswdigit +#undef iswdigit +#endif +#define iswdigit(wc) sj3_iswdigit16(wc) +#ifdef iswxdigit +#undef iswxdigit +#endif +#define iswxdigit(wc) sj3_iswxdigit16(wc) +#ifdef wslen +#undef wslen +#endif +#define wslen(ws) sj3_wslen16(ws) +#ifdef wscmp +#undef wscmp +#endif +#define wscmp(ws1, ws2) sj3_wscmp16(ws1, ws2) +#ifdef wsncmp +#undef wsncmp +#endif +#define wsncmp(ws1, ws2, n) sj3_wsncmp16(ws1, ws2, n) +#ifdef wscpy +#undef wscpy +#endif +#define wscpy(ws1, ws2) sj3_wscpy16(ws1, ws2) +#ifdef wsncpy +#undef wsncpy +#endif +#define wsncpy(ws1, ws2, n) sj3_wsncpy16(ws1, ws2, n) +#ifdef wscat +#undef wscat +#endif +#define wscat(ws1, ws2) sj3_wscat16(ws1, ws2) +#ifdef mbstowcs +#undef mbstowcs +#endif +#define mbstowcs(mb, ws, n) sj3_mbstowcs16(mb, ws, n) +#ifdef wcstombs +#undef wcstombs +#endif +#define wcstombs(ws, mb, n) sj3_wcstombs16(ws, mb, n) +#endif + + +#define LC_CTYPE_SHIFTJIS 1 +#define LC_CTYPE_EUC 2 + +#define IsEUCHojo(x) (((unsigned char) (x)) == SS3) + + + + +#define WcX0208MASK 0xffff +#define WcX0212MASK 0xff7f +#define WcJISMASK 0x7f7f +#define WcLowMASK 0x00ff +#define WcHighMASK 0xff00 + +#define WcASCIIFLAG 0x0000 +#define WcX0208FLAG 0x8080 +#define WcX0212FLAG 0x8000 +#define WcX0201FLAG 0x0080 + +#define WcLowByte(w) ((w) & 0xff) +#define WcHighByte(w) (((w) >> 8) & 0xff) + +#define WcIsASCII(w) ((((wchar16_t) (w)) & WcX0208FLAG) == WcASCIIFLAG) +#define WcIsX0208(w) ((((wchar16_t) (w)) & WcX0208FLAG) == WcX0208FLAG) +#define WcIsX0201(w) ((((wchar16_t) (w)) & WcX0208FLAG) == WcX0201FLAG) +#define WcIsX0212(w) ((((wchar16_t) (w)) & WcX0208FLAG) == WcX0212FLAG) + +#define WcIsZENKAKU(w) ((((wchar16_t) (w)) & WcX0212FLAG) == WcX0212FLAG) +#define WcIsHANKAKU(w) ((((wchar16_t) (w)) & WcX0212FLAG) == WcASCIIFLAG) +#define WcIsKANJI(w) WcIsZENKAKU(w) +#define WcIsKANA(w) WcIsX0201(w) + +#define WcSetX0212(c1, c2) ((((c1) & 0xff) << 8) + ((c2) & 0x7f)) +#define WcJIS2X0208(w) ((w) | WcX0208FLAG) +#define WcJIS2X0212(w) ((w) | WcX0212FLAG) +#define Wc2JIS(w) ((w) & WcJISMASK) + + +#define WCSJrun WcMessages[0] + +#define WCMode_buff WcMessages[1] +#define WCMode_unbuff WcMessages[2] + +#define WCMode_Zhira WcMessages[3] +#define WCMode_Zkata WcMessages[4] +#define WCMode_Hkata WcMessages[5] +#define WCMode_Zalpha WcMessages[6] +#define WCMode_Halpha WcMessages[7] + +#define WCGmode WcMessages[8] +#define WCGEtc WcMessages[9] +#define WCGetc WcMessages[10] + +#define WCGHelp WcMessages[11] +#define WCMHelp WcMessages[12] + + + +#define WCGCshift WcMessages[13] +#define WCGCeuc WcMessages[14] +#define WCGCeuc2 WcMessages[15] +#define WCGCjis WcMessages[16] +#define WCGCjis2 WcMessages[17] +#define WCGCkuten WcMessages[18] +#define WCGCkuten2 WcMessages[19] + + + +#define WCGtoroku WcMessages[20] +#define WCMhani WcMessages[21] +#define WCMyomi WcMessages[22] +#define WCTOUROKU_OK WcMessages[23] +#define WCSYOUKYO_OK WcMessages[24] +#define WCTOUROKU_HIN WcMessages[25] +#define WCTOUROKU_SUCC WcMessages[26] +#define WCYomi WcMessages[27] +#define WCOne WcMessages[28] +#define WCY WcMessages[29] +#define WCExist WcMessages[30] +#define WCYomiTouroku WcMessages[31] +#define WCKanjiTouroku WcMessages[32] +#define WCOnajiTouroku WcMessages[33] +#define WCUserTouroku WcMessages[34] +#define WCJishoLock WcMessages[35] +#define WCSystemError WcMessages[36] +#define WCKanma WcMessages[37] + + +#define WCGsyoukyo WcMessages[38] +#define WCSYOUKYO_SUCC WcMessages[39] +#define WCNotExist WcMessages[40] +#define WCUserLock WcMessages[41] +#define WCYomiShokyo WcMessages[42] +#define WCKanjiShokyo WcMessages[43] +#define WCShokyoError WcMessages[44] + + + +#define WCSUCCsjrc WcMessages[45] +#define WCFAILsjrc WcMessages[46] +#define WCNOTHsjrc WcMessages[47] + + +#define WCWeight_mes WcMessages[48] + + + +#define WCGrcon WcMessages[49] +#define WCRserv WcMessages[50] +#define WCRserv_OK WcMessages[51] +#define WCDiscon WcMessages[52] + +#define WCSpace WcMessages[53] +#define WCSpace2 WcMessages[54] +#define WCContinue WcMessages[55] + + +#define WCServer_Dead WcMessages[56] +#define WCConnected WcMessages[57] +#define WCNconnect WcMessages[58] +#define WCNopen_Mdic WcMessages[59] +#define WCNmake_Udir WcMessages[60] +#define WCNmake_Udic WcMessages[61] +#define WCNopen_Udic WcMessages[62] +#define WCNmake_Study WcMessages[63] +#define WCNopen_Study WcMessages[64] + + + +#define WCGedit WcMessages[65] + + +#define WCTooLong WcMessages[67] +#define WCDollar WcMessages[68] + + +#define WCOn WcMessages[69] +#define WCOff WcMessages[70] + + +#define WCMeishi WcMessages[71] +#define WCMyouji WcMessages[72] +#define WCNamae WcMessages[73] +#define WCTimei WcMessages[74] +#define WCSahen WcMessages[75] + + +#define WCKara WcMessages[76] +#define WCF1 WcMessages[77] +#define WCF2 WcMessages[78] +#define WCF3 WcMessages[79] +#define WCF4 WcMessages[80] +#define WCF5 WcMessages[81] +#define WCF6 WcMessages[82] +#define WCF7 WcMessages[83] +#define WCF8 WcMessages[84] +#define WCF9 WcMessages[85] +#define WCF10 WcMessages[86] +#define WCF11 WcMessages[87] +#define WCF12 WcMessages[88] +#define WCF13 WcMessages[89] +#define WCF14 WcMessages[90] +#define WCF15 WcMessages[91] +#define WCF16 WcMessages[92] +#define WCF17 WcMessages[93] +#define WCF18 WcMessages[94] +#define WCF19 WcMessages[95] +#define WCF20 WcMessages[96] +#define WCSelect WcMessages[97] +#define WCKanji WcMessages[98] +#define WCCancel WcMessages[99] +#define WCExecute WcMessages[100] +#define WCUp WcMessages[101] +#define WCDown WcMessages[102] +#define WCRight WcMessages[103] +#define WCLeft WcMessages[104] + +#define WCStart WcMessages[105] +#define WCHenkan WcMessages[106] +#define WCMuhen WcMessages[107] +#define WCKettei WcMessages[108] +#define WCHira WcMessages[109] +#define WCHalpha WcMessages[110] +#define WCZalpha WcMessages[111] +#define WCHkata WcMessages[112] +#define WCZkata WcMessages[113] +#define WCCode WcMessages[114] +#define WCEtc WcMessages[115] +#define WCRightl WcMessages[116] +#define WCLeftl WcMessages[117] +#define WCKaku WcMessages[118] +#define WCSyuku WcMessages[119] +#define WCEdit WcMessages[120] +#define WCToggle WcMessages[121] +#define WCWrapback WcMessages[122] +#define WCWrap WcMessages[123] +#define WCSjrc WcMessages[124] +#define WCBuffer WcMessages[125] +#define WCToroku WcMessages[126] +#define WCSyoukyo WcMessages[127] +#define WCHelp WcMessages[128] +#define WCHaKettei WcMessages[129] +#define WCFlush WcMessages[130] +#define WCDebug WcMessages[131] +#define WCCancell WcMessages[132] +#define WCSaihenkan WcMessages[133] +#define WCIgnore WcMessages[134] +#define WCTop WcMessages[135] +#define WCEnd WcMessages[136] +#define WCReconnect WcMessages[137] +#define WCKill WcMessages[138] + + +#define WCKey WcMessages[139] +#define WCEscape WcMessages[140] +#define WCSjxkey WcMessages[141] +#define WCEtckey WcMessages[142] +#define WCIntr WcMessages[143] +#define WCBskey WcMessages[144] +#define WCDelkey WcMessages[145] +#define WCSetnormal WcMessages[146] +#define WCThroughnext WcMessages[147] +#define WCInitialmode WcMessages[148] +#define WCHelpmode WcMessages[149] +#define WCDefaultcode WcMessages[150] +#define WCMuhenkanmode WcMessages[151] +#define WCMuhenkaninedit WcMessages[152] +#define WCMuhenkantoggle WcMessages[153] +#define WCGuide WcMessages[154] +#define WCForkshell WcMessages[155] +#define WCExecshell WcMessages[156] +#define WCDictionary WcMessages[157] +#define WCUserdic WcMessages[158] +#define WCMaindic WcMessages[159] +#define WCRomaji WcMessages[160] +#define WCBstudy WcMessages[161] +#define WCSilent WcMessages[162] +#define WCFlushafterconversion WcMessages[163] +#define WCRkerrbell WcMessages[164] +#define WCServer WcMessages[165] + +#define WCShiftjis WcMessages[166] +#define WCSjis WcMessages[167] +#define WCEuc WcMessages[168] +#define WCEuc2 WcMessages[169] +#define WCJis WcMessages[170] +#define WCJis2 WcMessages[171] +#define WCKuten WcMessages[172] +#define WCKuten2 WcMessages[173] + +#define WCBuff WcMessages[174] +#define WCUnbuff WcMessages[175] +#define WCDirect WcMessages[176] + +#define WCSj2 WcMessages[177] +#define WCShift WcMessages[178] + +#define WCFunction WcMessages[179] + +#define WCUnbuffer WcMessages[180] +#define WCFuncetc WcMessages[181] + +extern wchar16_t *WcMessages[]; + + + +struct wcvtkey { + wchar16_t *key_word; + wchar16_t key_seq[SEQLEN]; +}; + + +struct functbl { + wchar16_t *keyword; + int (*func)(); +}; + +#endif diff --git a/sj3lib/Imakefile b/sj3lib/Imakefile new file mode 100644 index 0000000..bfd9902 --- /dev/null +++ b/sj3lib/Imakefile @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:55 $ + */ + +#include "../sj3.tmpl" + +#if SystemV4 || SystemV +DEFINES = $(USETLI) +#endif +INCLUDES = -I../include -I../sj3h +SRCS = \ + level1.c \ + sj.c \ + string.c + +OBJS = \ + level1.o \ + sj.o \ + string.o + +NormalLibraryObjectRule() +NormalLibraryTarget(sj3lib,$(OBJS)) +DependTarget() +InstallLibrary(sj3lib,$(SJ3LIBDIR)) +InstallNonExecFile(sj3lib.h,$(SJ3HDRDIR)) diff --git a/sj3lib/level1.c b/sj3lib/level1.c new file mode 100644 index 0000000..1fdb8f6 --- /dev/null +++ b/sj3lib/level1.c @@ -0,0 +1,1384 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: level1.c,v $ + * $SonyRevision: 1.4 $ + * $SonyDate: 1995/04/17 10:36:08 $ + */ + + + +#include "sj_sysvdef.h" +#include +#include +#include +#include +#include +#include +#include +#ifdef TLI +#include +#include +#include +#include +#include +#else +#include +#endif +#include + +#include "Const.h" +#include "sj3cmd.h" +#include "sj3err.h" +#include "sj3lib.h" +#include "sj3lowlib.h" + +#ifdef SVR4 +#define signal sigset +#endif + +char *getlogin(); + +#ifndef lint +static char rcsid_sony[] = "$SonyId: level1.c,v 1.4 1995/04/17 10:36:08 notanaka Exp $ SONY;"; +#endif + +int sj3_error_number; +char *sj3_socket_name = SocketName; +char *sj3_port_name = PortName; +#ifdef TLI +extern int t_errno; +#else +int sj3_port_number = PortNumber; +#endif + +#define BUFFER_SIZE BUFSIZ +static char *af_unix_str = "unix"; +static u_char putbuf[BUFFER_SIZE]; +static u_char getbuf[BUFFER_SIZE]; +static int putpos = 0; +static int getlen = 0; +static int getpos = 0; +static SJ3_CLIENT_ENV *cliptr; +static int server_fd = -1; + +static int sj3_timeout = 0; + +static int INTLEN = sizeof(int); +static int CMDLEN = sizeof(int); +static int ReadErrorFlag = FALSE; + +#define client_init(p) { \ + cliptr = (p); \ + if ((server_fd = cliptr -> fd) == -1) { \ + sj3_error_number = SJ3_NotOpened; \ + return ERROR; \ + } \ + } + +static put_flush() +{ + register int i, j; + register u_char *p; + + for (i = putpos, p = putbuf ; i > 0 ; i -= j, p += j) { +#ifdef TLI + if ((j = write(server_fd, p, i)) <= 0) { + t_sndrel(server_fd); + close(server_fd); +#else + if ((j = write(server_fd, p, i)) <= 0) { + shutdown(server_fd, 2); + close(server_fd); +#endif + cliptr -> fd = server_fd = -1; + sj3_error_number = SJ3_ServerDown; + return(ERROR); + } + } + putpos = 0; + + return 0; +} +static put_byte(c) +register int c; +{ + putbuf[putpos++] = c; +} +static put_word(c) +register int c; +{ + put_byte(c >> 8); + put_byte(c & 0xff); +} +static put_int(c) +register int c; +{ + put_byte(c >> (8 * 3)); + put_byte(c >> (8 * 2)); + put_byte(c >> (8 * 1)); + put_byte(c); +} +static put_cmd(cmd) +register int cmd; +{ + ReadErrorFlag = FALSE; + putpos = getlen = 0; + put_int(cmd); +} + +#define put_string put_ndata + +static u_char *put_ndata(p, n) +register u_char *p; +register int n; +{ + while (n-- > 0) put_byte(p ? *p++ : 0); + return p; +} + +static put_over(buflen, n, func1, str1, len1, func2, str2, len2, + func3, str3, len3, func4, str4, len4) +int buflen, n; +u_char *(*func1)(), *(*func2)(), *(*func3)(), *(*func4)(); +u_char *str1, *str2, *str3, *str4; +int len1, len2, len3, len4; +{ +#define ARGNUM 4 + u_char *(*func[ARGNUM])(); + u_char *data[ARGNUM]; + int len[ARGNUM]; + int i; + + func[0] = func1; data[0] = str1; len[0] = len1; + func[1] = func2; data[1] = str2; len[1] = len2; + func[2] = func3; data[2] = str3; len[2] = len3; + func[3] = func4; data[3] = str4; len[3] = len4; + + for(i = 0; i < n; i++) { + if (len[i] < buflen) { + (*func[i])(data[i], len[i]); + buflen -= len[i]; + } else { + while (len[i] > 0) { + data[i] = (*func[i])(data[i], (len[i] < buflen) ? len[i] : buflen); + if (put_flush() == ERROR) return ERROR; + len[i] -= buflen; + buflen = BUFFER_SIZE; + } + } + } + if ((buflen != BUFFER_SIZE) && (put_flush() == ERROR)) + return ERROR; + + return 0; +} + +static get_buffer() +{ + if (ReadErrorFlag) return ERROR; + getpos = getlen = 0; + + getlen = read(server_fd, getbuf, sizeof(getbuf)); + if (getlen <=0) { +#ifdef TLI + t_close(server_fd); +#else + shutdown(server_fd, 2); + close(server_fd); +#endif + cliptr -> fd = server_fd = -1; + sj3_error_number = SJ3_ServerDown; + return ERROR; + } + return getlen; +} + +static get_byte() +{ + if ((getpos >= getlen) && (get_buffer() == ERROR)) { + ReadErrorFlag = TRUE; + return 0; + } + return(getbuf[getpos++] & 0xff); +} +static get_word() +{ + register int i; + + i = get_byte(); + return ((i << 8) | get_byte()); +} +static get_int() +{ + register int i0; + register int i1; + register int i2; + + i0 = get_byte(); + i1 = get_byte(); + i2 = get_byte(); + return ((i0 << (8*3)) | (i1 << (8*2)) | (i2 << (8*1)) | get_byte()); +} +static u_char *get_string(p) +register u_char *p; +{ + register int c; + + do { + *p++ = c = get_byte(); + } while (c); + + return p; +} +static get_nstring(p, n) +register u_char *p; +register int n; +{ + register int c; + + c = get_byte(); + while (c) { + if (n > 1) { *p++ = c; n--; } + c = get_byte(); + } + if (n > 0) *p++ = 0; + return n; +} +static u_char *get_ndata(p, n) +register u_char *p; +register int n; +{ + while (n-- > 0) *p++ = get_byte(); + return p; +} +static skip_string() +{ + while (get_byte()) ; +} +static skip_ndata(n) +register int n; +{ + while (n-- > 0) get_byte(); +} +#ifndef TLI +static open_unix() +{ + int fd, len; + struct sockaddr_un sunix; + + sunix.sun_family = AF_UNIX; + strcpy(sunix.sun_path, sj3_socket_name); + + if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == ERROR) { + sj3_error_number = SJ3_OpenSocket; + return ERROR; + } + + len = strlen(sunix.sun_path)+sizeof(sunix.sun_family); +#if defined(__NetBSD__) || defined(__FreeBSD__) + len += sizeof(sunix.sun_len); +#endif + if (connect(fd, (struct sockaddr *)&sunix, len) + == ERROR) { + sj3_error_number = SJ3_ConnectSocket; + return ERROR; + } + + return fd; +} +#endif + +sj3_set_timeout(timeout) +int timeout; + { + sj3_timeout = timeout; + } +static void +connect_timeout() + { + } + + +static open_inet(host) +char *host; +{ +#ifdef TLI + int val; + char *t_alloc(); + struct t_call *callptr; + struct netconfig *nconf; + struct nd_hostserv hserv; + struct nd_addrlist *addrs; + void *handlep; + char host_name[BUFSIZ], proto_name[BUFSIZ], *port_name, *tmp_addr; + extern char *strchr(); + extern void *setnetpath(); + extern struct netconfig *getnetpath(); +#else + struct hostent *hp; + struct servent *sp; + int port; + struct sockaddr_in sin; +#endif + int fd, ret; + +#ifdef TLI + if ((tmp_addr = strchr(host, '/')) != NULL) { + strncpy(proto_name, host, (unsigned int) (tmp_addr - host)); + proto_name[(unsigned int) (tmp_addr - host)] = '\0'; + tmp_addr++; + } else { + strncpy(proto_name, ProtoName, strlen(ProtoName)); + proto_name[strlen(ProtoName)] = '\0'; + tmp_addr = host; + } + if ((port_name = strchr(tmp_addr, ':')) != NULL) { + strncpy(host_name, tmp_addr, (unsigned int)(port_name - tmp_addr)); + host_name[(unsigned int)(port_name - tmp_addr)] = '\0'; + port_name++; + } else { + strcpy(host_name, tmp_addr); + port_name = PortName; + } + hserv.h_host = host_name; + hserv.h_serv = port_name; + + if ((handlep = setnetpath()) == NULL) { + sj3_error_number = SJ3_GetHostByName; + return ERROR; + } + while ((nconf = getnetpath(handlep)) != NULL) { + if (((nconf->nc_semantics == NC_TPI_COTS_ORD) || + (nconf->nc_semantics == NC_TPI_COTS)) && + (strncmp(nconf->nc_proto, proto_name, strlen(proto_name)) == 0)) + break; + } + if (nconf == NULL) { + sj3_error_number = SJ3_GetHostByName; + return ERROR; + } + if (netdir_getbyname(nconf, &hserv, &addrs) != 0) { + hserv.h_serv = PortNumber; + if (netdir_getbyname(nconf, &hserv, &addrs) != 0) { + sj3_error_number = SJ3_GetHostByName; + return ERROR; + } + } + if (( fd = t_open(nconf->nc_device, O_RDWR, (struct t_info *)0)) < 0) { + sj3_error_number = SJ3_OpenSocket; + return ERROR; + } + if (t_bind(fd, (struct t_bind *)0, (struct t_bind *) 0) < 0) { + sj3_error_number = SJ3_OpenSocket; + return ERROR; + } +#else + if (!(hp = gethostbyname(host))) { + sj3_error_number = SJ3_GetHostByName; + return ERROR; + } + + if (sp = getservbyname(sj3_port_name, "tcp")) + port = ntohs(sp -> s_port); + else + port = sj3_port_number; + + memset((char *)&sin, '\0',sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_port = htons(port); + memcpy(&sin.sin_addr, hp -> h_addr, hp -> h_length); + + if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == ERROR) { + sj3_error_number = SJ3_OpenSocket; + return ERROR; + } +#endif + + if (sj3_timeout > 0) { + signal(SIGALRM, (void (*)())connect_timeout); + alarm(sj3_timeout); + } +#ifdef TLI + if((callptr = (struct t_call *) t_alloc(fd, T_CALL, T_ALL)) == NULL) { + sj3_error_number = SJ3_NotEnoughMemory; + return ERROR; + } + callptr->addr = *(addrs->n_addrs); + callptr->opt.len = 0; + callptr->opt.maxlen = 0; + callptr->opt.buf = (char *)NULL; + callptr->udata.len = 0; + callptr->udata.maxlen = 0; + callptr->udata.buf = (char *)NULL; + + ret = t_connect(fd, callptr, (struct t_call *) 0); +#else + ret = connect(fd, (struct sockaddr *)&sin, sizeof(sin)); +#endif + if (sj3_timeout > 0) { + alarm(0); + signal(SIGALRM, SIG_IGN); + } + if (ret == ERROR) { + sj3_error_number = SJ3_ConnectSocket; + return ERROR; + } +#ifdef TLI + if (ioctl(fd, I_POP, (char *) 0) < 0) { + sj3_error_number = SJ3_NotOpened; + return ERROR; + } + if (ioctl(fd, I_PUSH, "tirdwr") < 0) { + sj3_error_number = SJ3_NotOpened; + return ERROR; + } + val = 0; + (void) ioctl(fd, I_SETCLTIME, &val); + endnetpath(handlep); +#endif + + return fd; +} + + + +int sj3_make_connection(client, serv, user, prog) +SJ3_CLIENT_ENV *client; +char *serv; +char *user; +char *prog; +{ + char host[MAXHOSTNAMELEN]; + int tmp; + int hostlen, userlen, proglen, datalen, buflen; + int curlen; + char *curdata; + + client -> fd = -1; + + if (!serv || *serv == '\0' || !strcmp(serv, af_unix_str)) { +#ifdef TLI + serv = LocalHost; + strcpy(host, af_unix_str); + } else { + gethostname(host, sizeof(host)); + } + if ((server_fd = open_inet(serv)) == ERROR) return ERROR; + +#else + if ((server_fd = open_unix()) == ERROR) return ERROR; + strcpy(host, af_unix_str); + } + else { + if ((server_fd = open_inet(serv)) == ERROR) return ERROR; + gethostname(host, sizeof(host)); + } +#endif + client -> fd = server_fd; + client_init(client); + + hostlen = strlen(host) + 1; + userlen = strlen(user) + 1; + proglen = strlen(prog) + 1; + datalen = hostlen + userlen + proglen; + + put_cmd(SJ3_CONNECT); + put_int(SJ3SERV_VERSION_NO); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) { + put_string(host, hostlen); + put_string(user, userlen); + put_string(prog, proglen); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 3, put_string, host, hostlen, put_string, user, + userlen, put_string, prog, proglen, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if ((tmp = get_int()) == SJ3_DifferentVersion) { + if (ReadErrorFlag) return ERROR; + put_cmd(SJ3_CONNECT); + put_int(1); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) { + put_string(host, hostlen); + put_string(user, userlen); + put_string(prog, proglen); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 3, put_string, host, hostlen, put_string, user, + userlen, put_string, prog, proglen, NULL, NULL, 0) == ERROR) + return ERROR; + } + if (tmp = get_int()) { + sj3_erase_connection(client); + sj3_error_number = tmp; + return ERROR; + } + } else if (tmp && (-2 < tmp)) { + sj3_erase_connection(client); + sj3_error_number = tmp; + return ERROR; + } + cliptr -> svr_version = ((tmp)? -tmp : 1); + cliptr -> cli_version = SJ3SERV_VERSION_NO; + cliptr -> default_char[0] = 0x81; + cliptr -> default_char[1] = 0x40; + sj3_error_number = 0; + + if (ReadErrorFlag) return ERROR; + put_cmd(SJ3_STDYSIZE); + if (put_flush() == ERROR) return ERROR; + + if (tmp = get_int()) { + sj3_erase_connection(client); + sj3_error_number = tmp; + return ERROR; + } + + cliptr -> stdy_size = get_int(); + cliptr -> fd = server_fd; + + return ReadErrorFlag ? ERROR : 0; +} +int sj3_erase_connection(client) +SJ3_CLIENT_ENV *client; +{ + client_init(client); + + put_cmd(SJ3_DISCONNECT); + if (put_flush() == ERROR) return ERROR; + + sj3_error_number = get_int(); +#ifdef TLI + t_close(server_fd); +#else + close(server_fd); +#endif + cliptr -> fd = -1; + if (ReadErrorFlag) return ERROR; + return sj3_error_number ? ERROR : 0; +} + + + +long sj3_open_dictionary(client, dictname, password) +SJ3_CLIENT_ENV *client; +char *dictname; +char *password; +{ + int res; + int dictlen, passlen; + int datalen, buflen; + + client_init(client); + + dictlen = strlen(dictname) + 1; + passlen = ((password) ? strlen(password) : 0) + 1; + datalen = dictlen + passlen; + + put_cmd(SJ3_OPENDICT); + if (datalen < (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(dictname, dictlen); + put_string(password, passlen); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 2, put_string, dictname, dictlen, put_string, + password, passlen, NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return 0; + res = get_int(); + return ReadErrorFlag ? ERROR : res; +} +int sj3_close_dictionary(client, dicid) +SJ3_CLIENT_ENV *client; +long dicid; +{ + client_init(client); + + put_cmd(SJ3_CLOSEDICT); + put_int(dicid); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_open_study_file(client, stdyname, password) +SJ3_CLIENT_ENV *client; +char *stdyname; +char *password; +{ + int stdylen, passlen; + int datalen, buflen; + + client_init(client); + + stdylen = strlen(stdyname) + 1; + passlen = strlen(password) + 1; + datalen = stdylen + passlen; + + put_cmd(SJ3_OPENSTDY); + if (datalen < (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(stdyname, stdylen); + put_string(password, passlen); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 2, put_string, stdyname, stdylen, put_string, + password, passlen, NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} +int sj3_close_study_file(client) +SJ3_CLIENT_ENV *client; +{ + client_init(client); + + put_cmd(SJ3_CLOSESTDY); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_get_id_size(client) +SJ3_CLIENT_ENV *client; +{ + client_init(client); + + put_cmd(SJ3_STDYSIZE); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + cliptr -> stdy_size = get_int(); + return ReadErrorFlag ? ERROR : cliptr -> stdy_size; +} + + + +int sj3_lock_server(client) +SJ3_CLIENT_ENV *client; +{ + client_init(client); + + put_cmd(SJ3_LOCK); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} +int sj3_unlock_server(client) +SJ3_CLIENT_ENV *client; +{ + client_init(client); + + put_cmd(SJ3_UNLOCK); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_ikkatu_henkan(client, src, dst, dstsiz, mb_flag) +SJ3_CLIENT_ENV *client; +u_char *src; +register u_char *dst; +register int dstsiz; +int mb_flag; +{ + register int c; + u_char *top; + int result; + int len; + int len1; + int stysiz; + + int srclen; + int buflen; + + client_init(client); + + srclen = strlen(src) + 1; + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_PH2KNJ); + else + put_cmd(SJ3_PH2KNJ_EUC); + if (srclen < (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(src, srclen); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 1, put_string, src, srclen, NULL, NULL, 0, + NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + + result = get_int(); + + + result = 0; + stysiz = cliptr -> stdy_size; + len1 = 1 + stysiz + 1 + 1; + while (c = get_byte()) { + + top = dst; + if (dstsiz < len1) goto error1; + + *dst++ = len = c; + dst = get_ndata(dst, stysiz); + dstsiz -= (stysiz + 1); + + while (c = get_byte()) { + if (dstsiz-- < 3) goto error2; + *dst++ = c; + } + *dst++ = 0; + dstsiz--; + result += len; + } + + *dst = 0; + return ReadErrorFlag ? ERROR : result; + + +error1: + do { + skip_ndata(stysiz); +error2: + while (get_byte()) ; + } while (get_byte()); + + *top = 0; + return ReadErrorFlag ? ERROR : result; +} + + + +int sj3_bunsetu_henkan(client, yomi, len, kanji, mb_flag) +SJ3_CLIENT_ENV *client; +u_char *yomi; +int len; +u_char *kanji; +int mb_flag; +{ + int result; + int buflen; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_CL2KNJ); + else + put_cmd(SJ3_CL2KNJ_EUC); + put_int(len); + if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) { + put_ndata(yomi, len); + put_byte(0); + if (put_flush() == ERROR) return ERROR; + } else { + + if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL, 1, + NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + + result = get_int(); + get_string( get_ndata(kanji, cliptr -> stdy_size) ); + return ReadErrorFlag ? ERROR : result; +} +int sj3_bunsetu_jikouho(client, kanji, mode, mb_flag) +SJ3_CLIENT_ENV *client; +u_char *kanji; +int mode; +int mb_flag; +{ + int result; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_NEXTCL); + else + put_cmd(SJ3_NEXTCL_EUC); + put_int(mode); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + + result = get_int(); + get_string( get_ndata(kanji, cliptr -> stdy_size) ); + return ReadErrorFlag ? ERROR : result; +} +int sj3_bunsetu_maekouho(client, kanji, mode, mb_flag) +SJ3_CLIENT_ENV *client; +u_char *kanji; +int mode; +int mb_flag; +{ + int result; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_PREVCL); + else + put_cmd(SJ3_PREVCL_EUC); + put_int(mode); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + + result = get_int(); + get_string( get_ndata(kanji, cliptr -> stdy_size) ); + return ReadErrorFlag ? ERROR : result; +} + + + +int sj3_bunsetu_kouhosuu(client, yomi, len, mb_flag) +SJ3_CLIENT_ENV *client; +u_char *yomi; +int len; +int mb_flag; +{ + int result; + int buflen; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_CL2KNJ_CNT); + else + put_cmd(SJ3_CL2KNJ_CNT_EUC); + put_int(len); + if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) { + put_ndata(yomi, len); + put_byte(0); + if (put_flush() == ERROR) return ERROR; + } else { + + if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL, 1, + NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + + result = get_int(); + return ReadErrorFlag ? ERROR : result; +} +int sj3_bunsetu_zenkouho(client, yomi, len, douon, mb_flag) +SJ3_CLIENT_ENV *client; +u_char *yomi; +int len; +SJ3_DOUON *douon; +int mb_flag; +{ + int cnt = 0; + int buflen; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_CL2KNJ_ALL); + else + put_cmd(SJ3_CL2KNJ_ALL_EUC); + put_int(len); + if ((len + 1) <= (buflen = BUFFER_SIZE - CMDLEN - INTLEN)) { + put_ndata(yomi, len); + put_byte(0); + if (put_flush() == ERROR) return ERROR; + } else { + + if (put_over(buflen, 2, put_ndata, yomi, len, put_ndata, NULL, 1, + NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + + while (get_int()) { + get_ndata(&(douon -> dcid), cliptr -> stdy_size); + get_string(douon -> ddata); + douon -> dlen = strlen(douon -> ddata); + douon++; + cnt++; + } + + return ReadErrorFlag ? ERROR : cnt; +} + + + +int sj3_tango_gakusyuu(client, stdy) +SJ3_CLIENT_ENV *client; +SJ3_STUDYREC *stdy; +{ + int buflen; + + client_init(client); + + put_cmd(SJ3_STUDY); + if (cliptr -> stdy_size <= (buflen = BUFFER_SIZE - CMDLEN)) { + put_ndata(stdy, cliptr -> stdy_size); + if (put_flush() == ERROR) return ERROR; + } else { + + if (put_over(buflen, 1, put_ndata, stdy, cliptr -> stdy_size, NULL, + NULL, 0, NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} +int sj3_bunsetu_gakusyuu(client, yomi1, yomi2, stdy, mb_flag) +SJ3_CLIENT_ENV *client; +u_char *yomi1; +u_char *yomi2; +SJ3_STUDYREC *stdy; +int mb_flag; +{ + int yomilen1, yomilen2; + int datalen, buflen; + + client_init(client); + + yomilen1 = strlen(yomi1) + 1; + yomilen2 = strlen(yomi2) + 1; + datalen = yomilen1 + yomilen2 + cliptr -> stdy_size; + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_CLSTUDY); + else + put_cmd(SJ3_CLSTUDY_EUC); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(yomi1, yomilen1); + put_string(yomi2, yomilen2); + put_ndata(stdy, cliptr -> stdy_size); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 3, put_string, yomi1, yomilen1, put_string, + yomi2, yomilen2, put_ndata, stdy, cliptr->stdy_size, + NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_tango_touroku(client, dicid, yomi, kanji, code, mb_flag) +SJ3_CLIENT_ENV *client; +long dicid; +u_char *yomi; +u_char *kanji; +int code; +int mb_flag; +{ + int yomilen, kanjilen; + int datalen, buflen; + + client_init(client); + + yomilen = strlen(yomi) + 1; + kanjilen = strlen(kanji) + 1; + datalen = yomilen + kanjilen + INTLEN; + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_ADDDICT); + else + put_cmd(SJ3_ADDDICT_EUC); + put_int(dicid); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN -INTLEN)) { + put_string(yomi, yomilen); + put_string(kanji, kanjilen); + put_int(code); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 3, put_string, yomi, yomilen, put_string, kanji, + kanjilen, put_ndata, &code, INTLEN, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} +int sj3_tango_sakujo(client, dicid, yomi, kanji, code, mb_flag) +SJ3_CLIENT_ENV *client; +long dicid; +u_char *yomi; +u_char *kanji; +int code; +int mb_flag; +{ + int yomilen, kanjilen; + int datalen, buflen; + + client_init(client); + + yomilen = strlen(yomi) + 1; + kanjilen = strlen(kanji) + 1; + datalen = yomilen + kanjilen + INTLEN; + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_DELDICT); + else + put_cmd(SJ3_DELDICT_EUC); + put_int(dicid); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN -INTLEN)) { + put_string(yomi, yomilen); + put_string(kanji, kanjilen); + put_int(code); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 3, put_string, yomi, yomilen, put_string, kanji, + kanjilen, put_ndata, &code, INTLEN, NULL, NULL, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_tango_syutoku(client, dicid, buf, mb_flag) +SJ3_CLIENT_ENV *client; +int dicid; +u_char *buf; +int mb_flag; +{ + register u_char *p; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_GETDICT); + else + put_cmd(SJ3_GETDICT_EUC); + put_int(dicid); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + + p = get_string(buf); + p = get_string(p); + *p = get_int(); + return ReadErrorFlag ? ERROR : 0; +} +int sj3_tango_jikouho(client, dicid, buf, mb_flag) +SJ3_CLIENT_ENV *client; +int dicid; +u_char *buf; +int mb_flag; +{ + register u_char *p; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_NEXTDICT); + else + put_cmd(SJ3_NEXTDICT_EUC); + put_int(dicid); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + + p = get_string(buf); + p = get_string(p); + *p = get_int(); + return ReadErrorFlag ? ERROR : 0; +} +int sj3_tango_maekouho(client, dicid, buf, mb_flag) +SJ3_CLIENT_ENV *client; +int dicid; +u_char *buf; +int mb_flag; +{ + register u_char *p; + + client_init(client); + + if (mb_flag == MBCODE_SJIS) + put_cmd(SJ3_PREVDICT); + else + put_cmd(SJ3_PREVDICT_EUC); + put_int(dicid); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + + p = get_string(buf); + p = get_string(p); + *p = get_int(); + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_make_dict_file(client, path, idxlen, seglen, segnum) +SJ3_CLIENT_ENV *client; +char *path; +int idxlen; +int seglen; +int segnum; +{ + int pathlen; + int buflen, datalen; + + client_init(client); + + pathlen = strlen(path) + 1; + datalen = pathlen + INTLEN + INTLEN + INTLEN; + + put_cmd(SJ3_MAKEDICT); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(path, pathlen); + put_int(idxlen); + put_int(seglen); + put_int(segnum); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 4, put_string, path, pathlen, put_ndata, + &idxlen, INTLEN, put_ndata, &seglen, INTLEN, + put_ndata, &segnum, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_make_study_file(client, path, stynum, clstep, cllen) +SJ3_CLIENT_ENV *client; +char *path; +int stynum; +int clstep; +int cllen; +{ + int pathlen; + int buflen, datalen; + + client_init(client); + + pathlen = strlen(path) + 1; + datalen = pathlen + INTLEN + INTLEN + INTLEN; + + put_cmd(SJ3_MAKESTDY); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(path, pathlen); + put_int(stynum); + put_int(clstep); + put_int(cllen); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 4, put_string, path, pathlen, put_ndata, + &stynum, INTLEN, put_ndata, &clstep, INTLEN, + put_ndata, &cllen, 0) == ERROR) + return ERROR; + } + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_make_directory(client, path) +SJ3_CLIENT_ENV *client; +char *path; +{ + int pathlen; + int buflen; + + client_init(client); + + pathlen = strlen(path) + 1; + + put_cmd(SJ3_MAKEDIR); + if (pathlen <= (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(path, pathlen); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 1, put_string, path, pathlen, NULL, NULL, 0, + NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_access(client, path, mode) +SJ3_CLIENT_ENV *client; +char *path; +int mode; +{ + int result; + int pathlen; + int buflen, datalen; + + client_init(client); + + pathlen = strlen(path) + 1; + datalen = pathlen + INTLEN; + + put_cmd(SJ3_ACCESS); + if (datalen <= (buflen = BUFFER_SIZE - CMDLEN)) { + put_string(path, pathlen); + put_int(mode); + if (put_flush() == ERROR) return ERROR; + } else { + if (put_over(buflen, 2, put_string, path, pathlen, put_ndata, + &mode, INTLEN, NULL, NULL, 0, NULL, NULL, 0) == ERROR) + return ERROR; + } + + sj3_error_number = 0; + result = get_int(); + return ReadErrorFlag ? ERROR : result; +} + + + +int sj3_who(client, ret, num) +SJ3_CLIENT_ENV *client; +SJ3_WHO_STRUCT *ret; +int num; +{ + int i, j; + + client_init(client); + + put_cmd(SJ3_WHO); + if (put_flush() == ERROR) return ERROR; + + if ((i = get_int()) < 0) { + sj3_error_number = SJ3_InternalError; + return -1; + } + + sj3_error_number = 0; + for (j = 0 ; j < i ; j++) { + if (j < num) { + ret -> fd = get_int(); + get_nstring(ret -> hostname, SJ3_NAME_LENGTH); + get_nstring(ret -> username, SJ3_NAME_LENGTH); + get_nstring(ret -> progname, SJ3_NAME_LENGTH); + ret++; + } + else { + get_int(); + skip_string(); + skip_string(); + skip_string(); + } + } + + return ReadErrorFlag ? ERROR : ((i < num) ? i : num); +} + + + +int sj3_quit(client) +SJ3_CLIENT_ENV *client; +{ + client_init(client); + + put_cmd(SJ3_QUIT); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} +int sj3_kill(client) +SJ3_CLIENT_ENV *client; +{ + client_init(client); + + put_cmd(SJ3_KILL); + if (put_flush() == ERROR) return ERROR; + + if (sj3_error_number = get_int()) return ERROR; + return ReadErrorFlag ? ERROR : 0; +} + + + +int sj3_version(client, dst, dstsiz) +SJ3_CLIENT_ENV *client; +char *dst; +int dstsiz; +{ + int c; + + client_init(client); + + put_cmd(SJ3_VERSION); + if (put_flush() == ERROR) return ERROR; + + sj3_error_number = get_int(); + c = get_byte(); + while (c) { + while (c) { + if (dstsiz > 2) { *dst++ = c; dstsiz--; } + c = get_byte(); + } + if (dstsiz > 1) { *dst++ = 0; dstsiz--; } + c = get_byte(); + } + if (dstsiz > 0) { *dst++ = 0; dstsiz--; } + return ReadErrorFlag ? ERROR : 0; +} diff --git a/sj3lib/sj.c b/sj3lib/sj.c new file mode 100644 index 0000000..91820f3 --- /dev/null +++ b/sj3lib/sj.c @@ -0,0 +1,1132 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1994/12/09 11:27:09 $ + */ + + + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "sj_const.h" +#include "Const.h" +#include "sj3err.h" +#include "sj3lib.h" +#include "sj3lowlib.h" +#include "sj_hinsi.h" + +extern int sj3_error_number; +extern int sj3_str_sjistoeuc(), sj3_str_euctosjis(), sj3_sjistoeuclen(); +#ifdef __sony_news +extern int _sys_code; +#else +#define SYS_SJIS 0 +#define SYS_EUC 1 +#define SYS_NOTDEF -1 +static int _sys_code = SYS_NOTDEF; +#endif /* __sony_news */ + +#ifndef lint +static char rcsid_sony[] = "$Header: /export/work/contrib/sj3/sj3lib/RCS/sj.c,v 1.14 1994/06/03 07:42:13 notanaka Exp $ SONY;"; +#endif + +char *sj3_user_dir = "user"; +static char *path_delimiter = "/"; +static SJ3_CLIENT_ENV client = { -1, 0 }; +static long mdicid = 0; +static long udicid = 0; +static int defuse = 0; +static long *dicid_list = NULL; +static int dicid_num = 0; + +static u_char buf1[YomiBufSize]; +static u_char buf2[YomiBufSize]; +static u_char kbuf[KanjiBufSize]; + +char *getlogin(), *getenv(); +long sj3_open_dictionary(); + +#ifndef __sony_news +static int +set_sys_code() +{ + char *loc; + + loc = setlocale(LC_CTYPE, NULL); + if (strcmp(loc, "ja_JP.SJIS") == 0) + return SYS_SJIS; + + return SYS_EUC; +} +#endif + + +static make_dirs(path) +char *path; +{ + char tmp[PathNameLen]; + register char *p; + int i; + + for (p = path ; *p ; p++) { + if (*p != *path_delimiter) continue; + + strncpy(tmp, path, (i = p - path)); + tmp[i] = '\0'; + if (sj3_access(&client, tmp, F_OK) != ERROR) continue; + if (sj3_error_number == SJ3_ServerDown) return ERROR; + + if (sj3_make_directory(&client, tmp) == ERROR) return ERROR; + } + return 0; +} + + + +sj3_open(host, user) +char *host; +char *user; +{ + char tmp[PathNameLen]; + char *p; + int err = SJ3_NORMAL_END; + + if (client.fd != -1) return SJ3_ALREADY_CONNECTED; + + sprintf(tmp, "%d.sj3lib", getpid()); + if (sj3_make_connection(&client, host, user, tmp) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + client.fd = -1; return SJ3_CONNECT_ERROR; + } + + if (client.stdy_size > SJ3_WORD_ID_SIZE) { + sj3_erase_connection(&client); + return SJ3_CONNECT_ERROR; + } + + mdicid = sj3_open_dictionary(&client, MainDictionary, NULL); + if (mdicid == 0) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CANNOT_OPEN_MDICT; + } + + strcpy(tmp, sj3_user_dir); + if (tmp[strlen(tmp) - 1] != *path_delimiter) + strcat(tmp, path_delimiter); + strcat(tmp, user); + strcat(tmp, path_delimiter); + if (make_dirs(tmp) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + return (err | SJ3_CANNOT_MAKE_UDIR); + } + + for (p = tmp ; *p ; p++) ; + strcpy(p, UserDictionary); + if (sj3_access(&client, tmp, F_OK) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + if (sj3_make_dict_file(&client, tmp, DefIdxLen, + DefSegLen, DefSegNum) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) + goto server_dead; + err |= SJ3_CANNOT_MAKE_UDICT; + } + } + udicid = sj3_open_dictionary(&client, tmp, ""); + if (udicid == 0) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CANNOT_OPEN_UDICT; + } + + strcpy(p, StudyFile); + if (sj3_access(&client, tmp, F_OK) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + if (sj3_make_study_file(&client, tmp, DefStyNum, DefClStep, + DefClLen) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) + goto server_dead; + err |= SJ3_CANNOT_MAKE_STUDY; + } + } + if (sj3_open_study_file(&client, tmp, "") == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CANNOT_OPEN_STUDY; + } + + return err; + +server_dead: + mdicid = udicid = 0; + return SJ3_SERVER_DEAD; +} + +sj3_open_with_list(host, user, dicts_num, dicts, error_num, error_index) +char *host; +char *user; +int dicts_num; +char **dicts; +int *error_num; +int **error_index; +{ + char tmp[PathNameLen]; + char *p; + int err = SJ3_NORMAL_END; + int i, err_id_num = 0; + long *dict_idx; + + if (client.fd != -1) return SJ3_ALREADY_CONNECTED; + + sprintf(tmp, "%d.sj3lib", getpid()); + if (sj3_make_connection(&client, host, user, tmp) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + client.fd = -1; return SJ3_CONNECT_ERROR; + } + + if (client.stdy_size > SJ3_WORD_ID_SIZE) { + sj3_erase_connection(&client); + return SJ3_CONNECT_ERROR; + } + + if ((dicts_num > 0) && dicts) { + if (!(dict_idx = (long *)malloc(sizeof(long) * dicts_num * 2))) { + return SJ3_CONNECT_ERROR; + } + memset(dict_idx, 0, sizeof(long) * dicts_num * 2); + dicid_num = dicts_num; + dicid_list = dict_idx; + err_id_num = 0; + for (i = 0; i < dicts_num; i++) { + dict_idx[i] = sj3_open_dictionary(&client, dicts[i], NULL); + if (dict_idx[i] == 0) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + dict_idx[dicts_num + err_id_num] = i; + err_id_num++; + } else if (mdicid == 0) { + mdicid = dict_idx[i]; + } + } + + if (err_id_num == dicts_num) { + err |= SJ3_CANNOT_OPEN_MDICT; + mdicid = 0; + } + if (error_num) *error_num = err_id_num; + if (error_index) *error_index = (int *) &(dict_idx[dicts_num]); + } + + strcpy(tmp, sj3_user_dir); + if (tmp[strlen(tmp) - 1] != *path_delimiter) + strcat(tmp, path_delimiter); + strcat(tmp, user); + strcat(tmp, path_delimiter); + if (make_dirs(tmp) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + return (err | SJ3_CANNOT_MAKE_UDIR); + } + + for (p = tmp ; *p ; p++) ; + strcpy(p, UserDictionary); + if (sj3_access(&client, tmp, F_OK) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + if (sj3_make_dict_file(&client, tmp, DefIdxLen, + DefSegLen, DefSegNum) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) + goto server_dead; + err |= SJ3_CANNOT_MAKE_UDICT; + } + } + + udicid = sj3_open_dictionary(&client, tmp, ""); + if (udicid == 0) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CANNOT_OPEN_UDICT; + } + + strcpy(p, StudyFile); + if (sj3_access(&client, tmp, F_OK) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + if (sj3_make_study_file(&client, tmp, DefStyNum, DefClStep, + DefClLen) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) + goto server_dead; + err |= SJ3_CANNOT_MAKE_STUDY; + } + } + if (sj3_open_study_file(&client, tmp, "") == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CANNOT_OPEN_STUDY; + } + + return err; + +server_dead: + if (dict_idx) { + free(dict_idx); + dict_idx = NULL; + if (error_num) *error_num = 0; + if (error_index) *error_index = NULL; + } + mdicid = udicid = 0; + return SJ3_SERVER_DEAD; +} +sj3_close() +{ + int err = SJ3_NORMAL_END; + int i; + + if (client.fd == -1) return SJ3_NOT_CONNECTED; + + if (mdicid == 0) + err |= SJ3_NOT_OPENED_MDICT; + else if (dicid_list) { + for (i = 0; i < dicid_num; i++) { + if (sj3_close_dictionary(&client, dicid_list[i]) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CLOSE_MDICT_ERROR; + } + } + free(dicid_list); + dicid_list = NULL; + dicid_num = 0; + } else if (sj3_close_dictionary(&client, mdicid) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CLOSE_MDICT_ERROR; + } + mdicid = 0; + + if (udicid == 0) + err |= SJ3_NOT_OPENED_UDICT; + else if (sj3_close_dictionary(&client, udicid) == ERROR) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_CLOSE_UDICT_ERROR; + } + udicid = 0; + + if (sj3_close_study_file(&client) == ERROR) { + switch (sj3_error_number) { + case SJ3_ServerDown: + goto server_dead; + + case SJ3_StdyFileNotOpened: + err |= SJ3_NOT_OPENED_STUDY; break; + + default: + err |= SJ3_CLOSE_STUDY_ERROR; break; + } + } + + if (sj3_erase_connection(&client)) { + if (sj3_error_number == SJ3_ServerDown) goto server_dead; + err |= SJ3_DISCONNECT_ERROR; + } + + return err; + +server_dead: + if (dicid_list) { + free(dicid_list); + dicid_list = NULL; + } + dicid_num = 0; + mdicid = udicid = 0; + return SJ3_SERVER_DEAD; +} + + + +sj3_getkan(yomi, bun, knj, knjsiz) +u_char *yomi; +SJ3_BUNSETU *bun; +u_char *knj; +int knjsiz; +{ + u_char *src; + int buncnt = 0; + int len; + int stysiz = client.stdy_size; + + if ((len = strlen(yomi)) > SJ3_IKKATU_YOMI) return 0; + + while (*yomi) { + len = sj3_ikkatu_henkan(&client, yomi, knj, knjsiz, MBCODE_SJIS); + if (len == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + + return 0; + } + else if (len == 0) + break; + + src = knj; + while (*src) { + bun -> srclen = *src++; + memcpy(&(bun -> dcid), src, stysiz); + src += stysiz; + bun -> destlen = strlen(src); + bun -> srcstr = yomi; + bun -> deststr = knj; + while (*src) *knj++ = *src++; + knjsiz -= bun -> destlen; + src++; + yomi += bun -> srclen; + bun++; + buncnt++; + } + *knj = 0; + } + + if (*yomi) { + bun -> srclen = strlen(yomi); + bun -> srcstr = yomi; + bun -> destlen = 0; + bun -> deststr = NULL; + memset(&(bun -> dcid), '\0', sizeof(bun -> dcid)); + buncnt++; + } + + return buncnt; +} +sj3_getkan_euc(yomi, bun, knj, knjsiz) +u_char *yomi; +SJ3_BUNSETU *bun; +u_char *knj; +int knjsiz; +{ + u_char *src, *yp, *kp, *khp; + int buncnt = 0, i; + int len, flag, mflag = 0; + int stysiz = client.stdy_size; + int sentou, saigo; + int knjorg = knjsiz; + SJ3_BUNSETU *hbun = bun; + + if ((len = strlen(yomi)) > SJ3_IKKATU_YOMI) return 0; + if (client.svr_version == 1) { + defuse = 0; + len = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse); + if ((len < 0) || defuse) return 0; + yp = buf1; + if (knjsiz > sizeof(kbuf)) { + mflag = 1; + kp = khp = (u_char *) malloc(knjsiz); + } else { + kp = khp = kbuf; + } + flag = MBCODE_SJIS; + } else { + yp = yomi; + kp = knj; + flag = MBCODE_EUC; + } + + while (*yp) { + len = sj3_ikkatu_henkan(&client, yp, kp, knjsiz, flag); + if (len == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + + return 0; + } + else if (len == 0) + break; + + src = kp; + while (*src) { + bun -> srclen = *src++; + memcpy(&(bun -> dcid), src, stysiz); + src += stysiz; + bun -> destlen = strlen(src); + bun -> srcstr = yp; + bun -> deststr = kp; + while (*src) *kp++ = *src++; + knjsiz -= bun -> destlen; + src++; + yp += bun -> srclen; + bun++; + buncnt++; + } + *kp = 0; + } + + if (*yp) { + bun -> srclen = strlen(yp); + bun -> srcstr = yp; + bun -> destlen = 0; + bun -> deststr = NULL; + memset(&(bun -> dcid), '\0', sizeof(bun -> dcid)); + buncnt++; + } + + if (client.svr_version == 1) { + kp = khp; + yp = buf1; + bun = hbun; + defuse = 0; + len = sj3_str_sjistoeuc(knj, knjorg, kp, client.default_char, &defuse); + if ((len < 0) || defuse) return 0; + for(i = 0; i < buncnt; i++) { + sentou = sj3_sjistoeuclen(yp, bun[i].srcstr - yp); + saigo = sj3_sjistoeuclen(bun[i].srcstr, bun[i].srclen); + bun[i].srclen = saigo; + bun[i].srcstr = yomi + sentou; + sentou = sj3_sjistoeuclen(kp, bun[i].deststr - kp); + saigo = sj3_sjistoeuclen(bun[i].deststr, bun[i].destlen); + bun[i].destlen = saigo; + bun[i].deststr = knj + sentou; + } + if (mflag) { + free(khp); + mflag = 0; + } + } + + return buncnt; +} + +sj3_getkan_mb(yomi, bun, knj, knjsiz) +u_char *yomi; +SJ3_BUNSETU *bun; +u_char *knj; +int knjsiz; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_getkan_euc(yomi, bun, knj, knjsiz); + else + return sj3_getkan(yomi, bun, knj, knjsiz); +} + + + +sj3_douoncnt(yomi) +u_char *yomi; +{ + int i; + + if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0; + + i = sj3_bunsetu_kouhosuu(&client, yomi, i, MBCODE_SJIS); + if (i == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + + return 0; + } + + return i; +} +sj3_douoncnt_euc(yomi) +u_char *yomi; +{ + int i, l, flag; + u_char *yp; + + if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0; + + if (client.svr_version == 1) { + defuse = 0; + l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse); + if ((l < 0) || defuse) return 0; + yp = buf1; + flag = MBCODE_SJIS; + } else { + yp = yomi; + flag = MBCODE_EUC; + } + i = sj3_bunsetu_kouhosuu(&client, yp, i, flag); + if (i == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + + return 0; + } + + return i; +} + +sj3_douoncnt_mb(yomi) +u_char *yomi; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_douoncnt_euc(yomi); + else + return sj3_douoncnt(yomi); +} + + + +sj3_getdouon(yomi, dou) +u_char *yomi; +SJ3_DOUON *dou; +{ + int i; + + if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0; + + i = sj3_bunsetu_zenkouho(&client, yomi, i, dou, MBCODE_SJIS); + if (i == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 0; + } + + return i; +} +sj3_getdouon_euc(yomi, dou) +u_char *yomi; +SJ3_DOUON *dou; +{ + int i, j, l; + + if ((i = strlen(yomi)) > SJ3_BUNSETU_YOMI) return 0; + + if (client.svr_version == 1) { + defuse = 0; + l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse); + if ((l < 0) || defuse) return 0; + i = sj3_bunsetu_zenkouho(&client, buf1, i, dou, MBCODE_SJIS); + if (i == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 0; + } + for (j = 0; j < i; j++) { + defuse = 0; + l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), + dou[j].ddata, client.default_char, &defuse); + if ((l < 0) || defuse) return 0; + (void)memcpy(dou[j].ddata, kbuf, l+1); + dou[j].dlen = l; + } + } else { + i = sj3_bunsetu_zenkouho(&client, yomi, i, dou, MBCODE_EUC); + if (i == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 0; + } + } + return i; +} +sj3_getdouon_mb(yomi, dou) +u_char *yomi; +SJ3_DOUON *dou; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_getdouon_euc(yomi, dou); + else + return sj3_getdouon(yomi, dou); +} + +sj3_gakusyuu(dcid) +SJ3_STUDYREC *dcid; +{ + if (sj3_tango_gakusyuu(&client, dcid) == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} + +sj3_gakusyuu2(yomi1, yomi2, dcid) +u_char *yomi1; +u_char *yomi2; +SJ3_STUDYREC *dcid; +{ + if (sj3_bunsetu_gakusyuu(&client, yomi1, yomi2, dcid, MBCODE_SJIS) == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} +sj3_gakusyuu2_euc(yomi1, yomi2, dcid) +u_char *yomi1; +u_char *yomi2; +SJ3_STUDYREC *dcid; +{ + int l, flag; + u_char *y1p, *y2p; + + if (client.svr_version == 1) { + defuse = 0; + l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi1, client.default_char, &defuse); + if ((l < 0) || defuse) return 1; + defuse = 0; + l = sj3_str_euctosjis(buf2, sizeof(buf2), yomi2, client.default_char, &defuse); + if ((l < 0) || defuse) return 1; + y1p = buf1; + y2p = buf2; + flag = MBCODE_SJIS; + } else { + y1p = yomi1; + y2p = yomi2; + flag = MBCODE_EUC; + } + if (sj3_bunsetu_gakusyuu(&client, y1p, y2p, dcid, flag) == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} +sj3_gakusyuu2_mb(yomi1, yomi2, dcid) +u_char *yomi1; +u_char *yomi2; +SJ3_STUDYREC *dcid; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_gakusyuu2_euc(yomi1, yomi2, dcid); + else + return sj3_gakusyuu2(yomi1, yomi2, dcid); +} + +sj3_touroku(yomi, kanji, code) +u_char *yomi; +u_char *kanji; +int code; +{ + if (sj3_tango_touroku(&client, udicid, yomi, kanji, code, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + switch (sj3_error_number) { + case SJ3_NoSuchDict: + case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR; + case SJ3_DictLocked: return SJ3_DICT_LOCKED; + case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR; + case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR; + case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE; + case SJ3_AlreadyExistWord: return SJ3_WORD_EXIST; + case SJ3_NoMoreDouonWord: return SJ3_DOUON_FULL; + case SJ3_NoMoreUserDict: return SJ3_DICT_FULL; + case SJ3_NoMoreIndexBlock: return SJ3_INDEX_FULL; + default: return SJ3_TOUROKU_FAILED; + } + } + + return 0; +} +sj3_touroku_euc(yomi, kanji, code) +u_char *yomi; +u_char *kanji; +int code; +{ + int l, flag; + u_char *yp; + u_char *kp; + if (client.svr_version == 1) { + defuse = 0; + l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse); + if ((l < 0) || defuse) return SJ3_BAD_YOMI_STR; + defuse = 0; + l = sj3_str_euctosjis(kbuf, sizeof(kbuf), kanji, client.default_char, &defuse); + if ((l < 0) || defuse) return SJ3_BAD_KANJI_STR; + yp = buf1; + kp = kbuf; + flag = MBCODE_SJIS; + } else { + yp = yomi; + kp = kanji; + flag = MBCODE_EUC; + } + if (sj3_tango_touroku(&client, udicid, yp, kp, code, flag)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + switch (sj3_error_number) { + case SJ3_NoSuchDict: + case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR; + case SJ3_DictLocked: return SJ3_DICT_LOCKED; + case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR; + case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR; + case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE; + case SJ3_AlreadyExistWord: return SJ3_WORD_EXIST; + case SJ3_NoMoreDouonWord: return SJ3_DOUON_FULL; + case SJ3_NoMoreUserDict: return SJ3_DICT_FULL; + case SJ3_NoMoreIndexBlock: return SJ3_INDEX_FULL; + default: return SJ3_TOUROKU_FAILED; + } + } + + return 0; +} +sj3_touroku_mb(yomi, kanji, code) +u_char *yomi; +u_char *kanji; +int code; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_touroku_euc(yomi, kanji, code); + else + return sj3_touroku(yomi, kanji, code); +} + +sj3_syoukyo(yomi, kanji, code) +u_char *yomi; +u_char *kanji; +int code; +{ + if (sj3_tango_sakujo(&client, udicid, yomi, kanji, code, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + switch (sj3_error_number) { + case SJ3_NoSuchDict: + case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR; + case SJ3_DictLocked: return SJ3_DICT_LOCKED; + case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR; + case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR; + case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE; + case SJ3_NoSuchWord: return SJ3_WORD_NOT_EXIST; + default: return SJ3_SYOUKYO_FAILED; + } + } + return 0; +} +sj3_syoukyo_euc(yomi, kanji, code) +u_char *yomi; +u_char *kanji; +int code; +{ + int l, flag; + u_char *yp; + u_char *kp; + if (client.svr_version == 1) { + defuse = 0; + l = sj3_str_euctosjis(buf1, sizeof(buf1), yomi, client.default_char, &defuse); + if ((l < 0) || defuse) return SJ3_BAD_YOMI_STR; + defuse = 0; + l = sj3_str_euctosjis(kbuf, sizeof(kbuf), kanji, client.default_char, &defuse); + if ((l < 0) || defuse) return SJ3_BAD_KANJI_STR; + yp = buf1; + kp = kbuf; + flag = MBCODE_SJIS; + } else { + yp = yomi; + kp = kanji; + flag = MBCODE_EUC; + } + if (sj3_tango_sakujo(&client, udicid, yp, kp, code, flag)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + switch (sj3_error_number) { + case SJ3_NoSuchDict: + case SJ3_ReadOnlyDict: return SJ3_DICT_ERROR; + case SJ3_DictLocked: return SJ3_DICT_LOCKED; + case SJ3_BadYomiString: return SJ3_BAD_YOMI_STR; + case SJ3_BadKanjiString: return SJ3_BAD_KANJI_STR; + case SJ3_BadHinsiCode: return SJ3_BAD_HINSI_CODE; + case SJ3_NoSuchWord: return SJ3_WORD_NOT_EXIST; + default: return SJ3_SYOUKYO_FAILED; + } + } + return 0; +} +sj3_syoukyo_mb(yomi, kanji, code) +u_char *yomi; +u_char *kanji; +int code; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_syoukyo_euc(yomi, kanji, code); + else + return sj3_syoukyo(yomi, kanji, code); +} + +sj3_getdict(buf) +u_char *buf; +{ + if (sj3_tango_syutoku(&client, udicid, buf, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} +sj3_getdict_euc(buf) +u_char *buf; +{ + int l, ll, slen; + + if (client.svr_version == 1) { + if (sj3_tango_syutoku(&client, udicid, buf, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + defuse = 0; + slen = strlen(buf) + 1; + l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf, client.default_char, &defuse); + if ((l < 0) || defuse) return 1; + l++; + ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l, &(buf[slen]), + client.default_char, &defuse); + if ((ll < 0) || defuse) return 1; + ll++; + slen += strlen(&(buf[slen])) + 1; + l = l + ll; + memcpy(&(kbuf[l]), &(buf[slen]), 4); + l += 4; + memcpy(buf, kbuf, l); + } else { + if (sj3_tango_syutoku(&client, udicid, buf, MBCODE_EUC)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + } + return 0; +} +sj3_getdict_mb(buf) +u_char *buf; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_getdict_euc(buf); + else + return sj3_getdict(buf); +} + +sj3_nextdict(buf) +u_char *buf; +{ + if (sj3_tango_jikouho(&client, udicid, buf, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} +sj3_nextdict_euc(buf) +u_char *buf; +{ + int l, ll, slen; + + if (client.svr_version == 1) { + if (sj3_tango_jikouho(&client, udicid, buf, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + defuse = 0; + slen = strlen(buf) + 1; + l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf, client.default_char, &defuse); + if ((l < 0) || defuse) return 1; + l++; + ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l, &(buf[slen]), + client.default_char, &defuse); + if ((ll < 0) || defuse) return 1; + ll++; + slen += strlen(&(buf[slen])) + 1; + l = l + ll; + memcpy(&(kbuf[l]), &(buf[slen]), 4); + l += 4; + memcpy(buf, kbuf, l); + } else { + if (sj3_tango_jikouho(&client, udicid, buf, MBCODE_EUC)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + } + return 0; +} +sj3_nextdict_mb(buf) +u_char *buf; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_nextdict_euc(buf); + else + return sj3_nextdict(buf); +} + +sj3_prevdict(buf) +u_char *buf; +{ + if (sj3_tango_maekouho(&client, udicid, buf, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} +sj3_prevdict_euc(buf) +u_char *buf; +{ + int l, ll, slen; + + if (client.svr_version == 1) { + if (sj3_tango_maekouho(&client, udicid, buf, MBCODE_SJIS)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + defuse = 0; + slen = strlen(buf) + 1; + l = sj3_str_sjistoeuc(kbuf, sizeof(kbuf), buf, client.default_char, &defuse); + if ((l < 0) || defuse) return 1; + l++; + ll = sj3_str_sjistoeuc(&(kbuf[l]), sizeof(kbuf) - l, &(buf[slen]), + client.default_char, &defuse); + if ((ll < 0) || defuse) return 1; + ll++; + slen += strlen(&(buf[slen])) + 1; + l = l + ll; + memcpy(&(kbuf[l]), &(buf[slen]), 4); + l += 4; + memcpy(buf, kbuf, l); + } else { + if (sj3_tango_maekouho(&client, udicid, buf, MBCODE_EUC)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + } + return 0; +} +sj3_prevdict_mb(buf) +u_char *buf; +{ +#ifndef __sony_news + if (_sys_code == SYS_NOTDEF) + _sys_code = set_sys_code(); +#endif + if (_sys_code == SYS_EUC) + return sj3_prevdict_euc(buf); + else + return sj3_prevdict(buf); +} + +sj3_lockserv() +{ + if (sj3_lock_server(&client) == ERROR) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} +sj3_unlockserv() +{ + if (sj3_unlock_server(&client)) { + if (client.fd < 0) { + mdicid = udicid = 0; + return -1; + } + return 1; + } + return 0; +} diff --git a/sj3lib/sj3lib.h b/sj3lib/sj3lib.h new file mode 100644 index 0000000..ad7d870 --- /dev/null +++ b/sj3lib/sj3lib.h @@ -0,0 +1,152 @@ +/* + * Copyright (c) 1991-1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3lib.h,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:57 $ + */ + + + + + +#define SJ3_NORMAL_END 0 +#define SJ3_SERVER_DEAD (1 << 0) + + + +#define SJ3_CONNECT_ERROR (1 << 1) +#define SJ3_ALREADY_CONNECTED (1 << 2) +#define SJ3_CANNOT_OPEN_MDICT (1 << 3) +#define SJ3_CANNOT_OPEN_UDICT (1 << 4) +#define SJ3_CANNOT_OPEN_STUDY (1 << 5) +#define SJ3_CANNOT_MAKE_UDIR (1 << 6) +#define SJ3_CANNOT_MAKE_UDICT (1 << 7) +#define SJ3_CANNOT_MAKE_STUDY (1 << 8) + + + +#define SJ3_DISCONNECT_ERROR (1 << 1) +#define SJ3_NOT_CONNECTED (1 << 2) +#define SJ3_NOT_OPENED_MDICT (1 << 3) +#define SJ3_NOT_OPENED_UDICT (1 << 4) +#define SJ3_NOT_OPENED_STUDY (1 << 5) +#define SJ3_CLOSE_MDICT_ERROR (1 << 6) +#define SJ3_CLOSE_UDICT_ERROR (1 << 7) +#define SJ3_CLOSE_STUDY_ERROR (1 << 8) + + + +#define SJ3_DICT_ERROR 1 +#define SJ3_DICT_LOCKED 2 +#define SJ3_BAD_YOMI_STR 3 +#define SJ3_BAD_KANJI_STR 4 +#define SJ3_BAD_HINSI_CODE 5 + +#define SJ3_WORD_EXIST 6 +#define SJ3_DOUON_FULL 7 +#define SJ3_DICT_FULL 8 +#define SJ3_INDEX_FULL 9 +#define SJ3_TOUROKU_FAILED 10 + +#define SJ3_WORD_NOT_EXIST 6 +#define SJ3_SYOUKYO_FAILED 10 + + + + +#define SJ3_IKKATU_YOMI 512 + + + + +#define SJ3_BUNSETU_YOMI 128 +#define SJ3_BUNSETU_KANJI 512 + + + + +#ifndef SJ3_WORD_ID_SIZE +# define SJ3_WORD_ID_SIZE 32 +#endif + +typedef struct studyrec { + unsigned char dummy[SJ3_WORD_ID_SIZE]; +} SJ3_STUDYREC; + + + + +typedef struct bunsetu { + int srclen; + int destlen; + unsigned char *srcstr; + unsigned char *deststr; + struct studyrec dcid; +} SJ3_BUNSETU; + + + +typedef struct douon { + unsigned char ddata[SJ3_BUNSETU_KANJI]; + int dlen; + SJ3_STUDYREC dcid; +} SJ3_DOUON; + + + +#define SJ3_H_NRMNOUN 1 +#define SJ3_H_PRONOUN 12 +#define SJ3_H_LNAME 21 +#define SJ3_H_FNAME 22 +#define SJ3_H_LOCNAME 24 +#define SJ3_H_PREFIC 25 +#define SJ3_H_RENTAI 26 +#define SJ3_H_CONJUNC 27 +#define SJ3_H_SUBNUM 29 +#define SJ3_H_NUMERAL 30 +#define SJ3_H_PREFIX 31 +#define SJ3_H_POSTFIX 36 +#define SJ3_H_ADVERB 45 +#define SJ3_H_ADJECT 60 +#define SJ3_H_ADJVERB 71 +#define SJ3_H_SILVERB 80 +#define SJ3_H_ZILVERB 81 +#define SJ3_H_ONEVERB 90 +#define SJ3_H_KAVERB 91 +#define SJ3_H_GAVERB 92 +#define SJ3_H_SAVERB 93 +#define SJ3_H_TAVERB 94 +#define SJ3_H_NAVERB 95 +#define SJ3_H_BAVERB 96 +#define SJ3_H_MAVERB 97 +#define SJ3_H_RAVERB 98 +#define SJ3_H_WAVERB 99 +#define SJ3_H_SINGLE 189 diff --git a/sj3lib/string.c b/sj3lib/string.c new file mode 100644 index 0000000..b68044a --- /dev/null +++ b/sj3lib/string.c @@ -0,0 +1,383 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: string.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:58 $ + */ + + + + +#include "sj_sysvdef.h" +#include +#include +#include +#include "sj_euc.h" +#if defined(__sony_news) && defined(SVR4) +#include +#endif +#include + +#ifndef TRUE +#define TRUE (1) +#define FALSE (0) +#endif + +#ifndef __sony_news +#define sjis2euc sj3_sjis2euc +#define euc2sjis sj3_euc2sjis + +#define issjis1(c) (((0x81 <= (c)) && ((c) <= 0x9f)) || \ + ((0xe0 <= (c)) && ((c) <= 0xfc))) +#define iseuc(c) ((0xa1 <= (c)) && ((c) <= 0xfe)) +#define iskana(c) ((0xa1 <= (c)) && ((c) <= 0xdf)) + +unsigned short sjis2euc(), euc2sjis(); +#endif + +int +sj3_str_sjistoeuc(out, outlen, in, sjis_default, useflag) +unsigned char *out, *in, *sjis_default; +int outlen, *useflag; +{ + unsigned char *sjis = in, *euc = out; + int n = 0; + unsigned short code, default_code; + + euc[0] = '\0'; + *useflag = 0; + + if (!sjis) return 0; + + while (*sjis && n < outlen) { + if (issjis1(*sjis)) { + code = sjis2euc( (*sjis << 8) | *(sjis+1) ); + if (n + 2 > outlen) return -1; + if (code == 0) { + default_code = sjis2euc((sjis_default[0] << 8) + | sjis_default[1]); + euc[n++] = default_code >> 8; + euc[n++] = default_code & 0xff; + (*useflag)++; + } else { + euc[n++] = code >> 8; + euc[n++] = code & 0xff; + } + sjis += 2; + } else { + if( *sjis >= 0xa1 && *sjis <= 0xdf ) { + if (n + 2 > outlen) return -1; + euc[n++] = SS2; + } + euc[n++] = *sjis; + sjis++; + } + + } + if (n > outlen) return -1; + + euc[n] = '\0'; + return n; +} + + +int +sj3_str_euctosjis(out, outlen, in, sjis_default, useflag) +unsigned char *out, *in, *sjis_default; +int outlen, *useflag; +{ + unsigned char *euc = in, *sjis = out; + int n = 0; + unsigned short code, default_code; + + sjis[0] = '\0'; + *useflag = 0; + + if (!euc) return 0; + + while (*euc && n < outlen) { + if (iseuc(*euc)) { + code = euc2sjis( (*euc << 8) | *(euc+1) ); + if (n + 2 > outlen) return -1; + if (code == 0) { + sjis[n++] = sjis_default[0]; + sjis[n++] = sjis_default[1]; + (*useflag)++; + } else { + sjis[n++] = code >> 8; + sjis[n++] = code & 0xff; + } + euc += 2; + } else if (*euc == SS3) { + if (n + 2 > outlen) return -1; + sjis[n++] = sjis_default[0]; + sjis[n++] = sjis_default[1]; + euc += 3; + (*useflag)++; + } else if (*euc == SS2) { + sjis[n++] = *(euc + 1); + euc += 2; + } else { + sjis[n++] = *euc; + euc++; + } + } + if (n > outlen) return -1; + + sjis[n] = '\0'; + return n; +} + +int +sj3_sjistoeuclen(str, max) +unsigned char *str; +int max; +{ + register int len = 0, bytes = 1; + + if (!max) return 0; + while ((bytes <= max) && *str) { + if (issjis1(*str)) { + str++; + bytes++; + if (!*str) break; + len += 2; + } else if (*str & 0x80) { + len += 2; + } else { + len++; + } + str++; + bytes++; + } + return len; +} + +#define MASK 0x7f +#define MSB 0x80 + +#if !defined(__sony_news) || (defined(__sony_news) && !defined(SVR4)) +static unsigned char def_char[] = {0x81, 0x40}; + +int +sj3_sjistoeuc(e, elen, s, slen) +unsigned char *s, *e; +int slen, elen; +{ + int dummy; + + return sj3_str_sjistoeuc(e, elen, s, def_char, &dummy); +} + +int +sj3_euctosjis(s, slen, e, elen) +unsigned char *s, *e; +int slen, elen; +{ + int dummy; + + return sj3_str_euctosjis(s, slen, e, def_char, &dummy); +} + +sj_euc2sjis (s) +unsigned char *s; +{ + s[0] &= MASK; + s[1] &= MASK; + sj_jis2sjis (s); +} + +sj_jis2sjis (s) +unsigned char *s; +{ + register int high, low; + register int nh, nl; + + high = s[0]; + low = s[1]; + nh = ((high - 0x21) >> 1) + 0x81; + if (nh > 0x9f) + nh += 0x40; + if (high & 1) { + nl = low + 0x1f; + if (low > 0x5f) + nl ++; + } + else + nl = low + 0x7e; + s[0] = nh; + s[1] = nl; +} + +sj_sjis2euc (s) +unsigned char *s; +{ + sj_sjis2jis (s); + s[0] |= MSB; + s[1] |= MSB; +} + +sj_sjis2jis (s) +unsigned char *s; +{ + register int byte1, byte2; + register unsigned char *sp; + + sp = s; + byte1 = *sp++; + byte2 = *sp--; + + if (byte1 <= 0x80 || byte1 >= 0xf0 + || ( byte1>=0xa0 && byte1<=0xdf ) + || byte2 <= 0x3f || byte2 >= 0xfe || byte2==0x7f ) { + byte1 = 0x81; + byte2 = 0x40; + } + byte1 -= (byte1 >= 0xa0) ? 0xc1 : 0x81; + if (byte2 >= 0x9f) { + *sp++ = (byte1 << 1) + 0x22; + *sp = byte2 - 0x7e; + } + else { + *sp++ = (byte1 << 1) + 0x21; + *sp = byte2 - ((byte2 <= 0x7e) ? 0x1f : 0x20 ); + } +} + +unsigned short +sj3_jis2sjis(code) +unsigned short code; +{ + unsigned char tmp[3]; + + tmp[0] = (code >> 8) & 0xff; + tmp[1] = code & 0xff; + tmp[2] = '\0'; + + sj_jis2sjis((unsigned char *) tmp); + + code = (tmp[0] << 8) + tmp[1]; + + return(code); +} + +unsigned short +sj3_jis2euc(code) +unsigned short code; +{ + unsigned char tmp[3]; + + tmp[0] = (code >> 8) & 0xff; + tmp[1] = code & 0xff; + tmp[2] = '\0'; + + code = ((tmp[0] | 0x80) << 8) + (tmp[1] | 0x80); + + return(code); +} + +unsigned short +sj3_sjis2jis(code) +unsigned short code; +{ + unsigned char tmp[3]; + + tmp[0] = (code >> 8) & 0xff; + tmp[1] = code & 0xff; + tmp[2] = '\0'; + + sj_sjis2jis((unsigned char *) tmp); + + code = (tmp[0] << 8) + tmp[1]; + + return(code); +} + +unsigned short +sj3_euc2sjis(code) +unsigned short code; +{ + unsigned char tmp[3]; + + tmp[0] = (code >> 8) & 0xff; + tmp[1] = code & 0xff; + tmp[2] = '\0'; + + sj_euc2sjis((unsigned char *) tmp); + + code = (tmp[0] << 8) + tmp[1]; + + return(code); +} + +unsigned short +sj3_sjis2euc(code) +unsigned short code; +{ + unsigned char tmp[3]; + + tmp[0] = (code >> 8) & 0xff; + tmp[1] = code & 0xff; + tmp[2] = '\0'; + + sj_sjis2euc((unsigned char *) tmp); + + code = (tmp[0] << 8) + tmp[1]; + + return(code); +} +#else +#ifndef SVR4 +static unsigned char def_char[] = {0x81, 0x40}; + +int +sj3_sjistoeuc(e, elen, s, slen) +unsigned char *s, *e; +int slen, elen; +{ + int dummy; + + return sj3_str_sjistoeuc(e, elen, s, def_char, &dummy); +} + +int +sj3_euctosjis(s, slen, e, elen) +unsigned char *s, *e; +int slen, elen; +{ + int dummy; + + return sj3_str_euctosjis(s, slen, e, def_char, &dummy); +} +#endif +#endif + + diff --git a/sj3rkcv/rk_conv.c b/sj3rkcv/rk_conv.c new file mode 100644 index 0000000..2b1f5a6 --- /dev/null +++ b/sj3rkcv/rk_conv.c @@ -0,0 +1,1270 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: rk_conv.c,v $ + * $SonyRevision: 1.1 $ + * $SonyDate: 1994/06/03 08:03:59 $ + */ + + +#ifndef lint +static char rcsid[] = "$Header: /export/work/contrib/sj3/sj3rkcv/RCS/rk_conv.c,v 1.14 1994/06/03 07:42:16 notanaka Exp $"; +#endif + + +#include "sj_sysvdef.h" +#include "wchar16.h" +#include +#include +#ifdef SVR4 +#include +#else +#include +#endif +#ifdef __sony_news +#include +#endif +#include "kctype.h" +#include "rk.h" + +#if defined(__sony_news) && defined(SVR4) +#define wscmp sj3_wscmp16 +#define wsncmp sj3_wsncmp16 +#define wsncpy sj3_wsncpy16 +#define wscpy sj3_wscpy16 +#define wslen sj3_wslen16 +#define mbstowcs sj3_mbstowcs16 +#define wcstombs sj3_wcstombs16 +#endif + +extern int current_locale; + +#define ENDMARK(c) (c == SPACE || c == TAB) +#define SKLINE(c) (c == EOL || c == NSTR) +#define TOUPPER(c) (islower(c) ? toupper(c) : (c)) + +#define WTOUPPER(c) ((wchar16_t) (islower(((c) & 0xff)) ? toupper(((c) & 0xff)) : ((c) & 0xff))) + +#define RKSIZE 256 +#define RKINCZ 32 +typedef struct rkbufrec { + RkTablW16 *rkbuf; + RkTablW16 *rkend; + struct rkbufrec *rkbufp; +} RkbufRec; + +#define STRSIZE 1024 +#define STRINCZ 256 +typedef struct strbufrec { + wchar16_t *strbuf; + wchar16_t *strend; + struct strbufrec *strbufp; +} StrbufRec; + +#define YMISIZE 512 +#define YMIINCZ 64 +typedef struct ymibufrec { + wchar16_t *ymibuf; + wchar16_t *ymiend; + struct ymibufrec *ymibufp; +} YmibufRec; + + +#define SJ3_NO -1 +#define SJ3_SJIS 0 +#define SJ3_EUC 1 + +RkTabl *sj3_rcode[MAXCODE]; +RkTablW16 *sj3_rcode_w16[MAXCODE]; +RkTablW16 *rktblp; +wchar16_t rline[MAXLLEN]; +wchar16_t lstr[MAXLLEN]; +static wchar16_t intmp[MAXLLEN]; +static wchar16_t outtmp[MAXLLEN]; +static u_char mtmp[MAXLLEN]; +static int rk_erase; +static int rk_errin = 0; +static int rk_cflag; +static int rk_klen; +static int file_code = SJ3_NO; + + +static RkbufRec rkpbuf, *rkpp = NULL; +static RkTablW16 *rkhp; +static StrbufRec strpbuf, *strpp; +static wchar16_t *shp; +static YmibufRec ymipbuf, *ymipp; +static u_short *yhp; + + +sj3_rkcode(code) +int code; +{ + if (code) + file_code = SJ3_NO; +} + + + + +sj3_rkinit2(rkfile, erase) +char *rkfile; +int erase; +{ + rk_erase = erase; + return(sj3_rkinit_mb(rkfile)); +} + +rcode_sjis_init() +{ + int i, rkeylen = 0, ryomilen = 0, rstrlen = 0; + int klen, ylen, slen, tablnum = 0, tablsize; + u_char *mbstr, *mptr, mtmp[BUFSIZ], mtmp2[BUFSIZ]; + u_short *wcstr, *wcptr; + RkTabl *tabl, *tabl_next, *tabl_prev; + RkTablW16 *tabl_w16; + + tablsize = sizeof(RkTabl); + + + for (i = 0; i < MAXCODE; i++) { + if (sj3_rcode_w16[i]) { + tabl_w16 = sj3_rcode_w16[i]; + while (tabl_w16) { + tablnum++; + if (tabl_w16->r_key) + rkeylen += wslen(tabl_w16->r_key) + 1; + if (tabl_w16->r_str) + rstrlen += wslen(tabl_w16->r_str) + 1; + if (tabl_w16->k_yomi) + ryomilen += wslen(tabl_w16->k_yomi) + 1; + tabl_w16 = tabl_w16->next; + } + } + } + if (!tablnum) + return 1; + tabl = (RkTabl *) malloc(tablnum * tablsize); + if (!tabl) { + return 0; + } + memset(tabl, '\0', tablnum * tablsize); + mbstr = (u_char *) malloc(rkeylen + rstrlen); + if (!mbstr) { + free(tabl); + return 0; + } + memset(mbstr, '\0', rkeylen + rstrlen); + wcptr = wcstr = (u_short *) malloc(ryomilen * sizeof(u_short)); + if (!wcstr) { + free(tabl); + free(mbstr); + return 0; + } + memset(wcptr, '\0', ryomilen * sizeof(u_short)); + + rkeylen *= 2; + rstrlen *= 2; + for (i = 0; i < MAXCODE; i++) { + if (sj3_rcode_w16[i]) { + tabl_w16 = sj3_rcode_w16[i]; + tabl_next = sj3_rcode[i] = tabl; + while (tabl_w16) { + tabl += 1; + if (tabl_w16->r_key) { + if (current_locale == LC_CTYPE_EUC) { + mptr = mtmp; + } else { + mptr = mbstr; + } + if (wcstombs((char *)mptr, tabl_w16->r_key, BUFSIZ) == -1) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + if (current_locale == LC_CTYPE_EUC) { + if ((klen = euctosjis(mbstr, rkeylen, mtmp, sizeof(mtmp))) < 0) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + } else { + klen = strlen((char *)mbstr); + } + tabl_next->r_key = mbstr; + mbstr += klen + 1; + rkeylen -= klen + 1; + } else { + tabl_next->r_key = NULL; + } + if (tabl_w16->r_str) { + if (current_locale == LC_CTYPE_EUC) { + mptr = mtmp; + } else { + mptr = mbstr; + } + if (wcstombs((char *)mptr, tabl_w16->r_str, BUFSIZ) == -1) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + if (current_locale == LC_CTYPE_EUC) { + if ((slen = euctosjis(mbstr, rstrlen, mtmp, sizeof(mtmp))) < 0) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + } else { + slen = strlen((char *)mbstr); + } + tabl_next->r_str = mbstr; + mbstr += slen + 1; + rstrlen -= slen + 1; + } else { + tabl_next->r_str = NULL; + } + if (tabl_w16->k_yomi) { + mptr = mtmp; + if (wcstombs((char *)mptr, tabl_w16->k_yomi, BUFSIZ) == -1) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + if (current_locale == LC_CTYPE_EUC) { + if (euctosjis(mtmp2, sizeof(mtmp2), mtmp, sizeof(mtmp)) < 0) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + mptr = mtmp2; + } else { + mptr = mtmp; + } + tabl_next->k_yomi = wcptr; + ylen = 0; + while (*mptr) { + if (issjis1(*mptr) && issjis2(mptr[1])) { + *wcptr = (*mptr << 8) + mptr[1]; + mptr++; + } else { + *wcptr = *mptr; + } + wcptr++; + mptr++; + ylen++; + } + *wcptr++ = 0; + ryomilen -= ylen + 1; + } else { + tabl_next->k_yomi = NULL; + } + tabl_w16 = tabl_w16->next; + tabl_next->next = tabl; + tabl_prev = tabl_next; + tabl_next = tabl; + } + tabl_prev->next = NULL; + } + } + return 1; + +} + +rcode_euc_init() +{ + int i, rkeylen = 0, ryomilen = 0, rstrlen = 0; + int klen, ylen, slen, tablnum = 0, tablsize; + u_char *mbstr, *mptr, mtmp[BUFSIZ], mtmp2[BUFSIZ]; + u_short *wcstr, *wcptr; + RkTabl *tabl, *tabl_next, *tabl_prev; + RkTablW16 *tabl_w16; + + tablsize = sizeof(RkTabl); + + + for (i = 0; i < MAXCODE; i++) { + if (sj3_rcode_w16[i]) { + tabl_w16 = sj3_rcode_w16[i]; + while (tabl_w16) { + tablnum++; + if (tabl_w16->r_key) + rkeylen += wslen(tabl_w16->r_key) + 1; + if (tabl_w16->r_str) + rstrlen += wslen(tabl_w16->r_str) + 1; + if (tabl_w16->k_yomi) + ryomilen += wslen(tabl_w16->k_yomi) + 1; + tabl_w16 = tabl_w16->next; + } + } + } + if (!tablnum) + return 1; + tabl = (RkTabl *) malloc(tablnum * tablsize); + if (!tabl) { + return 0; + } + memset(tabl, '\0', tablnum * tablsize); + mbstr = (u_char *) malloc(rkeylen + rstrlen); + if (!mbstr) { + free(tabl); + return 0; + } + memset(mbstr, '\0', rkeylen + rstrlen); + wcptr = wcstr = (u_short *) malloc(ryomilen * sizeof(u_short)); + if (!wcstr) { + free(tabl); + free(mbstr); + return 0; + } + memset(wcptr, '\0', ryomilen * sizeof(u_short)); + + rkeylen *= 2; + rstrlen *= 2; + for (i = 0; i < MAXCODE; i++) { + if (sj3_rcode_w16[i]) { + tabl_w16 = sj3_rcode_w16[i]; + tabl_next = sj3_rcode[i] = tabl; + while (tabl_w16) { + tabl += 1; + if (tabl_w16->r_key) { + if (current_locale == LC_CTYPE_SHIFTJIS) { + mptr = mtmp; + } else { + mptr = mbstr; + } + if (wcstombs((char *)mptr, tabl_w16->r_key, BUFSIZ) == -1) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + if (current_locale == LC_CTYPE_SHIFTJIS) { + if ((klen = euctosjis(mbstr, rkeylen, mtmp, sizeof(mtmp))) < 0) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + } else { + klen = strlen((char *)mbstr); + } + tabl_next->r_key = mbstr; + mbstr += klen + 1; + rkeylen -= klen + 1; + } else { + tabl_next->r_key = NULL; + } + if (tabl_w16->r_str) { + if (current_locale == LC_CTYPE_SHIFTJIS) { + mptr = mtmp; + } else { + mptr = mbstr; + } + if (wcstombs((char *)mptr, tabl_w16->r_str, BUFSIZ) == -1) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + if (current_locale == LC_CTYPE_SHIFTJIS) { + if ((slen = sjistoeuc(mbstr, rstrlen, mtmp, sizeof(mtmp))) < 0) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + } else { + slen = strlen((char *)mbstr); + } + tabl_next->r_str = mbstr; + mbstr += slen + 1; + rstrlen -= slen + 1; + } else { + tabl_next->r_str = NULL; + } + if (tabl_w16->k_yomi) { + mptr = mtmp; + if (wcstombs((char *)mptr, tabl_w16->k_yomi, BUFSIZ) == -1) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + if (current_locale == LC_CTYPE_SHIFTJIS) { + if (sjistoeuc(mtmp2, sizeof(mtmp2), mtmp, sizeof(mtmp)) < 0) { + free(tabl); + free(mbstr); + free(wcstr); + return 0; + } + mptr = mtmp2; + } else { + mptr = mtmp; + } + tabl_next->k_yomi = wcptr; + ylen = 0; + while (*mptr) { + if (iseuc(*mptr) && iseuc(mptr[1])) { + *wcptr = (*mptr << 8) + mptr[1]; + mptr++; + } else { + *wcptr = *mptr; + } + wcptr++; + mptr++; + ylen++; + } + *wcptr++ = 0; + ryomilen -= ylen + 1; + } else { + tabl_next->k_yomi = NULL; + } + tabl_w16 = tabl_w16->next; + tabl_next->next = tabl; + tabl_prev = tabl_next; + tabl_next = tabl; + } + tabl_prev->next = NULL; + } + } + return 1; + +} + +sj3_rkinit(rkfile) +char *rkfile; +{ + return sj3_rkinit_sub(rkfile, rcode_sjis_init); +} + +sj3_rkinit_euc(rkfile) +char *rkfile; +{ + return sj3_rkinit_sub(rkfile, rcode_euc_init); +} + +sj3_rkinit_mb(rkfile) +char *rkfile; +{ + if (current_locale == LC_CTYPE_EUC) + return sj3_rkinit_sub(rkfile, rcode_euc_init); + else + return sj3_rkinit_sub(rkfile, rcode_sjis_init); +} + +sj3_rkinit_sub(rkfile, mbfunc) +char *rkfile; +int (*mbfunc)(); +{ + register char *p; + int len, klen, rlen, retv; + FILE *fp, *fopen(); + char line[MAXLEN + 1]; + wchar16_t rkey[MAXWLEN + 1], rstr[MAXWLEN + 1]; + u_short kstr[MAXWLEN + 1]; + char *strcpy(), *getkey(), *rkgetyomi(); + RkTablW16 *rktp, *mktable(); + + if (rkfile == NULL || *rkfile == NSTR) + fp = stdin; + else if ((fp = fopen(rkfile, "r")) == NULL) + return(1); + + cltable(); + line[MAXLEN - 1] = EOL; + retv = 0; + + + while ((p = fgets(line, MAXLEN + 1, fp)) != NULL) { + if (line[MAXLEN - 1] != EOL) { + line[MAXLEN - 1] = EOL; + continue; + } + if (SKLINE(*p) || *p == '#') + continue; + if ((p = getkey(p, rkey, &len)) == NULL) + continue; + if ((p = rkgetyomi(p, kstr, &klen)) == NULL) + continue; + p = getkey(p, rstr, &rlen); + if (rlen > 0 && chk_rstr(rstr, rkey, rlen, len)) + rlen = 0; + + if ((rktp = mktable(rkey, len)) == NULL) { + fprintf(stderr, "Can't allocate memory for table\n"); + retv = FAIL; + break; + } + if (rktp->k_yomi != NULL) + continue; + if (stradd(&(rktp->r_key), &rkey[1], len) == -1) { + fprintf(stderr, "Can't allocate memory for char\n"); + retv = FAIL; + break; + } + if (kstradd(&(rktp->k_yomi), kstr, klen + 1) == -1) { + fprintf(stderr, "Can't allocate memory for short\n"); + retv = FAIL; + break; + } + if (stradd(&(rktp->r_str), rstr, rlen + 1) == -1) { + fprintf(stderr, "Can't allocate memory for char\n"); + retv = FAIL; + break; + } + + } + fclose(fp); + if (!(*mbfunc)()) + retv = FAIL; + sj3_rkclear(); + return(retv); +} + + + +char * +getkey(istr, ostr, len) +char *istr; +wchar16_t *ostr; +int *len; +{ + register char c, *p; + register int i; + + while (ENDMARK(*istr)) + istr++; + + p = istr; + i = 0; + while (!ENDMARK(*p)) { + if (SKLINE(*p)) + break; + c = *p++; + + if ( c == BSL) { + if (SKLINE(*p)) + break; + c = *p++; + switch (c) { + case 'n' : + *ostr++ = (wchar16_t) EOL; + break; + case 't' : + *ostr++ = (wchar16_t) TAB; + break; + default : + *ostr++ = (wchar16_t) TOUPPER(c); + } + } else if ( c == '^') { + if (*p >= '@' && *p <= '_') { + *ostr++ = (wchar16_t) (*p - '@'); + p++; + } else if (*p == '?') { + *ostr++ = (wchar16_t) 0x7f; + p++; + } else + *ostr++ = (wchar16_t) '^'; + } else + *ostr++ = (wchar16_t) TOUPPER(c); + if (++i > MAXWLEN) { + i = 0; + break; + } + } + *ostr = (wchar16_t) NSTR; + *len = i; + if (i > 0) + return(p); + return(NULL); +} + + + +char * +rkgetyomi(istr, ostr, len) +char *istr; +wchar16_t *ostr; +int *len; +{ + register u_char c; + register u_char *p; + register int i; + u_short cc; + + while (ENDMARK(*istr)) + istr++; + + p = (u_char *)istr; + i = 0; + while (!ENDMARK(*p)) { + if (SKLINE(*p)) + break; + cc = c = *p++; + if (file_code == SJ3_SJIS) { + if (issjis1(c) && issjis2(*p)) { + cc = (c << 8) + (*p & MASK); + p++; + cc = sjis2euc(cc); + } + } else if (file_code == SJ3_EUC) { + if (iseuc(c) && iseuc(*p)) { + cc = (c << 8) + (*p & MASK); + p++; + } else if (iseuckana(c) && iskana2(*p)) { + cc = *p++; + } + else if (IsEUCHojo(c) && iseuc(*p) && iseuc(p[1])) { + cc = WcSetX0212(*p, p[1]); + p += 2; + } + } else { + if (issjis1(c) && issjis2(*p)) { + file_code = SJ3_SJIS; + p--; + continue; + } + if ((iseuc(c) && iseuc(*p)) || (iseuckana(c) && + iskana2(*p)) || (IsEUCHojo(c) && iseuc(*p) && + iseuc(p[1]))) { + file_code = SJ3_EUC; + p--; + continue; + } + } + *ostr++ = (wchar16_t) cc; + if (++i > MAXWLEN) { + i = 0; + break; + } + } + *ostr = (wchar16_t) 0; + *len = i; + if (i > 0) + return((char *)p); + return(NULL); +} + + + +cltable() +{ + register int i; + + if (rkpp != NULL) { + for (i = 0; i < MAXCODE; i++) { + sj3_rcode_w16[i] = NULL; + sj3_rcode[i] = NULL; + } + rkpp = &rkpbuf; + rkhp = rkpp->rkbuf; + strpp = &strpbuf; + shp = strpp->strbuf; + ymipp = &ymipbuf; + yhp = ymipp->ymibuf; + } +} + + + +chk_rstr(rstr, rkey, rlen, klen) +wchar16_t *rstr, *rkey; +int rlen, klen; +{ + register int i; + register wchar16_t *p; + + if (rlen >= klen) + return(1); + p = rkey; + while (rlen <= klen) { + if (wsncmp(rstr, p, rlen) == 0) + return(0); + klen--; + p++; + } + return(1); +} + + + +RkTablW16 * +rkalloc() +{ + register RkTablW16 *rkp; + register RkbufRec *rkbrp; + + if (rkpp == NULL) { + rkp = (RkTablW16 *)malloc(RKSIZE * sizeof(RkTablW16)); + if (rkp == NULL) + return(NULL); + rkhp = rkp; + rkpp = &rkpbuf; + rkpp->rkbuf = rkp; + rkpp->rkend = rkp + RKSIZE; + } else if (rkhp >= rkpp->rkend) { + rkp = (RkTablW16 *)malloc(RKINCZ * sizeof(RkTablW16)); + rkbrp = (RkbufRec *)malloc(sizeof(RkbufRec)); + if (rkp == NULL || rkbrp == NULL) + return(NULL); + rkhp = rkp; + rkpp->rkbufp = rkbrp; + rkpp = rkbrp; + rkpp->rkbuf = rkp; + rkpp->rkend = rkp + RKINCZ; + } + rkp = rkhp++; + + rkp->r_key = NULL; + rkp->k_yomi = NULL; + rkp->r_str = NULL; + rkp->next = NULL; + return(rkp); +} + + + +stradd(cp, str, len) +wchar16_t **cp; +wchar16_t *str; +int len; +{ + register wchar16_t *strp; + register StrbufRec *sbrp; + + if (len <= 1) + return(0); + if (strpp == NULL) { + strp = (wchar16_t *)malloc(STRSIZE * sizeof(wchar16_t)); + if (strp == NULL) + return(-1); + shp = strp; + strpp = &strpbuf; + strpp->strbuf = strp; + strpp->strend = strp + STRSIZE; + } else if (shp + len >= strpp->strend) { + strp = (wchar16_t *)malloc(STRINCZ * sizeof(wchar16_t)); + sbrp = (StrbufRec *)malloc(sizeof(StrbufRec)); + if (strp == NULL || sbrp == NULL) + return(-1); + shp = strp; + strpp->strbufp = sbrp; + strpp = sbrp; + strpp->strbuf = strp; + strpp->strend = strp + STRINCZ; + } + *cp = shp; + wscpy(shp, str); + shp += len; + return(0); +} + + + +kstradd(cp, kstr, len) +wchar16_t **cp, *kstr; +int len; +{ + register int i; + register wchar16_t *usp; + register YmibufRec *ybrp; + + if (len <= 1) + return(0); + if (ymipp == NULL) { + usp = (wchar16_t *)malloc(YMISIZE * sizeof(wchar16_t)); + if (usp == NULL) + return(-1); + yhp = usp; + ymipp = &ymipbuf; + ymipp->ymibuf = usp; + ymipp->ymiend = usp + YMISIZE; + } else if (yhp + len >= ymipp->ymiend) { + usp = (wchar16_t *)malloc(YMIINCZ * sizeof(wchar16_t)); + ybrp = (YmibufRec *)malloc(sizeof(YmibufRec)); + if (usp == NULL || ybrp == NULL) + return(-1); + yhp = usp; + ymipp->ymibufp = ybrp; + ymipp = ybrp; + ymipp->ymibuf = usp; + ymipp->ymiend = usp + YMIINCZ; + } + *cp = yhp; + for (i = 0; i < len; i++) + *yhp++ = *kstr++; + return(0); +} + + + +RkTablW16 * +mktable(key, len) +wchar16_t *key; +int len; +{ + register int i; + register RkTablW16 *nrktp, *orktp; + RkTablW16 *rktp; + u_int code; + + nrktp = NULL; + orktp = NULL; + code = *key++ & MASK; + rktp = sj3_rcode_w16[code]; + while (rktp != NULL) { + if (rktp->r_key == NULL) { + if (*key == NSTR) + return(rktp); + nrktp = rktp; + break; + } + if ((i = wscmp(key, rktp->r_key)) == 0) + return(rktp); + if (i > 0 && (wslen(rktp->r_key) < len)) { + nrktp = rktp; + break; + } + orktp = rktp; + rktp = orktp->next; + } + if ((rktp = rkalloc()) == NULL) + return(NULL); + if (sj3_rcode_w16[code] == NULL) + sj3_rcode_w16[code] = rktp; + else { + if (nrktp != NULL) { + rktp->next = nrktp; + if (orktp == NULL) + sj3_rcode_w16[code] = rktp; + else + orktp->next = rktp; + } else + orktp->next = rktp; + } + return(rktp); +} + + + +sj3_rkebell(err) +int err; +{ + rk_errin = err; +} + + + +sj3_rkclear() +{ + rline[0] = NSTR; + lstr[0] = NSTR; + rktblp = NULL; + rk_klen = 0; + sj3_rkreset(); +} + +sj3_rkreset() +{ + rk_cflag = -1; +} + + + +sj3_rkconvc(c, rkstr) +wchar16_t c; +u_int *rkstr; +{ + register int i; + register wchar16_t *p, *q; + int len; + wchar16_t wstr[MAXLLEN]; + u_int kstr[MAXLLEN], *kp; + + len = wslen(rline); + if (c == rk_erase) { + if (rk_cflag == 0) { + for(i = 0; i < len; i++) + *rkstr++ = ERRCODE + rk_erase; + for (i = 0; i < rk_klen; i++) + *rkstr++ = rk_erase; + p = lstr; + q = rline; + while(*p != NSTR) { + *q++ = *p; + *rkstr++ = ERRCODE + *p++; + } + *q = NSTR; + rktblp = NULL; + rk_cflag = -1; + } else { + if (len <= 0) + *rkstr++ = rk_erase; + else + *rkstr++ = ERRCODE + rk_erase; + rk_cflag--; + if (len <= 1) { + rktblp = NULL; + rline[0] = NSTR; + } else + rline[--len] = NSTR; + } + } else { + rline[len] = c; + rline[len + 1] = NSTR; + wscpy(wstr, rline); + if ((i = sj3_rkconv2(wstr, kstr, len)) == CONTINUE) { + if (rk_cflag >= 0) + rk_cflag++; + *rkstr++ = ERRCODE + c; + } else if (i == NOMACH) { + rline[len] = NSTR; + *rkstr++ = ERRBEL; + } else { + rk_cflag = 0; + rk_klen = i; + for (i = 0; i < len; i++) + *rkstr++ = ERRCODE + rk_erase; + kp = kstr; + while (*kp != 0) + *rkstr++ = *kp++; + wscpy(lstr, rline); + lstr[len] = NSTR; + p = wstr; + q = rline; + while(*p != NSTR) { + *rkstr++ = ERRCODE + *p; + *q++ = *p++; + } + *q = NSTR; + } + } + *rkstr = RKEND; +} + + + +sj3_rkconv2(wstr, kstr, wlen) +wchar16_t *wstr; +u_int *kstr; +int wlen; +{ + + register int i; + register wchar16_t *p, *q, *s; + int rlen, len; + wchar16_t svstr[MAXLLEN]; + RkTablW16 *rktp; + u_short *kp; + + len = 0; + if ((rktp = rktblp) == NULL) + rktp = sj3_rcode_w16[WTOUPPER(*wstr)]; + if (*wstr > (wchar16_t) 0xff) rktp = NULL; + while(1) { + while(rktp != NULL) { + rlen = rkmatch((wstr + 1), rktp->r_key, wlen); + if (rlen == CONTINUE) { + rktblp = rktp; + break; + } else if (rlen != NOMACH) { + kp = rktp->k_yomi; + if ((s = rktp->r_str) != NULL) + i = wslen(s); + else + i = 0; + *kstr++ = SetMojilen(rlen - i) + *kp++; + len++; + while(*kp != 0) { + *kstr++ = *kp++; + len++; + } + p = (wstr + rlen); + q = svstr; + if (i > 0) { + p -= i; + while (*s != NSTR) { + if (*s == WTOUPPER(*p)) + *q = *p; + else + *q = *s; + q++; + p++; + s++; + } + } + if (rlen <= wlen) { + while (*p != NSTR) { + *q++ = *p++; + } + *q = NSTR; + wscpy(wstr, svstr); + rktp = sj3_rcode_w16[WTOUPPER(*wstr)]; + wlen = wslen(wstr); + wlen--; + continue; + } + *q = NSTR; + wscpy(wstr, svstr); + rktblp = NULL; + break; + } + rktp = rktp->next; + } + if (rktp == NULL) { + if (wlen <= 0) { + *kstr++ = SetMojilen(1) + *wstr; + *wstr = NSTR; + rktblp = NULL; + len++; + } else if (rk_errin) { + len = NOMACH; + } else { + *kstr++ = SetMojilen(1) + *wstr; + len++; + p = wstr; + for (i = 0; i < wlen; i++) { + *p = *(p + 1); + p++; + } + *p = NSTR; + rktp = sj3_rcode_w16[WTOUPPER(*wstr)]; + if (*wstr > (wchar16_t) 0xff) rktp = NULL; + wlen--; + continue; + } + } + *kstr = 0; + break; + } + return(len); +} + + + + +extern int sj3_rkconv_w16(); + +sj3_rkconv(romaji, kana) +u_char *romaji; +u_char *kana; +{ + wchar16_t *wstr; + int len, mflag = 0, ret; + + len = strlen((char *)romaji) + 1; + if (len > (sizeof(intmp) / sizeof(wchar16_t))) { + wstr = (wchar16_t *) malloc(len * sizeof(wchar16_t)); + if (!wstr) return -1; + mflag = 1; + } else { + wstr = (wchar16_t *) intmp; + } + if (mbstowcs(wstr, (char *)romaji, len) == -1) { + if (mflag) free(wstr); + return -1; + } + ret = sj3_rkconv_w16(wstr, outtmp); + if (ret == 0 || ret == -1) { + if (mflag) free(wstr); + return ret; + } + if (wcstombs((char *)mtmp, outtmp, sizeof(outtmp)) == -1) { + if (mflag) free(wstr); + return -1; + } + if (wcstombs((char *)romaji, wstr, len) == -1) { + if (mflag) free(wstr); + return -1; + } + if (current_locale == LC_CTYPE_EUC) { + len = euctosjis(kana, MAXLLEN*2, mtmp, sizeof(mtmp)); + } else { + (void) memcpy(kana, mtmp, strlen((char *)mtmp) + 1); + } + + if (mflag) free(wstr); + if (len > 0) { + return ret; + } else { + return len; + } +} + +sj3_rkconv_euc(romaji, kana) +u_char *romaji; +u_char *kana; +{ + wchar16_t *wstr; + int len, mflag = 0, ret; + + len = strlen((char *)romaji) + 1; + if (len > sizeof(intmp)) { + wstr = (wchar16_t *) malloc(len * sizeof(wchar16_t)); + if (!wstr) return -1; + mflag = 1; + } else { + wstr = (wchar16_t *) intmp; + } + if (mbstowcs(wstr, (char *)romaji, len) == -1) { + if (mflag) free(wstr); + return -1; + } + ret = sj3_rkconv_w16(wstr, outtmp); + if (ret == 0 || ret == -1) { + if (mflag) free(wstr); + return ret; + } + if (wcstombs((char *)mtmp, outtmp, sizeof(outtmp)) == -1) { + if (mflag) free(wstr); + return -1; + } + if (wcstombs((char *)romaji, wstr, len) == -1) { + if (mflag) free(wstr); + return -1; + } + if (current_locale == LC_CTYPE_EUC) { + (void) memcpy(kana, mtmp, strlen((char *)mtmp) + 1); + } else { + len = sjistoeuc(kana, MAXLLEN*2, mtmp, sizeof(mtmp)); + } + + if (mflag) free(wstr); + if (len > 0) { + return ret; + } else { + return len; + } +} + +sj3_rkconv_mb(romaji, kana) +u_char *romaji; +u_char *kana; +{ + if (current_locale == LC_CTYPE_EUC) + return sj3_rkconv_euc(romaji, kana); + else + return sj3_rkconv(romaji, kana); +} + +sj3_rkconv_w16(wstr, kstr) +wchar16_t *wstr; +wchar16_t *kstr; +{ + + register int i; + register wchar16_t *p, *q, *s; + register u_short cc; + int rlen, len; + wchar16_t svstr[MAXLLEN]; + RkTablW16 *rktp; + u_short *kp; + + len = wslen(wstr); + rktp = sj3_rcode_w16[WTOUPPER(*wstr)]; + if (*wstr > (wchar16_t) 0xff) rktp = NULL; + while(rktp != NULL) { + rlen = rkmatch((wstr + 1), rktp->r_key, len - 1); + if (rlen == CONTINUE) { + break; + } else if (rlen != NOMACH) { + kp = rktp->k_yomi; + while((cc = *kp++) != 0) { + *kstr++ = cc; + } + wscpy(svstr, wstr); + q = wstr; + p = svstr; + if ((s = rktp->r_str) != NULL) { + p += rlen; + i = wslen(s); + p -= i; + while (*s != NSTR) { + if (*s == WTOUPPER(*p)) + *q = *p; + else + *q = *s; + q++; + p++; + s++; + } + } + if (rlen < len) { + p = svstr; + p += rlen; + while (*p != NSTR) + *q++ = *p++; + } + *q = NSTR; + break; + } + rktp = rktp->next; + } + if (rktp == NULL && len <= 1) { + *kstr++ = *wstr; + *wstr = NSTR; + rlen = 1; + } + *kstr = NSTR; + return(rlen); +} + + + +rkmatch(s1, s2, len) +wchar16_t *s1, *s2; +int len; +{ + register int i; + + i = 1; + if (s2 == NULL) + return(i); + for (; i < len + 1; i++) { + if (*s1 > (wchar16_t) 0xff) + return(NOMACH); + if (WTOUPPER(*s1) != *s2) { + if (*s2 != NSTR) + return(NOMACH); + break; + } + s1++; + s2++; + } + if (*s2 != NSTR) + i = CONTINUE; + return(i); +} diff --git a/sj3rkcv/sj3_rkcv.c b/sj3rkcv/sj3_rkcv.c new file mode 100644 index 0000000..b5a8374 --- /dev/null +++ b/sj3rkcv/sj3_rkcv.c @@ -0,0 +1,842 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: sj3_rkcv.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1995/02/10 06:02:25 $ + */ + + + +#include "wchar16.h" +#include "sj.h" +#include "kana.h" +#include "rk.h" +#include "kctype.h" + +#if defined(__sony_news) && (SVR4) +#define wscmp sj3_wscmp16 +#define wsncmp sj3_wsncmp16 +#define wsncpy sj3_wsncpy16 +#define wscpy sj3_wscpy16 +#define wslen sj3_wslen16 +#define mbstowcs sj3_mbstowcs16 +#define wcstombs sj3_wcstombs16 +#endif + +extern int current_locale; + +#define sj_iskata(c) (c >= 0xa5a1 && c <= 0xa5f6) +#define sj_ishira(c) (c >= 0xa4a1 && c <= 0xa4f3) +static wchar16_t intmp[MAXLLEN]; +static wchar16_t outtmp[MAXLLEN]; +static u_char mtmp[MAXLLEN]; + +static u_short HKtable[ZKATAn] = { + KANA_XA, KANA_A, + KANA_XA + 1, KANA_A + 1, + KANA_XA + 2, KANA_A + 2, + KANA_XA + 3, KANA_A + 3, + KANA_XA + 4, KANA_A + 4, + + KANA_KA, KANA_GA, + KANA_KA + 1, KANA_GA + (1<<8), + KANA_KA + 2, KANA_GA + (2<<8), + KANA_KA + 3, KANA_GA + (3<<8), + KANA_KA + 4, KANA_GA + (4<<8), + + KANA_SA, KANA_ZA, + KANA_SA + 1, KANA_ZA + (1<<8), + KANA_SA + 2, KANA_ZA + (2<<8), + KANA_SA + 3, KANA_ZA + (3<<8), + KANA_SA + 4, KANA_ZA + (4<<8), + + KANA_TA, KANA_DA, + KANA_TA + 1, KANA_DA + (1<<8), + KANA_XTSU, KANA_TA + 2, KANA_DA + (2<<8), + KANA_TA + 3, KANA_DA + (3<<8), + KANA_TA + 4, KANA_DA + (4<<8), + + KANA_NA, + KANA_NA + 1, + KANA_NA + 2, + KANA_NA + 3, + KANA_NA + 4, + + KANA_HA, KANA_BA, KANA_PA, + KANA_HA + 1, KANA_BA + (1<<8), KANA_PA + (1<<8), + KANA_HA + 2, KANA_BA + (2<<8), KANA_PA + (2<<8), + KANA_HA + 3, KANA_BA + (3<<8), KANA_PA + (3<<8), + KANA_HA + 4, KANA_BA + (4<<8), KANA_PA + (4<<8), + + KANA_MA, + KANA_MA + 1, + KANA_MA + 2, + KANA_MA + 3, + KANA_MA + 4, + + KANA_XYA, KANA_YA, + KANA_XYA + 1, KANA_YA + 1, + KANA_XYA + 2, KANA_YA + 2, + + KANA_RA, + KANA_RA + 1, + KANA_RA + 2, + KANA_RA + 3, + KANA_RA + 4, + + KANA_WA, KANA_WA, + KANA_A + 1, + KANA_A + 3, + KANA_WO, + KANA_WA + 1, + + ((KANA_A+2)<<8) + KANA_DTEN, + KANA_KA, + KANA_KA + 3 +}; + +static struct ztohkktbl { + u_short zen; + u_short han; +} HKKtbl[8] = { + ZEN_KTEN, KANA_KTEN, + ZEN_FKAKKO, KANA_FKAKKO, + ZEN_EKAKKO, KANA_EKAKKO, + ZEN_TTEN, KANA_TTEN, + ZEN_CTEN, KANA_CTEN, + ZEN_CHOUON, KANA_CHOUON, + ZEN_DTEN, KANA_DTEN, + ZEN_HDTEN, KANA_HDTEN +}; + + +static struct hzkigoutbl { + wchar16_t han; + u_short zen; +} HZKtbl[6] = { + ',', ZEN_TTEN, + '.', ZEN_KTEN, + '-', ZEN_CHOUON, + '@', ZEN_CTEN, + '[', ZEN_FKAKKO, + ']', ZEN_EKAKKO +}; + +static u_short HZtbl[95] = { + 0xa1a1, 0xa1aa, 0xa1c9, 0xa1f4, 0xa1f0, 0xa1f3, 0xa1f5, 0xa1c7, + 0xa1ca, 0xa1cb, 0xa1f6, 0xa1dc, 0xa1a4, 0xa1dd, 0xa1a5, 0xa1bf, + 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, + 0xa3b8, 0xa3b9, 0xa1a7, 0xa1a8, 0xa1e3, 0xa1e1, 0xa1e4, 0xa1a9, + 0xa1f7, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, + 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, + 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, + 0xa3d8, 0xa3d9, 0xa3da, 0xa1ce, 0xa1ef, 0xa1cf, 0xa1b0, 0xa1b2, + 0xa1c6, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7, + 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef, + 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7, + 0xa3f8, 0xa3f9, 0xa3fa, 0xa1d0, 0xa1c3, 0xa1d1, 0xa1b1 +}; + +#ifdef ADDHK +setl_hktozh() +{ + register int i; + register u_short c, zen1; + wchar16_t rstr[2]; + wchar16_t kstr[2]; + RkTablW16 *rktp, *mktable(); + + zen1 = (ZHIRA1 << 8); + rstr[1] = '\0'; + kstr[1] = 0; + for(i = 0; i < ZKATAn - 3; i++) { + c = HKtable[i]; + if (!(c & RKZEN)) { + rstr[0] = c; + if ((rktp = mktable(rstr, 1)) == NULL) + break; + if (rktp->k_yomi != NULL) + continue; + kstr[0] = zen1 + (ZHIRAF2 + i); + if (kstradd(&(rktp->k_yomi), kstr, 2) == -1) + break; + } + } + for (i = 0; i < 8; i++) { + rstr[0] = HKKtbl[i].han; + if ((rktp = mktable(rstr, 1)) == NULL) + break; + if (rktp->k_yomi != NULL) + continue; + kstr[0] = HKKtbl[i].zen; + if (kstradd(&(rktp->k_yomi), kstr, 2) == -1) + break; + } +} +#endif + + +mkkigou() +{ + register int i; + wchar16_t rstr[2]; + wchar16_t kstr[2]; + RkTablW16 *rktp, *mktable(); + + rstr[1] = '\0'; + kstr[1] = 0; + for (i = 0; i < 6; i++) { + rstr[0] = HZKtbl[i].han; + if ((rktp = mktable(rstr, 1)) == NULL) + break; + if (rktp->k_yomi != NULL) + continue; + kstr[0] = HZKtbl[i].zen; + if (kstradd(&(rktp->k_yomi), kstr, 2) == -1) + break; + } +} + +sj_addten(prefix, c) +u_short prefix, c; +{ + register u_short c1, cc; + + cc = 0; + if ((c == ZEN_DTEN || c == ZEN_HDTEN) && + (sj_ishira(prefix) || sj_iskata(prefix))) { + c1 = sj_zen2han(prefix); + if ((c1 >= KANA_KA && c1 < KANA_NA) || + (c1 >= KANA_HA && c1 < KANA_MA)) { + if (c == ZEN_DTEN) + cc = prefix + 1; + else if (c == ZEN_HDTEN && c1 >= KANA_HA) + cc = prefix + 2; + } else if (c1 == KANA_A+2 && sj_iskata(prefix)&& c == ZEN_DTEN) + cc = ZEN_VU; + } + return(cc); +} + +sj_han2zen(c) +u_short c; +{ + register int i; + register u_short cc; + + if (WcIsHANKAKU(c) && iskana2(c)) { + for (i = 0; i < ZKATAn; i++) { + if (c == HKtable[i]) { + if (i >= ZKATAn - 3) { + cc = (ZKATA1 << 8) + (ZKATAF2 + i + 1); + } + else { + cc = (ZHIRA1 << 8) + (ZHIRAF2 + i); + if (c == KANA_WA) + cc++; + } + break; + } + } + if (i >= ZKATAn) { + for (i = 0; i < 8; i++) { + if (c == HKKtbl[i].han) { + cc = HKKtbl[i].zen; + break; + } + } + if (i >= 8) + cc = ZEN_SPACE; + } + } else { + if (c >= 0x20 && c <= 0x7e) + cc = HZtbl[c - 0x20]; + else + cc = c; + } + return(cc); +} + + +extern int sj3_hantozen_w16(); + +sj3_hantozen(out, in) +u_char *out, *in; +{ + wchar16_t *winstr, *woutstr; + u_char *mstr; + int inlen, outlen, imflag = 0, omflag = 0, mmflag = 0, ret; + + inlen = strlen(in) + 1; + if (current_locale == LC_CTYPE_EUC) { + if (inlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(inlen); + mmflag = 1; + } else { + mstr = mtmp; + } + if (sjistoeuc(mstr, inlen, in, inlen) < 0) { + if (mmflag) free(mstr); + return -1; + } + } else { + mstr = in; + } + if ((inlen * sizeof(wchar16_t)) > sizeof(intmp)) { + winstr = (wchar16_t *) malloc(inlen * sizeof(wchar16_t)); + if (!winstr) { + if (mmflag) free(mstr); + return -1; + } + imflag = 1; + } else { + winstr = (wchar16_t *) intmp; + } + if (mbstowcs(winstr, (char *)mstr, inlen) == -1) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + return -1; + } + outlen = inlen; + if ((outlen * sizeof(wchar16_t)) > sizeof(outtmp)) { + woutstr = (wchar16_t *) malloc(outlen * sizeof(wchar16_t)); + if (!woutstr) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + return -1; + } + omflag = 1; + } else { + woutstr = (wchar16_t *) outtmp; + } + ret = sj3_hantozen_w16(woutstr, winstr); + if (mmflag) { + free(mstr); + mmflag = 0; + } + if (ret == 0 || ret == -1) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + return ret; + } + outlen = ret * 3; + if (outlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(outlen); + if (!mstr) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + return -1; + } + mmflag = 1; + } else { + mstr = mtmp; + } + if (wcstombs((char *)mstr, woutstr, outlen) == -1) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + return -1; + } + if (current_locale == LC_CTYPE_EUC) { + inlen = euctosjis(out, outlen, mstr, outlen); + } else { + (void) memcpy(out, mstr, strlen(mstr) + 1); + } + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + + if (inlen > 0) { + return ret; + } else { + return inlen; + } +} + +sj3_hantozen_euc(out, in) +u_char *out, *in; +{ + wchar16_t *winstr, *woutstr; + u_char *mstr; + int inlen, outlen, imflag = 0, omflag = 0, mmflag = 0, ret; + + inlen = strlen(in) + 1; + if (current_locale == LC_CTYPE_EUC) { + mstr = in; + } else { + if (inlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(inlen); + mmflag = 1; + } else { + mstr = mtmp; + } + if (euctosjis(mstr, inlen, in, inlen) < 0) { + if (mmflag) free(mstr); + return -1; + } + } + if ((inlen * sizeof(wchar16_t)) > sizeof(intmp)) { + winstr = (wchar16_t *) malloc(inlen * sizeof(wchar16_t)); + if (!winstr) { + if (mmflag) free(mstr); + return -1; + } + imflag = 1; + } else { + winstr = (wchar16_t *) intmp; + } + if (mbstowcs(winstr, (char *)mstr, inlen) == -1) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + return -1; + } + outlen = inlen; + if ((outlen * sizeof(wchar16_t)) > sizeof(outtmp)) { + woutstr = (wchar16_t *) malloc(outlen * sizeof(wchar16_t)); + if (!woutstr) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + return -1; + } + omflag = 1; + } else { + woutstr = (wchar16_t *) outtmp; + } + ret = sj3_hantozen_w16(woutstr, winstr); + if (mmflag) { + free(mstr); + mmflag = 0; + } + if (ret == 0 || ret == -1) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + return ret; + } + outlen = ret * 3; + if (outlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(outlen); + if (!mstr) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + return -1; + } + mmflag = 1; + } else { + mstr = mtmp; + } + if (wcstombs((char *)mstr, woutstr, outlen) == -1) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + return -1; + } + if (current_locale == LC_CTYPE_EUC) { + (void) memcpy(out, mstr, strlen(mstr) + 1); + } else { + inlen = sjistoeuc(out, outlen, mstr, outlen); + } + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + + if (inlen > 0) { + return ret; + } else { + return inlen; + } +} + +sj3_hantozen_mb(s1, s2) +u_char *s1, *s2; +{ + if (current_locale == LC_CTYPE_EUC) + return sj3_hantozen_euc(s1, s2); + else + return sj3_hantozen(s1, s2); +} + +sj3_hantozen_w16(s1, s2) +wchar16_t *s1, *s2; +{ + return sj_hantozen(s1, s2, wslen(s2)); +} + + +sj_hantozen(s1, s2, len) +wchar16_t *s1, *s2; +int len; +{ + register u_short c1, cc, prefix; + register wchar16_t c; + register int i; + int rlen; + + prefix = 0; + rlen = 0; + for (i = 0; i < len && *s2 != '\0'; i++) { + c = *s2++; + cc = sj_han2zen(c); + if (cc & RKZEN) { + if (prefix != 0 && (c1 = sj_addten(prefix, cc)) != 0) { + s1 -= 1; + rlen -= 1; + cc = c1; + prefix = 0; + } else + prefix = cc; + *s1++ = cc; + rlen ++; + } else { + *s1++ = cc; + rlen++; + prefix = 0; + } + } + *s1 = '\0'; + return(rlen); +} + +sj_zen2han(c) +u_short c; +{ + register int i; + register u_short cc; + + i = ZKATAn; + cc = c & MASK; + if (sj_ishira(c)) + i = cc - ZHIRAF2; + else if (sj_iskata(c)) { + i = cc - ZKATAF2; + } + if (i < ZKATAn) + cc = HKtable[i]; + else { + for (i = 0; i < 8; i++) { + if (c == HKKtbl[i].zen) { + cc = HKKtbl[i].han; + break; + } + } + if (i >= 8) { + cc = c; + for (i = 0; i < 95; i++) { + if (c == HZtbl[i]) { + cc = i + 0x20; + break; + } + } + } + } + return(cc); +} + +extern int sj3_zentohan_w16(); + +sj3_zentohan(out, in) +u_char *out, *in; +{ + wchar16_t *winstr, *woutstr; + u_char *mstr; + int inlen, outlen, imflag = 0, omflag = 0, mmflag = 0, ret; + + inlen = strlen(in) + 1; + if (inlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(inlen); + if (!mstr) { + return -1; + } + mmflag = 1; + } else { + mstr = mtmp; + } + if (current_locale == LC_CTYPE_EUC) { + (void) euctosjis(mstr, inlen, in, inlen); + } else { + (void) memcpy(mstr, in, inlen); + } + if (inlen > sizeof(intmp)) { + winstr = (wchar16_t *) malloc(((inlen / 2) + 1) * sizeof(wchar16_t)); + if (!winstr) { + if (mmflag) free(mstr); + return -1; + } + imflag = 1; + } else { + winstr = (wchar16_t *) intmp; + } + if (mbstowcs(winstr, (char *)mstr, inlen) == -1) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + return -1; + } + if (mmflag) { + free(mstr); + mmflag = 0; + } + outlen = ((inlen - 1) / 2) + 1; + if (outlen * sizeof(wchar16_t) > sizeof(outtmp)) { + woutstr = (wchar16_t *) malloc(outlen * sizeof(wchar16_t)); + if (!woutstr) { + if (imflag) free(winstr); + return -1; + } + omflag = 1; + } else { + woutstr = (wchar16_t *) outtmp; + } + ret = sj3_zentohan_w16(woutstr, winstr); + if (ret == 0 || ret == -1) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + return ret; + } + outlen = ret * 3; + if (current_locale == LC_CTYPE_EUC) { + if (outlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(outlen); + mmflag = 1; + } else { + mstr = mtmp; + } + } else { + mstr = out; + } + if (wcstombs((char *)mstr, woutstr, outlen) == -1) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + return -1; + } + if (current_locale == LC_CTYPE_EUC) { + if (euctosjis(out, outlen, mstr, outlen) < 0) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + return -1; + } + } + + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + + return ret; +} + +sj3_zentohan_euc(out, in) +u_char *out, *in; +{ + wchar16_t *winstr, *woutstr; + u_char *mstr; + int inlen, outlen, imflag = 0, omflag = 0, mmflag = 0, ret; + + inlen = strlen(in) + 1; + if (inlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(inlen); + if (!mstr) { + return -1; + } + mmflag = 1; + } else { + mstr = mtmp; + } + if (current_locale == LC_CTYPE_EUC) { + (void) euctosjis(mstr, inlen, in, inlen); + } else { + (void) memcpy(mstr, in, inlen); + } + if (inlen > sizeof(intmp)) { + winstr = (wchar16_t *) malloc(((inlen / 2) + 1) * sizeof(wchar16_t)); + if (!winstr) { + if (mmflag) free(mstr); + return -1; + } + imflag = 1; + } else { + winstr = (wchar16_t *) intmp; + } + if (mbstowcs(winstr, (char *)mstr, inlen) == -1) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + return -1; + } + if (mmflag) { + free(mstr); + mmflag = 0; + } + outlen = ((inlen - 1) / 2) + 1; + if (outlen * sizeof(wchar16_t) > sizeof(outtmp)) { + woutstr = (wchar16_t *) malloc(outlen * sizeof(wchar16_t)); + if (!woutstr) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + return -1; + } + omflag = 1; + } else { + woutstr = (wchar16_t *) outtmp; + } + ret = sj3_zentohan_w16(woutstr, winstr); + if (ret == 0 || ret == -1) { + if (mmflag) free(mstr); + if (imflag) free(winstr); + if (omflag) free(woutstr); + return ret; + } + outlen = ret * 3; + if (current_locale == LC_CTYPE_EUC) { + mstr = out; + } else { + if (outlen > sizeof(mtmp)) { + mstr = (u_char *) malloc(outlen); + mmflag = 1; + } else { + mstr = mtmp; + } + } + if (wcstombs((char *)mstr, woutstr, outlen) == -1) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + return -1; + } + if (current_locale == LC_CTYPE_SHIFTJIS) { + if (sjistoeuc(out, outlen, mstr, outlen) < 0) { + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + return -1; + } + } + if (imflag) free(winstr); + if (omflag) free(woutstr); + if (mmflag) free(mstr); + + return ret; +} + +sj3_zentohan_mb(s1, s2) +u_char *s1, *s2; +{ + if (current_locale == LC_CTYPE_EUC) + return sj3_zentohan_euc(s1, s2); + else + return sj3_zentohan(s1, s2); +} + +sj3_zentohan_w16 (s1, s2) +wchar16_t *s1, *s2; +{ + return sj_zentohan(s1, s2, wslen(s2)); +} + +sj_zentohan(s1, s2, len) +wchar16_t *s1, *s2; +int len; +{ + register u_short cc; + register wchar16_t c; + register int i, rlen; + + rlen = 0; + for (i = 0; i < len && *s2 != (wchar16_t) '\0'; i++) { + c = *s2++; + if (WcIsZENKAKU(c)) { + cc = sj_zen2han(c); + if ((cc >> 8) && (cc != c)) { + *s1++ = (cc >> 8); + rlen++; + *s1++ = cc & 0xff; + rlen++; + continue; + } + + } else + cc = c; + if (cc & RKZEN) { + *s1++ = (cc >> 8); + rlen++; + } + *s1++ = (wchar16_t)cc; + rlen++; + } + *s1 = (wchar16_t) '\0'; + return(rlen); +} + +sj_tokata(c) +wchar16_t c; +{ + if (sj_ishira(c)) { + c += 0x0100; + } + return(c); +} + +sj_tohira(c) +wchar16_t c; +{ + if (sj_iskata(c) && (short) c <= (short) 0xa5f3) { + c -= 0x0100; + } + return(c); +} + +sj_htok(s1, s2) +wchar16_t *s1, *s2; +{ + register wchar16_t cc; + register wchar16_t c; + + while ((c = *s2++) != (wchar16_t) '\0') { + if (WcIsX0208(c)) { + cc = sj_tokata(c); + *s1++ = cc; + } else + *s1++ = c; + } + *s1 = (wchar16_t) '\0'; +} + +sj_ktoh(s1, s2) +wchar16_t *s1, *s2; +{ + register wchar16_t cc; + register wchar16_t c; + + while ((c = *s2++) != (wchar16_t) '\0') { + if (WcIsX0208(c)) { + cc = sj_tohira(c); + *s1++ = cc; + } else + *s1++ = c; + } + *s1 = (wchar16_t) '\0'; +} diff --git a/sj3rkcv/wc16_str.c b/sj3rkcv/wc16_str.c new file mode 100644 index 0000000..70c42ab --- /dev/null +++ b/sj3rkcv/wc16_str.c @@ -0,0 +1,453 @@ +/* + * Copyright (c) 1994 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + * + */ + +/* + * $SonyRCSfile: wc16_str.c,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1994/11/17 06:49:21 $ + */ + + +#include "sj_sysvdef.h" +#include +#include +#include "sj_euc.h" +#include "wchar16.h" +#if defined(__sony_news) && defined(SVR4) +#include +#endif + +#define MSB 0x80 + +#ifndef TRUE +#define TRUE (1) +#define FALSE (0) +#endif + +#ifndef __sony_news +#define sjis2euc sj3_sjis2euc +#define euc2sjis sj3_euc2sjis + +#define issjis1(c) (((0x81 <= (c)) && ((c) <= 0x9f)) || \ + ((0xe0 <= (c)) && ((c) <= 0xfc))) +#define iseuc(c) ((0xa1 <= (c)) && ((c) <= 0xfe)) +#define iskana(c) ((0xa1 <= (c)) && ((c) <= 0xdf)) +#endif + +extern int current_locale; + +int +sj3_iswcntrl16(wc) +wchar16_t wc; +{ + if ((wc < 0x20) || (wc == 0x7f)) return TRUE; + + return FALSE; +} + +int +sj3_iswupper16(wc) +wchar16_t wc; +{ + if (((0x40 < wc) && (wc < 0x5b)) || + ((0xa3c0 < wc) && (wc < 0xa3db))) return TRUE; + + return FALSE; +} + +int +sj3_iswdigit16(wc) +wchar16_t wc; +{ + if (((0x29 < wc) && (wc < 0x3a)) || + ((0xa3af < wc) && (wc < 0xa3ba))) return TRUE; + + return FALSE; +} + +int +sj3_iswxdigit16(wc) +wchar16_t wc; +{ + if (((0x29 < wc) && (wc < 0x3a)) || + ((0xa3af < wc) && (wc < 0xa3ba))) return TRUE; + + if (((0x60 < wc) && (wc < 0x67)) || + ((0x40 < wc) && (wc < 0x47))) return TRUE; + + if (((0xa3c0 < wc) && (wc < 0xa3c7)) || + ((0xa3e0 < wc) && (wc < 0xa3e6))) return TRUE; + + return FALSE; +} + +int +sj3_wslen16(ws) +wchar16_t *ws; +{ + register int i=0; + + if (!ws) return 0; + + while (*ws++) i++; + return i; +} + +int +sj3_wscmp16(ws1, ws2) +wchar16_t *ws1, *ws2; +{ + while ((*ws1 && *ws2) && (*ws1 == *ws2)) { + ws1++; + ws2++; + } + if (!*ws1 && !*ws2) return 0; + if (!*ws1) return -1; + if (!*ws2) return 1; + if (*ws1 < *ws2) return -1; + return 1; +} + +int +sj3_wsncmp16(ws1, ws2, n) +wchar16_t *ws1, *ws2; +int n; +{ + register int i=0; + + while ((*ws1 && *ws2) && (*ws1 == *ws2) && (i < n)) { + ws1++; + ws2++; + i++; + } + if (!*ws1 && !*ws2) return 0; + if (i == n) return 0; + if (!*ws1) return -1; + if (!*ws2) return 1; + if (*ws1 < *ws2) return -1; + return 1; +} + +wchar16_t * +sj3_wscpy16(ws1, ws2) +wchar16_t *ws1, *ws2; +{ + register wchar16_t *ws; + + if (!ws2) return NULL; + ws = ws1; + while (*ws2) { + *ws++ = *ws2++; + } + *ws = 0; + + return ws1; +} + +wchar16_t * +sj3_wsncpy16(ws1, ws2, n) +wchar16_t *ws1, *ws2; +int n; +{ + register wchar16_t *ws; + register int i=0; + + if (!ws2) return NULL; + ws = ws1; + while (*ws2 && (i < n)) { + *ws++ = *ws2++; + i++; + } + if (i < n) *ws = 0; + + return ws1; +} + +wchar16_t * +sj3_wscat16(ws1, ws2) +wchar16_t *ws1, *ws2; +{ + register wchar16_t *ws; + + if (!ws1) return NULL; + if (!ws2) return NULL; + + ws = ws1; + + while (*ws) ws++; + while (*ws2) { + *ws++ = *ws2++; + } + *ws = 0; + + return ws1; +} + + +wchar16_t +sj3_euc2wc16(code) +unsigned int code; +{ + register wchar16_t wc = 0; + + if (((code >> 16) & 0xff) == SS3) { + wc = code & 0xff7f; + } else if (((code >> 8) & 0xff) == SS2) { + wc = code & 0xff; + } else { + wc = code; + } + + return wc; +} + +wchar16_t +sj3_sjis2wc16(code) +unsigned int code; +{ + register unsigned short ch; + + if ((code >> 8) & 0xff) { + ch = sjis2euc(code); + } else if (code & MSB) { + ch = (SS2 << 8) + (code & 0xff); + } else { + return code; + } + return (sj3_euc2wc16(ch)); +} + +unsigned int +sj3_wc2euc16(wc) +wchar16_t wc; +{ + register unsigned int code = 0; + register unsigned char tmp; + + tmp = (wc >> 8) & 0xff; + if (tmp) { + if (wc & MSB) { + code = wc; + } else { + code = (SS3 << 16) + wc + MSB; + } + } else { + if (wc & MSB) { + code = (SS2 << 8) + wc; + } else { + code = wc; + } + } + + return code; +} + +unsigned int +sj3_wc2sjis16(wc) +wchar16_t wc; +{ + register unsigned int ch; + + ch = sj3_wc2euc16(wc); + if ((ch >> 16) == SS3) { + return 0; + } else if ((ch >> 8) == SS2) { + return (ch & 0xff); + } else if ((ch >> 8) & 0xff) { + return euc2sjis(ch); + } else { + return wc; + } +} + +int +sj3_wcs2eucs16(mb, ws, n) +unsigned char *mb; +wchar16_t *ws; +int n; +{ + register int i = 0; + register unsigned int code; + register unsigned char c; + + while (*ws && (i < n)) { + code = sj3_wc2euc16(*ws); + if (c = ((code >> 16) & 0xff)) { + *mb++ = c; + i++; + if (i == n) break; + *mb++ = ((code >> 8) & 0xff); + i++; + if (i == n) break; + *mb++ = code & 0xff; + i++; + if (i == n) break; + } else if (c = ((code >> 8) & 0xff)) { + *mb++ = c; + i++; + if (i == n) break; + *mb++ = code & 0xff; + i++; + if (i == n) break; + } else if (c = (code & 0xff)) { + *mb++ = c; + i++; + } else { + return -1; + } + ws++; + } + + if (!*ws) { + *mb = '\0'; + } + + return i; +} + +int +sj3_wcs2sjiss16(mb, ws, n) +unsigned char *mb; +wchar16_t *ws; +int n; +{ + register int i = 0; + register unsigned int code; + register unsigned char c; + + while (*ws && (i < n)) { + code = sj3_wc2sjis16(*ws); + if (c = ((code >> 8) & 0xff)) { + *mb++ = c; + i++; + if (i == n) break; + *mb++ = code & 0xff; + i++; + if (i == n) break; + } else if (c = (code & 0xff)) { + *mb++ = c; + i++; + } else { + return -1; + } + ws++; + } + + if (!*ws) { + *mb = '\0'; + } + + return i; +} + +int +sj3_eucs2wcs16(ws, mb, n) +wchar16_t *ws; +unsigned char *mb; +int n; +{ + register int i = 0; + register unsigned int code; + + while (*mb && (i < n)) { + if (*mb == SS3) { + code = *mb++ << 16; + code += *mb++ << 8; + code += *mb++; + } else if ((*mb == SS2) || (*mb & 0x80)) { + code = *mb++ << 8; + code += *mb++; + } else { + code = *mb++; + } + *ws = sj3_euc2wc16(code); + if (!*ws) return -1; + ws++; + i++; + } + if (!*mb) { + *ws = 0; + } + + return i; +} + +int +sj3_sjiss2wcs16(ws, mb, n) +wchar16_t *ws; +unsigned char *mb; +int n; +{ + register int i = 0; + register unsigned int code; + + while (*mb && (i < n)) { + if (issjis1(*mb)) { + code = *mb++ << 8; + code += *mb++; + } else { + code = *mb++; + } + *ws = sj3_sjis2wc16(code); + if (!*ws) return -1; + ws++; + i++; + } + if (!*mb) { + *ws = 0; + } + + return i; +} + +int +sj3_mbstowcs16(ws, mb, n) +wchar16_t *ws; +unsigned char *mb; +int n; +{ + if (current_locale == LC_CTYPE_EUC) + return sj3_eucs2wcs16(ws, mb, n); + else + return sj3_sjiss2wcs16(ws, mb, n); +} + +int +sj3_wcstombs16(mb, ws, n) +unsigned char *mb; +wchar16_t *ws; +int n; +{ + if (current_locale == LC_CTYPE_EUC) + return sj3_wcs2eucs16(mb, ws, n); + else + return sj3_wcs2sjiss16(mb, ws, n); +} + + diff --git a/sj3stat/Imakefile b/sj3stat/Imakefile new file mode 100644 index 0000000..8638b02 --- /dev/null +++ b/sj3stat/Imakefile @@ -0,0 +1,61 @@ +/* + * Copyright (c) 1995 Sony Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Sony Corporation + * shall not be used in advertising or otherwise to promote the sale, use + * or other dealings in this Software without prior written authorization + * from Sony Corporation. + */ + +/* + * $SonyRCSfile: Imakefile,v $ + * $SonyRevision: 1.3 $ + * $SonyDate: 1997/01/23 11:20:55 $ + */ + +/* + * Change some make rules. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + +#include "../sj3.tmpl" + +INCLUDES = -I../include -I../sj3lib + +LIBDIR = ../sj3lib +SJLIB = $(LIBDIR)/libsj3lib.a + +DEPLIBS = $(SJLIB) +LOCAL_LIBRARIES = $(SJLIB) + +INSTFLAGS = -o $(SJ3OWNER) -g $(SJ3GROUP) -m 755 + +SRCS = sj3stat.c + +OBJS = sj3stat.o + +PROGRAMS = sj3stat + +AllTarget($(PROGRAMS)) +NormalProgramTarget(sj3stat,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),) +DependTarget() +InstallProgramWithFlags(sj3stat,$(SJ3BINDIR),$(INSTFLAGS)) diff --git a/sj3stat/sj3stat.c b/sj3stat/sj3stat.c new file mode 100644 index 0000000..381cd78 --- /dev/null +++ b/sj3stat/sj3stat.c @@ -0,0 +1,107 @@ +/* + * Copyright (C) 1995 by Software Research Associates, Inc. + * Author: Y. Kawabe + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL SOFTWARE RESEARCH ASSOCIATES BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Software Research + * Associates shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization from Software Research Associates. + */ + +/* + * $SonyRCSfile: sj3stat.c,v $ + * $SonyRevision: 1.2 $ + * $SonyDate: 1997/01/23 11:09:41 $ + */ + +#include +#include +#include +#include "Const.h" +#include "sj3err.h" +#include "sj3lib.h" +#include "sj3lowlib.h" + +int main (argc, argv) + int argc; + char **argv; +{ + SJ3_CLIENT_ENV clnt; + SJ3_WHO_STRUCT who[64]; + char ver[256]; + char pname[256]; + char *hname; + char *uname; + + int i, n; + char *p; + + if ((argc > 1 && argv[1][0] == '-') || argc > 2) { + fprintf (stderr, "usage: %s [server]\n", argv[0]); + exit (1); + } + + hname = getenv ("SJ3SERV"); + uname = getenv ("USER"); + + if (argc > 1) hname = argv[1]; + if (uname == NULL) uname = getlogin(); + if (uname == NULL) uname = "unknown"; + sprintf (pname, "%d.sj3stat", getpid()); + + if (sj3_make_connection(&clnt, hname, uname, pname) == ERROR) { + char *server, *status; + extern int sj3_error_number; + + server = hname ? hname : "localhost"; + switch (sj3_error_number) { + case SJ3_ServerDown: status = "down"; break; + case SJ3_GetHostByName: status = "unknown"; break; + default: status = "dead"; break; + } + fprintf (stderr, "Server '%s' is %s.\n", server, status); + return 1; + } + + sj3_version(&clnt, ver, sizeof(ver)); + n = sj3_who(&clnt, who, sizeof(who)/sizeof(who[0])); + + for (p = ver; *p; p++) { + while (*p) putc(*p++, stdout); + fprintf (stdout, "%, "); + } + fprintf (stdout, "%d users.\n", n); + +/* + * Change hostname entry's length. + * Because it's so short. + * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/10 + */ + fprintf(stdout, "%-16s %-32s %-8s %s\n", + "(USER)", "(HOST)", "(FD)", "(CLIENT)"); + for (i = 0; i < n; i++) { + fprintf(stdout, "%-16s %-32s %-8d %s\n", who[i].username, + who[i].hostname, who[i].fd, who[i].progname); + } + (void) sj3_erase_connection(&clnt); + return 0; +}