Yacc

Ten artykuł od 2021-04 zawiera treści, przy których brakuje odnośników do źródeł.
Należy dodać przypisy do treści niemających odnośników do źródeł. Dodanie listy źródeł bibliograficznych jest problematyczne, ponieważ nie wiadomo, które treści one uźródławiają.
Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary)
Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu.

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ż

  • Bison (program)
  • Lex (informatyka)
  • Flex

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