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