Lex es un programa de computadora que genera analizadores léxicos y fue escrito por Mike Lesk y Eric Schmidt. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lex en el lenguaje de programación C.
En C, un identificador debe comenzar con un alfabeto o un guión bajo, no puede comenzar con un dígito o cualquier otro carácter especial, además, los dígitos pueden ir después.
Ejemplo:
gfg : valid identifier 123 : invalid identifier _abc12 : valid identifier #abc : invalid identifier
Veamos el programa lex para determinar si la entrada es un identificador o no.
/*lex code to determine whether input is an identifier or not*/ % { #include <stdio.h> % } / rule section % % // regex for valid identifiers ^[a - z A - Z _][a - z A - Z 0 - 9 _] * printf("Valid Identifier"); // regex for invalid identifiers ^[^a - z A - Z _] printf("Invalid Identifier"); .; % % main() { yylex(); }
Producción: