lex en yacc zijn twee fundamentele hulpmiddelen die in het UNIX-besturingssysteem worden gebruikt voor het maken van tekstverwerkingsprogramma's, zoals compilers en tolken.
LEX (Lexical Analyzer Generator) is een programma dat lexicale analysatoren genereert, die verantwoordelijk zijn voor het opsplitsen van een stroom karakters in individuele "tokens". Een lexicale analysator kan bijvoorbeeld woorden, cijfers, leestekens of andere logische eenheden in een tekstbestand herkennen. Het voert de eerste compilatiefase uit door karakterstromen om te zetten in een reeks tokens.
YACC (nog een andere compiler-compiler) is een parsergenerator die parsers maakt, dit zijn programma's die de grammaticale structuur van een reeks tokens kunnen analyseren. Parsers verifiëren de syntaxis van de invoer en construeren een abstracte syntaxisboom (AST) die de structuur van het programma vertegenwoordigt. Deze abstracte weergave wordt vervolgens gebruikt voor verdere compilatie of interpretatie.
Lex en Yacc worden doorgaans samen gebruikt om taalprocessors te bouwen. Het lex-programma genereert een lexicale analysator die de invoertekst tokeniseert, en het yacc-programma genereert een parser die de syntaxis van de getokeniseerde invoer controleert en de AST bouwt. Samen vormen ze een krachtige toolset voor het creëren van verschillende taalverwerkingstoepassingen, waaronder compilers, tolken, teksteditors en meer. |