yacc(1) 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) の衝突があった場合、衝突数も標準エラー出力に書かれます。

規格

yacc ユーティリティは St -p1003.2 準拠です。