YACC
NAZWA
Yacc − generator analizatorów składni LALR(1)
SKŁADNIA
yacc [ -dlrtv ] [ -b przedrostek_pliku ] [ -p przedrostek_symbolu ] nazwapliku
OPIS
Yacc czyta opis gramatyki z pliku nazwapliku i generuje dla niej analizator składni LR(1). Analizatory składają się z zestawu tabel analizy LALR(1) i procedury sterującej napisanej w języku C. Yacc zazwyczaj zapisuje tabele analizy i funkcję sterującą do pliku y.tab.c.
Dostępne są następujące opcje:
-b przedrostek_pliku
Opcja -b zmienia przedrostek, który jest doklejany do wyjściowych nazw plików. Nowym przedrostkiem staje się przedrostek_pliku. Domyślnym przedrostkiem jest znak y.
|
-d
|
|
Opcja -d powoduje zapisanie pliku nagłówkowego y.tab.h.
|
|
-l
|
|
Jeśli nie poda się opcji -l, yacc wstawi do generowanego kodu dyrektywy #line. Dyrektywy te umożliwiają kompilatorowi C wiązanie błędów w generowanym kodzie z oryginalnym kodem użytkownika. Jeśli podana jest opcja -l, yacc nie będzie wstawiał dyrektyw #line. Dyrektywy #line, podawane przez użytkownika zostaną zachowane.
|
-p przedrostek_symbolu
Opcja -p zmienia przedrostek doklejany do symboli generowanych przez yacc na łańcuch określony przez przedrostek_symbolu. Domyślnym przedrostkiem jest łańcuch yy.
|
-r
|
|
Opcja -r powoduje, że yacc tworzy oddzielne pliki z kodem i tabelami. Plik z kodem jest nazywany y.code.c, a plik z tabelami y.tab.c.
|
|
-t
|
|
Opcja -t zmienia dyrektywy preprocesora, generowane przez yacc tak, że do skompilowanego kodu zostaną załączone instrukcje debuggujące.
|
|
-v
|
|
Opcja -v powoduje wyświetlenie czytelnego dla człowieka opisu generowanego analizatora do pliku y.output.
|
Jeśli ustawiona jest zmienna środowiskowa TMPDIR, to łańcuch wskazany przez TMPDIR będzie używany jako nazwa katalogu plików tymczasowych.
PLIKI
y.code.c
y.tab.c
y.tab.h
y.output
/tmp/yacc.aXXXXXX
/tmp/yacc.tXXXXXX
/tmp/yacc.uXXXXXX
DIAGNOSTYKA
Jeśli istnieją nieredukowalne reguły, to ich liczba jest zgłaszana na stderr. Jeśli istnieją konflikty z LALR(1), to ich liczba zgłaszana jest na stderr.