yacc — комп'ютерна програма-генератор парсерів розроблена Стівеном С. Джонсоном в AT&T для операційної системи UNIX. Назва є акронімом від "Yet Another Compiler Compiler" (ще один компілятор компіляторів). Генерує синтаксичний аналізатор (частина компілятора яка намагається побудувати синтаксичне дерево коду програми за формальною граматикою, записаною в нотації, подібній до БНФ).

Синтаксичний аналізатор що генерується yacc потребує лексичного аналізатора. Використовуються генератори лексичних аналізаторів такі як Lex чи Flex. Існує стандарт IEEE POSIX P1003.2 що описує функціональність і вимоги як до Lex, так і до yacc.

Деякі версії AT&T Yacc перейшли у відкритий код. Код поширюється наприклад зі стандартними дистрибутивами Plan 9 та OpenSolaris.

Див. також Парсер LALR: алгоритм на якому базується Yacc. GNU Bison: версія Yacc у проекті GNU. Lex (та Flex) — лексичні аналізатори що зазвичай використовуються з yacc (та Bison). Нотація Бекуса — Наура — метасинтаксис для опису контекстно-вільної граматики.

Джерела

Посилання Стівен Джонсон. YACC: Yet Another Compiler-Compiler . Unix Programmer's Manual Vol 2b, 1979. Інтерв’ю Computerworld зі Стівеном Джонсоном про YACC Теорія Lex та Yacc Paper "Parsing Non-LR(k) Grammars with Yacc " by Gary H. Merrill

Версії для різних мов ML-Yacc версія yacc для мови Standard ML. ocamlyacc версія yacc для Objective Caml. CL-Yacc , генератор LALR(1) парсерів для Common Lisp. PLY версія yacc для Python Racc версія yacc для Ruby.