BISON(1)

名称
bison - GNU プロジェクト パーサ・ジェネレータ (yacc 置き換え)

書式
bison [ -b file-prefix ] [ --file-prefix=file-prefix ] [ -d ] [ --defines ] [ -k ] [ --token-table ] [ -l ] [ --no-lines ] [ -n ] [ --no-parser ] [ -o outfile ] [ --output-file=outfile ] [ -p prefix ] [ --name-prefix=prefix ] [ -r ] [ --raw ] [ -t ] [ --debug ] [ -v ] [ --verbose ] [ -V ] [ --version ] [ -y ] [ --yacc ] [ -h ] [ --help ] [ --fixed-output-files ] file

解説
bison は yacc(1) 風のパーサ・ジェネレータです。 yacc 用に作成された入力ファイルについて上位互換になっているはずです。

入力ファイルは yacc の流儀に従い、末尾は .y で終わるべきです。 yacc と異なり、生成されるファイルの名前は固定ではなく、 入力ファイルのプレフィックスが用いられます。 例えば、 parse.y という名前の文法記述ファイルからは、 yacc のような y.tab.c ではなく、 parse.tab.c というファイル名のパーサが生成されます。

ここに示す bison のオプション説明は、正式なドキュメントである bison.texinfo マニュアルの Invocation ノードからの抜粋です。

bison は、従来の単一文字オプションと覚えやすい長形式オプション名の 両方をサポートしています。 長形式のオプション名は - ではなく -- で指定します。 一意に決められる限り、オプション名は略して記述して構いません。 --file-prefix のように引数を取る長形式オプションの場合、 オプション名とその引数とを = で連結します。

  オプション

-b file-prefix

--file-prefix=file-prefix
    bison の全ての出力ファイルで用いるプレフィックスを指定します。 出力ファイルの名前は、あたかも入力ファイルが file-prefix.c という名前であったかのように決められます。

-d

--defines
    追加の出力ファイルを書き出します。 このファイルには、 少数の extern 変数宣言に加え、 文法記述で定義されたトークンの型名や セマンティックバリューの型 YYSTYPE を定義するマクロが含まれます。

    パーサの出力ファイルが name.c ならば、この追加出力ファイルの名前は name.h となります。

    yylex の定義を別のソースファイルに記述したい場合は、 この出力ファイルが必ず必要になります。 なぜなら、 yylex はトークンの型コードや変数 yylval を参照可能である必要があるからです。

-r

--raw
    name.h ファイルのトークン番号は通常、Yacc 互換の置き換えです。 このオプションを指定すると、 それに代わって Bison のトークン番号が出力されます。 (Yacc では、単一文字トークンを除き、トークン番号は 257 から始まります。 Bison は全てのトークンについて、3 から始まる連番を割り当てます。)

-k

--token-table
    出力ファイル name.tab.c が トークン名のリストをその番号順に含むようにします。 このリストは配列 yytname で定義されます。また、 YYNTOKENS, YYNNTS, YYNRULES, YYNSTATES がそれぞれ #define されます。

-l

--no-lines
    パーサファイルにプリプロセッサコマンド #line を入れません。 通常 bison はパーサファイルに #line を挿入し、C コンパイラおよびデバッガがエラーとソースファイル、 つまり文法ファイルとを結びつけられるようにします。 このオプションを指定すると、エラーはパーサファイルと結びつけられ、 自分の責任で独立したソースファイルとして取り扱うようになります。

-n

--no-parser
    パーサコードを出力に生成せず、宣言のみ生成します。 生成された name.tab.c ファイルには 定数宣言のみ含まれます。 更に、変換した全てのアクションを含む switch 文本体 を含むファイル name.act を生成します。

-o outfile

--output-file=outfile
    出力するパーサファイルの名前を outfile とします。

    -v オプションおよび -d オプションのところで述べたように、 この他の出力ファイルの名前は outfile から作られます。

-p prefix

--name-prefix=prefix
    パーサで使われる外部シンボルの名前を変更し、 yy ではなく prefix で始まるようにします。 名前を変更されるシンボルの正確なリストは以下の通り。 yyparse, yylex, yyerror, yylval, yychar, yydebug

    例えば -p c と指定すると、これらは cparse, clex 等という名前になります。

-t

--debug
    マクロ YYDEBUG の定義をパーサファイルに出力し、デバッグ機能がコンパイルされるようにします。

-v

--verbose
    追加の出力ファイルを書き出します。 このファイルには、 パーサの状態と、その状態で各先読みトークンに対してどういう動作を行うか、 に関する詳細説明が含まれます。

    このファイルには、演算子の順位によって解決したものと 解決していないものを合わせた、 全ての競合についても記述されています。

    このファイルの名前は、パーサの出力ファイル名から .tab.c あるいは .c を取り除き、代わって .output を付けたものになります。

    従って、入力ファイルが foo.y ならパーサファイルはデフォルトでは foo.tab.c となり、その結果、詳細出力ファイル名は foo.output となります。

-V

--version
    bison のバージョン番号を出力して終了します。

-h

--help
    bison のオプション要約を表示して終了します。

-y

--yacc

--fixed-output-files
    -o y.tab.c と等価です。つまり、パーサ出力ファイルは y.tab.c となり、他の出力ファイルは y.output および y.tab.h となります。 このオプションの目的は、 yacc の出力ファイル名規則を真似ることです。 従って、次のシェルスクリプトは yacc の代用となります:

    bison -y $*

以前のリリースとの互換性のため、 長形式オプションは `--' のほか、`+' で始めることもできます。 ただしこれは POSIX.2 標準と非互換であるため、 将来 `+' サポートはなくなるでしょう。

関連ファイル
/usr/share/misc/bison.simple    単純なパーサ
/usr/share/misc/bison.hairy    複雑なパーサ

関連項目
yacc(1)
bison のソースディストリビューションに bison.texinfo として含まれている Bison Reference Manual

診断
メッセージ自身で理解できるようになっています。