[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

9. Bisonの実行

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=bison-ja&node=Invocation"
"bison/Bisonの実行"へのコメント(無し)

通常、Bisonは次のように実行します。

 
bison infile

ここで、infileは文法ファイルで、名前が通常`.y'で終わります。 生成される構文解析器ファイルは、文法ファイルの名前の`.y'を `.tab.c'に変えたものです。 したがって、`bison foo.y'によって`foo.tab.c'を得られますし、 `bison hack/foo.y'によって`hack/foo.tab.c'を得られます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

9.1 Bisonのオプション

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=bison-ja&node=Bison%20Options"
"bison/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 節 3.6.8 Bison宣言の要約

`-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.output'と `y.tab.h'になります。このオプションの目的は、 出力ファイルの名前をYaccに合わせることです。 次のシェルスクリプトは、Yaccの代用になります。

 
bison -y $*



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

9.2 オプション対応表

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=bison-ja&node=Option%20Cross%20Key"
"bison/オプション対応表"へのコメント(無し)

オプションを、長い名前のアルファベット順に一覧表記して、 対応する1文字オプションを書きます。

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



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

9.3 VMS上での実行

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=bison-ja&node=VMS%20Invocation"
"bison/VMS上での実行"へのコメント(無し)

VMS上のBisonのコマンドライン構文は、VMSの慣習に合わせて、 他のシステム上のBisonのコマンドライン構文と異なっています。

VMSでは、すべてのBisonのオプションについて、 `--'の代わりに`/'に続く長い名前のオプションを書き、 オプション名中の`-'を`_'に変えます。 VMS上での実行例を示します。

 
bison /debug/name_prefix=bar foo.y

これは、POSIX上での次のコマンドラインと等価です。

 
bison --debug --name-prefix=bar foo.y

VMSファイルシステムでは、`foo.tab.c'のようなファイル名が許されないので、 構文解析器の名前は、上記の例の場合には、`foo_tab.c'になります。


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]