Next: , Up: Invocation


9.1 Bisonのオプション

Bisonは、伝統的な1文字のオプションと、記憶しやすい長いオプション名の 両方を受け付けます。長いオプション名は、‘-’の代わりに、 ‘--’で指定します。 一意性を失わない範囲で、長いオプション名を省略できます。 長いオプションが引数をともなう場合、たとえば、‘--file-prefix’では、 オプション名と引数の間に‘=’を入れます。

Bisonに対して指定可能なオプションの一覧を、アルファベット順に示します。 さらに、長い名前のアルファベット順の対応を示します。

-b file-prefix
--file-prefix=prefix
Bisonが生成するすべてのファイルの名前の前半部分を指定します。 入力される文法ファイルの名前がprefix.yであった場合と、 同じ結果を得られます。
-d
--defines
文法ファイル中で定義されたトークン型名に対するマクロ定義、 意味値型YYSTYPE、いくつかのextern変数宣言を含む、 追加の出力ファイルを生成します。

生成される構文解析ファイルの名前がname.cならば、 このファイルの名前はname.hになります。

yylex関数を独立なソースファイルの中で定義しているならば、 それはトークン型番号と変数yylvalを必要とするので、 このファイルを#includeする必要があります See Semantic Values of Tokens

-l
--no-lines
構文解析器ファイルの中に、#lineプリプロセッサディレクティブを生成しません。 通常、Bisonはこれを生成し、Cコンパイラとデバッガが、 文法ファイルのどこでエラーが発生したかを見つけるために使います。 このオプションは、エラーと構文解析器の行番号を結び付け、 構文解析器を独立なソースファイルとして扱います。
-n
--no-parser
構文解析器にCのプログラムを含めず、表だけを生成します。 構文解析器ファイルは、#defineディレクティブと 静的変数の宣言のみからなります。

このオプションにより、filename.actという名前のファイルに、 文法アクションに対するC言語のプログラムが書かれます。 その書式は、switch文に対応するブレースで囲まれたブロックです。

-o outfile
--output-file=outfile
生成される構文解析器ファイルの名前を指定します。

他の出力ファイルのファイル名の指定は ‘-v’と‘-d’オプションの項を参照してください。

-p prefix
--name-prefix=prefix
構文解析器が使う外部名を‘yy’でなくprefixで始まるように変えます。 影響を受ける名前は、 yyparseyylexyyerroryynerrsyylvalyycharyydebugです。

たとえば、‘-p c’オプションを指定すれば、 名前はcparseclexなどになります。

See Multiple Parsers in the Same Program

-r
--raw
%rawが指定されたように振る舞います。 See Decl Summary
-t
--debug
デバッグ機能がコンパイルされるように、 マクロYYDEBUGの定義を構文解析器ファイルに入れます See Debugging Your Parser
-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.outputy.tab.hになります。このオプションの目的は、 出力ファイルの名前をYaccに合わせることです。 次のシェルスクリプトは、Yaccの代用になります。
          bison -y $*