Previous: Pure Decl, Up: Declarations


3.6.8 Bison宣言の要約

Bison宣言の要約を示します。

%union
意味値が持ちうるデータ型の集合を宣言します (see The Collection of Value Types)。
%token
優先順位と結合性を指定せずに、終端記号(トークン型名)を宣言します (see Token Type Names)。
%right
右結合的な終端記号(トークン型名)を宣言します (see Operator Precedence)。
%left
左結合的な終端記号(トークン型名)を宣言します (see Operator Precedence)。
%nonassoc
結合性がない、つまり、結合して使おうとすると構文エラーになる、 終端記号(トークン型名)を宣言します (see Operator Precedence)。
%type
非終端記号に対する意味値の型を宣言します (see Nonterminal Symbols)。
%start
文法の開始記号を宣言します (see The Start-Symbol)。
%expect
予想されるシフト還元衝突の数を宣言します (see Suppressing Conflict Warnings)。
%pure_parser
純粋な(再入可能な)構文解析器を生成します (see A Pure (Reentrant) Parser)。
%no_lines
構文解析器ファイルに、#lineプリプロセッサディレクティブを生成しません。 Bisonは、通常、Cコンパイラとデバッガがエラーとあなたのソースファイル (文法ファイル)を関連づけられるように、構文解析器ファイルに #lineディレクティブを書き込みます。 %no_lines宣言は、エラーを構文解析器ファイルの行数と関連づけ、 構文解析器ファイルをそれ自身で独立したソースファイルと みなすことを意味します。
%raw
通常、出力ファイルname.hは、 Yacc互換トークン番号を定義します。 このオプションが指定されると、代わりに、Bison内部の番号が使われます (Yacc互換番号は、1文字リテラルトークンを除いて、257から始まりますが、 Bison内部のトークン番号は常に3から始まる連番になります)。
%token_table
構文解析器ファイルの中に、トークン名の表を生成します。 その表の名前はyytnameで、yytname[i]が Bison内部トークン番号iのトークンの名前です。 最初の3個の要素は常に、"$""error""$illegal"で、 この後に文法ファイルで定義された記号が続きます。

表の中で、1文字リテラルトークンにはシングルクォート記号が、 文字列リテラルトークンにはダブルクォート記号が含まれます。 たとえば、"'+'"は1文字リテラルトークンで、 "\"<=\""は文字列リテラルトークンです。 文字列リテラルトークンのすべての文字はそのまま表に現れ、 ダブルクォート記号もエスケープされません。 たとえば、トークンが3文字‘*"*’からなれば、 yytname中の文字列は‘"*"*"’となります (Cでは"\"*\"*\""と書きます)。

%token_tableを指定すると、Bisonは、マクロ YYNTOKENSYYNNTSYYNRULESYYNSTATESの 定義も生成します。

YYNTOKENS
最大のトークン番号+1。
YYNNTS
非終端記号の数。
YYNRULES
文法規則の数。
YYNSTATES
構文解析器の状態の数(see Parser States)。