Yacc is a piece of computer software that serves as the standard parser generator on Unix systems. The name is an acronym for "Yet Another Compiler Compiler." It generates a parser (the part of a program that tries to make sense of the input) based on a grammar written in BNF notation. Yacc generates the code for the parser in the C programming language.
Yacc was developed by AT&T for the Unix operating system. Later compatible programs were written, such as Berkeley Yacc, GNU bison, MKS yacc and Abraxas yacc. Each offer slight improvements and additional features over the original Yacc, but the concept has remained the same.
Often Yacc is used in combination with a lexical analyzer, in most cases the lex program. The IEEE POSIX P1003.2 standard defines the functionality and requirements to both Lex and Yacc.