YACC – standardowy program w systemach uniksowych służący do generowania analizatorów składniowych (parserów). Nazwa programu to akronim słów Yet Another Compiler Compiler. Program generuje kod wyjściowy w języku C zgodnym ze standardem ISO na podstawie plików wejściowych zapisanych w notacji podobnej do BNF. YACC potrafi tworzyć parsery dla gramatyk klasy LALR(1).

Parser wygenerowany przez YACC sprawdza zgodność strumienia symboli leksykalnych, produkowanych przez analizator leksykalny (np. wygenerowany przez program lex), z gramatyką języka. Dokładne wymagania dotyczące programów lex oraz YACC jak i ich funkcjonalność są opisane w standardzie IEEE POSIX P1003.2.

Opis składni (gramatyki) jest przeplatany z kodem w języku C i znajduje się najczęściej w pliku z rozszerzeniem .y. Pliki z gramatyką są to pliki tekstowe, które składają się z trzech części oddzielonych od siebie podwójnym znakiem procentu ("%%") w kolejności: deklaracje, reguły gramatyczne, kod w języku C. Zarówno pierwsza jak i ostatnia sekcja mogą zostać pominięte.

Powstało wiele programów podobnych do yacca, takich jak GNU Bison, ocamlyacc (dla Ocamla), perl-byacc (generujący parsery w Perlu).

Zobacz też

edytuj

Linki zewnętrzne

edytuj