5 research outputs found

    Capture-Avoiding and Hygienic Program Transformations

    Get PDF
    Program transformations in terms of abstract syntax trees compromise referential integrity by introducing variable capture. Variable capture occurs when in the generated program a variable declaration accidentally shadows the intended target of a variable reference. Existing transformation systems either do not guarantee the avoidance of variable capture or impair the implementation of transformations. We present an algorithm called name-fix that automatically eliminates variable capture from a generated program by systematically renaming variables. name-fix is guided by a graph representation of the binding structure of a program, and requires name-resolution algorithms for the source language and the target language of a transformation. name-fix is generic and works for arbitrary transformations in any transformation system that supports origin tracking for names. We verify the correctness of name-fix and identify an interesting class of transformations for which name-fix provides hygiene. We demonstrate the applicability of name-fix for implementing capture-avoiding substitution, inlining, lambda lifting, and compilers for two domain-specific languages

    Integration of Generative Programming and Scripting Languages

    Get PDF
    Doktorska disertacija bavi se integracijom dviju danas aktualnih tehnologija na području programiranja, generativnog programiranja i jezika skripata na način da je izrađen koncept generativnog programiranja temeljen na jezicima skripata. Za razliku od sličnih projekata u svijetu, ovdje je naglasak stavljen na izradu grafičkog modela koji omogućuje modeliranje generatora aplikacija, te na generativnom razvoju, kao postupku paralelnog razvoja aplikacija i generatora. Time se postiže skraćenje razvojnog ciklusa aplikacija, optimizacija performansi, te pojednostavljenje održavanja. Razvijeni generatori mogu se upotrijebiti u okviru novih projekata.The doctoral dissertation examines the integration of two actual technologies in programming, generative programming and scripting languages in a way that the concept of generative programming based on scripting languages has been made. In a difference to the similar projects wide, the accent was put on building graphic model for application generators modelling, and also on generative development, as a process of parallel application and generator development. The benefits are shortening of application development circle, optimization of performances and simplifying of maintenance. The developed generators can be used in new projects

    Integration of Generative Programming and Scripting Languages

    Get PDF
    Doktorska disertacija bavi se integracijom dviju danas aktualnih tehnologija na području programiranja, generativnog programiranja i jezika skripata na način da je izrađen koncept generativnog programiranja temeljen na jezicima skripata. Za razliku od sličnih projekata u svijetu, ovdje je naglasak stavljen na izradu grafičkog modela koji omogućuje modeliranje generatora aplikacija, te na generativnom razvoju, kao postupku paralelnog razvoja aplikacija i generatora. Time se postiže skraćenje razvojnog ciklusa aplikacija, optimizacija performansi, te pojednostavljenje održavanja. Razvijeni generatori mogu se upotrijebiti u okviru novih projekata.The doctoral dissertation examines the integration of two actual technologies in programming, generative programming and scripting languages in a way that the concept of generative programming based on scripting languages has been made. In a difference to the similar projects wide, the accent was put on building graphic model for application generators modelling, and also on generative development, as a process of parallel application and generator development. The benefits are shortening of application development circle, optimization of performances and simplifying of maintenance. The developed generators can be used in new projects

    Scoping Constructs for Software Generators

    No full text
    A well-known problem in program generation is scoping. When identifiers (i.e., symbolic names) are used to refer to variables, types, or functions, program generators must ensure that generated identifiers are bound to their intended declarations. This is the standard scoping issue in programming languages, only automatically generated programs can quickly become too complex and maintaining bindings manually is hard. In this paper we present generation scoping: a language mechanism to facilitate the handling of scoping concerns. Generation scoping offers control over identifier scoping beyond the scoping mechanism of the target programming language (i.e., the language in which the generator output is expressed). Generation scoping was originally implemented as an extension of the code template operators in the Intentional Programming platform, under development by Microsoft Research. Subsequently, generation scoping has also been integrated in the JTS language extensibility tools. The capabilities of generation scoping were invaluable in the implementation of two actual software generators: DiSTiL (implemented using the Intentional Programming system), and P3 (implemented using JTS)
    corecore