1,264 research outputs found

    Formal Languages and Compilation

    Full text link

    Memoized zipper-based attribute grammars and their higher order extension

    Get PDF
    Attribute grammars are a powerfull, well-known formalism to implement and reason about programs which, by design, are conveniently modular. In this work we focus on a state of the art zipper-based embedding of classic attribute grammars and higher-order attribute grammars. We improve their execution performance through controlling attribute (re)evaluation by means of memoization techniques. We present the results of our optimizations by comparing their impact in various implementations of different, well-studied, attribute grammars and their Higher-Order extensions. (C) 2018 Elsevier B.V. All rights reserved.- (undefined

    Contributions to the Construction of Extensible Semantic Editors

    Get PDF
    This dissertation addresses the need for easier construction and extension of language tools. Specifically, the construction and extension of so-called semantic editors is considered, that is, editors providing semantic services for code comprehension and manipulation. Editors like these are typically found in state-of-the-art development environments, where they have been developed by hand. The list of programming languages available today is extensive and, with the lively creation of new programming languages and the evolution of old languages, it keeps growing. Many of these languages would benefit from proper tool support. Unfortunately, the development of a semantic editor can be a time-consuming and error-prone endeavor, and too large an effort for most language communities. Given the complex nature of programming, and the huge benefits of good tool support, this lack of tools is problematic. In this dissertation, an attempt is made at narrowing the gap between generative solutions and how state-of-the-art editors are constructed today. A generative alternative for construction of textual semantic editors is explored with focus on how to specify extensible semantic editor services. Specifically, this dissertation shows how semantic services can be specified using a semantic formalism called refer- ence attribute grammars (RAGs), and how these services can be made responsive enough for editing, and be provided also when the text in an editor is erroneous. Results presented in this dissertation have been found useful, both in industry and in academia, suggesting that the explored approach may help to reduce the effort of editor construction

    Structured editing of literate programs

    Get PDF

    Zipper-based attribute grammars and their extensions

    Get PDF
    Lecture Notes in Computer Science Volume 8129, 2013.Attribute grammars are a suitable formalism to express complex software language analysis and manipulation algorithms, which rely on multiple traversals of the underlying syntax tree. Recently, Attribute Grammars have been extended with mechanisms such as references and high-order and circular attributes. Such extensions provide a powerful modular mechanism and allow the specification of complex fix-point computations. This paper defines an elegant and simple, zipper-based embedding of attribute grammars and their extensions as first class citizens. In this setting, language specifications are defined as a set of independent, off-the-shelf components that can easily be composed into a powerful, executable language processor. Several real examples of language specification and processing programs have been implemented in this setting

    Herramientas educativas para facilitar la adopción de la ingeniería de lenguajes software entre los desarrolladores informáticos

    Get PDF
    Históricamente, la materia de construcción de compiladores y procesadores de lenguaje es considerada por los estudiantes de ingeniería en informática como una materia difícil. Esto es debido, por una parte, a la naturaleza formal de las herramientas de especificación y diseño utilizadas, y, por otra, a la aplicación adecuada de diferentes técnicas sistemáticas de desarrollo para obtener los procesadores finales a partir de sus especificaciones. En esta tesis se aborda esta problemática en el caso particular de las gramáticas de atributos como formalismo básico de especificación. La tesis aborda, primeramente la concepción de una estrategia para facilitar la comprensión de los aspectos básicos de las especificaciones basadas en gramáticas de atributos, así como el soporte software de dicha estrategia. La estrategia propone un enfoque dirigido por problemas, en los que el alumno debe emular el proceso de evaluación semántica sobre distintos supuestos de procesamiento de frases de acuerdo con gramáticas de atributos. Para soportar dicha estrategia, se ha desarrollado un sistema denominado Evaluators, que, tomando como entrada baterías de ejercicios sobre evaluación semántica, produce automáticamente simuladores interactivos que los estudiantes pueden utilizar para resolver dichos ejercicios. El sistema proporciona, así mismo, una herramienta de autoría, que puede ser utilizada por los docentes para proporcionar los ejercicios, así como una herramienta de análisis, que permite trazar el comportamiento de los estudiantes durante la resolución de los mismos en los simuladores generados. Respecto a dichos simuladores, la herramienta es capaz de generar simulaciones de dos tipos: simuladores basados en juegos serios, y simulaciones interactivas basadas en las representaciones abstractas convencionales utilizadas en la materia. La tesis presenta, así mismo, diversos resultados de evaluación de la herramienta, tanto con estudiantes como con docentes, que evidencian la utilidad práctica de la misma. Por último, la tesis abstrae también el modelo de proceso utilizado en la construcción de la misma..

    SAGA: A project to automate the management of software production systems

    Get PDF
    The Software Automation, Generation and Administration (SAGA) project is investigating the design and construction of practical software engineering environments for developing and maintaining aerospace systems and applications software. The research includes the practical organization of the software lifecycle, configuration management, software requirements specifications, executable specifications, design methodologies, programming, verification, validation and testing, version control, maintenance, the reuse of software, software libraries, documentation, and automated management
    • …
    corecore