YACC(1)

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

書式
yacc [-dlrtv] [-b prefix] filename

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

以下のオプションが提供されています:

-b prefix
    -b オプションは、出力ファイル名の先頭に加えるプリフィックス文字列を prefix に変更します。 デフォルトのプリフィックスは y. です。

-d  -d オプションは、ヘッダファイル y.tab.h を生成するよう指示します。

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

-r  -r オプションを指定すると、 yacc はコードとテーブルのファイルを分けて出力します。 コードファイル名は y.code.c となり、テーブルファイル名は y.tab.c となります。

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

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

環境変数
以下の環境変数が yacc によって参照されます:

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

テーブル
本バージョンの yacc によって生成されるテーブルの名称は、 “yylhs”, “yylen”, “yydefred”, “yydgoto”, “yysindex”, “yyrindex”, “yygindex”, “yytable”, そして “yycheck” です。さらに、追加のテーブルとして “yyname” および “yyrule” が、 YYDEBUG が定義されゼロでないときに用意されます。

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

診断
もしルールを切り詰めることができなかった場合、ルール数が標準出力 に書かれます。 もし、何らかの LALR(1) の衝突があった場合、衝突数も標準エラー出力に書かれます。

関連項目
yyfix(1)

規格
yacc ユーティリティは p1003.2 準拠です。