yacc プログラムによるパーサーの作成
yacc プログラムは、 コンピューター・プログラムに対する文字入力のための構造体を定義および実施するパーサーを作成します。
このプログラムを使用するには、次のような入力を準備する必要があります。
- 文法ファイル
- 言語が認識するための仕様が入っているソース・ファイル。 このファイルには、main、yyerror、 および yylex サブルーチンも入っています。 これらのサブルーチンを提供する必要があります。
- main
- 最低限、yacc プログラムによって生成された yyparse サブルーチンに対するコールが組み入れられた C 言語のサブルーチン。 このサブルーチンの限定された形のものが yacc ライブラリー内にあります。
- yyerror
- パーサー操作時に発生する可能性のあるエラーを処理する C 言語のサブルーチン。 このサブルーチンの限定された形のものが yacc ライブラリー内にあります。
- yylex
- 入力ストリームの字句解析を行い、パーサーへトークンを渡す C 言語のサブルーチン。 lex コマンドを使用すると、この字句解釈サブルーチンを生成することができます。
yacc コマンドは、仕様を取得すると、 y.tab.c という名前の C 言語関数のファイルを生成します。 cc コマンドでコンパイルすると、 これらの関数は yyparse サブルーチンを形成し、整数を戻します。 呼び出された yyparse サブルーチンは、 入力トークンを取得するために yylex サブルーチンを呼び出します。 yylex サブルーチンは、パーサーがエラーを検出するか、または yylex サブルーチンが操作の終了を示す終了マーカー・トークンを戻すまで、 入力データを供給し続けます。 エラーが発生して、 yyparse サブルーチンがリカバリーできない場合、 main サブルーチンに 1 の値を戻します。 終了マーカー・トークンを検出すると、yyparse サブルーチンは main サブルーチンに 0 の値を戻します。