CMT(1)

名前
cmt - コメントと予約語の処理

形式
cmt [ -kiv ] [ -llanguage ] [ -L filename ]
[ -f filename ] [ -d filename ] [ filename ] ...

国際機能
cmt では EUC 主コードセットおよび補助コードセットの文字が使用できます。正規表現による パターン検索は，バイト単位ではなく文字単位に行われます。

機能説明

cmt は指定入力ファイルを順次読み込み，注釈に下線を付け，予約語を太字にして出 力します。入力ファイルの指定がないか，ファイル名として“-”が指定 されたときには標準入力から読み込みます。

下線付けや太字には「重ね打ち」の仕組みを使います。下線付けは“_ + BS + c”， 太字は“c + BS + c”のように出力されます。下線のための _ や BS は強調する文字の画面幅分出力されます。cat (1)，fold (1)， pr (1) などの標準的なテキスト処理コマンドは「重ね打ち」に対応して いるので cmt の出力をそれらのコマンドを用いて処理することができます。また，「重ね打 ち」機能を持つラインプリンターや端末に出力することもできます。

cmt は入力の言語の種類をそのファイル名によって区別します。次の表は入力ファイ ルのファイル名，それに対応する言語名，-l オプションで言語を指定す るときの名称を示します。

    ファイル名    言語    指定名称
    *.c *.h    C    c C
    *.cc *.c++ *.C    C++    cc c++ C++
    *.f    FORTRAN    f f77 fortran FORTRAN
    *.r    ratfor    r ratfor
    *.p    pascal    p pascal
    *.y    yacc    y yacc
    *.l    lex    l lex
    *.sh    shell    sh shell B-shell
    *.csh    C shell    csh C-shell
    *.uil    UIL    uil UIL
    *.ps *.eps *.epsf    PostScript    ps PostScript POSTSCRIPT
    *.tex *.ind *.idx    LaTeX    latex LaTeX tex TeX
    *.sty    LaTeX-sty    sty latex-sty LaTeX-sty
    [Mm]akefile*    make    make makefile Makefile

バックアップ用の拡張子‘.bak’，‘.BAK’，‘~’， ‘~1~’などは無視されます。上記以外のファイル名のものは B シェルス クリプトとみなされます。標準入力の場合は明示的に指定しない限り，B シェル スクリプトになります。

-llanguage を使うと明示的に言語が指定できます。例えば C シェルスクリプトを指定する には -lcsh とします。特に C シェルスクリプトの場合，明示的な指定が必要なことが多い ので注意が必要です。

オプション

-llanguage
    言語を指定します。前掲の表の第 3 欄に示すものののうちのいずれかを名称と して使います。

-L filename
    -l と同様，言語を指定しますが，filename が入力ファイルのファイル名で あるとみなし，そのファイル名によって言語の種類を判定させます。入力が標準 入力のときに役立ちます。

-i  英文字の大文字・小文字の区別がある言語において，その区別をしないようにし ます。

-k  注釈のみ処理し，予約語は強調しません。

-v  言語名を標準エラーに出力します。

-f filename
    追加予約語ファイルを指定します。ここに書かれた予約語が予約語のリストに追 加されます。ファイル中では，各予約語は空白（スペース，タブ，改行など）で 区切ります。C 言語の typedef 名の追加などに使えます。ファイル名に “-”を指定すると標準入力から読み込まれます。

-d filename
    言語の詳細は言語定義データベースに定義されています。このオプションを使っ て言語定義データベースファイルを filename に替えることができます。

ファイル
/usr/local/lib/cmtdefs
    言語定義データベース

使用上の留意点
cmt では，正規表現を利用したパターンマッチングによって注釈や予約語を拾い出す 方法をとっていて，構文解析は行いません。このため FORTRAN やシェルスクリプトなどでは満足のいかない結果をうむことがあります。

関連項目
cmtdefs(5), prn(1), cprn(1), psconv(1), ul(1)