YACC(1) — UNIX Programmer’s Manual
名称
yacc − コンパイラ−コンパイラ
形式
yacc [ −vd ] grammar
解説
yacc は、文脈自由文法を、 LR(1) 構文解析アルゴリズムを実行する 簡潔なオートマトンのための1組のテーブルに変換します。 文法はあいまいであってもかまいません。 あいまいさをなくするために、 指定された優先順位規則が使用されます。
出力ファイル y.tab.c は、プログラム yyparse を作成するために、 Cコンパイラを用いてコンパイルしなければなりません。 このプログラムは、字句解析プログラム yylex 並びに main およびエラー処理ルーチン yyerror と共にロードしなければなりません。 これらのルーチンは、 ユーザが供給しなければなりません。 yacc によって使用可能な字句解析プログラムの作成には、 lex(1) を使用すると便利です。
−v フラグが指定された場合には、 ファイル y.output が作成されます。 このファイルには、 構文解析テーブルの記述と、 文法のあいまいさによる矛盾に関する報告が収められています。
−d フラグが使用された場合には、 yacc が割り当てた「トークンコード」をユーザが宣言した 「トークン名」に割り当てる。 define 文をもつファイル y.tab.h が生成されます。 これによって、 y.tab.c 以外のソースファイルがトークンコードにアクセスすることができます。
関連ファイル
y.output
y.tab.c
y.tab.hトークン名の定義
yacc.tmp, yacc.acts一時的ファイル
/usr/lib/yaccparCプログラムのためのパーサの原型
関連事項
lex(1)
LR Parsing by A. V. Aho and S. C. Johnson, Computing Surveys, June, 1974.
YACC − Yet Another Compiler Compiler by S. C. Johnson.
診断
reduce-reduce および shift-reduce の矛盾の数が、 標準出力に報告されます。 さらに詳しい報告は、 y.output ファイルにあります。 同様に、 いくつかの規則が開始シンボルから到達できない場合には、 それも報告されます。
バグ
ファイル名が固定されているので、 ある 1つのディレクトリ内では同時に 1つの yacc プロセスしか アクティブになることができません。
NEWS-OSRelease 3.3