Código Lex para contar el número total de tokens

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *