Académique Documents
Professionnel Documents
Culture Documents
Tesis Doctoral
Desarrollo y Evaluacin de Tcnicas de
Construccin de Procesadores de
Lenguaje para Mquinas Abstractas
Orientadas a Objetos
Mara Cndida Luengo Dez
Director: Dr. Juan Manuel Cueva Lovelle
Tesis Doctoral 1
Tesis Doctoral
Contenido
Introduccin
Estudio de los Sistemas Relevantes
Objetivos
El Sistema O2C2
Diseo e Implementacin del Prototipo
Ventajas del Sistema Diseado y Aplicaciones
Conclusiones y Lneas de Investigacin Futuras
Tesis Doctoral 2
Introduccin
Caractersticas
Funcionalidad
Tesis Doctoral 3
Introduccin
Generador de
Procesadores
Tiempo de
generacin
Programa
Fuente
Procesador
Procesador
(Total/Parcial)
(Total/Parcial)
Tiempo de
ejecucin
Programa
Objeto
Tiempo de
compilacin
Tesis Doctoral 4
Introduccin
Generador de
Analizadores
Lxicos
Gramticas
libres de contexto
Gramticas
Atribuidas
Generador de
Analizadores
Sintcticos
Descripcin del
Cdigo Intermedio y
Cdigo Mquina
Generador de
Analizadores
Semnticos
Generador de
Generadores de
Cdigo
Fase de Anlisis
Analizador
Lxico
Programa
Fuente
Analizador
Sintctico
Tokens
Analizador
Semntico
rbol
Sintctico
Optimizador
Optimizador
Generacin
Generacin de
de
cdigo
cdigo
Cdigo
Intermedio
Programa
Objeto
Tesis Doctoral 5
Tesis Doctoral
Contenido
Introduccin
Tesis Doctoral 6
Estudio
Tipo
Anlisis
Leguaje
Generado
Tratamiento
de Errores
Especificaciones
Caractersticas
Destacables
Lex/Yacc
LALR(1)
Malo
BNF / C
Lemon
LALR(1)
Malo
BNF / C
Accent
AE/AP
Malo
BNF / C
Cocktail
LALR(1)
LL(1)
C
Mdulo-2
Regular
BNF / C o Mdula-2
Antlr
LL(K)
C++/Java
Bueno
JavaCC
LL(K)
Java
Bueno
EBNF / Java
Eli
LALR(1)
Regular
Esp. Declarativas
Gentle
LALR(1)
Malo
Spirit
LL-ND
C++
Malo
Esp. en C++
Tesis Doctoral 7
Estudio
Reusabilidad
El hecho de que se mezclen las especificaciones sintcticas y semnticas
(a veces tambin lxicas) hace que sean muy poco reutilizables.
Extensibilidad
La construccin de un procesador exige casi siempre empezar de cero. No
existen mecanismos que permitan aprovechar parte de la implementaciones
existentes para extenderlas con nuevas caractersticas.
Tesis Doctoral 8
Estudio
Mantenimiento
Se incrementa el esfuerzo necesario para poder depurar los errores cometidos.
La duplicacin del cdigo deja al programador la responsabilidad de mantener
actualizados el fichero de especificaciones y el programa resultante.
Tesis Doctoral 9
Inconvenientes Derivados
Estudio
Uso no intuitivo.
Tesis Doctoral 10
Estudio
Solucin
Construccin de un sistema en el que se apliquen los principios de
diseo e implantacin del paradigma de orientacin a objetos
integrando Frameworks y Patrones como mtodos de diseo.
El sistema tendr una estructura modular, en la cual
determinados componentes podrn ser identificados y
reutilizados.
Beneficios
Tesis Doctoral 11
Tesis Doctoral
Contenido
Introduccin
Estudio de los Sistemas Relevantes
Objetivos
El Sistema O2C2
Diseo e Implementacin del Prototipo
Ventajas del Sistema Diseado y Aplicaciones
Conclusiones y Lneas de Investigacin Futuras
Tesis Doctoral 12
Objetivos
Objetivos Fundamentales
Descripcin de un sistema de soporte en la construccin de
procesadores de lenguaje, que facilite el desarrollo e implementacin
de los lenguajes de programacin, y la reutilizacin de diferentes tareas
relacionadas con la programacin de una forma rpida y sencilla.
Aplicacin de Tecnologas Orientadas a Objetos basadas en Frameworks
para la construccin de Generadores de Procesadores de Lenguajes.
Empleo de un modelo de objetos uniforme y homogneo, para
estructurar la funcionalidad del sistema.
Valoracin cualitativa del modelo diseado y las principales tcnicas
utilizadas para la construccin de procesadores de lenguajes.
Tesis Doctoral 13
Objetivos
Metalenguaje sencillo
Fcil de aprender y de utilizar.
Generacin de AST
Tesis Doctoral 14
Objetivos
Permita que las distintas herramientas que integran el sistema puedan interactuar
sin la intervencin del usuario.
Plataforma de desarrollo
Soporte a la experimentacin .
Tesis Doctoral 15
Tesis Doctoral
Contenido
Introduccin
Objetivos
El Sistema O2C2
Arquitectura
Funcionalidad proporcionada
Tesis Doctoral 16
El Sistema O2C2
Arquitectura
Entorno Visual
Metalenguaje
Acciones
Semnticas
Sistema Generador
de
Procesadores de Lenguajes
Procesador
de
Lenguaje
Tesis Doctoral 17
El Sistema O2C2
Funcionalidad proporcionada
Entorno Visual
Proporcionar una interfaz usable y completa.
Permitir una interaccin eficiente con el sistema generador.
Incorporar un conjunto de herramientas que faciliten las tareas de
desarrollo.
Sistema Generador
Transformar el metalenguaje y las acciones semnticas en un procesador de
lenguaje.
Integrar y encapsular las fases de construccin para facilitar el desarrollo de
las aplicaciones.
Tesis Doctoral 18
Concisin en la representacin
Adaptabilidad y tutorialidad
Completitud funcional
En la visualizacin
Tesis Doctoral 19
Funcionalidad Bsica
Definir el conjunto de reglas de la especificacin gramatical
y comprobar su adecuacin en base al tipo de anlisis.
Editor
Depurador
Visualizador
Tesis Doctoral 20
Anlisis Lxico
Anlisis Sintctico
Anlisis Semntico
Gestor de errores
Gen. Cdigo Intermedio
Mdulos adicionales
Anlisis
Lxico
Gestor de
errores
Anlisis
Semntico
Generacin
Cdigo
Intermedio
Tesis Doctoral 21
Tesis Doctoral 22
Framework Genrico
Lexer
Interfaz del
framework
Scanner
Input
Scan
Proporciona los
caracteres de
la entrada
Organiza los
objetos Scan
Clase abstracta
de los objetos
reconocedores
Tesis Doctoral 23
Objetos marcados
Objetos Scan
Caracteres
de entrada
...
Tesis Doctoral 24
Tesis Doctoral 25
Tesis Doctoral 26
Error
Listener
Parser
Interfaces del
framework
Gramtica en
notacin EBNF
Analizador sintctico
Tesis Doctoral 27
Listener
(Analizador sintctico)
Clases de usuario
Tesis Doctoral 28
Objeto Fuente
Listener 1
Listener 2
Listener 3
Listener 1
Listener 2
Listener 3
Listener 4
La lista de listener
registrados, es mantenida
en el objeto fuente
Evento no transmitido al
listener 4
Tesis Doctoral 29
Tesis Doctoral 30
Tesis Doctoral 31
Fcil de utilizar
Se aplican conceptos ampliamente extendidos para no incrementar el
aprendizaje del sistema.
El modelo orientado a objetos aplicado se basa en el mecanismo Listener y las
excepciones.
Tesis Doctoral 32
Error
Clases de usuario
Tesis Doctoral 33
Tesis Doctoral 34
Tesis Doctoral
Contenido
Introduccin
Objetivos
El Sistema O2C2
Tesis Doctoral 35
Prototipo
O2C2rt
O2C2xml
O2C2
O2C2Conv
O2C2ui
Tesis Doctoral 36
Prototipo
Ncleo
del prototipo
void parse()
NodeChoice
NodeOptional
NodeSeq
void parse()
void parse()
void parse()
NodeSeqOptional
void parse()
NodeToken
void parse()
Node. auxiliares
Clase raz del framework.Todos los elementos de una gramtica derivan de esta clase y se convierten en
Clases
nodos del AST creado.
hacer
interfaz
entrepara
el tratar
ncleo
y el resto de
dependen del lenguaje
Permiten
NodeChoice
. Sede
crea
una subclase
las producciones
de las
cadaclases
smboloque
no terminal.
NodeOptional. Es la superclase de las clases que tratan elementos de la gramtica cuya aparicin en los
Parser
programas no es obligatoria.
Lexer . Las subclases representan las producciones de los diferentes smbolos no terminales.
NodeSeq
Listener
NodeSeqOptional
. Las subclases representan las repeticiones mltiples de elementos gramaticales.
ErrorListener La existencia de estos elementos es opcional.
NodeToken. No tiene subclases. Representa los tokens del AST generado.
Tesis Doctoral 37
Prototipo
Implementacin (I)
Metagramtica1
CUP
Analizador Sintctico
Generado por CUP 2
Gramtica
EBNF
Prototipo O2C2
Analizador Lxico
Generado por JFlex
Metagramtica
(Notacin EBNF)
Analizador Sintctico
Generado por CUP 2
Framework
3
Especfico
O2C2
Clases
Semnticas
1
GramticaquedescribeaotrasgramticasennotacinEBNF
ProgramaqueconvierteunagramticaennotacinEBNFenun
programa(analizadorsintctico).
3
Generador de analizadores sintcticos construido con el prototipo
Tesis Doctoral 38
Prototipo
Implementacin (II)
Prototipo
Framework O2C2
Generador de
Analizadores Sintcticos
JFLEX (externo)
Gramtica
EBNF
Tabla de Smbolos
Tesis Doctoral 39
Prototipo. Implementacin
No facilita la modularidad.
No permite una separacin clara entre el cdigo generado por el sistema
y el cdigo proporcionado por el usuario.
Tesis Doctoral 40
Prototipo. Implementacin
Tesis Doctoral 41
Prototipo. Implementacin
void parse()
NodeChoice
NodeSeq
NodeSeqOptional
NodeToken
Se debe conocer ante qu clases del sistema se tienen que registrar las clases creadas
por el usuario (clases Listeners) para tratar los eventos.
void parse()
void parse()
void parse()
void parse()
void parse()
<S>
NodeOptional
op
El usuario<op>
seala ::=
nicamente
las partes de "
la gramtica
que van a recibir tratamiento
+ "addition
| - "subtraction"
|
* "multiplication"
| / Las
"division"
semntico dando nombres
a las secciones que le interesen.
clases creadas por el
number
addition
subtraction
multiplication
division
usuario se<num>
tiene que::=
registrar
ante
las
clases
que
representan
dichos
enlaces.
DIGIT {DIGIT} "number" ;
multiplication
numberEBNF0
Tesis Doctoral 42
Prototipo. Implementacin
Tesis Doctoral 43
Prototipo. Implementacin
:S
: SListener
PerformAction( )
getValue()
user_code( )
setValue( )
Tesis Doctoral 44
Prototipo. Implementacin
Tratamiento de errores
El mecanismo de deteccin, tratamiento y recuperacin de errores
est incluido en el subsistema O2C2rt.
El usuario puede crear clases especficas para tratar los errores. Se necesita:
Implementar la interfaz Errorlistener incluyendo el mtodo
Boolean TreatError (MismatchedTokenException e)
Jerarqua de excepciones
InternalException
ParserException
SemanticException
MismatchedTokenException
LexerException
Tesis Doctoral 45
Prototipo. Implementacin
Tesis Doctoral 46
Prototipo
Implementacin
Se ha utilizado el
propio prototipo para
construir cada uno
de los analizadores
que intervienen en la
implementacin
Tesis Doctoral 47
Tesis Doctoral
Contenido
Introduccin
Estudio de los Sistemas Relevantes
Objetivos
El Sistema O2C2
Diseo e Implementacin del Prototipo
Tesis Doctoral 48
Ventajas y aplicaciones
En un sistema generador
Tesis Doctoral 49
Ventajas y aplicaciones
Anlisis Ascendente
Generador
Yacc
Anlisis Descendente
Gramtica (EBNF)
Prog := { fun }
fun := ID {stmt }
stmt := ...
Sistema
O2C2
Parser.Java
Framework
s,x
s,x
Ciclo
O2C2rt (class
...)
Listeners
class ...
Parser.c
Entrada
Text
(text)
Compilador C
Procesador de
Leguaje
Salida
Text
xx yyy
0100111
Entrada
Compilador
Java
Text
(text)
Salida
Ciclo
Text
xx yyy
0100111
Procesador de
Lenguaje
Tesis Doctoral 50
Ventajas y aplicaciones
Aceptacin
- Facilidad de aprendizaje al estar basado en un conjunto uniforme de conceptos.
- Fcil de utilizar.
Diseo abierto
Permite incorporar
nuevas capacidades
Tesis Doctoral 51
Ventajas y aplicaciones
Aplicaciones
Plataforma de experimentacin
- Permite la descripcin de diferentes definiciones formales de lenguajes de
programacin usando la generacin automtica de procesadores de lenguaje
de una forma simple y rpida.
- Soporte en el plano educacional y comercial.
Tesis Doctoral 52
Tesis Doctoral
Contenido
Introduccin
Estudio de los Sistemas Relevantes
Objetivos
El Sistema O2C2
Diseo e Implementacin del Prototipo
Ventajas del Sistema Diseado y Aplicaciones
Tesis Doctoral 53
Conclusiones
Caractersticas (I)
Modularidad
Extensibilidadad
Reusabilidad
Mantenimiento
Tesis Doctoral 54
Conclusiones
Caractersticas (II)
Ciclo de
desarrollo corto
Entorno visual
Integracin flexible
Tesis Doctoral 55
Conclusiones
Facilidad de aprendizaje
Sistema basado en un pequeo grupo de conceptos.
Eficiencia
Permite realizar de una forma cmoda y eficiente el trabajo de desarrollar
un procesador de lenguaje.
Tesis Doctoral 56
Conclusiones
Satisfaccin
Las especificaciones son simples, el comportamiento del propio sistema y de los
procesadores generados en fcil de entender y los conceptos que usa son conocidos.
Retencin de ideas
La abstraccin proporcionada por el sistema es adecuada. Libera al usuario de tener
que tratar con muchos datos de forma simultnea y ocuparse de muchos detalles.
Tesis Doctoral 57
Antlr
Cocktail
Eli
Gentle
Tra
erro tamien
t
res
efic o de
az
Accent
Conclusiones
Cic
des lo de
cor arrollo
to
Ent
de d orno v
esar isua
roll l
o
Gen
erad
or to
tal
Generador de
Procesadores
de Lenguajes
Mo
dul
ari
dad
Reu
sab
ilid
ad
Ex
ten
sib
ilid
ad
Ma
nte
nin
im
ien
to
Comparacin cualitativa
JavaCC
Lemon
Lex/Yacc
ProGrammar
SableCC
Spirit
Sistema O2C2
Tesis Doctoral 58
Conclusiones
Tesis Doctoral 59
Conclusiones
Luengo Dez M. C., Labra Gayo J. E., Dominguez Mateos F., Prez Daz A., Garca
Fernndez N., Cueva Lovelle J. M. Desarrollo de Compiladores en un Sistema
Integral Orientado a Objetos. V Congreso Internacional de Investigacin en
Ciencias Computacionales CIICC98. Mexico, Noviembre 1998.
Basanta D., Luengo M.C., Izquierdo R., Labra J. E., Cueva J. M. Constructing
Language Processors using Object-Oriented Techniques. 6th International
Conference on Object Oriented Information Systems (OOIS 2000). London-UK,
Diciembre 2000.
D. Basanta, M.C. Luengo, R. Izquierdo, J.E. Labra, J.M. Cueva. Improving the
quality of compiler construction with object-oriented techniques. ACM SIGPLAN.
Volumen 35, Nmero 12. Pg. 41-51. Diciembre 2000.
Tesis Doctoral 60
Conclusiones
Luengo M.C., Labra J. E., Cueva J.M., Garca N., Basanta D. Building
Compiler Tools using Frameworks. SISOFT 2001: Simposio
Iberoamericano de Sistemas de Informacin e Ingeniera de Software
en la Sociedad del Conocimiento. Bogota Colombia, Agosto 2001.
Luengo M. C., Cueva J.M., Labra J. E., Garca N., Basanta D. Applying Frameworks
and Object-Oriented Techniques for developing Language Processors Tools.
Primeras Jornadas sobre Programacin y Lenguajes. Almagro Ciudad Real,
Noviembre 2001.
Luengo M. C., Labra J. E., Garca N., Cueva J. M, Basanta D. O2C2: A Framework
Generator for Object-Oriented Language Processors Development. 4 Volume books
on Software Architectures, PLAS, Components and Enterprise Framework (Pendiente
de aceptacin)
http://www.cse.unl.edu/~fayad/Books/NewBooks/scripts/user/chapters.php3
Tesis Doctoral 61
Tesis Doctoral
Desarrollo y Evaluacin de Tcnicas de
Construccin de Procesadores de Lenguaje para
Mquinas Abstractas Orientadas a Objetos
Fin de la Exposicin
(c) Mara Cndida Luengo Dez
Junio 2002
Tesis Doctoral 62