VGRINDEFS(5)

名称
vgrindefs - vgrind(1) のための言語定義データベース

書式
vgrindefs

解説
vgrindefs ファイルは vgrind(1) が用いるすべての言語定義を含んでいます。 このデータベースは termcap(5) に非常によく類似しています。

フィールド
以下の表は、各フィールドの名称と意味を解説しています。

名称 | 型 | 解説
ab | 文字列 | 代替コメントの始まりを示す正規表現
ae | 文字列 | 代替コメントの終りを示す正規表現
pb | 文字列 | 手続きの始まりを示す正規表現
bb | 文字列 | 字句的ブロックの始まりを示す正規表現
be | 文字列 | 字句的ブロックの終りを示す正規表現
cb | 文字列 | コメントの始まりを示す正規表現
ce | 文字列 | コメントの終りを示す正規表現
sb | 文字列 | 文字列の始まりを示す正規表現
se | 文字列 | 文字列の終りを示す正規表現
lb | 文字列 | 文字列定数の始まりを示す正規表現
le | 文字列 | 文字列定数の終りを示す正規表現
nc | 文字列 | 非コメントを示す正規表現 (下記参照)
tl | bool | 指定した場合、字句上のトップレベル以外では手続きが定義されないことを意味する
oc | bool | 指定した場合、大文字と小文字が等価であることを意味する
kw | 文字列 | スペースで区切られたキーワードのリスト

非コメントは、通常はコメントの始まりを示すシーケンスがその特殊な意味を 失うような特別な状況を記述するのに必要です。この典型的な実例は、 Perl において、通常コメントを ‘#’ で始めるのに対し、文字列 ‘$#’ が配列に対するオペレータである例に見ることができます。

使用例
以下のエントリは C 言語を記述するもので、言語エントリの典型例です。

    C|c::pb=^\d?*?\d?\p\d?\(\a?\):bb={:be=}:cb=/*:ce=*/:sb=":se=\e":\
    :lb=':le=\e':tl:\
    :kw=asm auto break case char continue default do double else enum\
    extern float for fortran goto if int long register return short\
    sizeof static struct switch typedef union unsigned while #define\
    #else #endif #if #ifdef #ifndef #include #undef # define else endif\
    if ifdef ifndef include undef:

最初のフィールドは単に言語名 (とそのすべての変種) を示すに過ぎないことに 注意して下さい。この場合、C言語は "c" か "C" という名前で vgrind(1) に指定することができます。

行の最後の文字として \ を与えることにより、 エントリは複数行に続けることができます。 vgrindefs のケーパビリティは 2 つの型に分かれます。すなわち、 言語に特定の機能が備わっていることを示すブール型のケーパビリティと、 正規表現またはキーワードのリストを示す文字列のケーパビリティです。

正規表現
vgrindefs は ex(1) や lex(1) の正規表現に非常によく似たものを用います。 文字 `^', `$', `:' および `\' は予約された文字なので、これらが通常の文字として含まれる場合は ‘\’ を直前に置くことによって "クォート" しなければなりません。 メタシンボルとそれらの意味は、以下のとおりです。

$   行末

^   行頭

\d  デリミタ (スペース、タブ、改行、行の始まり)

\a  シンボルからなるすべての文字列にマッチする (lex での .* と同じ)

\p  すべての英数字からなる名前にマッチする。手続き定義の内部 (pb) では このシンボルにマッチする文字列が手続きの名前として用いられます。

()  グループ化

|   選択

?   直前の項目が省略可能である

\e  文字列の前に置くことにより、その文字列と、 先頭がエスケープ文字 (\) である入力文字列とはマッチしなくなります。 文字列デリミタをエスケープすることにより文字列中に含むことが可能な (C のような) 言語で使用されるのが、典型的な使用法です。

その他のシステム内の正規表現と異なり、これらは文字単位ではなく単語単位で マッチします。ですから、 "(tramp|steamer)flies?" のような場合は "tramp", "steamer", "trampflies", または "steamerflies" にマッチします。

キーワードリスト
キーワードリストは言語におけるキーワードをスペースで区切って単純に 列挙したものです。もし "oc" ブール値フラグが指定されていれば、これは 大文字と小文字が等価であることを示すので、すべてのキーワードは小文字で 指定するべきです。

関連ファイル
/usr/share/misc/vgrindefs
    端末記述を含むファイル

関連項目
troff(1), vgrind(1)

歴史
vgrindefs ファイルフォーマットは 4.2BSD で登場しました。