Scroll to navigation

bison(1) General Commands Manual bison(1)

NAZWA

bison - generator parserów w wersji GNU (zastępuje program yacc)

SKŁADNIA

bison [ -b przedrostek-nazwy-pliku ] [ --file-prefix=przedrostek-nazwy-pliku ] [ -d ] [ --defines ] [ -k ] [ --token-table ] [ -l ] [ --no-lines ] [ -n ] [ --no-parser ] [ -o plik-wyjściowy ] [ --output-file=plik-wyjściowy ] [ -p przedrostek ] [ --name-prefix=przedrostek ] [ -r ] [ --raw ] [ -t ] [ --debug ] [ -v ] [ --verbose ] [ -V ] [ --version ] [ -y ] [ --yacc ] [ -h ] [ --help ] [ --fixed-output-files ] plik

OPIS

bison jest generatorem parserów w stylu programu yacc(1) i powinien być zgodny z plikami wejściowymi stworzonym dla tego programu.

Pliki wejściowe powinny mieć rozszerzenie .y zgodnie z konwencją programu yacc. W przeciwieństwie do plików tworzonych przez program yacc, pliki wyjściowe nie mają stałego przedrostka nazw, lecz używają przedrostka nazwy pliku wejściowego. Na przykład, plik z opisem gramatyki o nazwie parse.y posłuży do stworzenia parsera w pliku o nazwie parse.tab.c, zamiast y.tab.c, jak w programie yacc.

Ten opis opcji rozpoznawanych przez program bison został zaadaptowany z rozdziału Invocation pochodzącego z opisu bison.texinfo, który powinien być traktowany jako autorytatywne źródło informacji.

bison rozpoznaje zarówno tradycyjne, jednoliterowe opcje, jak i łatwe do zapamiętania, długie nazwy opcji. Długie nazwy opcji rozpoczynają się od --, zamiast -. 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 =.

OPCJE


Określa przedrostek nazwy pliku stosowany do wszystkich plików wyjściowych. Nazwy są tworzone zgodnie z następującym wzorem: file-prefix.c.

Utwórz dodatkowy plik z definicjami makroinstrukcji dla nazw symboli terminalnych zdefiniowanych w pliku gramatyki oraz z definicją typu wartości semantycznej YYSTYPE, jak również z deklaracjami zmiennych zewnętrznych.

Jeżeli plik z parserem nosi nazwę nazwa.c, to plik z definicjami zostanie nazwany nazwa.h.

Ten plik jest niezbędny, jeżeli chcesz umieścić definicję funkcji yylex w oddzielnym pliku źródłowym, ponieważ funkcja yylex musi mieć dostęp do kodów symboli terminalnych oraz do zmiennej yylval.


Numery symboli terminalnych znajdujące się w pliku nazwa.h 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).

Ta opcja powoduje, że w pliku name.tab.c znajdzie się lista symboli terminalnych posortowana pod względem wartości symboli (nie nazw); jest to zdefiniowane w tablicy yytname. W pliku znajdą się również definicje stałych YYNTOKENS, YYNNTS, YYNRULES, i YYNSTATES.

Nie umieszczaj w pliku z parserem poleceń #line dla preprocesora. Normalnie 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.

Nie generuj kodu parsera; generuj tylko deklaracje. Utworzony plik name.tab.c będzie zawierał wyłącznie deklaracje stałych. Dodatkowo, w pliku name.act znajdzie się wyrażenie switch zawierające wszystkie przetłumaczone definicje akcji.

Określ nazwę pliku wyjściowego zawierającego definicję parsera.

Nazwy pozostałych plików są tworzone z nazwy pliku wejściowego zgodnie z zasadami opisanymi przy opcjach -v i -d.


Przedrostek nazw zewnętrznych symboli używanych przez parser. Zastępuje standardowy przedrostek yy. Symbole, których nazwy ulegną zmianie, to yyparse, yylex, yyerror, yylval, yychar, i yydebug.

Na przykład, jeżeli użyjesz opcji -p c, wówczas powyższe nazwy będą miały postać cparse, clex, itd.


Umieść w pliku z parserem makrodefinicję YYDEBUG aby skompilowany został kod pomagający diagnozować problemy (debug code).

Utwórz dodatkowy plik z dokładnym opisami stanów parsera i akcji podejmowanych dla każdego kolejnego symbolu w tych stanach.

Ten plik opisuje również wszystkie konflikty; zarówno te rozwikłane przez następstwo operatorów, jak i te nierozwikłane.

Nazwa pliku z opisem jest tworzona przez usunięcie .tab.c lub .c z nazwy pliku zawierającego parser i dodanie .output.

Na przykład, jeżeli plikiem wejściowym jest foo.y, wówczas plik zawierający parser nosi nazwę foo.tab.c. Plik z opisem stanów będzie nazwany foo.output.


Wypisz numer wersji i zakończ działanie programu

Wypisz spis opcji i zakończ działanie programu.


Ma to samo działanie, co opcja -o y.tab.c; Plik zawierający parser nosi nazwę y.tab.c, a pozostałe pliki y.output i y.tab.h. Ta opcja powoduje naśladowanie konwencji programu yacc nazywania plików. Poniższy skrypt może być używany jako program yacc:

bison -y $*

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

PLIKI

/usr/local/lib/bison.simple prosty parser
/usr/local/lib/bison.hairy skomplikowany parser

ZOBACZ TAKŻE

yacc(1)
Opis Bison Reference Manual, zawarty w pliku bison.texinfo w dystrybucji źródłowej programu bison

DIAGNOSTYKA

Wszystkiego można się łatwo domyślić.

local