次: Rpcalc Rules, 上: RPN Calc
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だけを、
終端記号として宣言します。