Documente Academic
Documente Profesional
Documente Cultură
entonces
5.5 Generadores de
analizadores Lxicos
ANALIZADOR LXICO
GENERADORES DE ANALIZADORES
LXICOS
FLEX
LEX
JTLex
GENERADOR LEX
Es un programa para generar analizadores lxicos (en
ingls scanners o lexers), se utiliza comnmente con el
programa yacc que se utiliza para generar anlisis
sintctico , es el analizador lxico estndar en los
sistemas Unix
Lex toma como entrada una especificacin de analizador
lxico y devuelve como salida el cdigo fuente
implementando
el
analizador
lxico
en
C.
GENERADOR DE LXICO
LEX
Lex genera cdigo fuente en C, a partir de una
serie de especificaciones escritas en lenguaje Lex.
El cdigo C generado contiene una funcin
llamada yylex(), que localiza cadenas en la
entrada (lexemas) que se ajusten a uno de los
patrones lxicos especificados en el cdigo fuente
Lex, realizando entonces las acciones asociadas a
dicho patrn. yylex() puede llevar a cabo
cualquier tipo de acciones, en particular, puede
comportarse como un analizador lxico.
ESQUEMA GENERAL
Un programa fuente de Lex tiene el siguiente aspecto:
<seccin de definiciones>
%%
<seccin de reglas>
%%
<seccin de rutinas>
GENERADOR FLEX
Es una herramienta para la generacin de programas que
realizan concordancia de patrones en texto, es una
herramienta para generar escneres. programas que
reconocen patrones lxicos en un texto, es una reescritura
de la herramienta LEX del Unix de AT&T de las que ambas
conciernen a aquellos que desean escribir analizadores
aceptables por cualquier implementacin.
GENERADOR DE ANALIZADORES
LXICOS JTLex
JTLex en cambio permite expresar conjuntamente
sintaxis y semntica al estilo de los esquemas de
traduccin. A su vez el proceso de computo de atributos
es implementado por JTLex por un autmata finito
traductor con las ventajas de eficiencia que esto supone.
ESQUEMA DE
FUNCIONAMIENTO
Especificacin del Analizador Lxico
Generador de Analizadores Lxicos (JTLex
LENGUAJE DE
ESPECIFICACIN
Debido a que Lex es, quizs, la herramienta ms
conocida entre los generadores de analizadores lxicos,
las especificaciones JTLex, siguen los lineamientos de su
lenguaje de especificacin con las modificaciones
necesarias para implementar el nuevo formalismo. Para
especificar los componentes lxicos y su semntica en
vez de usarse constructores de la forma patrn-accin,
se utilizan expresiones regulares cuyos trminos
corresponden a pares carcter-accin.
GRAMTICA
Declaraciones
%%
Reglas de las Expresiones Regulares Traductoras
Lineales
%%
Cdigo de Usuario
LENGUAJE DE
ESPECIFICACIN
La directiva
%% divide las distintas secciones del archivo de entrada y debe
estar ubicada al comienzo de lnea.
La seccin Declaraciones
la primer seccin de la especificacin permite la incorporacin
de declaraciones que se utilizan en el cdigo del analizador
lxico, tambin permite la definicin de macros los cuales estn
destinados a simplificar la escritura de las expresiones regulares
.
.
Las reglas
de las expresiones regulares consisten de tres partes :
una accin inicial opcional, una Expresin Regular
Traductora Lineal y una accin final. Donde las acciones
iniciales y finales son cdigo Java. Y las expresiones
regulares traductoras lineales asocian acciones a
caracteres. Bsicamente, en una expresin regular
traductora lineal debe existir una nica traduccin para
todos los prefijos posibles. En cada expresin, si existen
prefijos iguales las acciones deben ser las mismas, pero
para expresiones que definen distintos tokens pueden
llegar a ser distintas
Cdigo de Usuario
es copiada directamente en el archivo de salida
resultante. Esta provee espacio para definir e importar
clases que intervengan en la traduccin.