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.
Tokens: Un token es un grupo de caracteres que forman un fragmento atómico básico de sintaxis, es decir, un token es una clase de lexemas que coincide con un patrón. Por ejemplo: palabras clave, identificador, operador, separador.
Ejemplo:
Input: int p=0, d=1, c=2; Output: total no. of tokens = 13
A continuación se muestra la implementación de la explicación anterior:
/*Lex code to count total number of tokens */ %{ int n = 0 ; %} // rule section %% //count number of keywords "while"|"if"|"else" {n++;printf("\t keywords : %s", yytext);} // count number of keywords "int"|"float" {n++;printf("\t keywords : %s", yytext);} // count number of identifiers [a-zA-Z_][a-zA-Z0-9_]* {n++;printf("\t identifier : %s", yytext);} // count number of operators "<="|"=="|"="|"++"|"-"|"*"|"+" {n++;printf("\t operator : %s", yytext);} // count number of separators [(){}|, ;] {n++;printf("\t separator : %s", yytext);} // count number of floats [0-9]*"."[0-9]+ {n++;printf("\t float : %s", yytext);} // count number of integers [0-9]+ {n++;printf("\t integer : %s", yytext);} . ; %% int main() { yylex(); printf("\n total no. of token = %d\n", n); }
Producción:
Publicación traducida automáticamente
Artículo escrito por kanugargng y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA