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
だけを、
終端記号として宣言します。