Bisonは、 Flexと同様、 ある記述情報を受け取って、 それをもとにCのコードを生成するプログラムです。 両者の違いは、 BisonがCやPascalのような言語の文法に関する記述情報を入力として受け取り、 その記述情報からパーサを生成する点にあります。 FlexとBisonを結合することにより、 言語の字句解析と構文解析の両方を処理することができるようになります。 (これは、 コンパイラ・デザインにおいて最も容易に自動化できる部分です。)
生成されるパーサが機能するためには、
Bisonはyylex()
という関数を必要とします。
この関数はユーザによって提供され、
呼び出された時に、
パースされている言語のある要素を表す整数値をBisonに返します。
Flexにおいてスキャン処理を行うルーチンはyylex()
であり、
デフォルトでは整数値を返します。
これにより、
FlexとBisonを一緒に使うのは非常に簡単になります。
警告: 以下の節では、 読者がBisonの基本的なパーサの宣言を理解しているものと仮定します。 Bisonを使った経験のない人には、 パーサの定義は混乱をもたらす可能性がありますので、 先に進む前に是非Bisonのマニュアルを読んでください。 Bisonに興味の無い人は、 この節全体を飛ばしても構いません。
========================================================================
========================================================================