Erdweg, Sebastian ; van der Storm, Tijs ; Dai, Yi (2014)
Capture-Avoiding and Hygienic Program Transformations.
28th European Conference on Object-Oriented Programming. Uppsala, Sweden (28.07.-01.08.2014)
doi: 10.1007/978-3-662-44202-9_20
Konferenzveröffentlichung, Bibliographie
Kurzbeschreibung (Abstract)
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.
Typ des Eintrags: | Konferenzveröffentlichung |
---|---|
Erschienen: | 2014 |
Autor(en): | Erdweg, Sebastian ; van der Storm, Tijs ; Dai, Yi |
Art des Eintrags: | Bibliographie |
Titel: | Capture-Avoiding and Hygienic Program Transformations |
Sprache: | Englisch |
Publikationsjahr: | 6 August 2014 |
Verlag: | Springer |
Buchtitel: | ECOOP 2014 - Object-Oriented Programming |
Reihe: | Lecture Notes in Computer Science |
Band einer Reihe: | 8586 |
Veranstaltungstitel: | 28th European Conference on Object-Oriented Programming |
Veranstaltungsort: | Uppsala, Sweden |
Veranstaltungsdatum: | 28.07.-01.08.2014 |
DOI: | 10.1007/978-3-662-44202-9_20 |
Kurzbeschreibung (Abstract): | 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. |
Fachbereich(e)/-gebiet(e): | 20 Fachbereich Informatik 20 Fachbereich Informatik > Softwaretechnik |
Hinterlegungsdatum: | 28 Feb 2024 09:31 |
Letzte Änderung: | 06 Jun 2024 12:32 |
PPN: | 518868273 |
Export: | |
Suche nach Titel in: | TUfind oder in Google |
Frage zum Eintrag |
Optionen (nur für Redakteure)
Redaktionelle Details anzeigen |