書式
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) の衝突があった場合、衝突数も標準エラー出力に書かれます。規格
yacc ユーティリティは St -p1003.2 準拠です。