Ctagsとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Ctagsの意味・解説 

Ctags

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/12/02 14:41 UTC 版)

Ctags: Ctags)はソース及びヘッダ内にある名前のインデックス(又はタグ)ファイルを生成するプログラム。様々なプログラミング言語に対応している。言語に依存するが、サブルーチン(関数)、変数クラスのメンバ、マクロ等がインデックス化される。これらのタグによりテキストエディタなどのツールで高速かつ容易に定義を参照できる。相互参照ファイルを出力でき、また名前についての情報を人が読みやすい形で列挙した言語ファイルを生成することもできる。

Ctagsケン・アーノルドBSD Unix用に開発した。後にJim KlecknerによりFortranがサポートされ、ビル・ジョイによりPascalがサポートされた。

ctagsをサポートするエディタ

タグインデックスファイルは下記を含む数多くのソースコードエディタでサポートされている。

ctagsの派生版

ctagsにはいくつかの派生版が存在する。

Etags

EtagsはEmacs上で動作するctagsである。ctagsが生成するViフォーマットのタグファイル用にのみ意味のあるオプションはetagsでは解釈されず無視される。

Exuberant Ctags

Darren Hiebertが開発したExuberant Ctagsは元々Vimと共に配布されていたが、Vim 6のリリースに合わせて独立したプロジェクトになった[1]。Emacs互換機能をサポートしている。

Exuberant Ctagsは正規表現を用いることにより数多くのプログラミング言語に対応でき、30以上の言語に対応している。

タグファイルのフォーマット

複数のタグファイルフォーマットがある。その一部を以下で説明する。説明中の<\x##>は16進数でバイトを表している。

Ctagsフォーマット及びExuberant Ctagsフォーマット

オリジナルのctagsフォーマットとExuberant Ctagsフォーマットはファイルフォーマットが似ている[2]

Ctagsフォーマット

エディター「vi」系用のフォーマット。タグファイルは通常は tags という名前である。

タグファイルは行単位でフォーマットされている。

{タグ名}<Tab>{タグファイル}<Tab>{タグアドレス}

各フィールドは以下のように定義される。

記述 定義
{タグ名} 識別子。空白は含まれない。
<Tab> タブ文字。vi系では複数の空白を取り扱えるが、一文字のみしか許されない。
{タグファイル} {タグ名} が定義されているファイルの名前であり、カレントディレクトリからの相対パス。
{タグアドレス} エディタをタグ位置に移動するラインエディタ用の ex コマンド。viのPOSIX実装では検索又は行番号となる。

タグファイルの検索を高速にするためタグファイルは {タグ名} のフィールドでソートされる。

Exuberant Ctagsフォーマット

Vim用のフォーマット。後方互換性のため出力フォーマットとしてオリジナルのctagsフォーマットと拡張フォーマットを選択できる。

各フィールドは以下のように定義される。

{タグ名}<Tab>{タグファイル}<Tab>{タグアドレス}[;"<Tab>{タグフィールド}...]

{タグアドレス}までのフィールドは上記のctagsと同じである。

拡張フィールド

  • ;" – セミコロンとダブルコーテーション。vi のコメントと同じ表記により{タグアドレス}を終了させる。
  • {タグフィールド}

拡張フォーマットでは ex コマンドの後ろに ex コメントを続ける形でオリジナルの vi の実装との下位互換性を維持したままで{タグアドレス}フィールドを拡張できる。これらの拡張フィールドはタブで区切られたキー・バリューのペアである。詳細はctagsのマニュアルを参照のこと。

Etagsフォーマット

Emacs用の etags のフォーマット。タグファイルは通常は TAGS という名前である。

etags のファイルは複数のセクションで構成されている。入力ソースファイル毎に1つのセクションを持つ。各セクションはプレーンなテキストファイルであるが、特別な制御用にアスキー外の文字を使用する。以下の説明においてこれらの文字は<>で囲まれた16進数のコードで表す。

セクションは2行のヘッダで始まる。1行目は<\x0c>一文字のみを含む。2行目は次のようになる。

{ソースファイル<},{タグ定義データのバイト数}

ヘッダの後にはタグの定義が続く。各定義毎に1行。フォーマットは以下の通り。

{タグ定義テキスト}<\x7f>{タグ名}<\x01>{行番号},{バイトオフセット}

タグ定義よりタグの名称が導き出せる場合は{タグ名} とその後ろの \x01 が無視される。

ソースコードとして次のような1行だけのtest.cを読み込ませた場合、

#define CCC(x)

TAGS ファイルは次のようになる。

<\x0c>
test.c,21
#define CCC(<\x7f>CCC<\x01>1,0

参考文献

  1. ^ Vim documentation: version6”. 2022年7月27日閲覧。
  2. ^ Proposal for extended Vi tags file format”. 2022年7月27日閲覧。

外部リンク




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Ctags」の関連用語

Ctagsのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Ctagsのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのCtags (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS