次: , 上: RPN Calc


2.1.1 rpcalcのための宣言

逆ポーランド記法電卓のためのCとBisonの宣言を示します。 Cと同様に`/*...*/'はコメントです。

     /* 逆ポーランド記法電卓 */
     
     %{
     #define YYSTYPE double
     #include <math.h>
     %}
     
     %token NUM
     
     %% /* 文法規則とアクションが続く */

C宣言部(see The C Declarations Section)には、 2つのプリプロセッサディレクティブがあります。

#defineディレクティブで、トークンとグループの意味値に対する Cのデータ型を指定するために、マクロYYSTYPEを定義します (see Data Types of Semantic Values)。 Bison構文解析器は、YYSTYPEに定義された型を使います。 定義しないと、int型が使用されます。 各トークンと式は、浮動小数点数である記録値を持つので、 ここではdoubleを指定します。

べき乗関数powの宣言を使うために、 #includeディレクティブを使っています。

第2の部、Bison宣言は、Bisonのためにトークン型についての情報を用意します (see The Bison Declarations Section)。 1文字リテラルでない終端記号は、ここで宣言する必要があります (通常、1文字のリテラルを宣言する必要はありません)。 この例では、すべての算術演算子が1文字リテラルなので、 数値定数に対するトークン型NUMだけを、 終端記号として宣言します。