単語一覧作成するマクロNo.01458
dakotsu さん 00/07/18 04:36
 
初めまして、ヤスシと申します。
ちょっとお伺いしたいのですが、プログラムのコード
を解析して、使用している単語一覧を作るソフトなど
ありませんでしょうか?翻訳ソフト等で英単語一覧作
成してくれるものはあるらしいので、それと同じよう
な機能をもったものがあるとありがたいのですが。
grepの機能を上手く使えばなんとかなる気もするので
すが、ありましたら教えて下さい。宜しくお願い致し
ます。

[ ]
RE:01458 単語一覧作成するマクロNo.01459
ENCODINGSHIFTJIS さん 00/07/18 09:34
 
正確な物は ちゃんと解析しないとダメなのはわかりますね
マクロ展開、キーワードの判別、ライブラリの呼び出し、コメント・文字定数の区別...
大文字小文字を同一視するプログラム言語

表面的な物は 「単語」の定義を適当に解釈して
   切り出し「1単語1行」に刻む
   ソートをかける
   単語を数える
あたりの感じでやってみましょう
秀丸マクロの配列や 田楽.DLL のグローバル変数などを使うと ソートを
しない処理を組めるが、その前にクリーンな単語を拾うので一山 越えないと

ベクターあたりを探してみましょう
ゴミの結果を手修正するほうが マクロを組み上げるより 軽く済むかもしれません





[ ]
RE:01458 ちょう消去法、見たいなものNo.01460
番頭++ さん 00/07/18 09:56
 
クロスリファレンスみたいなものでしょうか。
どのような言語に関してかは、判りませんが、
言語から、予約語と、記号を削除すると、単語、変数、(固有名詞)、
が残ります。ちょう消去法、見たいなものです。

replaceallfast "iran", "";
replaceallfast "kesu", "";
endmacro;

C 関連ですと、DOS のフリーソフトがあったような記憶があります ...

[ ]
RE:01459 単語一覧作成するマクロNo.01461
ENCODINGSHIFTJIS さん 00/07/18 11:53
 
関数一覧関係なら
tagsファイル
のヘルプを見る

[ ]
RE:01458 単語一覧作成するマクロNo.01462
山紫水明 さん 00/07/18 16:08
 
    dakotsuさん こんにちは。

》ちょっとお伺いしたいのですが、プログラムのコード
》を解析して、使用している単語一覧を作るソフトなど
》ありませんでしょうか?

 どのようなプログラムかわかりませんので,サンプルの一部と希望される結果を
例示していただけたら考えやすいのですが。

 では, (^^)/~
                                        山紫水明


[ ]
RE:01461 単語一覧作成するマクロNo.01467
ENCODINGSHIFTJIS さん 00/07/19 11:02
 
要求の例題がないとイメージがつかめない
単純な ワードカウントでよいのか、
ソフトウェアメトリック、ソフト複雑度 の解析 まで
いくものなのか。単語の定義? 構文要素の予約語(for if then...)
変数名、モジュール名の区別 など
 ソースとドキュメントを合わせて大量のコメントが入っているソースもある
HTML 発生のプログラムは タグの 文字列定数が大量に入っている

文学分野の 文体比較 や コピーで提出した プログラム課題の
カンニング発見 などの場合は チョット別の形があるし。

大学や情報処理学会でも検索してみたら


[ ]
RE:01462 単語一覧作成するマクロNo.01474
dakotsu さん 00/07/21 03:35
 
皆さんコメントありがとうございました。

一行ごとに切り出した単語を表示してくれる
ようなものを考えていました。

aaa
bbb
ccc
・・・

と羅列していくような形です。予約語、繰り返し
の多い表現、コメントなど確かに難関はあります
が、そこまではのぞまずに、とにかく一覧を表示
させていらないものは削除していくようなものを
作ろうかと思ってます。

                 ダコツ


[ ]
RE:01474 単語一覧作成するマクロNo.01475
ENCODINGSHIFTJIS さん 00/07/21 09:36
 
>一行ごとに切り出した単語を表示してくれる
>ようなものを考えていました。
>
>aaa
>bbb
>ccc
>・・・

UNIX のコマンド入門では 定番に近い例題ですから 秀丸マクロで時間が
かかりそうなら、 CYGWIN(Win内UNIXエミュレータ) をインストールして
UNIX入門のスクリプトサンプルをコピーして結果を出してもよい。
UNIXの流れのためCygwinのインストールはチョット古い徒弟制度の
雰囲気があるけれど、覚悟して途中でキレなければできます。
バイナリーインストールをする。ソースからビルドもあるけれど

その他に参考は 秀丸マクロソースの処理で 変数名を 扱ったものがあります。
秀丸マクロの変数名は 頭が $/# なので他の単語と区別しやすいように
できている。変数名を番号付けで短縮しています。 テキストの処理は細かい
作業用に使っている、 H.INI ファイルに変数名一覧ができています。
秀丸エディタ マクロ作者会議室
 00774 99/10/08 16:04 RE:00770 マクロのコンパイラーは無いですか。


[ ]
RE:01474 単語一覧作成するマクロNo.01476
山紫水明 さん 00/07/21 15:05
 
    dakotsuさん こんにちは。

》一行ごとに切り出した単語を表示してくれる
》ようなものを考えていました。

 例えば秀丸のマクロの変数や注釈を削除して,コマンドのリストを作り,それを
整列し重複を削除する作業を,秀丸だけでやろうとすれば,次のようなものが考え
られます。
 一度おためし下さい。

 では, (^^)/~
                                        山紫水明

//---- WordList.mac --------------------------------------//
//                  単語のリストを作る
//                          2000.7.21
//
//  最初に実行したとき,DOS 窓が現れます。右上の×で終らせてください。
//  エクスプローラーで \Windows\Pif フォルダーにある sort.pif と
//  command.pifのプロパティを開き,プログラムタグの「実行時の大きさ」を
//  「最小化の状態」に,「プログラム終了時にウィンドウを閉じる」にチェック
//  してください。

/////前処理
replaceallfast "\\(.+\\)","", regular;
replaceallfast "\".*\"","", regular;
replaceallfast "//.+$","", regular;//注釈削除
replaceallfast "[\t ]+","\n", regular;//半角空白とタブを改行に
replaceallfast "[$#].+","", regular;//変数削除
replaceallfast "[=+,;{}]","", regular;
replaceallfast "^[0-9]+$","", regular;
replaceallfast "^\\n","", regular;

/////並べ換え
$temp1 = leftstr(hidemarudir, 3) + "temp1.txt";
$temp2 = leftstr(hidemarudir, 3) + "temp2.txt";
$file = filename2;
saveas $temp1;
#handle1 = hidemaruhandle(0);
runsync "sort " + $temp1 + " > " + $temp2;
            //DOS のコマンド使用
openfile $file;
openfile $temp2;
closehidemaruforced #handle1;

/////重複行の削除
gofiletop;
while(code != eof){
    $s1 = gettext(0,y,linelen,y);
    down;
    while(1){
        $s2 = gettext(0,y,linelen,y);
        if($s1 == $s2) deleteline;
        else break;
    }
}
save;
//run "command.com /c del " + $temp1;// 一時ファイルを毎回削除する時は
//run "command.com /c del " + $temp2;// 行頭の「//」を除く
endmacro;
//---------------------------------------------------------//

[ ]
RE:01476 ソート、重複行の削除No.01477
番頭++ さん 00/07/21 15:37
 
Vector とかで SSORT32.exe とかを使用すると、
ソート、重複行の削除が、メチャ速くなります。

試してはいかがですか ...

[ ]
RE:01477 ソート、重複行の削除No.01482
山紫水明 さん 00/07/25 11:42
 
    番頭++さん こんにちは。

》Vector とかで SSORT32.exe とかを使用すると、
》ソート、重複行の削除が、メチャ速くなります。
》試してはいかがですか ...

 Vector で探したら,ssort.exe と ssort32.dll がありました。
 ssort.exe は DOS 用で重複行の削除は無いようです。
 ssort32.dllは重複行削除ができるようですが,QXエディタ用ですね。これを
秀丸から呼びだす方法がわかりません。
 SSORT32.exe とかいうのはどれなんでしょう?

 では, (^^)/~
                                        山紫水明


[ ]
RE:01482 ソート、重複行の削除No.01483
番頭++ さん 00/07/25 11:57
 
Si さんです。個人的には面識は在りません。

http://member.nifty.ne.jp/dahlia/
http://www.vector.co.jp/soft/win95/util/se090985.html


[ ]