YACC(1)

名称
yacc - LALR(1) パーサジェネレータ

書式
yacc [-dlrtv] [-b file_prefix] [-o output_filename] [-p symbol_prefix] filename

解説
yacc は、 filename から文法仕様を読み取り、その仕様から LR(1) パーサを生成します。 パーサは、C 言語で書かれた LALR(1) 解析テーブルとドライバルーチンのセットから構成されています。 yacc は通常、 y.tab.c というファイルに解析テーブルとドライバルーチンを書き込みます。

以下のオプションが使えます:

-b file_prefix
    出力ファイル名の先頭に加えるプレフィックス文字列を file_prefix に変更します。 デフォルトのプレフィックスは y です。

-d  ヘッダファイル y.tab.h を生成するよう指示します。

-l  もし -l オプションが指定されていなければ、 yacc は生成コードに #line ディレクティブを挿入します。 #line ディレクティブは、生成されたコードの中のエラーと ユーザのオリジナルコードとの関連づけを C コンパイラに行わせます。 もし -l オプションが指定されていれば、 yacc は #line ディレクティブを挿入しません。 ユーザによって指定された #line ディレクティブはそのまま残されます。

-o output_filename
    yacc に対し、デフォルトファイルの y.tab.c の代りに output_filename に生成コードを出力させます。

-p symbol_prefix
    yacc によって生成されたシンボルの先頭につけるプレフィックスを symbol_prefix で指定された文字列に変更します。 デフォルトのプレフィックスは、文字列 yy です。

-r  yacc はコードとテーブルを別々のファイルに出力します。コードファイル名は y.code.c となり、テーブルファイル名は y.tab.c となります。

-t  yacc によって生成されるプリプロセッサディレクティブを変更し、デバッグ 用の文をコンパイルされたコードの中に埋め込みます。

-v  生成されたパーザの詳細を人間に読める形式で、 ファイル y.output に出力します。

もし環境変数 TMPDIR が設定されていれば、 TMPDIR に設定されている文字列はテンポラリファイルが作られる ディレクトリ名として使用されます。

関連ファイル
y.code.c
y.tab.c
y.tab.h
y.output
/tmp/yacc.aXXXXXX
/tmp/yacc.tXXXXXX
/tmp/yacc.uXXXXXX

診断
もし還元できないルールがあった場合、そのルール数が標準エラー 出力に表示されます。 もし何らかの LALR(1) の衝突があった場合、衝突数も標準エラー出力に表 示されます。