Desarrollo y Evaluaci - PowerPoint PPT Presentation

About This Presentation
Title:

Desarrollo y Evaluaci

Description:

Universidad de Oviedo - Departamento de Inform tica Tesis Doctoral Desarrollo y Evaluaci n de T cnicas de Construcci n de Procesadores de Lenguaje para M quinas ... – PowerPoint PPT presentation

Number of Views:70
Avg rating:3.0/5.0
Slides: 63
Provided by: YO75
Category:

less

Transcript and Presenter's Notes

Title: Desarrollo y Evaluaci


1
Desarrollo y Evaluación de Técnicas de
Construcción de Procesadores de Lenguaje para
Máquinas Abstractas Orientadas a Objetos
Universidad de Oviedo - Departamento de
Informática
Tesis Doctoral
  • María Cándida Luengo Díez
  • Director Dr. Juan Manuel Cueva Lovelle

2
Tesis Doctoral
Contenido
?
  • Introducción
  • Introducción
  • Estudio de los Sistemas Relevantes
  • Objetivos
  • El Sistema O2C2
  • Diseño e Implementación del Prototipo
  • Ventajas del Sistema Diseñado y Aplicaciones
  • Conclusiones y Líneas de Investigación Futuras

3
IntroducciónGeneradores de Procesadores
Características
  • Un Procesador de Lenguaje es una función cuyo
    dominio es un lenguaje fuente y cuyo rango está
    contenido en un lenguaje objeto Ter00
  • Un Generador de Procesadores de Lenguajes es un
    programa que transforma una especificación en un
    procesador para el lenguaje de programación
    descrito en la especificación GH98

- Fácil de leer, aprender y usar
- Integrado
Metalenguaje
- Construcciones sencillas
Características
- Robusto
Funcionalidad
- Eficiente
- Extensible
Documentación
- Permite la descripción del sistema generador
4
IntroducciónGeneradores de Procesadores
Estructura
Generador de Procesadores
Metalenguaje
Tiempo de generación
Tiempo de ejecución
Procesador (Total/Parcial)
Programa Fuente
Programa Objeto
Tiempo de compilación
5
IntroducciónGeneradores de Procesadores
Clasificación
Metalenguajes
Expresiones regulares
Gramáticas Atribuidas
Gramáticas libres de contexto
Descripción del Código Intermedio y Código
Máquina
Generador de Analizadores Sintácticos
Generador de Analizadores Léxicos
Generador de Analizadores Semánticos
Generador de Generadores de Código
Generador Fase de Análisis
Fase de Análisis
Analizador Léxico
Analizador Sintáctico
Analizador Semántico
Optimizador
Generación de código
Código Intermedio
Programa Objeto
Tokens
Programa Fuente
Árbol Sintáctico
6
Tesis Doctoral
Contenido
  • Introducción
  • Estudio de los Sistemas Relevantes
  • Objetivos
  • El Sistema O2C2
  • Diseño e Implementación del Prototipo
  • Ventajas del Sistema Diseñado y Aplicaciones
  • Conclusiones y Líneas de Investigación Futuras

?
7

EstudioEstudio de los sistemas relevantes
Nombre Tipo Análisis Leguaje Generado Tratamiento de Errores Especificaciones Características Destacables
Lex/Yacc LALR(1) C Malo BNF / C Falta integración A. Léxico y Sintáctico No genera ASTs Ciclo de desarrollo largo
Lemon LALR(1) C Malo BNF / C - Misma estructura y modo de operar de Yacc
Accent AE/AP C Malo BNF / C Ciclo de desarrollo largo No genera ASTs
Cocktail LALR(1) LL(1) C Módulo-2 Regular BNF / C o Módula-2 - Ciclo de desarrollo largo Falta integración A. Léxico y Sintáctico Características de los generadores clásicos
Antlr LL(K) C/Java Bueno EBNF / Java o C Flexibilidad de predicados costosa Ciclo de desarrollo largo
JavaCC LL(K) Java Bueno EBNF / Java Herramienta externa para generar ASTs Ciclo de desarrollo largo
Eli LALR(1) C Regular Esp. Declarativas Conjunto amplio de especificaciones Falta de uniformidad en las especificac.
Gentle LALR(1) C Malo Esp. Alto Nivel Añade una capa más de especificaciones Utiliza internamente Lex/Yacc
Spirit LL-ND C Malo Esp. en C - Técnica Template metaprogramming para generar analizadores sintácticos
8

Estudio Problemática con los sistemas actuales
(I)
  • Mezcla de especificaciones y acciones semánticas
  • Dificulta la legibilidad y mantenimiento de
    código.
  • Incrementa la complejidad ya que es más difícil
    comprender la estructura y el sentido de una
    especificación gramatical.
  • Reusabilidad
  • El hecho de que se mezclen las especificaciones
    sintácticas y semánticas (a veces también
    léxicas) hace que sean muy poco reutilizables.
  • Se dificulta la incorporación de nuevas
    características a un determinado lenguaje.
    Extenderlo requeriría realizar muchas
    adaptaciones.
  • Extensibilidad
  • La construcción de un procesador exige casi
    siempre empezar de cero. No existen
    mecanismos que permitan aprovechar parte de la
    implementaciones existentes para extenderlas
    con nuevas características.

9
Estudio Problemática con los sistemas actuales
(II)
  • Modularidad
  • Existen muchas interdependencias. Es necesario
    realizar cambios en la especificación aunque
    no cambie la gramática.
  • Cualquier cambio realizado en el código de las
    acciones implica volver a procesar el fichero
    de especificaciones. Este proceso es ineficiente,
    complica y aumenta el ciclo de desarrollo de
    aplicaciones.
  • Mantenimiento
  • Se incrementa el esfuerzo necesario para poder
    depurar los errores cometidos.
  • La duplicación del código deja al programador
    la responsabilidad de mantener actualizados
    el fichero de especificaciones y el programa
    resultante.
  • Entornos visuales de desarrollo
  • No incorporan un entorno integrado de
    desarrollo que permita la construcción de
    procesadores con el menor esfuerzo posible.
  • No se integran de manera sencilla en los
    diferentes entornos de desarrollo de
    aplicaciones.

10
Estudio
Inconvenientes Derivados
  • Limitan su funcionalidad ofreciendo diferentes
    opciones y añadiendo complejidad en las
    especificaciones de entrada.
  • Analizadores generados difíciles de depurar.
  • El ciclo de desarrollo es largo.
  • Falta de integración entre las herramientas y
    en los
  • denominados entornos de desarrollo.
  • Uso no intuitivo.

11

Estudio
Solución
  • Construcción de un sistema en el que se
    apliquen los principios de diseño e implantación
    del paradigma de orientación a objetos integrando
    Frameworks y Patrones como métodos de diseño.
  • El sistema tendrá una estructura modular, en
    la cual determinados componentes podrán ser
    identificados y reutilizados.

Beneficios
  • El sistema podrá ser configurado mediante la
    extensibilidad para unas necesidades
    específicas, asegurando nuevas
    características y servicios o para cumplir
    determinadas restricciones. De esta forma se
    facilita el mantenimiento.

12
Tesis Doctoral
Contenido
  • Introducción
  • Estudio de los Sistemas Relevantes
  • Objetivos
  • El Sistema O2C2
  • Diseño e Implementación del Prototipo
  • Ventajas del Sistema Diseñado y Aplicaciones
  • Conclusiones y Líneas de Investigación Futuras

?
13

Objetivos
Objetivos Fundamentales
  • Descripción de un sistema de soporte en la
    construcción de procesadores de lenguaje, que
    facilite el desarrollo e implementación de los
    lenguajes de programación, y la reutilización de
    diferentes tareas relacionadas con la
    programación de una forma rápida y sencilla.
  • Aplicación de Tecnologías Orientadas a
    Objetos basadas en Frameworks para la
    construcción de Generadores de Procesadores de
    Lenguajes.
  • Empleo de un modelo de objetos uniforme y
    homogéneo, para estructurar la funcionalidad del
    sistema.
  • Valoración cualitativa del modelo diseñado y
    las principales técnicas utilizadas para la
    construcción de procesadores de lenguajes.

14

Objetivos
Objetivos Relativos a la Construcción (I)
  • Incorporar Técnicas Orientadas a Objetos
  • Los objetos proporcionan modularidad y
    encapsulación.
  • Los sistemas son más fáciles de reutilizar,
    extender y mantener.
  • La comunicación entre los distintos grupos de
    objetos se puede realizar a través de las
    interfaces ofrecidas por los frameworks.

  • Metalenguaje sencillo
  • Fácil de aprender y de utilizar.
  • Integrado con las diferentes notaciones
  • No permita cometer errores fácilmente.
  • Tratamiento y recuperación de errores
  • Permitir que los usuarios puedan localizar y
    corregir los errores.
  • Incorporar código especializado para el
    tratamiento de los errores.
  • Permitir que el sistema se recupere y pueda
    seguir su proceso.
  • Generación de AST

15
Objetivos
Objetivos Relativos a la Construcción (II)
  • Usabilidad
  • Incorpore un nivel de abstracción adecuado para
    la retención de ideas.
  • Sea fácil de utilizar.
  • Ofrezca un buen grado de satisfacción por parte
    del usuario.
  • Entorno visual de desarrollo
  • Incorpore un conjunto de herramientas para
    facilitar el desarrollo rápido de
    aplicaciones sin demasiado esfuerzo,
    automatizando todo lo posible el proceso de
    construcción de procesadores de lenguajes.
  • Permita que las distintas herramientas que
    integran el sistema puedan interactuar sin la
    intervención del usuario.
  • Plataforma de desarrollo
  • Soporte a la experimentación .
  • Permita la portabilidad de las aplicaciones.
  • Sea flexible para conseguir que la
    funcionalidad del sistema esté disponible en
    forma de API.

16
Tesis Doctoral
Contenido
  • Introducción
  • Estudio de los Sistemas Relevantes
  • Objetivos
  • El Sistema O2C2
  • Arquitectura
  • Funcionalidad proporcionada
  • Diseño e Implementación del Prototipo
  • Ventajas del Sistema Diseñado y Aplicaciones
  • Conclusiones y Líneas de Investigación Futuras

?
17

El Sistema O2C2
Arquitectura
18

El Sistema O2C2
Funcionalidad proporcionada
Entorno Visual
  • Proporcionar una interfaz usable y completa.
  • Permitir una interacción eficiente con el
    sistema generador.
  • Incorporar un conjunto de herramientas que
    faciliten las tareas de desarrollo.

Sistema Generador
  • Transformar el metalenguaje y las acciones
    semánticas en un procesador de
  • lenguaje.
  • Integrar y encapsular las fases de construcción
    para facilitar el desarrollo de
  • las aplicaciones.

19
El Sistema O2C2. Funcionalidad
Entorno visual (I)
  • Características del entorno
  • Transparencia

Dar a conocer lo que sucede en todo momento en el
sistema
  • Concisión en la representación

En las opciones y en la información al usuario
  • Adaptabilidad y tutorialidad

En las preferencias y el contexto actual
  • Completitud funcional

Proporcionar toda la funcionalidad del sistema
  • Soporte de diferentes niveles de abstracción

En la visualización
  • Independencia en las acciones

Funciones y semántica coherente en cada
situación.
  • Integración

Un solo entorno para el análisis léxico,
sintáctico y semántico
  • Soporte para el desarrollo

Flexibilizar la estructura de los proyectos
20

El Sistema O2C2. Funcionalidad
Entorno visual (II)
  • Funcionalidad Básica

Definir el conjunto de reglas de la
especificación gramatical y comprobar su
adecuación en base al tipo de análisis.
Definir el conjunto de tokens que conforman el
léxico del lenguaje.
Editor
Establecer las acciones semánticas asociadas a
las secciones gramaticales.
Incorporar un módulo de definición de clases de
forma que una clase descrita visualmente tenga
su descripción textual y viceversa.
Depurador
Permitir detectar y corregir fácilmente los
errores producidos.
Visualizador
Conocer los datos, las estructuras internas y los
objetos que forman el AST.
21
El Sistema O2C2. Funcionalidad
Sistema Generador (I)
  • Módulos básicos

Análisis Sintáctico
  • Análisis Léxico
  • Análisis Sintáctico
  • Análisis Semántico
  • Gestor de errores
  • Gen. Código Intermedio

Análisis Léxico
Análisis Semántico
Gestor de errores
Generación Código Intermedio
  • Módulos adicionales
  • Optimización de código Intermedio
  • Generación de Código

22
El Sistema O2C2. Sistema Generador
Análisis Léxico (I)
Problemática
  • El uso de expresiones regulares oscurece el
    formato de los
  • símbolos tratados dificultando su
    entendimiento.
  • Algunos problemas de reconocimiento son
    difíciles de resolver
  • usando expresiones regulares.
  • El ciclo de desarrollo edición, generación y
    compilación debe
  • ser repetido para corregir, cambiar o
    extender el analizador léxico

23
El Sistema O2C2. Sistema Generador
Análisis Léxico (II)
Modelo Orientado a Objetos
Framework Genérico
  • La comunicación entre las clases del framework
    y las
  • clases de usuario se realiza a través de la
    interfaz Lexer.

Lexer
  • Los objetos pueden reconocer los distintos
    símbolos
  • del lenguaje (identificadores, cadenas, etc).

Scanner
Input
Scan
Interfaz del framework
  • Se seleccionan los objetos para realizar un
  • análisis específico sin preocuparse del
  • reconocimiento llevado a cabo de forma
    individual.

Proporciona los caracteres de la entrada
Organiza los objetos Scan
Clase abstracta de los objetos reconocedores
  • El usuario puede extenderlos o incorporar
  • otros objetos diferentes.

24
El Sistema O2C2. Sistema Generador
Análisis Léxico (III)
Reconocimiento
Objetos marcados
Objetos Scan
Caracteres de entrada
...
El objeto Scanner invoca al método yylex() del
objeto suscrito para realizar la acción
correspondiente
Objeto que reconoce la secuencia más larga
  • Si existen varios objetos se elige el primero
    que se haya localizado.
  • Para optimizar la búsqueda del objeto ganador
    se indexa esta búsqueda
  • por el primer carácter del símbolo ya que es
    significativo de su tipo.

25
El Sistema O2C2. Sistema Generador
Análisis Léxico (IV)
Ventajas del modelo
  • Los objetos encapsulan su estado simplificando
    el reconocimiento individual.
  • Permite la creación de clases que pueden ser
    usadas para especializar a otras
  • existentes sin necesidad de acceder al código
    fuente.
  • Las clases pueden ser utilizadas por
    diferentes analizadores léxicos.
  • Los objetos que representan las distintas
    acciones pueden ser reemplazados
  • en un momento determinado por otros
    diferentes para atender otras necesidades.

26
El Sistema O2C2. Sistema Generador
Análisis Sintáctico (I)
Modelo Orientado a Objetos
Framework
  • Clases que conforman el núcleo del framework.
  • Son clases comunes a todos los frameworks
    generados
  • por el sistema.
  • La jerarquía de clases opera con los
    diferentes elementos
  • que forman parte de la descripción de una
    gramática.
  • Clases que completan al núcleo e incorporan
  • características específicas del lenguaje.
  • Se genera una clase para cada elemento no
    terminal,
  • para cada producción y elemento de tipo
    EBNF.
  • Las clases son descendientes de las interfaces
    y clases
  • que componen el núcleo del framework.

27
El Sistema O2C2. Sistema Generador
Análisis Sintáctico (II)
Análisis
Parser
Error
Listener
Interfaces del framework
  • La utiliza el núcleo del sistema para
  • manejar la clase principal del
  • analizador sintáctico generado.
  • Debe ser implementada por todos los
  • procesadores de lenguaje generados.
  • El método parser() inicializa el proceso
  • de análisis.
  • Se encarga de inicializar objetos antes
  • de comenzar el análisis sintáctico.

Gramática en notación EBNF
Tipo de análisis
Analizador sintáctico
  • - Ascendente
  • Descendente
  • No determinista

28
El Sistema O2C2. Sistema Generador
Análisis Semántico (I)
Clases generadas por el sistema
Modelo Orientado a Objetos
  • Las clases con el código semántico necesario
  • para completar el procesador de lenguaje
  • generado, estarán separadas de las clases
  • generadas por el sistema.

Listener
(Analizador sintáctico)
  • La comunicación con las clases sintácticas se
  • realiza a través de la interfaz Listener.
  • La clases de usuario actúan como listeners y se
    deben
  • suscribir ante ciertas clases sintácticas
    para que sean notificadas
  • al reconocer determinadas secciones
    gramaticales.

Clases de usuario
29
El Sistema O2C2. Sistema Generador
Análisis Semántico (II)
  • Cada vez que se produce un evento,
  • el objeto fuente invoca un método
  • con el objeto listener para que pueda
  • realizar el tratamiento correspondiente.
  • Una clase sintáctica puede tener
  • varias clases de usuario suscritas y
  • una misma clase que actúa como
  • listener puede estar suscrita a eventos,
  • de varias clases sintácticas, el modelo
  • no impone restricciones en este
  • sentido.

30
El Sistema O2C2. Sistema Generador
Análisis Semántico (III)
Ventajas del modelo
  • Evita que las acciones semánticas estén
    mezcladas con los elementos
  • que describen la gramática del lenguaje.
  • Se facilita la modularidad del sistema.
  • Se mejora el nivel de reconocimiento de los
    analizadores deterministas que
  • aplican el tipo de análisis LR.
  • Permite la reutilización del código semántico.
  • Una clase semántica puede estar asociada a
    varios eventos sintácticos.
  • Varias clases semánticas pueden ser utilizadas
    en diferentes analizadores sintácticos.
  • Un grupo de clases de usuario que opera con una
    estructura sintáctica determinada
  • puede ser reutilizada en cualquier lenguaje
    que incluya dicha estructura.

31
El Sistema O2C2. Sistema Generador
Análisis Semántico (IV)
Ventajas del modelo (Continuación)
  • Una gramática puede ser utilizada con
    conjuntos de clases de usuario
  • diferentes.
  • Un objeto de usuario puede activar o
    desactivar su suscripción en tiempo
  • de ejecución en función de las
    circunstancias del análisis.
  • Cualquier cambio realizado en la
    especificación sintáctica no alteraría el
  • contenido semántico de las clases.
  • Los compiladores que trabajan con varias
    pasadas pueden ser desarrollados
  • con facilidad activando o desactivando la
    suscripción de clases.

32
El Sistema O2C2. Sistema Generador
Gestor de Errores (I)
Objetivos
  • ? Completo
  • Detectar todos los errores producidos durante
    el proceso de análisis.
  • Proporcionar mecanismos para la recuperación
    del sistema.
  • Adoptar un tratamiento adecuado.
  • ? Fácil 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.

33
El Sistema O2C2. Sistema Generador
Gestor de Errores (II)
Implementación del modelo
Clases generadas por el sistema
  • Se utiliza una jerarquía de clases para dar
    tratamiento
  • a los diferentes errores que puedan producirse
  • ( léxico, sintáctico, semántico, interno, etc).

Error
  • Cuando se produce una excepción, si el usuario
    ha
  • demostrado interés en tratar el error, se cede
    el control
  • a las clases suscritas para ese tipo de
    evento. Si no hay clases
  • registradas, la excepción sería tratada en
    otro punto por defecto.

(Analizador sintáctico)
  • La comunicación de las clases creadas por el
    usuario con las
  • clases del sistema se realiza a través de la
    interfaz Error.

Clases de usuario
34
El Sistema O2C2. Sistema Generador
Generación Código Intermedio
  • Se ha optado por una solución intermedia entre
    los generadores totales y
  • los generadores parciales.
  • Se permite añadir el código necesario, a través
    de las clases semánticas,
  • para realizar cualquier tratamiento de la
    entrada
  • Compilación
  • Interpretación
  • Traducción

35
Tesis Doctoral
Contenido
  • Introducción
  • Estudio de los Sistemas Relevantes
  • Objetivos
  • El Sistema O2C2
  • Diseño e Implementación del Prototipo
  • Descripción general
  • Implementación
  • Creación de clases de usuario
  • Incorporación del mecanismo Listeners
  • Sistema de suscripciones
  • Tratamiento de errores
  • Entorno integrado de desarrollo
  • Ventajas del Sistema Diseñado y Aplicaciones
  • Conclusiones y Líneas de Investigación Futuras

?
36
Prototipo
Descripción General (I)
Formado por un conjunto de subsistemas.
O2C2rt. Integra la jerarquía principal de clases
de los frameworks generados por el prototipo. Es
la base sobre la que se construirán frameworks
específicos.
O2C2Conv. Completa el framework
genérico proporcionado por el paquete O2C2rt y
genera clases para obtener un analizador
sintáctico que se integre con el léxico, y las
clases que tratan el semántico y generación de
código.
O2C2rt
O2C2xml
O2C2
O2C2. Ofrece la misma funcionalidad que O2C2Conv.
Se utilizó para la construcción de la versión
inicial.
O2C2ui. Integra las clases que conforman la
interfaz gráfica.
O2C2Conv
O2C2xml. Contiene las clases que integran el
procesador de lenguaje capaz de reconocer los
proyectos usados en O2C2ui expresados en el
lenguaje XML.
O2C2ui
37
Prototipo
Descripción General (II)
Node
void parse()
Núcleo del prototipo
NodeToken
NodeSeqOptional
NodeSeq
NodeOptional
NodeChoice
void parse()
void parse()
void parse()
void parse()
void parse()
  • Node. Clase raíz del framework.Todos los
    elementos de una gramática derivan de esta clase
    y se convierten en
  • nodos del AST creado.

Clases auxiliares Permiten hacer de
interfaz entre el núcleo y el resto de las clases
que dependen del lenguaje
Parser Lexer Listener
ErrorListener
  • NodeChoice. Se crea una subclase para tratar
    las producciones de cada símbolo no terminal.
  • NodeOptional. Es la superclase de las clases
    que tratan elementos de la gramática cuya
    aparición en los
  • programas no
    es obligatoria.
  • NodeSeq. Las subclases representan las
    producciones de los diferentes símbolos no
    terminales.
  • NodeSeqOptional. Las subclases representan las
    repeticiones múltiples de elementos gramaticales.
  • La
    existencia de estos elementos es opcional.
  • NodeToken. No tiene subclases. Representa los
    tokens del AST generado.

38
Prototipo
Implementación (I)


Analizador Sintáctico

Metagramática
CUP

1

2

Generado por CUP
Gramática

Prototipo O2C2


EBNF

Analizador Léxico

Metagramática

Framework
Generado por JFlex


(Notación EBNF)

3

Específico

O2C2
Å
Analizador Sintáctico


2
Generado por CUP

Clases
Semánticas

1

Gramática que describe a otras gramáticas en
notación EBNF

2

Programa que convierte una gramática en notación
EBNF en un

programa (analizador sintáctico).

3

Generador de analizadores sintácticos construido
con el prototipo
39
Prototipo
Implementación (II)
Prototipo
  • Con la información de la gramática almacenada
    en la
  • Tabla de Símbolos, se aplican los algoritmos
    necesarios
  • para determinar si cumple la condición LL(1)
    Extensible
  • a LL(k).

Framework
O2C2
Generador de Analizadores Sintácticos
  • Si la gramática cumple dicha condición
  • Se generan las clases correspondientes a los
    distintos
  • elementos gramaticales y producciones.
    Pueden descender de
  • NodeChoice, NodeSeq, NodeOptional,
    NodeSeqOptional.
  • Si el elemento es un símbolo terminal se
    crea una instancia
  • de NodeToken.
  • Existe un método único para crear estas
    clases.
  • Se generan las clases auxiliares para dar
    funcionalidad al
  • analizador sintáctico generado (Parser,
    Symb, etc).

JFLEX (externo)
Gramática
EBNF
Tabla de Símbolos
40
Prototipo. Implementación
Creación de clases de usuario
  • Se estudió la posibilidad de incluir el código
    para realizar cualquier tratamiento
  • semántico en las propias clases generadas por el
    sistema. Este enfoque plantea
  • varios inconvenientes.
  • No facilita la modularidad.
  • No permite una separación clara entre el
    código generado por el sistema
  • y el código proporcionado por el usuario.
  • Un cambio en la especificación sintáctica
    obligaría a regenerar las clases
  • de usuario.
  • El código añadido a una clase asociada a un
    elemento de la gramática
  • no podría utilizarse en otras diferentes.

41
Prototipo. Implementación
Incorporación del mecanismo Listener
  • Se basa un la utilización del patrón Listener
    (conocido también como
  • patrón Observer).
  • Consigue que el código proporcionado por el
    usuario esté incluido en las denominadas
  • clases Listeners en vez de incluirlo
    directamente en las clases generadas por el
    sistema.
  • Separa la finalidad del propio analizador del
    tratamiento de los eventos que tienen
  • lugar cada vez que se identifica una parte
    de la entrada con una sección gramatical.
  • Los eventos son generados por las clases del
    sistema que representan las distintas
  • secciones de la gramática.

42
Prototipo. Implementación
Sistema de suscripciones (I)
  • Se debe conocer ante qué clases del sistema
    se tienen que registrar las clases creadas
  • por el usuario (clases Listeners) para
    tratar los eventos.
  • La especificación gramatical estará
    representada en notación EBNF y podrá incluir
  • enlaces (nombres entrecomillados) para
    denotar secciones en la gramática que puedan
  • dar lugar a eventos que el usuario estaría
    interesado en escuchar.
  • El usuario señala únicamente las partes de la
    gramática que van a recibir tratamiento
  • semántico dando nombres a las secciones que
    le interesen. Las clases creadas por el
  • usuario se tiene que registrar ante las
    clases que representan dichos enlaces.

43
Prototipo. Implementación
Sistema de suscripciones (II)
  • Para que las clases Listener puedan ser invocadas
    cada vez que se produzca un
  • evento al que el usuario se ha suscrito es
    necesario que
  • Exista un objeto de la clase Listener y en el
    constructor de esta clase se
  • encuentre la llamada al método
    addListener()de la clase a la que se
  • quiere realizar la suscripción.
  • Se implemente la interfaz Listener incluyendo
    el método
  • performAction(Node n)

44
Prototipo. Implementación
Sistema de suscripciones (III)
Diagrama de colaboración entre una clase Listener
y la clase del sistema a la que se suscribe.
S
SListener
45
Prototipo. Implementación
Tratamiento de errores
El mecanismo de detección, tratamiento y
recuperación de errores está incluido en el
subsistema O2C2rt.
  • El usuario puede crear clases específicas para
    tratar los errores. Se necesita
  • Implementar la interfaz Errorlistener
    incluyendo el método
  • Boolean TreatError (MismatchedTokenException
    e)

Jerarquía de excepciones
46
Prototipo. Implementación
Entorno integrado de desarrollo
Permite hacer más fácil e intuitivo el proceso de
creación de procesadores de lenguaje.
Integra los procesos de análisis léxico,
sintáctico y semántico.
Crea los esqueletos de las clases Listener de
forma automática.
Flexibiliza la estructura de los
proyectos generados permitiendo almacenar
los datos en formato XML.
47
Prototipo
Implementación
Se ha utilizado el propio prototipo
para construir cada uno de los analizadores que
intervienen en la implementación
48
Tesis Doctoral
Contenido
  • Introducción
  • Estudio de los Sistemas Relevantes
  • Objetivos
  • El Sistema O2C2
  • Diseño e Implementación del Prototipo
  • Ventajas del Sistema Diseñado y Aplicaciones
  • Conclusiones y Líneas de Investigación Futuras

?
49
Ventajas y aplicaciones
Ventajas del sistema diseñado (I)
Eficiencia
En una aplicación consumo de recursos
(memoria, procesador) que mantenga.
En un sistema generador ayude al usuario
del sistema a ser eficiente.
  • Eficiencia de los procesadores de lenguaje
    generados
  • Los objetos del framework se inicializan cuando
    es necesario.
  • El texto a analizar nunca está completamente en
    memoria.
  • No es necesario un tratamiento semántico en
    todas las secciones.
  • Modularidad en las aplicaciones generadas.

estrategias
  • Eficiencia del sistema propuesto
  • Optimización del ciclo de desarrollo del
    software.

50
Ventajas y aplicaciones
Ventajas del sistema diseñado (II)
Especificación Gramatical


Análisis Descendente



Gramática (EBNF)


Código de Usuario
Sistema

Prog fun


O2C2
fun ID stmt


Prog fun S..

stmt ...

Generador

Análisis Ascendente

fun ID 1...


stmt ...

Yacc

Parser.Java

Listeners

Framework


s,x

class ...

...)

O2C2rt (class
Ciclo

s,x

Parser.c

Ciclo

Salida


Compilador
Java

Entrada
Salida

Text

Compilador C

xx yyy

Entrada

Text




Text
0100111

xx yyy


Text

(text)
0100111

Procesador de

(text)
Procesador de
Lenguaje

Leguaje

51
Ventajas y aplicaciones
Ventajas del sistema diseñado (III)
Robustez
  • Permite integrar la funcionalidad siguiendo el
    mismo modelo orientado a objetos.
  • Elimina barreras adicionales que dificultan su
    uso.

Aceptación
  • Facilidad de aprendizaje al estar basado en un
    conjunto uniforme de conceptos.
  • Fácil de utilizar.

Diseño abierto
  • Operar con analizadores léxicos externos al
    sistema.
  • Modelo que permita al usuario elegir el tipo de
    análisis.
  • Sistema de tipos genérico extendiendo las
    interfaces.

Permite incorporar nuevas capacidades
52
Ventajas y aplicaciones
Aplicaciones
Plataforma de experimentación
  • Permite la descripción de diferentes
    definiciones formales de lenguajes de
  • programación usando la generación automática
    de procesadores de lenguaje
  • de una forma simple y rápida.
  • - Soporte en el plano educacional y comercial.

Lenguajes de dominio específico
Realizar diferentes tareas relacionadas con la
programación
  • Lenguajes de programación.
  • Lenguajes de marcas (HTML, XML, ...)
  • Formatos de ficheros y estándar comerciales
    (IDL, ODL, ...)
  • Lenguajes de bases de datos y modelado (SQL,
    VRML, ...)
  • Lenguajes de propósito especial, protocolos
    (http, ftp, ...)

Analizadores sintácticos
53
Tesis Doctoral
Contenido
  • Introducción
  • Estudio de los Sistemas Relevantes
  • Objetivos
  • El Sistema O2C2
  • Diseño e Implementación del Prototipo
  • Ventajas del Sistema Diseñado y Aplicaciones
  • Conclusiones y Líneas de Investigación Futuras

?
54
Conclusiones
Características (I)
Al separar las especificaciones del código
semántico se logra encapsular los detalles de la
implementación ayudando a entender y manejar
mejor las aplicaciones.
  • Modularidad

La organización del sistema como un conjunto de
clases permite que se puedan extender para
adaptar su comportamiento a las nuevas
condiciones requeridas por una aplicación.
  • Extensibilidadad

Se consigue a través de la extensibilidad,
reutilizando el propio código de las clases.
  • Reusabilidad

Permite modificar las aplicaciones añadiendo o
quitando funcionalidad.
  • Mantenimiento

55
Conclusiones
Características (II)
  • Ciclo de
  • desarrollo corto

Permite comprender mejor la estructura y el
código de las aplicaciones generadas disminuyendo
su complejidad.
Integra de forma sencilla e intuitiva toda la
funcionalidad proporcionada por el sistema.
  • Entorno visual

La funcionalidad del sistema puede ser
proporcionada en forma de API. Así las
aplicaciones clientes podrán interactuar con el
sistema desde diferentes entornos de desarrollo.
  • Integración flexible
  • Soporte para el diseño e implementación de
    lenguajes

56
Conclusiones
Resultados destacables (I)
Utilidad
  • Pensado para dar solución a diversas tareas
    relacionadas con la programación.
  • Genera procesadores basados en jerarquías de
    clases, adaptados para ser la base
  • de aplicaciones grandes y complejas.

Facilidad de aprendizaje
  • Sistema basado en un pequeño grupo de
    conceptos.

Eficiencia
  • Permite realizar de una forma cómoda y
    eficiente el trabajo de desarrollar
  • un procesador de lenguaje.

57
Conclusiones
Resultados destacables (II)
Errores
  • Permite añadir código especializado para
    conseguir aplicaciones tolerantes a fallos.
  • Detecta los errores producidos facilitando su
    localización y corrección.

Satisfacción
  • Las especificaciones son simples, el
    comportamiento del propio sistema y de los
  • procesadores generados en fácil de entender y
    los conceptos que usa son conocidos.

Retención de ideas
  • La abstracción proporcionada por el sistema es
    adecuada. Libera al usuario de tener que tratar
    con muchos datos de forma simultánea y ocuparse
    de muchos detalles.

58
Conclusiones
Comparación cualitativa

Accent N N N N N N P N
Antlr N N N N N N P S
Cocktail N N N N N N P P
Eli P P P P N N S P
Gentle N N N N N N P N
JavaCC N N N N N N P S
Lemon N N N N N N P N
Lex/Yacc N N N N N N P N
ProGrammar P P P S S S P P
SableCC P P P S S N P N
Spirit N P P P N N P N
Sistema O2C2 S S S S S S P S
Generador de Procesadores de Lenguajes
Ciclo de desarrollo corto
Tratamiento de errores eficaz
Entorno visual de desarrollo
Manteninimiento
Extensibilidad
Generador total
Modularidad
Reusabilidad
59
Conclusiones
Líneas de investigación futuras
  • Incorporación del resto de funcionalidades al
    sistema.
  • Generalización del tipo de análisis.
  • Mejora en el entorno visual de desarrollo.
  • Implementación de un sistema de tipos.
  • Sistema de prototipado de lenguajes.

60
Conclusiones
Publicaciones derivadas (I)
  • Luengo Díez M. Cándida. Diseño y construcción de
    Procesadores de Lenguaje Orientados a Objetos. II
    Jornadas sobre Tecnologías Orientadas a Objetos.
    Oviedo, 1996.
  • Luengo Díez M. C., Labra Gayo J. E., Dominguez
    Mateos F., Pérez Díaz A., García Fernández N.,
    Cueva Lovelle J. M. Desarrollo de Compiladores en
    un Sistema Integral Orientado a Objetos. V
    Congreso Internacional de Investigación 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, Número 12.
    Pág. 41-51. Diciembre 2000.

61
Conclusiones
Publicaciones derivadas (II)
  • Luengo M.C., Labra J. E., Cueva J.M., García N.,
    Basanta D. Building Compiler Tools using
    Frameworks. SISOFT 2001 Simposio Iberoamericano
    de Sistemas de Información e Ingeniería de
    Software en la Sociedad del Conocimiento. Bogota
    Colombia, Agosto 2001.
  • Luengo M. C., Cueva J.M., Labra J. E., García N.,
    Basanta D. Applying Frameworks and
    Object-Oriented Techniques for developing
    Language Processors Tools. Primeras Jornadas
    sobre Programación y Lenguajes. Almagro Ciudad
    Real, Noviembre 2001.
  • Luengo M. C., Labra J. E., García 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 aceptación)
  • http//www.cse.unl.edu/fayad/Books/NewBooks/scri
    pts/user/chapters.php3

62
Desarrollo y Evaluación de Técnicas de
Construcción de Procesadores de Lenguaje para
Máquinas Abstractas Orientadas a Objetos
Universidad de Oviedo - Departamento de
Informática
Tesis Doctoral
  • Fin de la Exposición
  • (c) María Cándida Luengo Díez
  • Junio 2002
Write a Comment
User Comments (0)
About PowerShow.com