LEX (Generador de analizadores léxicos) es un programa que genera analizadores léxicos, que son responsables de dividir un flujo de caracteres en "tokens" individuales. Por ejemplo, un analizador léxico podría reconocer palabras, números, signos de puntuación u otras unidades lógicas en un archivo de texto. Realiza la primera etapa de compilación convirtiendo secuencias de caracteres en una secuencia de tokens.
YACC (Otro compilador más) es un generador de analizadores que crea analizadores, que son programas que pueden analizar la estructura gramatical de una cadena de tokens. Los analizadores verifican la sintaxis de la entrada y construyen un árbol de sintaxis abstracta (AST) que representa la estructura del programa. Esta representación abstracta se utiliza luego para una mayor compilación o interpretación.
Lex y Yacc normalmente se usan juntos para construir procesadores de lenguaje. El programa lex genera un analizador léxico que tokeniza el texto de entrada y el programa yacc genera un analizador que verifica la sintaxis de la entrada tokenizada y construye el AST. Juntos, forman un poderoso conjunto de herramientas para crear diversas aplicaciones de procesamiento de lenguaje, incluidos compiladores, intérpretes, editores de texto y más.