 Among the earliest programs of the original Unix versions being built at Bell Labs was the two-part lex and yacc system, which was normally used to output C programming language code, but had a flexible output system that could be used for everything from programming languages to text file conversion.Their modern GNU versions are flex and bison.Some experimental compiler-compilers take as input a formal description of programming language semantics, typically using denotational semantics.