tagsの仕様についてNo.03639
kiki さん 03/03/23 23:11
 
kikiと申します。

いつも困ったときだけ質問させていただいて、申し訳ありません。
以前、「標準出力ウィンドウを一つに」でお世話になりました。
その後、コンパイル単体はこのマクロを回りのメンバにも提供して
好評を得ています。
Antのbuild.xmlも作成して実行をかけるようにしたのですが、現在
は緒方聡殿作成のAntManiaを使わせていただいています。
#これもウィンドウが一つ。^^

前置きが長くなりました。閑話休題。
表題の件、どなたか相談にのっていただけると幸いです。

現在、JAVAで開発中なのですが、IDE(SunONEやeclipse・JBuilder)
のような、JAVAソース内のメンバやメソッドをツリー表示して、その
アイテムの記載行へダイレクトにジャンプできるツールがほしいと思い
ました。

ここで相談するのは場違いかもしれませんが、Java(C++にも使えそう)
ソースのメンバやメソッドを、行数とともに拾うよい方法をどなたか
ご存知ではないでしょうか?

tagsもかなりいい線までいくのですが、メソッドのみになってしまう
のがちとつらいのです。
#tagsのツリー表示は、熱気パラサ殿作「grep view」を重宝させてい
#ただいています。

JavaCC等も調べてみたのですが、今一よくわからずじまいです。
(最終手段はかなとは思っていますが・・・。)

先のアイテムと行数の一覧さえとれれば、JavaのSwingかVBやVCでツリー
表示するツールを作成して、こちらにて公開させていただきたいと思いま
す。(うっ、すでにマクロでは無い・・・。)

そうそう、で「題名」の件、tagsってばどうやってソースからメソッドを
拾っているのでしょう?

よろしくお願いいたします。

以上です。

[ ]
RE:03639 tagsの仕様についてNo.03640
手風琴 さん 03/03/24 09:00
 
kikiさんこんにちは。
手風琴です。

>ここで相談するのは場違いかもしれませんが、Java(C++にも使えそう)
>ソースのメンバやメソッドを、行数とともに拾うよい方法をどなたか
>ご存知ではないでしょうか?
>
>tagsもかなりいい線までいくのですが、メソッドのみになってしまう
>のがちとつらいのです。

秀Tagsは単に正規表現でパターンを拾ってるだけだと思うので、
ローカル変数に引っ掛けずにクラスのメンバを拾うのは多分無理だと
思います。

ctagsというツールを使えばご要望のことが出来ると思います。
秀Tagsとは出力形式が異なるのでタグジャンプ等で使うには
マクロが必要になりますが。

ctags日本語対応版のページ
http://hp.vector.co.jp/authors/VA025040/

[ ]
RE:03640 tagsの仕様についてNo.03641
kiki さん 03/03/24 19:49
 
>kikiさんこんにちは。
>手風琴です。
>

お世話になります。

(中略)

>
>秀Tagsは単に正規表現でパターンを拾ってるだけだと思うので、
>ローカル変数に引っ掛けずにクラスのメンバを拾うのは多分無理だと
>思います。
>
>ctagsというツールを使えばご要望のことが出来ると思います。
>秀Tagsとは出力形式が異なるのでタグジャンプ等で使うには
>マクロが必要になりますが。
>
>ctags日本語対応版のページ
>http://hp.vector.co.jp/authors/VA025040/

キャー、感激ぃ。^^
やっぱり世の中には存在していたいのですね。
いろいろコペルニクス等でも検索したのですが、出てこなくて。

マクロにするとその間、編集が効かなくなりますから、ツールで
考えています。単純にIDEのモデルエクスプローラみたいにツリー
表示して、ノードを「ポチっとな」とやるとエディタへジャンプで
きるようにしたいなぁ・・・。

さて、あとはVBかVCかJavaか・・・。

時間についてはお約束できませんが、必ず作成してご報告したいと
思います。

ありがとうございました。m(_ _)m

[ ]
RE:03641 tagsの仕様についてNo.03642
手風琴 さん 03/03/24 21:00
 
>マクロにするとその間、編集が効かなくなりますから、ツールで
>考えています。単純にIDEのモデルエクスプローラみたいにツリー
>表示して、ノードを「ポチっとな」とやるとエディタへジャンプで
>きるようにしたいなぁ・・・。
>
>さて、あとはVBかVCかJavaか・・・。
>
>時間についてはお約束できませんが、必ず作成してご報告したいと
>思います。
>
>ありがとうございました。m(_ _)m

手風琴です。

お役に立てたようでうれしいです。
ツール、楽しみにしています。

以下、蛇足かもしれませんが、、、

ctagsは定義位置の行番号を出力することも出来ますが、
行のテキスト自体を出力することもできます。
(というか、こっちの方がデフォルトです)
ジャンプ先のファイルを開いてこのテキストで検索をかければ
定義位置に飛ぶことが出来ます。

このジャンプ方式の利点はファイルを編集して行番号がずれても
その行自体を編集しない限り影響を受けない事です。
タグファイルを作り直す回数を大幅に減らすことができるので
おすすめの方式です。

以上、参考までに。

[ ]
RE:03642 tagsの仕様についてNo.03643
kiki さん 03/03/27 12:39
 
いつもお世話になります。

情報、ありがとうございます。
#なるほど。行番号で直接ジャンプだけじゃなくて、
#ファイル内の検索からジャンプというのがいいで
#すね。

現在、tagsファイルを作成していろいろ試しています。
どうも、出力形式が特殊に思えて・・・。
それだけ秀tagsが単純明快になっているということかな。

今後もctagsのこと、教えてください。
よろしくお願いいたします。

以上です。

[ ]
RE:03643 ctagsの仕様についてNo.03663
kiki さん 03/03/31 02:07
 
いつもお世話になります。kikiと申します。

現在、表題の件を手風琴さんに教えていただいて、ビューワ
を作成中です。

一人でやっていると、いつまでもプログラムしてそうで怖く
なって逃げ込んできました。

少し困ったことになってしまったので、手風琴さんにこの場
をお借りして以下をお願いできないでしょうか?

1.ctagsのパラメータについて、いくつか相談にのってい
    ただきたい。
    特に、ソート方法とファイルのフルパス取得等について。
    ソート:パス->ファイル名->クラス名->メンバの順でソ
            ートしたいのですが、うまくいきません。
    フルパス:オプションには取れるように書いてあるとお
            もうのですが、こちらも相対パスになってしま
            う。;;

2.当方の環境は、全マシンに開発環境が入ってしまってい
    るので、できればサラの環境で動くか確認していただき
    たい。
    一応、ActiveX等は使用せずにMFCオンリーで作成してみ
    たので、exeだけで動くはずなのですがちと自信が無い。

むろん、いろいろな方からのご意見もうかがわせて頂きたい
と思います。

#でも、日曜プログラマなんであまり期待しないでください
#ね。^^;

よろしくお願いいたします。


追伸
あとベータ版等のアップってできるところあるでしょうか?
(当方はHP等を持っていないものですから。)
名前も「えいや!」だし、まだ満足に初期化もできない状態
ですが・・・。

[ ]
RE:03663 ctagsの仕様についてNo.03664
手風琴 さん 03/03/31 11:20
 
どうも、手風琴です。

>1.ctagsのパラメータについて、いくつか相談にのってい
>    ただきたい。
>    特に、ソート方法とファイルのフルパス取得等について。
>    ソート:パス->ファイル名->クラス名->メンバの順でソ
>            ートしたいのですが、うまくいきません。

-uでタグ名でのソートをOFFにできますが、これではダメでしょうか。


>    フルパス:オプションには取れるように書いてあるとお
>            もうのですが、こちらも相対パスになってしま
>            う。;;
>

対象ファイルを絶対パスで指定すれば絶対パスで出力されます。
(例 ctags -R c:\hoge)

ただ、そもそもどうして絶対パスで出力する必要があるんでしょうか。
絶対パスだと開発ディレクトリを別のフォルダに移動するたびに
tagsファイルを作り直さないといけなくなりますが。


>2.当方の環境は、全マシンに開発環境が入ってしまってい
>    るので、できればサラの環境で動くか確認していただき
>    たい。
>    一応、ActiveX等は使用せずにMFCオンリーで作成してみ
>    たので、exeだけで動くはずなのですがちと自信が無い。
>

こういう検証はある程度動くものが出来てからでいいと思います。
起動するかどうかだけ確認したところでしょうがないですから。

#一応確認しときますがMFCはライブラリ版の方とリンクしていますよね?
#DLL版の方とリンクしていた場合はexe単体では動きません。

[ ]
RE:03664 ctagsの仕様についてNo.03665
kiki さん 03/03/31 13:05
 
いつもお世話になります。

直接お呼びしてしまって、ご気分を害されたでしょうか。
お忙しい中、申し訳ありませんでした。

>どうも、手風琴です。
>
>>1.ctagsのパラメータについて、いくつか相談にのってい
>>    ただきたい。
>>    特に、ソート方法とファイルのフルパス取得等について。
>>    ソート:パス->ファイル名->クラス名->メンバの順でソ
>>            ートしたいのですが、うまくいきません。
>
>-uでタグ名でのソートをOFFにできますが、これではダメでしょうか。
>

--sort=noでとりあえずは取れるのですが、TREE形式で表示するときは
さらにクラス名や属性(メンバかメソッドか、メンバ・メソッド内も)
でソートしたくて、自分でソートしてみたのですが、遅かったのです。
ctagsにそういうパラメータがあれば、処理速度が早くなるかなと思い
ました。

その前に、データをCStringで保持することが原因かもしれません。
char配列に変更して確認してみます。

>
>>    フルパス:オプションには取れるように書いてあるとお
>>            もうのですが、こちらも相対パスになってしま
>>            う。;;
>>
>
>対象ファイルを絶対パスで指定すれば絶対パスで出力されます。
>(例 ctags -R c:\hoge)
>
>ただ、そもそもどうして絶対パスで出力する必要があるんでしょうか。
>絶対パスだと開発ディレクトリを別のフォルダに移動するたびに
>tagsファイルを作り直さないといけなくなりますが。
>

これは確かに。

tagsファイルからの相対パスというのもメリットありますね。
tagsファイルを、当方作成のフォルダにまとめたいと思ったので、
データの方は絶対パスがほしくなりました。
設定画面で選択できるようにします。

最近はjavaで開発しているので、フォルダを移動するようなこと
があまり発生せず、意識していませんでした。
ご忠告、ありがとうございました。

>
>>2.当方の環境は、全マシンに開発環境が入ってしまってい
>>    るので、できればサラの環境で動くか確認していただき
>>    たい。
>>    一応、ActiveX等は使用せずにMFCオンリーで作成してみ
>>    たので、exeだけで動くはずなのですがちと自信が無い。
>>
>
>こういう検証はある程度動くものが出来てからでいいと思います。
>起動するかどうかだけ確認したところでしょうがないですから。
>

現在、手動でtagsファイルを作成して、ファイルの「開く」でtags
ファイルを選択して、メンバーの表示。メンバが選択されたら秀丸
起動。というところまで出来ました。
本日は、実験がてら試用しながら仕事をしています。

ただ、アイコンが無いと見づらいとか、起動時に前回のtagsファイ
ル読み込みしたいとか、設定を変更したらそれをIniファイルに保
持して、それを読み込むようにしたいとかの部分がまだで、いろい
ろ案が出て止まらない状況です。

この辺、どなたかにご協力いただけるとありがたいなぁっと思った
ものですから。
確かに、他の方にいきなりお願いするのは、失礼でした。
ごめんなさい。

もうしばらく作り込みをしてから、ある程度形になった段階で別途
方法を考えてみようと思います。
インストール確認については、近々、ノートパソコンが手に入りそ
うなので、OSを入れなおしてまっさらにしてテストしてみます。

>#一応確認しときますがMFCはライブラリ版の方とリンクしていますよね?
>#DLL版の方とリンクしていた場合はexe単体では動きません。

ライブラリ版とういうのは、プロジェクト作成時のスタティック
リンクのことでしょうか?(MFC42.lib?)
MFCのDLLは、通常Windowsには入っていたと思うのですが、私の
記憶違いだったでしょうか?

exeが大きくなるのと、OSのバージョン間で不具合が出ないのか心配
だったので、DLLを指定していました。
でもSETUPを作りたくないのでOCXは使わないようには気をつけてい
たのですが・・・。
スタティックでリンクしたいと思います。

以上、お騒がせいたしました。

[ ]
RE:03665 ctagsの仕様についてNo.03667
アルビレオ さん 03/03/31 18:58
 
アルビレオです。

>>#一応確認しときますがMFCはライブラリ版の方とリンクしていますよね?
>>#DLL版の方とリンクしていた場合はexe単体では動きません。
>
>ライブラリ版とういうのは、プロジェクト作成時のスタティック
>リンクのことでしょうか?(MFC42.lib?)

VisualStudioのバージョンによって表記が違いそうですが、プロジェクトの設定
項目として
・MFCを使用しない
・MFCのスタティックライブラリを使用
・共有DLLでMFCを使用
というような選択肢があります。
2番目を選ぶとMFCのランタイムは実行ファイルに静的リンクで埋め込まれます。

って、特に触れられてないけどVisualStudioですよね?
MFCを利用できる開発環境は他にもあったりしますので…(C++Builderとか)

>MFCのDLLは、通常Windowsには入っていたと思うのですが、私の
>記憶違いだったでしょうか?
>
>exeが大きくなるのと、OSのバージョン間で不具合が出ないのか心配
>だったので、DLLを指定していました。

MFC4.2のランタイムDLLはWindows95,NT4.0には標準で入ってはいません。
リリース時期を考えれば当然ですが。
そんなわけでOSのバージョンによる動作の違いが気になるなら静的リンクかラン
タイム添付にしたほうがいいでしょう。

[ ]
RE:03667 ctagsの仕様についてNo.03668
kiki さん 03/03/31 21:45
 
いつもお世話になります。

ご指摘の通り、VisualStudioで作業を行っています。
(そっかぁ、95やNT4.0などもありますものね。)

やはり静的リンクにしようと思います。

情報、ありがとうございました。


[ ]
RE:03665 ctagsの仕様についてNo.03669
手風琴 さん 03/04/01 00:17
 
手風琴です。

>直接お呼びしてしまって、ご気分を害されたでしょうか。
>お忙しい中、申し訳ありませんでした。
>

いえいえ、そんなことはないので気になさらないでください。

>
>現在、手動でtagsファイルを作成して、ファイルの「開く」でtags
>ファイルを選択して、メンバーの表示。メンバが選択されたら秀丸
>起動。というところまで出来ました。
>本日は、実験がてら試用しながら仕事をしています。
>

あ、結構動いてるんですね。初期化も満足に出来ないという
話でしたのでもっとダメダメなのかと思ってました。
そういう状態のものを丸投げされたら困るなぁということでああいう
返答をしてしまったんですけども、これは失礼をいたしました。

>ただ、アイコンが無いと見づらいとか、起動時に前回のtagsファイ
>ル読み込みしたいとか、設定を変更したらそれをIniファイルに保
>持して、それを読み込むようにしたいとかの部分がまだで、いろい
>ろ案が出て止まらない状況です。
>
>この辺、どなたかにご協力いただけるとありがたいなぁっと思った
>ものですから。

具体的にどういう案があってどういう点で悩んでいるのか整理して
書き込めばどなたか識者の方がアドバイスをくれるかもしれません。
(↑他力本願。実は当方Windowsプログラミングに関しては素人同然なもので。。。)

私自身もβテスターとしてバグ報告を出すぐらいのことならできますので
その程度のことでよければ協力させていただきます。

# kikiさんがお作りになっているツールは有用なツールですので
# 実現したら欲しいという人は結構いると思います。
# もしこのまま陽の目を見ることなく終わってしまったらもったいないですから。


[ ]
RE:03669 ctagsの仕様についてNo.03670
kiki さん 03/04/01 00:52
 
いつもお世話になります。

>手風琴です。
>
>>直接お呼びしてしまって、ご気分を害されたでしょうか。
>>お忙しい中、申し訳ありませんでした。
>>
>
>いえいえ、そんなことはないので気になさらないでください。
>

ありがとうございます。^^

>>
>>現在、手動でtagsファイルを作成して、ファイルの「開く」でtags
>>ファイルを選択して、メンバーの表示。メンバが選択されたら秀丸
>>起動。というところまで出来ました。
>>本日は、実験がてら試用しながら仕事をしています。
>>
>
>あ、結構動いてるんですね。初期化も満足に出来ないという
>話でしたのでもっとダメダメなのかと思ってました。
>そういう状態のものを丸投げされたら困るなぁということでああいう
>返答をしてしまったんですけども、これは失礼をいたしました。
>

こちらこそ、現状をもう少し正確にお伝えする必要がありました。
今後もよろしくお願いいたします。

お昼現在では、INIファイル等への接続部分が無かったので、エディタ
を定義しても1ッ回コッキリで忘れてしまうプログラムだったもので
すから。^^;

現在、INIファイル対応済みです。この辺の細かなところは別途記載
したいと思います。

>>ただ、アイコンが無いと見づらいとか、起動時に前回のtagsファイ
>>ル読み込みしたいとか、設定を変更したらそれをIniファイルに保
>>持して、それを読み込むようにしたいとかの部分がまだで、いろい
>>ろ案が出て止まらない状況です。
>>
>>この辺、どなたかにご協力いただけるとありがたいなぁっと思った
>>ものですから。
>
>具体的にどういう案があってどういう点で悩んでいるのか整理して
>書き込めばどなたか識者の方がアドバイスをくれるかもしれません。
>(↑他力本願。実は当方Windowsプログラミングに関しては素人同然なもので。。。)
>
>私自身もβテスターとしてバグ報告を出すぐらいのことならできますので
>その程度のことでよければ協力させていただきます。
>
># kikiさんがお作りになっているツールは有用なツールですので
># 実現したら欲しいという人は結構いると思います。
># もしこのまま陽の目を見ることなく終わってしまったらもったいないですから。
>

ありがとうございます。
がんばりたいと思います。

もうしばらく、内部で使ってみてからアップしますね。
その前に、このHPではJPGなどの画面レイアウトがアップ
できないでしょうか。
仕様のお話なども、画面があったほうがしやすのですが。

今後もよろしくお願いいたします。

[ ]
RE:03670 ctagsの仕様についてNo.03671
アルビレオ さん 03/04/01 01:23
 
アルビレオです。

>もうしばらく、内部で使ってみてからアップしますね。
>その前に、このHPではJPGなどの画面レイアウトがアップ
>できないでしょうか。
>仕様のお話なども、画面があったほうがしやすのですが。

アイコンモジュールではダウンロード前に画像を表示できるようにして欲しい声
はありましたが、マクロでは画面を見せてもわかりにくいor意味がないものが多
いですから…サーバの負荷を考えるとそこまでやる必要があるのか疑問です。

やはり画面や詳しい説明付きで公開したいなら自分でサイトを立ち上げるという
ことになるかと思います。

[ ]
RE:03671 ctagsの仕様についてNo.03672
kiki さん 03/04/01 09:06
 
いつもお世話になります。

>やはり画面や詳しい説明付きで公開したいなら自分でサイトを立ち上げるという
>ことになるかと思います。

了解しました。

ただ、プログラムのお話をする時は、やはりERやUML含め、図がほしい
というのはご理解ください。

でも確かに、サーバ負荷はバカになりませんね。
1件1K弱だったのが、うっかりするとM単位になるかもしれませんものね。

ありがとうございました。

[ ]
RE:03669 ctagsの仕様についてNo.03685
kiki さん 03/04/09 00:22
 
いつもお世話になります。

本日、先日より構想中のビューワをV0.201ベータ版としてライブ
ラリへのアップ依頼しました。
ご利用に耐えられるものか心配ですが、とりあえず当方の意図は
満足できましたので、みなさまからのご意見を賜りたくアップさ
せていただきました。

ソフト名は「TViewer」としました。
#安直ですが、TagsとTreeのTと。^^;

昨日アップされていたIKKIさんのCompleteXというのも、文字補完
に便利でビックリしました。
自分のソース内に記述したもじまで補完してくれるとは!@@

これで回りのツールが安定してくると、いよいよ秀丸エディタとは
離れられなくなります。
あくまでも、軽妙多彩な秀丸エディタであってほしいものです。

今後もよろしくお願いいたします。

以上です。


追伸
今後はJavaだけでなく、C++等への対応も考えています。くどい
ようですが、ctagsの引数の相談等、よろしくお願いいたします。

[ ]
RE:03685 ctagsの仕様についてNo.03689
手風琴 さん 03/04/09 18:36
 
手風琴です。

ベータ版の公開おめでとうございます。
私もkikiさんと同様、統合開発環境のエディタが不満で秀丸を使っていなが
らもクラスビューだけは便利だよなぁと思っていた人間なのでこのツールの
出現は非常にありがたく思っています。
(今まではctagsの-xオプションでお茶を濁していました。)

当方Java使いではありませんが適当なサンプルプログラムを入手して試してみました。
で、さっそくですが幾つか要望をあげさせていただきます。

 ・Enterキーでもジャンプ出来るようにして欲しい。

 ・クラスメンバをクラスの子アイテムにして、ツリーを折りたためるように
  して欲しい。

 ・マウスクリックによる動作は「シングルクリックでジャンプ」と「シング
  ルクリックで選択・ダブルクリックでジャンプ」を切り替えられる設定を
  つけて欲しい。

 ・検索によるジャンプもできるようにして欲しい。
  (秀丸側にも起動時に検索をかけるオプションを追加してもらう必要が
   ありますのでこれは別途秀丸担当さんに要望を出します)

  ※余談ですが行番号は拡張フィールドのline:から取得してるんですね。
   C言語用に作ったTAGSファイルを無理やり使おうとして上手くジャンプ
   してくれなかったのでどうやっているのか悩んでしまいました。

それから、

>今後はJavaだけでなく、C++等への対応も考えています。

こちらの方もぜひお願いしたい所ですが、色々ややこしい問題が多そうです。
それについてはまた改めて書き込みします。
※現状でも単純なタグ名の表示とジャンプだけなら機能しています


[ ]
RE:03689 ctagsの仕様についてNo.03691
kiki さん 03/04/09 21:41
 
kikiです。お世話になります。

>手風琴です。
>
>ベータ版の公開おめでとうございます。

ありがとうございます。^^
まだまだ未熟ではありますが、今後もよろしくお願いいたします。

>私もkikiさんと同様、統合開発環境のエディタが不満で秀丸を使っていなが
>らもクラスビューだけは便利だよなぁと思っていた人間なのでこのツールの
>出現は非常にありがたく思っています。
>(今まではctagsの-xオプションでお茶を濁していました。)
>

やはり同好の士でしたか。^^
心強い見方です。

-xは結果を標準出力する場合ですね?マニュアルによるとファイル出力する
場合のオプションを無視するとあるのですが、どれのことやら・・・。
秀丸マクロからの起動は、本当は中間ファイルを作成せずにこれでやりたか
ったのですが、上記コメントにビビリました。

>当方Java使いではありませんが適当なサンプルプログラムを入手して試してみました。
>で、さっそくですが幾つか要望をあげさせていただきます。
>

ありがとうございます。
これを待ってました。^^

> ・Enterキーでもジャンプ出来るようにして欲しい。
>

現在選択中のノードからですね。φ(.. )
実はイベントを拾っていながら、処理を入れるのを忘れてました。^^;;;

> ・クラスメンバをクラスの子アイテムにして、ツリーを折りたためるように
>  して欲しい。
>

これは考えたのですが、Javaソースファイルだと1ファイルにクラスをそ
んなに列挙しません。C++も同様だと思うのですが。

その場合、ノードの階層が深くなって、右へずずいとスクロールするような
自体にならないほうがいいと思ったのですが、如何でしょう。
ファイル名配下に、ジャンプしたい要素がソート&種類別に、できるだけ左
にならんでくれたほうが、見やすいかなと。
同様の理由で、フォルダも直上だけまとめて表示して、階層にはしませんで
した。

どう思われます?

> ・マウスクリックによる動作は「シングルクリックでジャンプ」と「シング
>  ルクリックで選択・ダブルクリックでジャンプ」を切り替えられる設定を
>  つけて欲しい。
>

なる! φ^^

普段、エクスプローラもシングルクリックで起動の設定なっているので気
づきませんでした。
ファイルダブルクリック時に、そのファイルがポンポン開くのが煩わしかっ
たのですが、なんと要素変更のイベントがクリックより先に飛んでくるの
で、グローバルフラグの嫌いな私は逃げてしまいました。^^;

> ・検索によるジャンプもできるようにして欲しい。
>  (秀丸側にも起動時に検索をかけるオプションを追加してもらう必要が
>   ありますのでこれは別途秀丸担当さんに要望を出します)
>

これ、以前にあった会話ですね。^^

排他で開かれていなければ、裏でファイルを開けて、行数を検索する方法を
考えています。
その場合、エディタで編集されて保存されていないときは、やっぱり位置が
づれるのですが・・・。

>  ※余談ですが行番号は拡張フィールドのline:から取得してるんですね。
>   C言語用に作ったTAGSファイルを無理やり使おうとして上手くジャンプ
>   してくれなかったのでどうやっているのか悩んでしまいました。
>

あれれ、これが普通だと思っていました。#そこはそれ、ど素人。^^;
通常はなにで行数を拾うのでしょう?

ctagsのオプションについてはINIファイルで変更可能にしてありますが、
要素を拾うところがまだまだポンチで、C++の場合にフラグを勘違いする
はずです。せっかくアイコンまで作ったのに・・・。>。<;クッ
慌てて「--langmap」等でJAVA限定するオプションを追加しました。

もっとスマートなオプションでctagsを動かしたいのですが、訳もわからず
使えるものはみんな使ってしまいました。

>それから、
>
>>今後はJavaだけでなく、C++等への対応も考えています。
>
>こちらの方もぜひお願いしたい所ですが、色々ややこしい問題が多そうです。
>それについてはまた改めて書き込みします。
>※現状でも単純なタグ名の表示とジャンプだけなら機能しています
>

ctagsのマニュアルによると、プリプロセッサを全て解釈している訳ではな
さそうですね。
Javaはその点、プリプロセッサがありませんので楽です。
(その分、ソース作成が大変かも。;;)

ctagsはいろいろな言語に対応している様子ですので、CTagasViewerとは
出来ませんでした。^^;
次はC++にチャレンジしてみたいと思います。

ちなみに、C++ソースを解釈させるctagsのフラグは何をお使いでしょうか?
どうもまだ、ctagsのオプションになれなくて、意図した結果が取得できま
せん。

今後も、よろしくお願いいたします。

以上です。

[ ]
RE:03691 ctagsの仕様についてNo.03692
手風琴 さん 03/04/10 11:31
 
手風琴です。

>-xは結果を標準出力する場合ですね?マニュアルによるとファイル出力する
>場合のオプションを無視するとあるのですが、どれのことやら・・・。
>秀丸マクロからの起動は、本当は中間ファイルを作成せずにこれでやりたか
>ったのですが、上記コメントにビビリました。
>
--excmdとか--fieldsとか全部だめみたいですね。
私は結果を秀丸に出力してクラスビューもどきとして使っていました。

>これは考えたのですが、Javaソースファイルだと1ファイルにクラスをそ
>んなに列挙しません。C++も同様だと思うのですが。
>
>その場合、ノードの階層が深くなって、右へずずいとスクロールするような
>自体にならないほうがいいと思ったのですが、如何でしょう。
>ファイル名配下に、ジャンプしたい要素がソート&種類別に、できるだけ左
>にならんでくれたほうが、見やすいかなと。
>同様の理由で、フォルダも直上だけまとめて表示して、階層にはしませんで
>した。
>
>どう思われます?

私の場合、C言語のことが念頭にありました。
Cの場合1つのヘッダファイルに列挙や構造体をいくつも定義しますので
縦一列に並べると縦方向に非常に長くなってしまって見づらくなります。

逆に横に長くなるのはクラスや構造体を何重にも入れ子にした場合ですけど、
そういう書き方をすることはあまりないんじゃないでしょうか。

>> ・検索によるジャンプもできるようにして欲しい。
>>  (秀丸側にも起動時に検索をかけるオプションを追加してもらう必要が
>>   ありますのでこれは別途秀丸担当さんに要望を出します)
>>
>
>これ、以前にあった会話ですね。^^
>
>排他で開かれていなければ、裏でファイルを開けて、行数を検索する方法を
>考えています。
>その場合、エディタで編集されて保存されていないときは、やっぱり位置が
>づれるのですが・・・。
>

それはすごいアイデアですね。考えもつきませんでした。
でもおっしゃるとおり保存していない場合はずれてしまいますし、
そういうトリッキーな手法はプログラムのインターフェースとしては
ちょっとどうかな?と感じます。

個人的には起動文字列の@Xに検索文字列をあらわすフラグを追加して、
行番号と検索文字列のどちらを使うかをユーザーに設定させるようにすれば
いいのではないかと考えています。


>>  ※余談ですが行番号は拡張フィールドのline:から取得してるんですね。
>>   C言語用に作ったTAGSファイルを無理やり使おうとして上手くジャンプ
>>   してくれなかったのでどうやっているのか悩んでしまいました。
>>
>
>あれれ、これが普通だと思っていました。#そこはそれ、ど素人。^^;
>通常はなにで行数を拾うのでしょう?
>

なにが通常の使い方かは私もわかりませんけども、
--excmd=numberを指定すると3つ目のex_cmdフィールドが行番号になるので
そっちを使っているものだと思っていました。

でもkikiさんの方法のほうが検索文字列と行番号の両方が使えるので
いいですね。


>ctagsのオプションについてはINIファイルで変更可能にしてありますが、

INIファイルの書き方がわからなかったんですけどどうやって書いたら
いいんでしょうか?


>>それから、
>>
>>>今後はJavaだけでなく、C++等への対応も考えています。
>>
>>こちらの方もぜひお願いしたい所ですが、色々ややこしい問題が多そうです。
>>それについてはまた改めて書き込みします。
>>※現状でも単純なタグ名の表示とジャンプだけなら機能しています
>>
>
>ctagsのマニュアルによると、プリプロセッサを全て解釈している訳ではな
>さそうですね。

#if 0以外は無条件に最初の分岐を真として処理すると書いていますね。
この辺はctagsの仕様なので割り切らないと仕方がないとして、
私がC/C++に対応する上で問題になると思ったことは以下のような事です。

 ・C++ではクラスの定義とメンバ関数の定義を別々のファイルに記述することが普
通です。
  したがって現在のファイルの下にクラスを置く階層構造だとメンバ関数とクラスを
  結びつけることができなくなります。

 ・名前のない構造体の扱い。
  Cでは以下のように構造体のタグ名をつけず、変わりにtaypedefを使うことがよ
くあります。

typedef struct {
int a;
} Hoge;

  こういう場合VC++のクラスビューではHogeを構造体名と同一視してくれるのです
が、
  ctagsにはそういう機能はありません。typedefはあくまでtaypedefでしかなく、
  int aは名前のない構造体のメンバとして扱われます。
  これをVC++と同じようにHogeを構造体名の代わりとして扱うことが可能か?

  ※一応 } Hogeのようなtypedefが出てきたときは直前の構造体のtypedefとみなす、
   というロジックが考えられますけど、それで十分な解析結果が得られるか?

 ・ctagsはなぜか#undefを#defineと同様に扱うため、同名のタグがやたらと出力さ
れる場合がある。
  その扱いをどうするか。(1個だけ表示 or 全部表示)

>ちなみに、C++ソースを解釈させるctagsのフラグは何をお使いでしょうか?
>どうもまだ、ctagsのオプションになれなくて、意図した結果が取得できま
>せん。
>

私は普段は-Rと-fぐらいしか使ってません。
意図した結果にならないというのは具体的にどういうことでしょうか?


[ ]
RE:03692 ctagsの仕様についてNo.03699
kiki さん 03/04/11 00:10
 
いつもお世話になります。kikiです。

>--excmdとか--fieldsとか全部だめみたいですね。
>私は結果を秀丸に出力してクラスビューもどきとして使っていました。
>

うっ、やはり。--fieldsバリバリ使用しています。
メンバアクセスなどをこのオプションの結果で拾ってます。
つらいなぁ・・・。

>私の場合、C言語のことが念頭にありました。
>Cの場合1つのヘッダファイルに列挙や構造体をいくつも定義しますので
>縦一列に並べると縦方向に非常に長くなってしまって見づらくなります。
>
>逆に横に長くなるのはクラスや構造体を何重にも入れ子にした場合ですけど、
>そういう書き方をすることはあまりないんじゃないでしょうか。
>

なるほどぉ・・・。

使い方の問題もありますね。私はこのビューワを画面左側に細長く使って
ほかをエディタで使うことを考えていたので、立てに長くなる分にはいい
かなと思ってました。

確かに入れ子はそんなに無いと思いますし、ctagsは全部の行に入れ子の
親を出してくれるわけでは無いみたいですので、この方がいいかな。

>>> ・検索によるジャンプもできるようにして欲しい。

>それはすごいアイデアですね。考えもつきませんでした。
>でもおっしゃるとおり保存していない場合はずれてしまいますし、
>そういうトリッキーな手法はプログラムのインターフェースとしては
>ちょっとどうかな?と感じます。
>

言われてみると、すごい邪道ですね・・・。しかもファイル内へ勝手に
アクセスするし・・・。
検索という単語で、最初に浮かんでしまったのがこの案でした。

>個人的には起動文字列の@Xに検索文字列をあらわすフラグを追加して、
>行番号と検索文字列のどちらを使うかをユーザーに設定させるようにすれば
>いいのではないかと考えています。
>

あとは秀丸エディタ殿に対応をしていただくのを待つかなぁ・・・。
そうそう、エディタについては、起動オプションで行へジャンプするように
したのは、秀丸以外にも使えるかもしれないと考えて、あのような設定画面
にしてみました。
起動時オプションに行指定があって、同一ファイル名のオープン時にウィンドウを複
数上げないエディタなら、全部同じ動きになることを期待しています。

>
>なにが通常の使い方かは私もわかりませんけども、
>--excmd=numberを指定すると3つ目のex_cmdフィールドが行番号になるので
>そっちを使っているものだと思っていました。
>
>でもkikiさんの方法のほうが検索文字列と行番号の両方が使えるので
>いいですね。
>

人の目でその行全部を見る場合は、あまりオプションもいらないのですが、
プログラムからそのtagの意味を知るためにいろいろと情報が必要だった
ので、あのようなパラメータになってしまいました。

通常は、ctagsはオプション無しで結構使われるそうですね。

>
>>ctagsのオプションについてはINIファイルで変更可能にしてありますが、
>
>INIファイルの書き方がわからなかったんですけどどうやって書いたら
>いいんでしょうか?
>

これは・・・、ごめんなさい。^^;
気づきませんでした。全然説明がなかったですね。

TViewer.exeのカレントに、TViewerの終了時にINIファイルを作成して
います。
(なければシステムでデフォルト起動し、その値を全て終了時に保存し
  ています。)

個別の定義はまたとして、TAGSセクションのPARAMエントリを起動時に
ctagsのパラメータとして読み込んでいます。
基本的には、あのままご利用いただきたいので、設定画面での編集は
「無し」にしました。でないと、アイコンなどの表示用に先--fields
などで作成される情報が必要でしたので・・・。

そうそう、メンバとメソッドの表示フラグがC++とJAVAでは反対なので
ちょっと困っています。^^;いっしょにしてほしぃ。

>>>>今後はJavaだけでなく、C++等への対応も考えています。

>#if 0以外は無条件に最初の分岐を真として処理すると書いていますね。
>この辺はctagsの仕様なので割り切らないと仕方がないとして、
>私がC/C++に対応する上で問題になると思ったことは以下のような事です。
>
> ・C++ではクラスの定義とメンバ関数の定義を別々のファイルに記述することが普
>通です。
>  したがって現在のファイルの下にクラスを置く階層構造だとメンバ関数とクラスを
>  結びつけることができなくなります。
>

がーん!
そうだ。最近JAVAばっかりだったので、この問題をすっかり忘れてました。
そうすると、ファイル名は出さずにクラス名でくくったほうがいいですね。
でもJavaの場合はさらにパッケージというのがあって、クラスをくくるよ
うになっているのですが、ctagsでの出力結果では、どのクラスがどのパッケージに
属するのかがよく分からなくて困っています。

一応、--sort=noでファイルに記述されている順番でTAGSを拾っていますが、それで
もやはり、人間の目で検索するときはその中でもTAGSでソートされていてほしいので、
自分で独自にファイル名とメンバかメソッドかと、TAGS
でソートしています。
このソートの仕方もctagsのオプションに無いか探したのですが、TAGSで
ソートする以外にオプションは見つかりませんでした。

> ・名前のない構造体の扱い。
>  Cでは以下のように構造体のタグ名をつけず、変わりにtaypedefを使うことがよ
>くあります。
>
>typedef struct {
>int a;
>} Hoge;
>
>  こういう場合VC++のクラスビューではHogeを構造体名と同一視してくれるので
>すが、
>  ctagsにはそういう機能はありません。typedefはあくまでtaypedefでしかなく、
>  int aは名前のない構造体のメンバとして扱われます。
>  これをVC++と同じようにHogeを構造体名の代わりとして扱うことが可能か?
>
>  ※一応 } Hogeのようなtypedefが出てきたときは直前の構造体のtypedefとみな
>す、
>   というロジックが考えられますけど、それで十分な解析結果が得られるか?
>
> ・ctagsはなぜか#undefを#defineと同様に扱うため、同名のタグがやたらと出力
>される場合がある。
>  その扱いをどうするか。(1個だけ表示 or 全部表示)
>

むー、このプリプロセッサの扱いは大変ですね。
マクロも上手に解釈されるか心配です。
(というか、マクロは無理でしょうねぇ。)

>>ちなみに、C++ソースを解釈させるctagsのフラグは何をお使いでしょうか?
>>どうもまだ、ctagsのオプションになれなくて、意図した結果が取得できま
>>せん。
>>
>
>私は普段は-Rと-fぐらいしか使ってません。
>意図した結果にならないというのは具体的にどういうことでしょうか?
>

各TAGの識別子と、ソートと依存性と・・・。
まあ、あまり欲張っても意味ないかもしれませんが。

プログラムからすると、TAGS出力した行内にパス・ファイル名・パッケージ名・クラ
ス名・属性・アクセス子等が、必ず全部並んでくれるとうれしいの
ですが、行によってアクセス子があったりなかったりと、この辺がすごい苦
労しています。
人間の目では一瞬でやれることも、プログラムだとただ長くなるばかりです。

またよろしくお願いいたします。

以上です。

[ ]
RE:03692 ctagsの仕様についてNo.03700
kiki さん 03/04/11 00:14
 

そだ!
MSNにコミュニティ作りました。
http://groups.msn.com/TViewer/join?iid=4422404

最新版をそちらへアップしています。
斎藤殿へは毎回お手を煩わせることになりそうなので、細かいアップは
控えようと思いました。
#といいつつ、宣伝のために最初のはそのままにさせていただいていま
#すが・・・。^^;

もしお試しいただければ、そちらもよろしくお願いいたします。
(最新版は、ダブルクリックやエンターへ対応しています。)

[ ]
RE:03640 tagsの仕様についてNo.03701
encodingshiftjis さん 03/04/11 01:41
 
こんばんは

>秀Tagsは単に正規表現でパターンを拾ってるだけだと思うので、
普通の方法は、
名前文字列(NTOKEN)\s( ..対になる)\s {
をC関数としてます。
秀丸では、[行頭](){
の行が「関数の強調」一覧に表示されます。

オブジェクトブラウザに関心があるのなら
SharpDevelop-jp  http://sharpdevelop-jp.sourceforge.jp/index?FrontPage
もどうぞ、Eclipse の C#版 みたいに見えますが。

[ ]
RE:03701 tagsの仕様についてNo.03708
手風琴 さん 03/04/12 00:55
 
encodingshiftjisさん、はじめまして。
手風琴です。

>こんばんは
>
>>秀Tagsは単に正規表現でパターンを拾ってるだけだと思うので、
>普通の方法は、
>名前文字列(NTOKEN)\s( ..対になる)\s {
>をC関数としてます。
>秀丸では、[行頭](){
>の行が「関数の強調」一覧に表示されます。
>

あ、そうなんですか。
C言語用強調表示の行の強調を使っているのかと思っていました。
ためしに{を消してみたら確かに関数一覧から消えますね。

>オブジェクトブラウザに関心があるのなら
>SharpDevelop-jp  http://sharpdevelop-jp.sourceforge.jp/index?FrontPage
>もどうぞ、Eclipse の C#版 みたいに見えますが。

.NET用のIDEですか。私にはあんまり縁のないツールかも。
(エンベデッド系の仕事がメインなもので。VC++は以前
ターゲットシステムのエミュレート環境として使っていました。)
秀丸を中心にIDEチックな環境を構築できないかを模索中です。

[ ]
RE:03701 tagsの仕様についてNo.03709
kiki さん 03/04/12 19:16
 

encodingshiftjisさん、こんばんは。

>もどうぞ、Eclipse の C#版 みたいに見えますが。
ほんとですね。最初Eclipseのプラグインかと思いました。^^;

うー、おしい。java版がほしいのぉ・・・。
作業していて、ソースファイルから直接ってのが、結構必須みたいです。
チクチク使ってみた結果。

私も、エディタは秀丸を使いたいので、ソースファイルのガイド・お助け
機能がほしかったのです・・・。

ところで、C#ってM$以外で定着したんでしょうか?

[ ]
RE:03709 tagsの仕様についてNo.03710
encodingshiftjis さん 03/04/13 21:01
 
>こんばんは。
>ところで、C#ってM$以外で定着したんでしょうか?
さあ?言語の XXX for .NET などもあるらしいけど

フリーの.NETソフトでは
複数ファイル内の文字列を一覧で確認しながら一括置換できる
「Greplace」
http://www.forest.impress.co.jp/article/2002/10/24/greplace.html
あたりしか知りません、最先端の正規表現が.NETライブラリに入っている
ので,そこの苦労はしなくてすむようです。

技術的に「可能」と商業的に「生きている」とはちがうから
WindowsNT系やCE系 の対応プロセッサは最初は複数でも今は一つ。

Perl5.8 もVB・Java的に 外はS-jis/EUC でプログラム内部は UNUCODE
の動作ができるようになりました。

エディタも完全UNICODE動作のが欲しくなってきます
XMLとか社員名簿作りなどで(外人がいます)

[ ]
RE:03710 tagsの仕様についてNo.03711
kiki さん 03/04/13 21:26
 
こんばんは。kikiです。

>さあ?言語の XXX for .NET などもあるらしいけど
>
Java開発を始める時にIDEを検討したんですが、J++の最新版J#は
実はJAVAでは無いとのことでした。

やっぱりM$独自路線になりそうですね。
当方としては、覚える言語が増えるのは、歓迎したくないです。^^;

>フリーの.NETソフトでは
>複数ファイル内の文字列を一覧で確認しながら一括置換できる
>「Greplace」
>http://www.forest.impress.co.jp/article/2002/10/24/greplace.html
>あたりしか知りません、最先端の正規表現が.NETライブラリに入っている
>ので,そこの苦労はしなくてすむようです。
>

これいい!!^^
「.NET Framewark」ってのが気になるけど。

正規表現ってあまり意識してなかったのですが、こういう部品がほしいなぁ
やっぱ。VC6でコツコツやってるんですが、一つ載せ変えしてみようかな?

だれか、JAVA・C++(C#もかな?)を、言語を意識せずに固定のフォーマット
でテキスト出力してほしいなぁと思ってました。
ctagsはかなりいい線まで行きます。
ただ若干、言語依存の部分があるので、ちと大変。^^;

>技術的に「可能」と商業的に「生きている」とはちがうから
>WindowsNT系やCE系 の対応プロセッサは最初は複数でも今は一つ。
>

ま、確かに。でもそれは仕事で無いときはあまり会話したくないなぁ。^^;
やっぱ.NETも勉強するのか・・・。そこを逃げたら、生きていけないと。

>Perl5.8 もVB・Java的に 外はS-jis/EUC でプログラム内部は UNUCODE
>の動作ができるようになりました。
>
>エディタも完全UNICODE動作のが欲しくなってきます
>XMLとか社員名簿作りなどで(外人がいます)
>

あまり意識していないのですが、秀丸さんでUNICODE扱えるのとどの辺が
ちがうのでしょう・・・?

私はどれでもいいから、固定にしてほしいです。
ソース書いてるときはUNICODEで、表示や他システムとのインタフェース
がSJISとかだと、日本語扱うときにもう面倒で面倒で。

またよろです。^^

[ ]
RE:03711 tagsの仕様についてNo.03712
でるもんた さん 03/04/14 00:30
 
でるもんたです。余談ですが…

> Java開発を始める時にIDEを検討したんですが、J++の最新版J#は
> 実はJAVAでは無いとのことでした。
>
> やっぱりM$独自路線になりそうですね。
> 当方としては、覚える言語が増えるのは、歓迎したくないです。^^;

J# は結局そうなりますか…

Java に関しては、MS が Sun の規格に独自拡張をしていたことが咎められ、
結局、独自拡張は後に削除されるとともに、MS は Java 2 の環境を開発でき
ないことになりました。

いま IE に入っている Microsoft VM は、Windows XP SP1a および Windows Server
2003 初期バージョンではカットされます。で、XP では SP1b で、Server 2003
ではおそらく追加コンポーネントとして、Sun 純正の JRE 1.4.x が搭載される
予定になっています。

Java でプログラミングする人間からいえば、Microsoft VM が Java 2 に対応
していないというのが開発上の大きなネックだったので、やっと「まとも」に
なるかな、というのが正直な感想なんですが…普及までには時間がかかりそう
です。

> 正規表現ってあまり意識してなかったのですが、こういう部品がほしいなぁ
> やっぱ。VC6でコツコツやってるんですが、一つ載せ変えしてみようかな?

正規表現だとけっこういろいろなライブラリがありませんか?
GNU の regex や Rx は GPL(LGPL ではない)なので使いにくいですけど、
http://www.pcre.org/
http://www.boost.org/libs/regex/
あたりが狙い目かと。Boost.org のほうは Windows では UCS-2 を(Linux 等の、
wchar_t が 4 バイトの環境では UCS-4 を)、PCRE は UTF-8 をサポートして
います。

ちなみに、Java は JDK 1.4.0 から java.util.regex クラスが用意されました
し、WSH も比較的新しいバージョンでは正規表現をサポートしています。

> >エディタも完全UNICODE動作のが欲しくなってきます
> >XMLとか社員名簿作りなどで(外人がいます)
> >
>
> あまり意識していないのですが、秀丸さんでUNICODE扱えるのとどの辺が
> ちがうのでしょう・・・?

シフト JIS にない文字が使える、この一点ですよね。
・アクセント記号のついた英字
・人名に使われている漢字で、JIS にないもの
これは UNICODE を使わないとどうしようもないです。

[ ]
RE:03712 tagsの仕様についてNo.03713
kiki さん 03/04/14 23:44
 

いつもお世話になります。

>正規表現だとけっこういろいろなライブラリがありませんか?
>GNU の regex や Rx は GPL(LGPL ではない)なので使いにくいですけど、
>http://www.pcre.org/
>http://www.boost.org/libs/regex/
>あたりが狙い目かと。Boost.org のほうは Windows では UCS-2 を(Linux 等の、
>wchar_t が 4 バイトの環境では UCS-4 を)、PCRE は UTF-8 をサポートして
>います。
>
>ちなみに、Java は JDK 1.4.0 から java.util.regex クラスが用意されました
>し、WSH も比較的新しいバージョンでは正規表現をサポートしています。
>

むー、いろいろあったんですねぇ。^^;
そもそも、置換で\tや\nとかって指定する以外、使ったことなかったもので。

閑話休題
当方は、JavaやC++のソース解析して、メンバ変数やメソッドの一覧を取得
する方法を知りたいのがメインでしたので、どちらかというと構文解析って
方になるのでしょうか。

単純にファイル名と行番号が必要なのですが、その時にTAGになる文字列の
情報がほしいのです。
このTAGはどのクラスのメンバかとか、publicかprivateかprotectedかと
かの。文字列間での関係というか修飾というか。

自分でゴリゴリやる方法もかんがえてはみたのですが・・・。めんどー。

この辺、JavaCCなんてのもありましたが、どうも馴染みが薄くて、敷居が
高いです。
yaccやlexも・・・。

で、ctagsが便利かなと。^^;

でも、実行速度や中間ファイルを考えると、ライブラリがほしいです。
JavaなんてJavaCCでライブラリ作れるようなのですが、まだまだ勉強が
足りませんね。^^;;;

>> >エディタも完全UNICODE動作のが欲しくなってきます
>> >XMLとか社員名簿作りなどで(外人がいます)
>> >
>>
>> あまり意識していないのですが、秀丸さんでUNICODE扱えるのとどの辺が
>> ちがうのでしょう・・・?
>
>シフト JIS にない文字が使える、この一点ですよね。
>・アクセント記号のついた英字
>・人名に使われている漢字で、JIS にないもの
>これは UNICODE を使わないとどうしようもないです。

なるほどぉ。
当方は普段あまりデータに日本語を使わないので、VB4.0でUNICODEが出
てきたときは発狂しそうになり、Javaで諦めの感でした。^^;


[ ]
RE:03713 tagsの仕様についてNo.03714
ENCODINGSHIFTJIS さん 03/04/15 13:50
 
>どちらかというと構文解析って方になるのでしょうか。

ctags を読んでも、純粋な正規表現のは COBOL.C しかありません。
入れ子を見るので構文解析になってしまいます。
それでも簡易版なので「マクロ展開は飛ばしているの
で誤りがあるかも」と言いわけや、対症療法の引数の
話が付いています。

構文解析はとても非直感的で、プログラムの歴史でも
最初に理論に花が咲いた分野ですから。

ctagの入力・出力をメモリ直結に改造するのが
理論を勉強しなくても済む方法でしょう。

[ ]
RE:03713 tagsの仕様についてNo.03715
たけのこ さん 03/04/15 14:11
 
たけのこです。

オートマトンを勉強しましょう(^^)/ かなり歴史のある学問で、いろいろと面
白いですよ!

(^^)/”

[ ]
RE:03713 tagsの仕様についてNo.03716
手風琴 さん 03/04/15 15:05
 
手風琴です。

>でも、実行速度や中間ファイルを考えると、ライブラリがほしいです。

-f-で結果を標準出力に出力できます。
こいつをリダイレクトすればとりあえず中間ファイルはなくせます。
速度も少し速くなるのかな?


[ ]
RE:03713 tagsの仕様についてNo.03717
kiki さん 03/04/15 16:58
 
いつもお世話になります。
まとめレスで申し訳有りません。

ENCODINGSHIFTJIS殿

>ctags を読んでも、純粋な正規表現のは COBOL.C しかありません。
>入れ子を見るので構文解析になってしまいます。
>それでも簡易版なので「マクロ展開は飛ばしているの
>で誤りがあるかも」と言いわけや、対症療法の引数の
>話が付いています。
>

C,C++については、この辺、手風琴殿とどうしようねぇって
お話してました。

実際はもう少し先になりますが。
明日は明日の仕事をし、今日はしない。
今日は今日の仕事を一生懸命する。
お役所仕事といわれそうですが、これを真実にしたいなと。

>構文解析はとても非直感的で、プログラムの歴史でも
>最初に理論に花が咲いた分野ですから。
>

むー、そうだったんですかぁ。

まあ、最終的にはソースの「だいたい」の位置が分かればいいかなと、
O型特有のアバウトさが最後にはものを言ってしまそうですが・・・。^^;

>ctagの入力・出力をメモリ直結に改造するのが
>理論を勉強しなくても済む方法でしょう。
>
>

手風琴さんのアドバイスで、この辺、チャレンジしてみようと思います。


たけのこ殿

>たけのこです。
>
>オートマトンを勉強しましょう(^^)/ かなり歴史のある学問で、いろいろと面
>白いですよ!
>
>(^^)/”
>

むっむ、聞いた単語です。楽しそう。^^

ありがとうございます。
さっそくさっそく。


手風琴殿

>
>手風琴です。
>
>>でも、実行速度や中間ファイルを考えると、ライブラリがほしいです。
>
>-f-で結果を標準出力に出力できます。
>こいつをリダイレクトすればとりあえず中間ファイルはなくせます。
>速度も少し速くなるのかな?
>

でたー!これが知りたかったのぉ。^^;
ありりです。

あれ?マニュアルにあったかな?

では、標準出力の読み込みにチャレンジしてみましゃう。^^
次のバージョンは、少し早くなりそうです。
あと、tmpフォルダが不要になりますね。^^;

みなさま、ありがとうございました。m(_ _)m

[ ]
RE:03717 tagsの仕様についてNo.03724
アルビレオ さん 03/04/16 02:51
 
アルビレオです。

>C,C++については、この辺、手風琴殿とどうしようねぇって
>お話してました。
>
>実際はもう少し先になりますが。
>明日は明日の仕事をし、今日はしない。
>今日は今日の仕事を一生懸命する。
>お役所仕事といわれそうですが、これを真実にしたいなと。

完璧なものは求めず、コスト評価しながら現実的な妥協をすることも時には有効
です。

○かなり意地悪な例
----test.c
#define my_print my_printV##MY_VERSION
void my_print(char *str){...}
----test.c

----testmain.c
int main(){
  my_printV1("hoge");
}
----testmain.c

cc test.c -DMY_VERSION=1 -c -o test1.o
cc test.c -DMY_VERSION=2 -c -o test2.o
cc testmain.c test1.o test2.o -o test

ひとつの関数定義から2つの関数を作成、my_printV1() をコールしているのに、
どんなにソースファイルを解析しても見つかりません。コンパイルオプションま
で把握しないと無理という仕掛けです。
解析プログラムに '-DMY_VERSION=2' を渡せば追いかけることも不可能ではあり
ませんが、こんな変態的な記述に対応させるためにどれだけの手間がかかるかを
考えると…

実際、コンパイラ組み込みのシンボル '_MSC_VER'や'__STDC__' 等を参照する標
準のヘッダファイルもあったりするので悩ましいですが。
気にしだすと要求仕様は際限なく膨らみます。

>>たけのこです。
>>
>>オートマトンを勉強しましょう(^^)/ かなり歴史のある学問で、いろいろと面
>>白いですよ!
>>
>>(^^)/”
>>
>
>むっむ、聞いた単語です。楽しそう。^^
>
>ありがとうございます。
>さっそくさっそく。

それこそ正規表現検索ルーチンやyaccなどが身近なオートマトンの代表例みたい
なものですが。
このあたりに手を出すと、あまりに楽しいので(?)本来の目的がいっこうに進ま
なくなる危険があります。
もちろんそういう楽しみ方を否定するつもりはありませんので、覚悟があればが
んばってください。(^o^)

[ ]
RE:03724 tagsの仕様についてNo.03726
kiki さん 03/04/16 10:31
 
いつもお世話になります。

(中略)
>
>完璧なものは求めず、コスト評価しながら現実的な妥協をすることも時には有効
>です。
>

(中略)

>解析プログラムに '-DMY_VERSION=2' を渡せば追いかけることも不可能ではあり
>ませんが、こんな変態的な記述に対応させるためにどれだけの手間がかかるかを
>考えると…
>
>実際、コンパイラ組み込みのシンボル '_MSC_VER'や'__STDC__' 等を参照する標
>準のヘッダファイルもあったりするので悩ましいですが。
>気にしだすと要求仕様は際限なく膨らみます。
>

このあたり、了解です。
完璧にトレースできなくても、ソースの位置が知りたいだけですから。
(大体でいいかなと。)

例を見て吹き出しました。^^;
「変態的」というより、これは「変態の」ソースですねぇ。^^;
って実際に書いている人がいたら失礼。でもやめてほしい。
身近にこれに近いソース書くヤツがいるんです。頭、ゴン!ってやってます。
私はデバックしたくありません。−−;

メソッドの呼び出しまで追いかけたら、関数ポインタなんて一発
でアウトにしたいです。

これに対応するには、実際はコンパイラの構文解釈と同じものが無いとダメですね。
コンパイラの構文解釈と行番号(コンパイルエラーで出るっすもんね。)だけ返す
インタフェースがほしいです。

でも結局は、どの言語も構文解釈してるんですものね。

(中略)
>それこそ正規表現検索ルーチンやyaccなどが身近なオートマトンの代表例みたい
>なものですが。
>このあたりに手を出すと、あまりに楽しいので(?)本来の目的がいっこうに進ま
>なくなる危険があります。
>もちろんそういう楽しみ方を否定するつもりはありませんので、覚悟があればが
>んばってください。(^o^)

本来の目的(TViewer作成)とは別に、趣味的にのんびりとやるつもりです。^^;
実際の食べていくためのお仕事もありますしね。

どっか研究室とかで、これで食べさせてくれるとうれしいのですがねぇ。
^^;
まあ、実践に揉まれる必要も重々感じています。
(でないと元来のんびり屋が、ホントに進まなくなる)

またよろです。


[ ]