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
    テンポラリファイルが作られるディレクトリ名。

テーブル
本バージョンの yacc が作成するテーブル名は yylhs, yylen, yydefred, yydgoto, yysindex, yyrindex, yygindex, yytable, yycheck です。 2 個の追加テーブル yyname と yyrule は、 YYDEBUG を非 0 に定義すると作成されます。

関連ファイル
y.code.c
y.tab.c
y.tab.h
y.output
/tmp/yacc.aXXXXXXXXXX
/tmp/yacc.tXXXXXXXXXX
/tmp/yacc.uXXXXXXXXXX

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

関連項目
yyfix(1)

歴史
yacc コマンドは PWB UNIX に登場しました。

規格
yacc ユーティリティは p1003.2 に適合しています。