Iconミニ講座1(辞書読込)
今回は、辞書の読み込みです。 辞書と言っても、単語がずらっと並んでいる
テキストファイルですので、テキストファイルの読込プログラムと変わりはあり
ません。 後々、時間が問題に気になりそうなので、現在時刻を書き出すように
しました。 &clockは、現在時刻を hh:mm:ss形式で保持している組込キーワード
です。 最初、動作モニター用の表示は、エラー出力へ出していましたが、
アップの都合上、標準出力へ出すように修正してあります。
-----^ DICREF.ICN ( date:03-08-19 time:23:32 ) -------------<cut here
####################
# 辞書読込・辞書参照の習作。
####################
# dicref.icn Rev.1.0 2003/08/19 windy 風つかい H.S.
####################
# Usage dicref 文字列
# english.dicは、スペルチェック用の英単語が順に並んだもの。
# このプログラムのテストでは、DD SOFT SoundMixSpellコンポーネント
# Ver 0.3.0 に 同梱の辞書ファイルを使用。
# This file is in the public domain.
procedure main()
# 辞書読込
dic := "english.dic" # 辞書ファイル名
dir := open(dic) | stop(dic," が見つかりません") # 辞書ファイルオープン
S_dic := set() # 辞書格納 set生成
# write(&errout,dic," を読込中です。") # 辞書読み込み
write(dic," を読込中です。") # 辞書読み込み
# write(&errout,"開始:",&clock)
write("開始:",&clock)
n := 0 # 辞書行数カウンタ
while word := read(dir) do { # 辞書を1行ずつ読み込んで、
insert(S_dic,word) # setに登録
n +:= 1
if n % 1000 = 0 then writes(&errout,"*") # 読み込み状況表示
}
close(dir) # 辞書ファイルクローズ
write(&errout)
# write(&errout,"終了:",&clock)
write("終了:",&clock)
# write(&errout,dic," の読込を終わりました。\n",*S_dic," 語ありました。")
write(dic," の読込を終わりました。\n",*S_dic," 語ありました。")
# 辞書参照テスト
L := ["heavy","rain","yveah","niar"] # テストデータ
# write(&errout,"参照テストを開始します。")
write("参照テストを開始します。")
# write(&errout,"開始:",&clock)
write("開始:",&clock)
every s := !L do { # テストデータを順次読み出し
writes(s)
if member(S_dic,s) then write(": OK") # 辞書にあるかチェック
else write(": NG")
}
# write(&errout,"終了:",&clock)
write("終了:",&clock)
# write(&errout,"参照テストを終わりました。")
write("参照テストを終わりました。")
end
-----$ DICREF.ICN ( lines:53 words:154 ) -------------------<cut here
dicref >aaa としますと、こんな結果になります。
-----^ AAA ( date:03-08-19 time:23:35 ) --------------------<cut here
english.dic を読込中です。
開始:23:35:43
終了:23:35:51
english.dic の読込を終わりました。
257650 語ありました。
参照テストを開始します。
開始:23:35:51
heavy: OK
rain: OK
yveah: NG
niar: NG
終了:23:35:51
参照テストを終わりました。
-----$ AAA ( lines:13 words:20 ) ---------------------------<cut here
私のPCでは、辞書読込・setへの格納に、8秒ほどかかっています。
CPU Celeronで、クロック 733M、メモリーは多分32M、MS-DOS版
の Iconを、Windows-MEのDOS窓で動作させています。
風つかい(hshinoh@...)
IconのWWWは、 http://www.cs.arizona.edu/icon/
UniconのWWWは、http://unicon.sourceforge.net/index.html
BGM: Battery's not included /森山威男&杉本喜代志