slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Desarrollo y Evaluación de Técnicas de Construcción de Procesadores de Lenguaje para Máquinas Abstractas Orientadas PowerPoint Presentation
Download Presentation
Desarrollo y Evaluación de Técnicas de Construcción de Procesadores de Lenguaje para Máquinas Abstractas Orientadas

Loading in 2 Seconds...

play fullscreen
1 / 62

Desarrollo y Evaluación de Técnicas de Construcción de Procesadores de Lenguaje para Máquinas Abstractas Orientadas - PowerPoint PPT Presentation


  • 188 Views
  • Uploaded on

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 Abstractas Orientadas a Objetos. María Cándida Luengo Díez Director: Dr. Juan Manuel Cueva Lovelle. Tesis Doctoral. Contenido.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Desarrollo y Evaluación de Técnicas de Construcción de Procesadores de Lenguaje para Máquinas Abstractas Orientadas' - marguerite


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

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 Abstractas Orientadas a Objetos

María Cándida Luengo Díez

Director: Dr.Juan Manuel Cueva Lovelle

Tesis Doctoral 1

tesis doctoral
Tesis Doctoral

Contenido

  • 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

  • Introducción
  • Introducción

Tesis Doctoral 2

introducci n generadores de procesadores caracter sticas
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

Tesis Doctoral 3

introducci n generadores de procesadores estructura
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

Tesis Doctoral 4

introducci n generadores de procesadores clasificaci n
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

Léxicos

Generador de

Analizadores

Sintácticos

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

Tesis Doctoral 5

tesis doctoral1
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

Tesis Doctoral 6

slide8

EstudioProblemá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. Noexisten mecanismos que permitan aprovechar parte de la implementaciones existentes para extenderlas con nuevas características.

Tesis Doctoral 8

estudio problem tica con los sistemas actuales ii
EstudioProblemá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.

Tesis Doctoral 9

estudio
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ónentre lasherramientas y en los

denominados entornos de desarrollo.

  • Uso no intuitivo.

Tesis Doctoral 10

slide11

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 integrandoFrameworks y Patrones como métodos de diseño.

  • El sistema tendrá una estructuramodular, en la cual determinados componentes podrán ser identificados yreutilizados.

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.

Tesis Doctoral 11

tesis doctoral2
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

Tesis Doctoral 12

slide13

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 deTecnologías Orientadas a Objetosbasadas enFrameworksparala 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.

Tesis Doctoral 13

slide14

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

Tesis Doctoral 14

slide15

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.

Tesis Doctoral 15

tesis doctoral3
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

Tesis Doctoral 16

slide17

Entorno Visual

Acciones

Semánticas

Metalenguaje

Sistema Generador

de

Procesadores de Lenguajes

Procesador

de

Lenguaje

El Sistema O2C2

Arquitectura

Tesis Doctoral 17

slide18

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.

Tesis Doctoral 18

slide19

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

Tesis Doctoral 19

slide20

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.

Tesis Doctoral 20

slide21

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

Tesis Doctoral 21

slide22

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.

  • Algunosproblemas 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

Tesis Doctoral 22

slide23

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

Interfaz del framework

Scan

  • 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 objetosdiferentes.

Tesis Doctoral 23

slide24

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.

Tesis Doctoral 24

slide25

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.

Tesis Doctoral 25

slide26

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.

Tesis Doctoral 26

slide27

El Sistema O2C2. Sistema Generador

Análisis Sintáctico (II)

Análisis

Error

Listener

Parser

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

Tesis Doctoral 27

slide28

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 interfazListener.

  • 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

Tesis Doctoral 28

slide29

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.

Tesis Doctoral 29

slide30

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.

Tesis Doctoral 30

slide31

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.

Tesis Doctoral 31

slide32

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.

Tesis Doctoral 32

slide33

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 interfazError.

Clases de usuario

Tesis Doctoral 33

slide34

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

Tesis Doctoral 34

tesis doctoral4
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

Tesis Doctoral 35

slide36

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

Tesis Doctoral 36

slide37

Prototipo

Descripción General (II)

Node

void parse()

Núcleo

del prototipo

NodeChoice

NodeOptional

NodeSeq

NodeSeqOptional

NodeToken

void parse()

void parse()

void parse()

void parse()

void parse()

Clases auxiliares

Permiten hacer de interfaz entre el núcleo y el resto de las clases que dependen del lenguaje

Parser

Lexer

Listener

ErrorListener

  • 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.

  • 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.

Tesis Doctoral 37

slide38

Prototipo

Implementación (I)

Analizador Sintáctico

CUP

Metagramática

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

Tesis Doctoral 38

slide39

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

Tesis Doctoral 39

slide40

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ódigoañadido a una clase asociada a un elemento de la gramática
    • no podríautilizarse en otras diferentes.

Tesis Doctoral 40

slide41

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 elcó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.

Tesis Doctoral 41

slide42

Node

void parse()

NodeChoice

NodeOptional

NodeSeq

NodeSeqOptional

NodeToken

void parse()

void parse()

void parse()

void parse()

void parse()

  • Ejemplo de una simple calculadora
      • <S> ::= <num> <op> <num>"operation" ;
  • <op> ::= + "addition " | - "subtraction" |
  • *"multiplication" | / "division"
  • <num> ::= DIGIT {DIGIT} "number" ;

S

operation

op

num

number

addition

subtraction

multiplication

multiplication

multiplication

division

numberEBNF0

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.

Tesis Doctoral 42

slide43

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étodoaddListener()de la clase a la que se

quiere realizar la suscripción.

    • Se implemente la interfaz Listener incluyendo el método

performAction(Node n)

Tesis Doctoral 43

slide44

PerformAction( )

getValue()

user_code( )

setValue( )

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

Tesis Doctoral 44

slide45

ParserException

InternalException

SemanticException

MismatchedTokenException

LexerException

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

Tesis Doctoral 45

slide46

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.

Tesis Doctoral 46

slide47

Analizador gramatical de O2C2Conv

Analizador de proyectos XML para O2C2ui

Analizador de producciones de O2C2ui

Prototipo

Implementación

“ Se ha utilizado el

propio prototipo para

construir cada uno

de los analizadores

que intervienen en la implementación”

Tesis Doctoral 47

tesis doctoral5
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

Tesis Doctoral 48

slide49

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.

Tesis Doctoral 49

slide50

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

Framework

Listeners

s,x

...)

class ...

O2C2rt (class

Ciclo

s,x

Parser.c

Ciclo

Salida

Compilador

Entrada

Java

Salida

Text

Compilador C

xx yyy

Entrada

Text

Text

0100111

xx yyy

Text

(text)

0100111

Procesador de

(text)

Procesador de

Lenguaje

Leguaje

Tesis Doctoral 50

slide51

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

Tesis Doctoral 51

slide52

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

Tesis Doctoral 52

tesis doctoral6
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

Tesis Doctoral 53

slide54

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

Tesis Doctoral 54

slide55

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

Tesis Doctoral 55

slide56

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.

Tesis Doctoral 56

slide57

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.

Tesis Doctoral 57

slide58

Conclusiones

Comparación cualitativa

Generador de

Procesadores

de Lenguajes

Ciclo de

desarrollo

corto

Tratamiento de

errores eficaz

Entorno visual

de desarrollo

Manteninimiento

Generador total

Extensibilidad

Modularidad

Reusabilidad

Tesis Doctoral 58

slide59

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.

Tesis Doctoral 59

slide60

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 CIICC´98. 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.

Tesis Doctoral 60

slide61

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/scripts/user/chapters.php3

Tesis Doctoral 61

slide62

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 Abstractas Orientadas a Objetos

Fin de la Exposición

(c) María Cándida Luengo Díez

Junio 2002

Tesis Doctoral 62