blob: a91b57fa88ca4079f44f5ddf955a8924aed3d3a4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
|
.TH BISON 1 local
.\" jpman %Id: bison.1,v 1.3 1997/08/20 12:18:34 horikawa Stab %
.SH 名称
bison \- GNU プロジェクト パーサ・ジェネレータ (yacc 置き換え)
.SH 書式
.B bison
[
.BI \-b " file-prefix"
] [
.BI \-\-file-prefix= file-prefix
] [
.B \-d
] [
.B \-\-defines
] [
.B \-k
] [
.B \-\-token-table
] [
.B \-l
] [
.B \-\-no-lines
] [
.B \-n
] [
.B \-\-no-parser
] [
.BI \-o " outfile"
] [
.BI \-\-output-file= outfile
] [
.BI \-p " prefix"
] [
.BI \-\-name-prefix= prefix
] [
.B \-r
] [
.B \-\-raw
] [
.B \-t
] [
.B \-\-debug
] [
.B \-v
] [
.B \-\-verbose
] [
.B \-V
] [
.B \-\-version
] [
.B \-y
] [
.B \-\-yacc
] [
.B \-h
] [
.B \-\-help
] [
.B \-\-fixed-output-files
]
file
.SH 解説
.I bison
は
.IR yacc (1)
風のパーサ・ジェネレータです。
.IR yacc
用に作成された入力ファイルについて上位互換になっているはずです。
.PP
入力ファイルは
.I yacc
の流儀に従い、末尾は
.BR .y
で終わるべきです。
.IR yacc
と異なり、生成されるファイルの名前は固定ではなく、
入力ファイルのプレフィックスが用いられます。
例えば、
.B parse.y
という名前の文法記述ファイルからは、
.IR yacc
のような
.BR y.tab.c
ではなく、
.BR parse.tab.c
というファイル名のパーサが生成されます。
.PP
ここに示す
.I bison
のオプション説明は、正式なドキュメントである
.B bison.texinfo
マニュアルの
.B Invocation
ノードからの抜粋です。
.PP
.I bison
は、従来の単一文字オプションと覚えやすい長形式オプション名の
両方をサポートしています。
長形式のオプション名は
.BR \-
ではなく
.B \-\-
で指定します。
一意に決められる限り、オプション名は略して記述して構いません。
.BR \-\-file-prefix
のように引数を取る長形式オプションの場合、
オプション名とその引数とを
.BR =
で連結します。
.SS オプション
.TP
.BI \-b " file-prefix"
.br
.ns
.TP
.BI \-\-file-prefix= file-prefix
.I bison
の全ての出力ファイルで用いるプレフィックスを指定します。
出力ファイルの名前は、あたかも入力ファイルが
\fIfile-prefix\fB.c\fR
という名前であったかのように決められます。
.TP
.B \-d
.br
.ns
.TP
.B \-\-defines
追加の出力ファイルを書き出します。
このファイルには、
少数の
.B extern
変数宣言に加え、
文法記述で定義されたトークンの型名や
セマンティックバリューの型
.BR YYSTYPE
を定義するマクロが含まれます。
.sp
パーサの出力ファイルが
\fIname\fB.c\fR
ならば、この追加出力ファイルの名前は
\fIname\fB.h\fR
となります。
.sp
.B yylex
の定義を別のソースファイルに記述したい場合は、
この出力ファイルが必ず必要になります。
なぜなら、
.B yylex
はトークンの型コードや変数
.BR yylval
を参照可能である必要があるからです。
.TP
.B \-r
.br
.ns
.TP
.B \-\-raw
\fIname\fB.h\fR ファイルのトークン番号は通常、Yacc 互換の置き換えです。
このオプションを指定すると、
それに代わって Bison のトークン番号が出力されます。
(Yacc では、単一文字トークンを除き、トークン番号は 257 から始まります。
Bison は全てのトークンについて、3 から始まる連番を割り当てます。)
.TP
.B \-k
.br
.ns
.TP
.B \-\-token-table
出力ファイル \fIname\fB.tab.c\fR が
トークン名のリストをその番号順に含むようにします。
このリストは配列
.IR yytname
で定義されます。また、
.IR YYNTOKENS ,
.IR YYNNTS ,
.IR YYNRULES ,
.IR YYNSTATES
がそれぞれ #define されます。
.TP
.B \-l
.br
.ns
.TP
.B \-\-no-lines
パーサファイルにプリプロセッサコマンド
.B #line
を入れません。
通常
.I bison
はパーサファイルに
.B #line
を挿入し、C コンパイラおよびデバッガがエラーとソースファイル、
つまり文法ファイルとを結びつけられるようにします。
このオプションを指定すると、エラーはパーサファイルと結びつけられ、
自分の責任で独立したソースファイルとして取り扱うようになります。
.TP
.B \-n
.br
.ns
.TP
.B \-\-no-parser
パーサコードを出力に生成せず、宣言のみ生成します。
生成された \fIname\fB.tab.c\fR ファイルには
定数宣言のみ含まれます。
更に、変換した全てのアクションを含む switch 文本体
を含むファイル \fIname\fB.act\fR を生成します。
.TP
.BI \-o " outfile"
.br
.ns
.TP
.BI \-\-output-file= outfile
出力するパーサファイルの名前を
.I outfile
とします。
.sp
.B \-v
オプションおよび
.B \-d
オプションのところで述べたように、
この他の出力ファイルの名前は
.I outfile
から作られます。
.TP
.BI \-p " prefix"
.br
.ns
.TP
.BI \-\-name-prefix= prefix
パーサで使われる外部シンボルの名前を変更し、
.BR yy
ではなく
.I prefix
で始まるようにします。
名前を変更されるシンボルの正確なリストは以下の通り。
.BR yyparse ,
.BR yylex ,
.BR yyerror ,
.BR yylval ,
.BR yychar ,
.BR yydebug
.sp
例えば
.BR "\-p c"
と指定すると、これらは
.BR cparse ,
.BR clex
等という名前になります。
.TP
.B \-t
.br
.ns
.TP
.B \-\-debug
マクロ
.B YYDEBUG
の定義をパーサファイルに出力し、デバッグ機能がコンパイルされるようにします。
.TP
.B \-v
.br
.ns
.TP
.B \-\-verbose
追加の出力ファイルを書き出します。
このファイルには、
パーサの状態と、その状態で各先読みトークンに対してどういう動作を行うか、
に関する詳細説明が含まれます。
.sp
このファイルには、演算子の順位によって解決したものと
解決していないものを合わせた、
全ての競合についても記述されています。
.sp
このファイルの名前は、パーサの出力ファイル名から
.B .tab.c
あるいは
.B .c
を取り除き、代わって
.B .output
を付けたものになります。
.sp
従って、入力ファイルが
.BR foo.y
ならパーサファイルはデフォルトでは
.B foo.tab.c
となり、その結果、詳細出力ファイル名は
.BR foo.output
となります。
.TP
.B \-V
.br
.ns
.TP
.B \-\-version
.I bison
のバージョン番号を出力して終了します。
.TP
.B \-h
.br
.ns
.TP
.B \-\-help
.I bison
のオプション要約を表示して終了します。
.TP
.B \-y
.br
.ns
.TP
.B \-\-yacc
.br
.ns
.TP
.B \-\-fixed-output-files
.BR "\-o y.tab.c"
と等価です。つまり、パーサ出力ファイルは
.BR y.tab.c
となり、他の出力ファイルは
.B y.output
および
.BR y.tab.h
となります。
このオプションの目的は、
.IR yacc
の出力ファイル名規則を真似ることです。
従って、次のシェルスクリプトは
.IR yacc
の代用となります:
.sp
.RS
.ft B
bison \-y $*
.ft R
.sp
.RE
.PP
以前のリリースとの互換性のため、
長形式オプションは `\-\-' のほか、`+' で始めることもできます。
ただしこれは POSIX.2 標準と非互換であるため、
将来 `+' サポートはなくなるでしょう。
.SH 関連ファイル
/usr/share/misc/bison.simple 単純なパーサ
.br
/usr/share/misc/bison.hairy 複雑なパーサ
.SH 関連項目
.IR yacc (1)
.br
.I bison
のソースディストリビューションに
.B bison.texinfo
として含まれている
.IR "Bison Reference Manual"
.SH 診断
メッセージ自身で理解できるようになっています。
|