Yacc
Ten artykuł od 2021-04 zawiera treści, przy których brakuje odnośników do źródeł. |
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ż
Linki zewnętrzne
- Lex and YACC primer/HOWTO (ang.) - wprowadzenie do używania programów lex i yacc
- A Compact Guide to Lex & Yacc (ang.) - podręcznik zawierający instrukcje jak napisać kompilator używając programów Lex i Yacc
- The Lex & Yacc Page (ang.) - przykłady i podręczniki