630 likes | 1k Views
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.
E N D
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 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ó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ó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ó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 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
EstudioEstudio de los sistemas relevantes Tesis Doctoral 7
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
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 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
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 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
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
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
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 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
Entorno Visual Acciones Semánticas Metalenguaje Sistema Generador de Procesadores de Lenguajes Procesador de Lenguaje El Sistema O2C2 Arquitectura Tesis Doctoral 17
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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