Está en la página 1de 12

INSTITUTO POLITCNICO NACIONAL ESCUELA SUPERIOR DE CMPUTO

Generador

de Analizadores Lxicos Traductores

JTLEX

Introduccin

Un analizador lxico lee caracteres del archivo de entrada, donde se encuentra la cadena a analizar, reconoce lexemas y retorna tokens. JTLex est basado en el modelo de generadores de analizadores lxicos de Lex.

JTLex tiene una variante, es un generador de analizadores lxicos que acepta una especificacin similar a la aceptada por Lex y crea cdigo Java para el correspondiente analizador.

Una especificacin JTLex permite no slo asociar un procedimiento, o accin, a cada expresin regular, sino tambin a cada ocurrencia de un smbolo dentro de la expresin.

Esquema de Funcionamiento de JTLex

JTLex permite generar un analizador lxico traductor a partir de la especificacin mediante ETLs de los smbolos del lenguaje al que est destinado y sus correspondientes.

Esquema de Funcionamiento de JTLex

JTLex sigue el estilo de Lex, con la variante de que se basa en Expresiones Regulares Traductoras Lineales (ETL).

Una especificacin JTLex permite no slo asociar un procedimiento, o accin, a cada expresin regular, sino tambin a cada ocurrencia de un smbolo dentro de la expresin.

El Lenguaje de Especificacin brindado por JTLex


Seccin Declaraciones la primer seccin de la especificacin se definen macros y directivas de JTLex.

Reglas para Definir los Smbolos del Lenguaje contiene las reglas de anlisis lxico, cada una de las cuales consiste de una accin inicial opcional, una regla
Seccin Cdigo de Usuario es copiada directamente en el archivo de resultante. salida

Componentes Lxicos

Para especificar los componentes lxicos y su semntica se utilizan expresiones regulares cuyos trminos corresponden a pares carcter-accin.

En esencia, la especificacin JTLex consiste de una serie de reglas para dividir la cadena de entrada en tokens.

Componentes Lxicos
Componentes lxicos o tokens, patrones y lexemas

/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */

package compis;
/*Declaracin de variables globales */ { int valor; /* valor del nmero reconocido en base 10 */ int base; /* indica la base */ public void inic() {valor=0;base=10;} public void inic3() { base=3;} public void acumular() { //acumula un dgito en la base dada Integer aux = new Integer(yytextchar()); valor *= base + aux.intValue(); } } /* Tratamiento de Error */ %error{ System.out.print( Error, Lexema no reconocido: +yytext()); System.out.println( Linea: + yyline()); %error} %% /* Declaracin de la expresin regular traductora. Las expresiones se extienden hasta el carcter ; */ { inic();} ( [0-9] { acumular(); } ) + | 0t { inic3();} ( [0-3] { acumular(); } ) + {System.out.println("Valor: "+ valor);break;}

/*

declaracin de usuario */

import java.io.*; import java.lang.System; public class Main { public static void main (String argv[]) { Lexer L; try { L = new Lexer(argv[0]); }catch(Exception e){} int i = 0; while (i!=-1) { i = L.next_token();

} } // Fin del mtodo main }// Fin de la clase Main }

También podría gustarte