Grammars for yacc are described using a variant of Backus Naur Form (BNF).
This technique was pioneered by John Backus and Peter Naur.
A BNF grammar can be used to express context-free languages.
Most constructs in modern programming languages can be represented in BNF.