<概 要> ptags [ -BFatuwvxme[o tagsfile]] [name ... ]
<解 説> ptagsは、指定されたアセンブラ言語,C,Prolog,Lisp,Pascal,FortranやTexソ−スから、ex(1)用にタグファイルを作ります。タグファイルは、複数のファイルのどの場所に指定した対象があるかを示します。タグファイルを使えば、exまたはvi、emacsは、これらの対象の定義をすぐに捜し出せます。
−e: GNU-Emacsのフォ−マットのタグテ−ブルをつくります。
−u: ptagsは、指定されたファイルからのエントリの変更をすることで、現在のタグファイルを更新しようとします。これは、大きなシステムのタグテ−ブルを、システムのある部分の変更に応じて更新する必要のある時に有効です。
−x: ptagsは、対象の名前,各対象が定義されている場所の行番号とファイル名,その行のテキストのリストをつくり、それを標準出力に書き出します。これは、簡単なものですが、印刷して関数の索引として使えます。
−v: vgrind(1)が受けつける書式に従って、標準出力にインデックスを出力します。これには、関数名,ファイル名,ペ−ジ数を含みます(1頁64行)。出力は、文字コード順に整列されるので、sort -fで処理した方が良いかも知れません。
−o: 次の引数は、出力ファイルとみなされます(入力ファイルではありません)。ファイル名としてダッシュ"-"を与えると、標準出力に出力するので、ptagsをパイプの先頭にすることができます。通常ptagsは、タグの記述をtagsという名前のファイルにします。
$ ptags -v files|sort -f > index $ vgrind -x index $ ptags -oe mytags *.c *.el *.pro
ファイル名が .cや .hで終わるものは、Cのソ−スファイルとみなされ、Cル−チンやマクロ定義を捜します。ファイル名が .yで終わるものは、YACCのソ−スファイルとみなされます。ファイル名が .sで終わるものは、アセンブラ言語のソ−スファイルとみなされます。ファイル名が .lで終わものは、最初の空白でない文字が、';', '(', '[' のいずれかであれば、Lispファイルとみなされ、そうでなければ、lexファイルとみなされます。ファイル名が .proまたは .plで終わるものは、Prologファイルとみなされます。その他のファイルについては、PascalまたはFortranのル−チン定義の有無を検査し、ない場合には、再びC定義を捜す処理を行います。
他のオプションは、以下の通りです。
−F 前方検索パタ−ンの使用(/.../)(デフォルト) −B 後方検索パタ−ンの使用(?...?) −a タグファイルに追加する −t typedefのためのタグを生成する −w 警告メッセ−ジを抑制する −m 1度以上出てくるタグのために、複数のエントリをつくる
タグ mainは、Cプログラムの中では特別扱いされます。mainに対してつくられるタグは、Mをファイルの名前の前につけ加え、もしあれば、後続の .cを取り除くことによってつくられます。そして前にあるパスネ−ムの部分も取り除かれます。 このことによってptagsは、1つ以上のプログラムを含むディレクトリで使えます。
<作者>
Ken Arnold; Jim Kleckner; Bill Joy; Ed Pelegri-Llopart; Prolog への対応は Adam Farquhar による。
<バグ>
FORTRAN,Pascalにおける関数,サブル−チン,手続きの認識は、とても単純な方法によって行われます。ブロック構造に関しては考慮されていないので、2つのPascalの手続きが同じ名前を持つ異なるブロックにある場合にはうまくいきません。
C,Pascal,FORTRANのどの言語の関数を捜すかを決める方法は、確実ではありません。
#ifdef の類については考慮されません。
Pascalの型については知っているべきです。typedefを検出するためには、入力が正しい形式でなければなりません。-txは、typedefの最後の行しか出力しません。