.\" {PTM/LK/0.1/29-09-1998/"generator parserów"}
.\" Tłumaczenie: 29-09-1998 Łukasz Kowalczyk (lukow@tempac.okwf.fuw.edu.pl)
.TH bison 1 local
.SH NAZWA
bison \- generator parserów w wersji GNU (zastępuje program yacc)
.SH SKŁADNIA
.B bison
[
.BI \-b  " przedrostek-nazwy-pliku"
] [
.BI \-\-file-prefix= przedrostek-nazwy-pliku
] [
.B \-d
] [
.B \-\-defines
] [
.B \-k
] [
.B \-\-token-table
] [
.B \-l
] [
.B \-\-no-lines
] [
.B \-n
] [
.B \-\-no-parser
] [
.BI \-o " plik-wyjściowy"
] [
.BI \-\-output-file= plik-wujściowy
] [
.BI \-p " przedrostek"
] [
.BI \-\-name-prefix= przedrostek
] [
.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
]
plik
.SH OPIS
.I bison
jest generatorem parserów w stylu programu
.IR yacc (1)
i powinien być zgodny z plikami wejściowymi stworzonym dla tego programu.
.PP
Pliki wejściowe powinny mieć rozszerzenie 
.B .y
zgodnie z konwencją programu
.IR yacc .
W przeciwieństwie do plików tworzonych przez program
.IR yacc ,
pliki wujściwe nie mają stałego przedrostka nazw, lecz używają przedrostka 
nazwy pliku wejściowego. Na przykład, plik z opisem gramatyki o nazwie
.B parse.y
posłuży do stworzenia parsera w pliku o nazwie
.BR parse.tab.c ,
zamiast
.BR y.tab.c ,
jak w programie
.IR yacc .
.PP
Ten opis opcji rozpoznawanych przez program
.I bison
został zaadaptowany z rozdziału
.B Invocation
pochodzącego z opisu
.BR bison.texinfo ,
który powinien być traktowany jako autorytatywne źródło informacji.
.PP
.I bison
rozpoznaje zarówno tradycyjne, jednoliterowe opcje, jak i łatwe do
zapamiętania, długie nazwy opcji.
Długie nazwy opcji rozpoczynają się od
.BR \-\- ,
zamiast
.BR \- .
Mogą być one skracane do takiej długości, aby nadal były
unikalne. Jeżeli po długiej opcji musi nastepować jej parametr, musi on być
połączony z nazwą opcji znakiem
.BR = .
.SS OPCJE
.TP
.BI \-b " przedrostek-pliku"
.br
.ns
.TP
.BI \-\-file-prefix= "przedrostek pliku"
Określa przedrostek nazwy pliku stosowany do wszystkich plików wyjściowych.
Nazwy są tworzone zgodnie z następującym wzorem:
\fIfile-prefix\fB.c\fR.
.TP
.B \-d
.br
.ns
.TP
.B \-\-defines
Utwórz dodatkowy plik z definicjami makrointrukcji dla nazw symboli
terminalnych zdefiniowanych w pliku gramatyki oraz z definicją typu wartości
semantycznej
.BR YYSTYPE ,
jak również z deklaracjami zmiennych zewnętrznych.
.sp
Jeżeli plik z parserem nosi nazwę \fInazwa\fB.c\fR, to plik z definicjami 
zostanie nazwany \fInazwa\fB.h\fR.
.sp
Ten plik jest niezbędny, jeżeli chcesz umieścić definicję funkcji
.B yylex
w oddzielnym pliku źródłowym, ponieważ funkcja
.B yylex
musi mieć dostęp do kodów symboli terminalnych oraz do zmiennej
.BR yylval .
.TP
.B \-r
.br
.ns
.TP
.B \-\-raw
Numery symboli terminalnych znajdujące się w pliku \fInazwa\fB.h\fR są
zazwyczaj kompatybilne z programem Yacc. Jeżeli podana zostanie ta opcja,
użyta zostanie numeracja charakterystyczna dla programu Bison. (numeracja
programu Yacc rozpoczyna się od 257, z wyjątkiem symboli jednoznakowych;
Bison numeruje wszystkie symbole po kolei poczynając od liczby 3).
.TP
.B \-k
.br
.ns
.TP
.B \-\-token-table
Ta opcja powoduje, że w pliku \fIname\fB.tab.c\fR znajdzie się lista symboli
terminalnych posortowana pod względem wartości symboli (nie nazw); jest to
zdefiniowane w tablicy 
.IR yytname .
W pliku znajdą się również definicje stałych
.IR YYNTOKENS ,
.IR YYNNTS ,
.IR YYNRULES ,
i 
.IR YYNSTATES .
.TP
.B \-l
.br
.ns
.TP
.B \-\-no-lines
Nie umieszczaj w pliku z parserem poleceń 
.B #line 
dla preprocesora. Normalnie 
.I bison
umieszcza je w tym pliku, aby kompilator oraz debuggery wykazywały błędy w
kontekście twojego pliku źródłowego z gramatyką. Ta opcja powoduje, że błędy
będą wykazywane w kontekście pliku zawierającego parser, traktując go jak
niezależny plik na równych prawach.
.TP
.B \-n
.br
.ns
.TP
.B \-\-no-parser
Nie generuj kodu parsera; generuj tylko deklaracje. Utworzony plik
\fIname\fB.tab.c\fR będzie zawierał wyłącznie deklaracje stałych. Dodatkowo,
w pliku \fIname\fB.act\fR znajdzie się wyrażenie switch zawierające
wszystkie przetłumaczone definicje akcji.
.TP
.BI \-o " plik-wyjściowy"
.br
.ns
.TP
.BI \-\-output-file= plik-wyjściowy
Określ nazwę 
.I "pliku wyjściowego" 
zawierającego definicję parsera.
.sp
Nazwy pozostałych plików są tworzone z nazwy
.I "pliku wejściowego"
zgodnie z zasadami opisanymi przy opcjach
.B \-v
i
.BR \-d .

.TP
.BI \-p " przedrostek"
.br
.ns
.TP
.BI \-\-name-prefix= przedrostek
Przedrostek nazw zewnętrznych symboli używanych przez parser. Zastępuje
standardowy przedrostek
.BR yy .
Symbole, których nazwy ulegną zmianie, to
.BR yyparse ,
.BR yylex ,
.BR yyerror ,
.BR yylval ,
.BR yychar , 
i
.BR yydebug .
.sp
Na przykład, jeżeli użyjesz opcji
.BR "\-p c" ,
wówczas powyższe nazwy będą miały postać
.BR cparse ,
.BR clex ,
itd.
.TP
.B \-t
.br
.ns
.TP
.B \-\-debug
Umieść w pliku z parserem makrodefinicję
.B YYDEBUG
aby skompilowany został kod pomagający diagnozować problemy (debug code).
.TP
.B \-v
.br
.ns
.TP
.B \-\-verbose
Utwórz dodatkowy plik z dokładnym opisami stanów parsera i akcji
podejmowanych dla każdego kolejnego symbolu w tych stanach.
.sp
Ten plik opisuje również wszystkie konflikty; zarówno te rozwikłane przez
następstwo operatorów, jak i te nierozwikłane.
.sp
Nazwa pliku z opisem jest tworzona przez usunięcie
.B .tab.c
lub
.B .c
z nazwy pliku zawierającego parser i dodanie
.BR .output .
.sp
Na przykład, jeżeli plikiem wejściowym jest
.BR foo.y ,
wówczas plik zawierjący parser nosi nazwę
.BR foo.tab.c .
Plik z opisem stanów będzie nazwany
.BR foo.output .
.TP
.B \-V
.br
.ns
.TP
.B \-\-version
Wypisz numer wersji i zakończ działanie programu
.TP
.B \-h
.br
.ns
.TP
.B \-\-help
Wypisz spis opcji i zakończ działanie programu.
.TP
.B \-y
.br
.ns
.TP
.B \-\-yacc
.br
.ns
.TP
.B \-\-fixed-output-files
Ma to samo działanie, co opcja
.BR "\-o y.tab.c" ;
Plik zawierający parser nosi nazwę
.BR y.tab.c ,
a pozostałe pliki
.B y.output
i
.BR y.tab.h .
Ta opcja powoduje naśladowanie konwencji programu 
.I yacc
nazywania plików.
Poniższy skrypt może byc używany jako program
.IR yacc :
.sp
.RS
.ft B
bison \-y $*
.ft R
.sp
.RE
.PP
Długie nazwy opcji mogą być również poprzedzane przez
`+' zamiast `\-\-', ze względu na kompatybilność z poprzednimi wersjami.
W przyszłości ta możliwość ma być usunięta, ponieważ jest niekompatybilna ze
standardem POSIX.2
.SH PLIKI
/usr/share/bison.simple	prosty parser
.br
/usr/share/bison.hairy	skomplikowany parser
.SH ZOBACZ TAKŻE
.IR yacc (1)
.br
Opis
.IR "Bison Reference Manual" ,
zawarty w pliku
.B bison.texinfo
w dystrybucji źródłowej programu
.I bison
.SH DIAGNOSTYKA
Wszystkiego można się łatwo domyślić.
