publications:
- title: "Disambiguation Filters for Scannerless Generalized LR Parsers"
author:
- name: "Mark G. J. van den Brand"
link: "http://www.win.tue.nl/~mvdbrand/"
- name: "Jeroen Scheerder"
link: "http://www.linkedin.com/in/jeroenscheerder"
- name: "Jurgen J. Vinju"
link: "http://homepages.cwi.nl/~jurgenv/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2002"
doi: "https://doi.org/10.1007/3-540-45937-5_12"
abstract: "In this paper we present the fusion of generalized LR parsing and scannerless parsing. This combination supports syntax definitions in which all aspects (lexical and context-free) of the syntax of a language are defined explicitly in one formalism. Furthermore, there are no restrictions on the class of grammars, thus allowing a natural syntax tree structure. Ambiguities that arise through the use of unrestricted grammars are handled by explicit disambiguation constructs, instead of implicit defaults that are taken by traditional scanner and parser generators. Hence, a syntax definition becomes a full declarative description of a language. Scannerless generalized LR parsing is a viable technique that has been applied in various industrial and academic projects. "
links:
doi: "https://doi.org/10.1007/3-540-45937-5_12"
tags:
- "GLR parsing"
- "syntax definition"
- "SDF"
- "lexical syntax"
- "scannerless"
- "disambiguation"
- "GLR"
- "context-aware"
- "parsing"
- "scannerless parsing"
- "ASF+SDF"
- "SGLR"
- "grammar"
researchr: "https://researchr.org/publication/BrandSVV02"
cites: 0
citedby: 4
pages: "143-158"
booktitle: "Compiler Construction, 11th International Conference, CC 2002, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2002, Grenoble, France, April 8-12, 2002, Proceedings"
editor:
- name: "R. Nigel Horspool"
link: "https://researchr.org/alias/r.-nigel-horspool"
volume: "2304"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-43369-4"
kind: "inproceedings"
key: "BrandSVV02"
- title: "Design of the CodeBoost Transformation System for Domain-Specific Optimisation of C++ Programs"
author:
- name: "Anya Helene Bagge"
link: "http://www.ii.uib.no/~anya/"
- name: "Karl Trygve Kalleberg"
link: "http://www.ii.uib.no/~karltk/"
- name: "Magne Haveraaen"
link: "http://www.ii.uib.no/~magne/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2003"
doi: "https://doi.org/10.1109/SCAM.2003.1238032"
abstract: "The use of a high-level, abstract coding style can greatly increase developer productivity. For numerical software, this can result in drastically reduced run-time performance. High-level, domain-specific optimisations can eliminate much of the overhead caused by an abstract coding style, but current compilers have poor support for domain-specific optimisation. In this paper we present CodeBoost, a source-to-source transformation tool for domain-specific optimisation of C++ programs. CodeBoost performs parsing, semantic analysis and pretty-printing, and transformations can be implemented either in the Stratego program transformation language, or as user-defined rewrite rules embedded within the C++ program. CodeBoost has been used with great success to optimise numerical applications written in the Sophus high-level coding style. We discuss the overall design of the CodeBoost transformation framework, and take a closer look at two important features of CodeBoost: user-defined rules and totem annotations. We also show briefly how CodeBoost is used to optimise Sophus code, resulting in applications that run twice as fast, or more."
links:
doi: "https://doi.org/10.1109/SCAM.2003.1238032"
tags:
- "programming languages"
- "model-to-model transformation"
- "rule-based"
- "program analysis"
- "application framework"
- "graph transformation"
- "CodeBoost"
- "embedded software"
- "Stratego/XT"
- "transformation language"
- "points-to analysis"
- "domain analysis"
- "analysis"
- "language design"
- "source-to-source"
- "graph-rewriting"
- "rules"
- "C++"
- "transformation system"
- "compiler"
- "model transformation"
- "rewriting"
- "parsing"
- "design"
- "open-source"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/BaggeKHV03"
cites: 0
citedby: 0
pages: "65"
booktitle: "3rd IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003), 26-27 September 2003, Amsterdam, The Netherlands"
publisher: "IEEE Computer Society"
isbn: "0-7695-2005-7"
kind: "inproceedings"
key: "BaggeKHV03"
- title: "Composing Source-to-Source Data-Flow Transformations with Rewriting Strategies and Dependent Dynamic Rewrite Rules"
author:
- name: "Karina Olmos"
link: "https://researchr.org/profile/karinaolmos/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2005"
doi: "https://doi.org/10.1007/978-3-540-31985-6_14"
abstract: "Data-flow transformations used in optimizing compilers are also useful in other programming tools such as code generators, aspect weavers, domain-specific optimizers, and refactoring tools. These applications require source-to-source transformations rather than transformations on a low-level intermediate representation. In this paper we describe the composition of source-to-source data-flow transformations in the program transformation language Stratego. The language supports the high-level specification of transformations by means of rewriting strategy combinators that allow a natural modeling of data- and control-flow without committing to a specific source language. Data-flow facts are propagated using dynamic rewriting rules. In particular, we introduce the concept of dependent dynamic rewrite rules for modeling the dependencies of data-flow facts on program entities such as variables. The approach supports the combination of analysis and transformation, the combination of multiple transformations, the combination with other types of transformations, and the correct treatment of variable binding constructs and lexical scope to avoid free variable capture."
links:
doi: "https://doi.org/10.1007/978-3-540-31985-6_14"
tags:
- "programming languages"
- "model-to-model transformation"
- "optimization"
- "rule-based"
- "intermediate representation"
- "program analysis"
- "meta programming"
- "data-flow language"
- "graph transformation"
- "meta-model"
- "dynamic rewrite rules"
- "modeling language"
- "modeling"
- "variable binding"
- "Stratego/XT"
- "model refactoring"
- "refactoring"
- "transformation language"
- "language modeling"
- "composition"
- "dynamic rules"
- "points-to analysis"
- "domain analysis"
- "dependent dynamic rewrite rules"
- "analysis"
- "data-flow programming"
- "data-flow"
- "source-to-source"
- "graph-rewriting"
- "rules"
- "rule-based refactoring"
- "compiler"
- "model transformation"
- "programming"
- "program optimization"
- "Meta-Environment"
- "rewriting"
- "data-flow analysis"
- "systematic-approach"
- "rewriting strategies"
- "open-source"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/OlmosV05"
cites: 0
citedby: 0
pages: "204-220"
booktitle: "Compiler Construction, 14th International Conference, CC 2005, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2005, Edinburgh, UK, April 4-8, 2005, Proceedings"
editor:
- name: "Rastislav Bodík"
link: "https://researchr.org/alias/rastislav-bod%C3%ADk"
volume: "3443"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-25411-0"
kind: "inproceedings"
key: "OlmosV05"
- title: "WebWorkFlow: An Object-Oriented Workflow Modeling Language for Web Applications"
author:
- name: "Zef Hemel"
link: "http://zef.me"
- name: "Ruben Verhaaf"
link: "http://www.linkedin.com/pub/ruben-verhaaf/3/a73/2ab"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
doi: "http://dx.doi.org/10.1007/978-3-540-87875-9_8"
abstract: "Workflow languages are designed for the high-level description of processes and are typically not suitable for the generation of complete applications. In this paper, we present WebWorkFlow, an object-oriented workflow modeling language for the high-level description of workflows in web applications. Workflow descriptions define procedures operating on domain objects. Procedures are composed using sequential and concurrent process combinators. WebWorkFlow is an embedded language, extending WebDSL, a domain-specific language for web application development, with workflow abstractions. The extension is implemented by means of model-to-model transformations. Rather than providing an exclusive workflow language, WebWorkFlow supports interaction with the underlying WebDSL language. WebWorkFlow supports most of the basic workflow control patterns. "
links:
doi: "http://dx.doi.org/10.1007/978-3-540-87875-9_8"
"technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-029.pdf"
tags:
- "workflow patterns"
- "model-to-model transformation"
- "interaction design"
- "WebDSL"
- "transformation engineering"
- "completeness"
- "pattern language"
- "meta-model"
- "modeling language"
- "modeling"
- "language engineering"
- "transformation language"
- "language modeling"
- "web engineering"
- "language design"
- "model-driven development"
- "source-to-source"
- "model-driven engineering"
- "object-role modeling"
- "model transformation"
- "web applications"
- "DSL"
- "abstraction"
- "Meta-Environment"
- "workflow"
- "process modeling"
- "WebWorkFlow"
- "meta-objects"
- "transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/HemelVV08"
cites: 0
citedby: 6
pages: "113-127"
booktitle: "Model Driven Engineering Languages and Systems, 11th International Conference, MoDELS 2008, Toulouse, France, September 28 - October 3, 2008. Proceedings"
editor:
- name: "Krzysztof Czarnecki"
link: "http://www.swen.uwaterloo.ca/~kczarnec/"
- name: "Ileana Ober"
link: "https://researchr.org/alias/ileana-ober"
- name: "Jean-Michel Bruel"
link: "https://researchr.org/alias/jean-michel-bruel"
- name: "Axel Uhl"
link: "https://researchr.org/alias/axel-uhl"
- name: "Markus Völter"
link: "http://www.voelter.de/"
volume: "5301"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "978-3-540-87874-2"
kind: "inproceedings"
key: "HemelVV08"
- title: "Generating Editors for Embedded Languages. Integrating SGLR into IMP"
author:
- name: "Lennart C. L. Kats"
link: "http://www.lclnet.nl/"
- name: "Karl Trygve Kalleberg"
link: "http://www.ii.uib.no/~karltk/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
month: "April"
abstract: "Integrated Development Environments (IDEs) increase productivity by providing a rich user interface and rapid feedback for a specific language. Creating an editor for a specific language is not a trivial undertaking, and is a cumbersome task even when working with an extensible framework such as Eclipse. A new IBM-guided effort, the IMP framework, relieves the IDE developer from a significant portion of the required work by providing various abstractions for this. For embedded languages, such as embedded regular expressions, SQL queries, or code generation templates, its LALR parser generator falls short, however. Scannerless parsing with SGLR enables concise, modular definition of such languages. In this paper, we present an integration of SGLR into IMP, demonstrating that a scannerless parser can be successfully integrated into an IDE. Given an SDF syntax definition, the sdf2imp tool automatically generates an editor plugin based on the IMP API, complete with syntax checking, syntax highlighting, outline view, and code folding. Using declarative domain-specific languages, these services can be customized, and using the IMP metatooling framework it can be extended with other features. "
links:
successor: "https://researchr.org/publication/KatsVisser2010"
"spoofax homepage": "http://strategoxt.org/Spoofax"
"pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-006.pdf"
tags:
- "rule-based"
- "Eclipse"
- "syntax definition"
- "completeness"
- "SDF"
- "SQL"
- "C++"
- "code generation"
- "abstraction"
- "Spoofax"
- "Meta-Environment"
- "parsing"
- "scannerless parsing"
- "extensible language"
- "ASF+SDF"
- "SGLR"
- "query language"
- "domain-specific language"
researchr: "https://researchr.org/publication/KatsKV08"
cites: 0
citedby: 1
booktitle: "Proceedings of the Eight Workshop on Language Descriptions, Tools, and Applications"
editor:
- name: "Jurgen J. Vinju"
link: "http://homepages.cwi.nl/~jurgenv/"
- name: "Adrian Johnstone"
link: "http://www.cs.rhul.ac.uk/~adrian/"
volume: "238"
number: "5"
series: "Electronic Notes in Theoretical Computer Science "
publisher: "Elsevier"
kind: "inproceedings"
key: "KatsKV08"
- title: "Warm fusion in Stratego: A case study in generation of program transformation systems"
author:
- name: "Patricia Johann"
link: "http://personal.cis.strath.ac.uk/~patricia/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2000"
doi: "http://dx.doi.org/10.1023/A:1018956702672"
abstract: "Stratego is a domain-specific language for the specification of program transformation systems. The design of Stratego is based on the paradigm of rewriting strategies: user-definable programs in a little language of strategy operators determine where and in what order transformation rules are (automatically) applied to a program. The separation of rules and strategies supports modularity of specifications. Stratego also provides generic features for specification of program traversals. In this paper we present a case study of Stratego as applied to a non-trivial problem in program transformation. We demonstrate the use of Stratego in eliminating intermediate data structures from (also known as deforesting) functional programs via the warm fusion algorithm of Launchbury and Sheard. This algorithm has been specified in Stratego and embedded in a fully automatic transformation system for kernel Haskell. The entire system consists of about 2600 lines of specification code, which breaks down into 1850 lines for a general framework for Haskell transformation and 750 lines devoted to a highly modular, easily extensible specification of the warm fusion transformer itself. Its successful design and construction provides further evidence that programs generated from Stratego specifications are suitable for integration into real systems, and that rewriting strategies are a good paradigm for the implementation of such systems. "
links:
doi: "http://dx.doi.org/10.1023/A:1018956702672"
"stratego wiki": "http://www.program-transformation.org/Stratego/WarmFusionInStratego"
tags:
- "programming languages"
- "optimization"
- "rule-based"
- "data-flow language"
- "generic programming"
- "case study"
- "graph transformation"
- "Stratego/XT"
- "traversal"
- "deforestation"
- "transformation language"
- "functional programming"
- "language design"
- "Haskell"
- "data-flow programming"
- "little language"
- "data-flow"
- "graph-rewriting"
- "rules"
- "programming paradigms"
- "code generation"
- "warm fusion"
- "transformation system"
- "programming"
- "program optimization"
- "higher-order transformations"
- "rewriting"
- "design"
- "extensible language"
- "rewriting strategies"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/JohannV00"
cites: 1
citedby: 0
journal: "Annals of Mathematics and Artificial Intelligence"
volume: "29"
number: "1-4"
pages: "1-34"
kind: "article"
key: "JohannV00"
- title: "Grammar Engineering Support for Precedence Rule Recovery and Compatibility Checking"
author:
- name: "Eric Bouwers"
link: "http://www.st.ewi.tudelft.nl/~bouwers/main/"
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.046"
abstract: "A wide range of parser generators are used to generate parsers for programming languages. The grammar formalisms that come with parser generators provide different approaches for defining operator precedence. Some generators (e.g. YACC) support precedence declarations, others require the grammar to be unambiguous, thus encoding the precedence rules. Even if the grammar formalism provides precedence rules, a particular grammar might not use it. The result is grammar variants implementing the same language. For the C language, the GNU Compiler uses YACC with precedence rules, the C-Transformers uses SDF without priorities, while the SDF library does use priorities. For PHP, Zend uses YACC with precedence rules, whereas PHP-front uses SDF with priority and associativity declarations. The variance between grammars raises the question if the precedence rules of one grammar are compatible with those of another. This is usually not obvious, since some languages have complex precedence rules. Also, for some parser generators the semantics of precedence rules is defined operationally, which makes it hard to reason about their effect on the defined language. We present a method and tool for comparing the precedence rules of different grammars and parser generators. Although it is undecidable whether two grammars define the same language, this tool provides support for comparing and recovering precedence rules, which is especially useful for reliable migration of a grammar from one grammar formalism to another. We evaluate our method by the application to non-trivial mainstream programming languages, such as PHP and C."
links:
doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.046"
tags:
- "programming languages"
- "semantics"
- "rule-based"
- "syntax definition"
- "YACC"
- "precedence rule"
- "SDF"
- "Stratego/XT"
- "language engineering"
- "grammar engineering"
- "PHP"
- "rules"
- "C++"
- "migration"
- "compiler"
- "programming"
- "operational semantics"
- "priority"
- "parsing"
- "scannerless parsing"
- "systematic-approach"
- "ASF+SDF"
- "grammar"
- "Stratego"
researchr: "https://researchr.org/publication/BouwersBV08"
cites: 0
citedby: 1
journal: "Electronic Notes in Theoretical Computer Science"
volume: "203"
number: "2"
pages: "85-101"
kind: "article"
key: "BouwersBV08"
- title: "A Survey of Strategies in Program Transformation Systems"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2001"
doi: "https://doi.org/10.1016/S1571-0661(04)00270-1"
abstract: "Program transformation is used in a wide range of applications including compiler construction, optimization, program synthesis, refactoring, software renovation, and reverse engineering. Complex program transformations are achieved through a num- ber of consecutive modifications of a program. Transformation rules define basic modifications. A transformation strategy is an algorithm for choosing a path in the rewrite relation induced by a set of rules. This paper surveys the support for the definition of strategies in program transformation systems. After a discussion of kinds of program transformation and choices in program representation, the basic elements of a strategy system are discussed and the choices in the design of a strategy language are considered. Several styles of strategy systems as provided in existing languages are then analyzed."
links:
doi: "https://doi.org/10.1016/S1571-0661(04)00270-1"
successor: "https://researchr.org/publication/Visser05"
"stratego/xt wiki": "http://strategoxt.org/Transform/ASurveyOfRewritingStrategiesInProgramTransformationSystems"
tags:
- "programming languages"
- "optimization"
- "rule-based"
- "transformation engineering"
- "graph transformation"
- "reverse engineering"
- "refactoring"
- "language engineering"
- "transformation language"
- "software language engineering"
- "language design"
- "strategies"
- "graph-rewriting"
- "survey"
- "software engineering"
- "rules"
- "transformation system"
- "rule-based refactoring"
- "compiler"
- "programming"
- "program optimization"
- "rewriting"
- "design"
- "rewriting strategies"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/Visser01-WRS"
cites: 0
citedby: 0
journal: "Electronic Notes in Theoretical Computer Science"
volume: "57"
pages: "109-143"
kind: "article"
key: "Visser01-WRS"
- title: "WebDSL: A Case Study in Domain-Specific Language Engineering"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2007"
doi: "http://dx.doi.org/10.1007/978-3-540-88643-3_7"
abstract: " The goal of domain-specific languages (DSLs) is to increase the productivity of software engineers by abstracting from low-level boil- erplate code. Introduction of DSLs in the software development process requires a smooth workflow for the production of DSLs themselves. This requires technology for designing and implementing DSLs, but also a methodology for using that technology. That is, a collection of guidelines, design patterns, and reusable DSL components that show developers how to tackle common language design and implementation issues. This paper presents a case study in domain-specific language engineering. It reports on a pro ject in which the author designed and built WebDSL, a DSL for web applications with a rich data model, using several DSLs for DSL engineering: SDF for syntax definition and Stratego/XT for code gener- ation. The paper follows the stages in the development of the DSL. The contributions of the paper are three-fold. (1) A tutorial in the application of the specific SDF and Stratego/XT technology for building DSLs. (2) A description of an incremental DSL development process. (3) A domain- specific language for web-applications with rich data models. The paper concludes with a survey of related approaches. "
links:
doi: "http://dx.doi.org/10.1007/978-3-540-88643-3_7"
"technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-023.pdf"
"webdsl": "http://webdsl.org"
"stratego/xt": "http://strategoxt.org"
tags:
- "WebDSL"
- "reusable components"
- "DSL engineering"
- "web application development"
- "data-flow language"
- "pattern language"
- "case study"
- "software components"
- "SDF"
- "meta-model"
- "abstract syntax"
- "modeling language"
- "Stratego/XT"
- "language engineering"
- "software language engineering"
- "language modeling"
- "software component"
- "web engineering"
- "language design"
- "reuse"
- "model-driven development"
- "data-flow"
- "survey"
- "software engineering"
- "model-driven engineering"
- "web applications"
- "DSL"
- "Meta-Environment"
- "incremental"
- "design"
- "process modeling"
- "systematic-approach"
- "ASF+SDF"
- "language"
- "Stratego"
- "domain-specific language"
researchr: "https://researchr.org/publication/Visser07"
cites: 0
citedby: 9
pages: "291-373"
booktitle: "Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007"
editor:
- name: "Ralf Lämmel"
link: "http://www.uni-koblenz.de/~laemmel/Site/Home.html"
- name: "Joost Visser"
link: "http://www.di.uminho.pt/~joost.visser/"
- name: "João Saraiva"
link: "http://di.uminho.pt/~jas"
volume: "5235"
series: "Lecture Notes in Computer Science"
address: "Braga, Portugal"
publisher: "Springer"
isbn: "978-3-540-88642-6"
kind: "inproceedings"
key: "Visser07"
- title: "Scoped Dynamic Rewrite Rules"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2001"
doi: "https://doi.org/10.1016/S1571-0661(04)00298-1"
abstract: "The applicability of term rewriting to program transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strate- gies. This paper addresses the second problem by extending rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are generated at run-time and can access variables available from their definition context. Rules generated within a rule scope are automatically retracted at the end of that scope. The technique is illustrated by means of several program tranformations: bound variable renaming, function inlining, and dead function elimination. "
links:
doi: "https://doi.org/10.1016/S1571-0661(04)00298-1"
successor: "https://researchr.org/publication/BravenboerDOV06"
tags:
- "programming languages"
- "rule-based"
- "graph transformation"
- "dynamic rewrite rules"
- "Stratego/XT"
- "transformation language"
- "term rewriting"
- "graph-rewriting"
- "rules"
- "context-aware"
- "access control"
- "rewriting"
- "role-based access control"
- "rewriting strategies"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/Visser01-DR"
cites: 0
citedby: 0
journal: "Electronic Notes in Theoretical Computer Science"
volume: "59"
number: "4"
pages: "375-396"
kind: "article"
key: "Visser01-DR"
- title: "Turning Dynamic Typing into Static Typing by Program Specialization in a Compiler Front-end for Octave"
author:
- name: "Karina Olmos"
link: "https://researchr.org/profile/karinaolmos/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2003"
doi: "https://doi.org/10.1109/SCAM.2003.1238040"
abstract: "Array processing languages such as APL, Matlab and Octave rely on dynamic typechecking by the interpreter rather than static typechecking and are designed for user convenience with a syntax close to mathematical notation. Functions and operators are highly overloaded. The price to be paid for this flexibility is computational performance, since the run-time system is responsible for type checking, array shape determination, function call dispatching, and handling possible run-time errors. In order to produce effecient code, an Octave compiler should address those issues at compile-time as much as possible. In particular, static type and shape inferencing can improve the quality of the generated code. In this paper we discuss how overloading in dynamically typed Octave programs can be resolved by program specialization. We discuss the typing issues in compilation of Octave programs and give an overview of the implementation of the specializer in the transformation language Stratego."
links:
doi: "https://doi.org/10.1109/SCAM.2003.1238040"
tags:
- "programming languages"
- "type inference"
- "dynamic typing"
- "interpreter"
- "Stratego/XT"
- "transformation language"
- "Octave"
- "language design"
- "type system"
- "type checking"
- "transformation system"
- "compiler"
- "higher-order transformations"
- "program specialization"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/OlmosV03"
cites: 0
citedby: 0
pages: "141-150"
booktitle: "3rd IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003), 26-27 September 2003, Amsterdam, The Netherlands"
publisher: "IEEE Computer Society"
isbn: "0-7695-2005-7"
kind: "inproceedings"
key: "OlmosV03"
- title: "Rewriting Strategies for Instruction Selection"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2002"
doi: "https://doi.org/10.1007/3-540-45610-4_17"
abstract: "Instruction selection (mapping IR trees to machine instructions) can be expressed by means of rewrite rules. Typically, such sets of rewrite rules are highly ambiguous. Therefore, standard rewriting engines based on fixed, exhaustive strategies are not appropriate for the execution of instruction selection. Code generator generators use special purpose implementations employing dynamic programming. In this paper we show how rewriting strategies for instruction selection can be encoded concisely in Stratego, a language for program transformation based on the paradigm of programmable rewriting strategies. This embedding obviates the need for a language dedicated to code generation, and makes it easy to combine code generation with other optimizations. "
links:
doi: "https://doi.org/10.1007/3-540-45610-4_17"
tags:
- "programming languages"
- "optimization"
- "rule-based"
- "graph transformation"
- "Stratego/XT"
- "instruction selection"
- "transformation language"
- "term rewriting"
- "graph-rewriting"
- "rules"
- "programming paradigms"
- "code generation"
- "programming"
- "program optimization"
- "rewriting"
- "compilers"
- "compilation"
- "rewriting strategies"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/BravenboerV02"
cites: 0
citedby: 0
pages: "237-251"
booktitle: "Rewriting Techniques and Applications, 13th International Conference, RTA 2002, Copenhagen, Denmark, July 22-24, 2002, Proceedings"
editor:
- name: "Sophie Tison"
link: "https://researchr.org/alias/sophie-tison"
volume: "2378"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-43916-1"
kind: "inproceedings"
key: "BravenboerV02"
- title: "Static consistency checking of web applications with WebDSL"
author:
- name: "Zef Hemel"
link: "http://zef.me"
- name: "Danny M. Groenewegen"
link: "https://www.linkedin.com/in/dannygroenewegen/"
- name: "Lennart C. L. Kats"
link: "http://www.lclnet.nl/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2011"
doi: "https://doi.org/10.1016/j.jsc.2010.08.006"
abstract: "Modern web application development frameworks provide web application developers with high-level abstractions to improve their productivity. However, their support for static verification of applications is limited. Inconsistencies in an application are often not detected statically, but appear as errors at run-time. The reports about these errors are often obscure and hard to trace back to the source of the inconsistency. A major part of this inadequate consistency checking can be traced back to the lack of linguistic integration of these frameworks. Parts of an application are defined with separate domain-specific languages, which are not checked for consistency with the rest of the application. Examples include regular expressions, query languages and XML-based languages for definition of user interfaces. We give an overview and analysis of typical problems arising in development with frameworks for web application development, with Ruby on Rails, Lift and Seam as representatives. To remedy these problems, in this paper, we argue that domain-specific languages should be designed from the ground up with static verification and cross-aspect consistency checking in mind, providing linguistic integration of domain-specific sub-languages. We show how this approach is applied in the design of WebDSL, a domain-specific language for web applications, by examining how its compiler detects inconsistencies not caught by web frameworks, providing accurate and clear error messages. Furthermore, we show how this consistency analysis can be expressed with a declarative rule-based approach using the Stratego transformation language."
links:
doi: "https://doi.org/10.1016/j.jsc.2010.08.006"
dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jsc/HemelGKV11"
"technical report ": "http://resolver.tudelft.nl/uuid:588b78a1-f8d8-45fc-855f-fd03699725cf"
"jsc": "https://doi.org/10.1016/j.jsc.2010.08.006"
tags:
- "model-to-model transformation"
- "WebDSL"
- "rule-based"
- "application framework"
- "model checking"
- "XML"
- "XML Schema"
- "transformation language"
- "points-to analysis"
- "domain analysis"
- "analysis"
- "language design"
- "static analysis"
- "model-driven development"
- "source-to-source"
- "rules"
- "C++"
- "compiler"
- "model transformation"
- "web applications"
- "consistency"
- "abstraction"
- "design"
- "systematic-approach"
- "open-source"
- "transformation"
- "Ruby on Rails"
- "Stratego"
- "Ruby"
- "query language"
- "domain-specific language"
researchr: "https://researchr.org/publication/HemelGKV11"
cites: 0
citedby: 0
journal: "Journal of Symbolic Computation"
volume: "46"
number: "2"
pages: "150-182"
kind: "article"
key: "HemelGKV11"
- title: "Adding Concrete Syntax to a Prolog-Based Program Synthesis System (Extended Abstract)"
author:
- name: "Bernd Fischer"
link: "http://www.ecs.soton.ac.uk/people/bf"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2003"
doi: "https://doi.org/10.1007/978-3-540-25938-1_5"
abstract: "Program generation and transformation systems work on two language levels, the object-level (i.e., the language of the manipulated programs), and the meta-level (i.e., the implementation language of the system itself). The meta-level representations of object-level program fragments are usually built in an essentially syntax-free fashion using the operations provided by the meta-language. However, syntax matters and a large conceptual distance between the two languages makes it difficult to maintain and extend such systems. Here we describe how an existing Prolog-based system can gradually be retrofitted with concrete object-level syntax using the approach outlined in [5], thus shrinking this distance."
links:
doi: "https://doi.org/10.1007/978-3-540-25938-1_5"
tags:
- "programming languages"
- "model-to-model transformation"
- "object-oriented programming"
- "concrete object syntax"
- "Prolog"
- "rule-based"
- "meta programming"
- "AutoBayes"
- "meta-model"
- "abstract syntax"
- "Stratego/XT"
- "transformation language"
- "source-to-source"
- "transformation system"
- "model transformation"
- "programming"
- "subject-oriented programming"
- "Meta-Environment"
- "systematic-approach"
- "feature-oriented programming"
- "concrete syntax"
- "meta-objects"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/FischerV03"
cites: 0
citedby: 0
pages: "56-58"
booktitle: "Logic Based Program Synthesis and Transformation, 13th International Symposium LOPSTR 2003, Uppsala, Sweden, August 25-27, 2003, Revised Selected Papers"
editor:
- name: "Maurice Bruynooghe"
link: "https://researchr.org/alias/maurice-bruynooghe"
volume: "3018"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-22174-3"
kind: "inproceedings"
key: "FischerV03"
- title: "Fusing a Transformation Language with an Open Compiler"
author:
- name: "Karl Trygve Kalleberg"
link: "http://www.ii.uib.no/~karltk/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.042"
abstract: "Program transformation systems provide powerful analysis and transformation frameworks as well as concise languages for language processing, but instantiating them for every subject language is an arduous task, most often resulting in half-completed frontends. Compilers provide mature frontends with robust parsers and type checkers, but solving language processing problems in general-purpose languages without transformation libraries is tedious. Reusing these frontends with existing transformation systems is therefore attractive. However, for this reuse to be optimal, the functional logic found in the frontend should be exposed to the transformation system – simple data serialization of the abstract syntax tree is not enough, since this fails to expose important compiler functionality, such as import graphs, symbol tables and the type checker. In this paper, we introduce a novel and general technique for combining term-based transformation systems with existing language frontends. The technique is presented in the context of a scriptable analysis and transformation framework for Java built on top of the Eclipse Java compiler. The framework consists of an adapter automatically extracted from the abstract syntax tree of the compiler and an interpreter for the Stratego program transformation language. The adapter allows the Stratego interpreter to rewrite directly on the compiler AST. We illustrate the applicability of our system with scripts written in Stratego that perform framework and library-specific analyses and transformations."
links:
doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.042"
"technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2007-025.pdf"
tags:
- "programming languages"
- "model-to-model transformation"
- "object-oriented programming"
- "rule-based"
- "Java"
- "program analysis"
- "Eclipse"
- "completeness"
- "data-flow language"
- "graph transformation"
- "interpreter"
- "abstract syntax"
- "Stratego/XT"
- "transformation language"
- "term rewriting"
- "functional programming"
- "Eclipse Java Compiler"
- "points-to analysis"
- "domain analysis"
- "analysis"
- "type system"
- "reuse"
- "data-flow programming"
- "data-flow"
- "source-to-source"
- "graph-rewriting"
- "logic programming"
- "transformation system"
- "compiler"
- "model transformation"
- "open compiler"
- "subject-oriented programming"
- "context-aware"
- "logic"
- "Spoofax"
- "rewriting logic"
- "rewriting"
- "data-flow analysis"
- "parsing"
- "feature-oriented programming"
- "open-source"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/KallebergV08"
cites: 0
citedby: 1
journal: "Electronic Notes in Theoretical Computer Science"
volume: "203"
number: "2"
pages: "21-36"
kind: "article"
key: "KallebergV08"
- title: "Language Independent Traversals for Program Transformation"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2000"
month: "July"
abstract: "Many language processing operations have a generic underlying algorithm. However, these generic algorithms either have to be implemented specifically for the language under consideration or the language needs to be encoded in a generic format that the generic algorithm works on. Stratego is a language for program transformation that supports both specific and generic views of data types. A Stratego program defines a transformation on first-order ground terms. Transformation rules define single transformation steps. Transformation rules are combined into transformation \\emph{strategies} by means of combinators that determine where and in what order rules are applied. These combinators include: primitives for traversal to the direct subterms of a node, allowing the definition of many kinds of full term traversals; full control over recursion in traversals; patterns as first-class citizens; generic term construction and deconstruction. These features create a setting in which it is possible to combine generic traversal with data type specific pattern matching, and separating logic (transformation, pattern matching) from control (traversal). This makes it possible to give language independent descriptions of language processing operations that can be instantiated to a specific language by providing the patterns of the relevant constructs. These generic algorithms only touch relevant constructors and do not need to know the entire datatype, making the algorithms insensitive to changes in the abstract syntax that do not affect the constructors relevant to the operation. Stratego is currently implemented by compilation to C code. All constructs of the language are implemented directly, i.e., the compiled program is as large as the specification, in contrast to approaches that rely on preprocessing or program generation which may have a scaling problem when dealing with large languages. The approach to generic programming in Stratego is illustrated by means of several examples including free variable extraction, bound variable renaming, substitution and syntactic unification."
links:
technicalreport: "https://researchr.org/publication/preprint-Vis00"
tags:
- "programming languages"
- "rule-based"
- "syntax definition"
- "data-flow language"
- "pattern language"
- "generic programming"
- "abstract syntax"
- "traversal"
- "transformation language"
- "data-flow programming"
- "data-flow"
- "rules"
- "C++"
- "pattern matching"
- "code generation"
- "logic programming"
- "compiler"
- "programming"
- "logic"
- "higher-order transformations"
- "systematic-approach"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/Visser00"
cites: 0
citedby: 0
booktitle: "Workshop on Generic Programming (WGP 2000)"
address: "Ponte de Lima, Portugal"
publisher: "Technical Report UU-CS-2000-19, Department of Information and Computing Sciences, Universiteit Utrecht"
kind: "inproceedings"
key: "Visser00"
- title: "Specification of Rewriting Strategies"
author:
- name: "Bas Luttik"
link: "http://www.win.tue.nl/~luttik/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "1997"
month: "November"
abstract: "User-definable strategies for the application of rewrite rules provide a means to construct transformation systems that apply rewrite rules in a controlled way. This paper describes a strategy language and its interpretation. The language is used to control the rewriting of terms using labeled rewrite rules. Rule labels are atomic strategies. Compound strategies are formed by means of sequential composition, nondeterministic choice, left choice, fixed point recursion, and two primitives for expressing term traversal. Several complex strategies such as bottom-up and top-down applica- tion and (parallel) innermost and (parallel) outermost reduction can be defined in terms of these primitives. The paper contains two case studies of the application of strategies. "
links:
"postscript": "http://www.st.ewi.tudelft.nl/~eelco/papers/LV97.ps"
tags:
- "control systems"
- "rule-based"
- "case study"
- "SDF"
- "graph transformation"
- "traversal"
- "transformation language"
- "term rewriting"
- "composition"
- "traversal combinators"
- "graph-rewriting"
- "rules"
- "transformation system"
- "rewriting"
- "rewriting strategies"
- "ASF+SDF"
- "transformation"
- "Stratego"
researchr: "https://researchr.org/publication/LuttikV97"
cites: 0
citedby: 0
booktitle: "2nd International Workshop on the Theory and Practice of Algebraic Specifications (ASF+SDF 1997)"
editor:
- name: "M. P. A. Sellink"
link: "https://researchr.org/alias/m.-p.-a.-sellink"
series: "Electronic Workshops in Computing"
address: "Berlin"
publisher: "Springer-Verlag"
kind: "inproceedings"
key: "LuttikV97"
- title: "Stratego/XT 0.16: components for transformation systems"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Karl Trygve Kalleberg"
link: "http://www.ii.uib.no/~karltk/"
- name: "Rob Vermaas"
link: "https://researchr.org/profile/robvermaas/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2006"
doi: "http://doi.acm.org/10.1145/1111542.1111558"
abstract: "Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, as well as declarative languages for deriving new components. Complete program transformation systems are composed from these components. In this paper we give an overview of Stratego/XT 0.16. "
links:
doi: "http://doi.acm.org/10.1145/1111542.1111558"
successor: "https://researchr.org/publication/BravenboerKVV08"
tags:
- "control systems"
- "programming languages"
- "object-oriented programming"
- "concrete object syntax"
- "reusable components"
- "rule-based"
- "completeness"
- "meta programming"
- "pattern language"
- "graph transformation"
- "Stratego/XT"
- "transformation language"
- "reuse"
- "graph-rewriting"
- "rules"
- "transformation system"
- "subject-oriented programming"
- "context-aware"
- "abstraction"
- "Meta-Environment"
- "rewriting"
- "rewriting strategies"
- "feature-oriented programming"
- "concrete syntax"
- "meta-objects"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/BravenboerKVV06"
cites: 0
citedby: 0
pages: "95-99"
booktitle: "Proceedings of the 2006 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, 2006, Charleston, South Carolina, USA, January 9-10, 2006"
editor:
- name: "John Hatcliff"
link: "http://people.cis.ksu.edu/~hatcliff/newweb/"
- name: "Frank Tip"
link: "http://domino.research.ibm.com/comm/research_people.nsf/pages/tip.index.html"
publisher: "ACM"
isbn: "1-59593-196-1"
kind: "inproceedings"
key: "BravenboerKVV06"
- title: "Retrofitting the AutoBayes Program Synthesis System with Concrete Syntax"
author:
- name: "Bernd Fischer"
link: "http://www.ecs.soton.ac.uk/people/bf"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2003"
doi: "https://doi.org/10.1007/978-3-540-25935-0_14"
abstract: "AUTOBAYES is a fully automatic, schema-based program synthesis system for statistical data analysis applications. Its core component is a schema library, i.e., a collection of generic code templates with associated applicability constraints which are instantiated in a problem-specific way during synthesis. Currently, AUTOBAYE S is implemented in Prolog; the schemas thus use abstract syntax (i.e., Prolog terms) to formulate the templates. However, the conceptual distance between this abstract representation and the concrete syntax of the generated programs makes the schemas hard to create and maintain. In this paper we describe how AUTOBAYE S is retrofitted with concrete syn- tax. We show how it is integrated into Prolog and describe how the seamless interaction of concrete syntax fragments with AUTOBAYE S’s remaining “legacy” meta-programming kernel based on abstract syntax is achieved. We apply the approach to gradually migrate individual schemas without forcing a disruptive migration of the entire system to a different meta-programming language. First experiences show that a smooth migration can be achieved. Moreover, it can re- sult in a considerable reduction of the code size and improved readability of the code. In particular, abstracting out fresh-variable generation and second-order term construction allows the formulation of larger continuous fragments."
links:
doi: "https://doi.org/10.1007/978-3-540-25935-0_14"
"technical report": "http://www.cs.uu.nl/research/techreps/UU-CS-2004-012.html"
tags:
- "programming languages"
- "object-oriented programming"
- "concrete object syntax"
- "Prolog"
- "rule-based"
- "program analysis"
- "meta programming"
- "data-flow language"
- "generic programming"
- "program synthesis"
- "AutoBayes"
- "SDF"
- "meta-model"
- "XML"
- "abstract syntax"
- "XML Schema"
- "Stratego/XT"
- "analysis"
- "constraints"
- "data-flow programming"
- "data-flow"
- "migration"
- "code generation"
- "language embedding"
- "programming"
- "subject-oriented programming"
- "Meta-Environment"
- "data-flow analysis"
- "systematic-approach"
- "ASF+SDF"
- "feature-oriented programming"
- "concrete syntax"
- "meta-objects"
- "Stratego"
researchr: "https://researchr.org/publication/FischerV04-dagstuhl"
cites: 0
citedby: 0
pages: "239-253"
booktitle: "Domain-Specific Program Generation, International Seminar, Dagstuhl Castle, Germany, March 23-28, 2003, Revised Papers"
editor:
- name: "Christian Lengauer"
link: "http://www.infosun.fim.uni-passau.de/cl/staff/lengauer/"
- name: "Don S. Batory"
link: "http://www.cs.utexas.edu/~dsb/"
- name: "Charles Consel"
link: "https://researchr.org/alias/charles-consel"
- name: "Martin Odersky"
link: "http://lampwww.epfl.ch/~odersky/"
volume: "3016"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-22119-0"
kind: "inproceedings"
key: "FischerV04-dagstuhl"
- title: "Generalized Type-Based Disambiguation of Meta Programs with Concrete Object Syntax"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Rob Vermaas"
link: "https://researchr.org/profile/robvermaas/publications"
- name: "Jurgen J. Vinju"
link: "http://homepages.cwi.nl/~jurgenv/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2005"
doi: "http://dx.doi.org/10.1007/11561347_12"
abstract: "In meta programming with concrete object syntax, object-level programs are composed from fragments written in concrete syntax. The use of small program fragments in such quotations and the use of meta-level expressions within these fragments (anti-quotation) often leads to ambiguities. This problem is usually solved through explicit disambiguation, resulting in considerable syntactic overhead. A few systems manage to reduce this overhead by using type information during parsing. Since this is hard to achieve with traditional parsing technology, these systems provide specific combinations of meta and object languages, and their implementations are difficult to reuse. In this paper, we generalize these approaches and present a language independent method for introducing concrete object syntax without explicit disambiguation. The method uses scannerless generalized-LR parsing to parse meta programs with embedded object-level fragments, which produces a forest of all possible parses. This forest is reduced to a tree by a disambiguating type checker for the meta language. To validate our method we have developed embeddings of several object languages in Java, including AspectJ and Java itself. "
links:
doi: "http://dx.doi.org/10.1007/11561347_12"
tags:
- "programming languages"
- "AspectJ"
- "object-oriented programming"
- "concrete object syntax"
- "rule-based"
- "Java"
- "syntax definition"
- "meta programming"
- "SDF"
- "meta-model"
- "disambiguation"
- "type system"
- "reuse"
- "programming"
- "subject-oriented programming"
- "Meta-Environment"
- "parsing"
- "scannerless parsing"
- "systematic-approach"
- "ASF+SDF"
- "feature-oriented programming"
- "concrete syntax"
- "meta-objects"
- "domain-specific language"
researchr: "https://researchr.org/publication/BravenboerVVV05"
cites: 0
citedby: 2
pages: "157-172"
booktitle: "Generative Programming and Component Engineering, 4th International Conference, GPCE 2005"
editor:
- name: "Robert Glück"
link: "http://www.diku.dk/hjemmesider/ansatte/glueck/"
- name: "Michael R. Lowry"
link: "https://researchr.org/alias/michael-r.-lowry"
volume: "3676"
series: "Lecture Notes in Computer Science"
address: "Tallinn, Estonia"
publisher: "Springer"
isbn: "3-540-29138-5"
kind: "inproceedings"
key: "BravenboerVVV05"
- title: "Building Interpreters with Rewriting Strategies"
author:
- name: "Eelco Dolstra"
link: "https://researchr.org/profile/eelcodolstra/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2002"
doi: "https://doi.org/10.1016/S1571-0661(04)80427-4"
abstract: "Programming language semantics based on pure rewrite rules suffers from the gap between the rewriting strategy implemented in rewriting engines and the intended evaluation strategy. This paper shows how programmable rewriting strategies can be used to implement interpreters for programming languages based on rewrite rules. The advantage of this approach is that reduction rules are first class entities that can be reused in different strategies, even in other kinds of program transfor- mations such as optimizers. The approach is illustrated with several interpreters for the lambda calculus based on implicit and explicit (parallel) substitution, different strategies including normalization, eager evaluation, lazy evaluation, and lazy eval- uation with updates. An extension with pattern matching and choice shows that such interpreters can easily be extended."
links:
doi: "https://doi.org/10.1016/S1571-0661(04)80427-4"
tags:
- "laziness"
- "programming languages"
- "optimization"
- "semantics"
- "rule-based"
- "pattern language"
- "dynamic rewrite rules"
- "interpreter"
- "Stratego/XT"
- "dynamic rules"
- "parallel programming"
- "reuse"
- "graph-rewriting"
- "rules"
- "pattern matching"
- "programming"
- "program optimization"
- "rewriting"
- "systematic-approach"
- "rewriting strategies"
- "interpreters"
- "Stratego"
researchr: "https://researchr.org/publication/DolstraV02"
cites: 0
citedby: 0
journal: "Electronic Notes in Theoretical Computer Science"
volume: "65"
number: "3"
pages: "57-76"
kind: "article"
key: "DolstraV02"
- title: "Declarative Access Control for WebDSL: Combining Language Integration and Separation of Concerns"
author:
- name: "Danny M. Groenewegen"
link: "https://www.linkedin.com/in/dannygroenewegen/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
doi: "http://dx.doi.org/10.1109/ICWE.2008.15"
abstract: "In this paper, we present the extension of WebDSL, a domain-specific language for web application development, with abstractions for declarative definition of access control. The extension supports the definition of a wide range of access control policies concisely and transparently as a separate concern. In addition to regulating the access to pages and actions, access control rules are used to infer navigation options not accessible to the current user, preventing the presentation of inaccessible links. The extension is an illustration of a general approach to the design of domain-specific languages for different technical domains to support separation of concerns in application development, while preserving linguistic integration. This approach is realized by means of a transformational semantics that weaves separately defined aspects into an integrated implementation. "
links:
doi: "http://dx.doi.org/10.1109/ICWE.2008.15"
"webdsl": "http://webdsl.org"
tags:
- "WebDSL"
- "semantics"
- "rule-based"
- "separation of concerns"
- "transformation language"
- " action semantics"
- "language design"
- "weaving"
- "rules"
- "web applications"
- "DSL"
- "abstraction"
- "access control policies"
- "access control"
- "aspect weaving"
- "design"
- "role-based access control"
- "systematic-approach"
- "transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/GroenewegenV08"
cites: 26
citedby: 7
pages: "175-188"
booktitle: "Proceedings of the Eighth International Conference on Web Engineering, ICWE 2008, 14-18 July 2008, Yorktown Heights, New York, USA"
editor:
- name: "Daniel Schwabe"
link: "https://researchr.org/alias/daniel-schwabe"
- name: "Francisco Curbera"
link: "https://researchr.org/alias/francisco-curbera"
- name: "Paul Dantzig"
link: "https://researchr.org/alias/paul-dantzig"
publisher: "IEEE"
isbn: "978-0-7695-3261-5"
kind: "inproceedings"
key: "GroenewegenV08"
- title: "Program Transformation with Scoped Dynamic Rewrite Rules"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Arthur van Dam"
link: "https://researchr.org/profile/arthurvandam/publications"
- name: "Karina Olmos"
link: "https://researchr.org/profile/karinaolmos/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2006"
doi: "https://content.iospress.com/articles/fundamenta-informaticae/fi69-1-2-06"
abstract: "The applicability of term rewriting to program transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strategies. The second problem is addressed by the extension of rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are defined at run-time and can access variables available from their definition context. Rules defined within a rule scope are automatically retracted at the end of that scope. In this paper, we explore the design space of dynamic rules, and their application to transformation problems. The technique is formally defined by extending the operational semantics underlying the program transformation language Stratego, and illustrated by means of several program transformations in Stratego, including constant propagation, bound variable renaming, dead code elimination, function inlining, and function specialization. "
links:
doi: "https://content.iospress.com/articles/fundamenta-informaticae/fi69-1-2-06"
"technical report": "http://www.cs.uu.nl/research/techreps/UU-CS-2005-005.html"
tags:
- "programming languages"
- "semantics"
- "rule-based"
- "formal semantics"
- "graph transformation"
- "dynamic rewrite rules"
- "Stratego/XT"
- "transformation language"
- "term rewriting"
- "language design"
- "graph-rewriting"
- "rules"
- "operational semantics"
- "context-aware"
- "access control"
- "rewriting"
- "design"
- "role-based access control"
- "rewriting strategies"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/BravenboerDOV06"
cites: 0
citedby: 4
journal: "Fundamenta Informaticae"
volume: "69"
number: "1-2"
pages: "123-178"
kind: "article"
key: "BravenboerDOV06"
- title: "Parse Table Composition"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2009"
doi: "http://dx.doi.org/10.1007/978-3-642-00434-6_6"
abstract: "Module systems, separate compilation, deployment of binary components, and dynamic linking have enjoyed wide acceptance in programming languages and systems. In contrast, the syntax of languages is usually defined in a non-modular way, cannot be compiled separately, cannot easily be combined with the syntax of other languages, and cannot be deployed as a component for later composition. Grammar formalisms that do support modules use whole program compilation. Current extensible compilers focus on source-level extensibility, which requires users to compile the compiler with a specific configuration of extensions. A compound parser needs to be generated for every combination of extensions. The generation of parse tables is expensive, which is a particular problem when the composition configuration is not fixed to enable users to choose language extensions. In this paper we introduce an algorithm for parse table composition to support separate compilation of grammars to parse table components. Parse table components can be composed (linked) efficiently at runtime, i.e. just before parsing. While the worst-case time complexity of parse table composition is exponential (like the complexity of parse table generation itself), for realistic language combination scenarios involving grammars for real languages, our parse table composition algorithm is an order of magnitude faster than computation of the parse table for the combined grammars. "
links:
doi: "http://dx.doi.org/10.1007/978-3-642-00434-6_6"
tags:
- "parsing algorithm"
- "programming languages"
- "deployment"
- "syntax definition"
- "SDF"
- "composition"
- "source-to-source"
- "parse table composition"
- "compiler"
- "programming"
- "language composition"
- "parsing"
- "extensible language"
- "ASF+SDF"
- "open-source"
- "grammar"
- "domain-specific language"
researchr: "https://researchr.org/publication/BravenboerV08"
cites: 0
citedby: 0
pages: "74-94"
booktitle: "Software Language Engineering, First International Conference, SLE 2008, Toulouse, France, September 29-30, 2008. Revised Selected Papers"
editor:
- name: "Dragan Gasevic"
link: "http://www.sfu.ca/~dgasevic/"
- name: "Ralf Lämmel"
link: "http://www.uni-koblenz.de/~laemmel/Site/Home.html"
- name: "Eric {Van Wyk}"
link: "http://www-users.cs.umn.edu/~evw/"
volume: "5452"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "978-3-642-00433-9"
kind: "inproceedings"
key: "BravenboerV08"
- title: "Transformations for Abstractions"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2005"
month: "October"
doi: "http://dx.doi.org/10.1109/SCAM.2005.26"
abstract: "The transformation language Stratego provides high-level abstractions for implementation of a wide range of transformations. Our aim is to integrate transformation in the software development process and make it available to programmers. This requires the transformations provided by the programming environment to be extensible. This paper presents a case study in the implementation of extensible programming environments using Stratego, by developing a small collection of language extensions and several typical transformations for these languages."
links:
doi: "http://dx.doi.org/10.1109/SCAM.2005.26"
"pdf": "http://www.cs.uu.nl/research/techreps/repo/CS-2005/2005-034.pdf"
"technical report": "http://www.cs.uu.nl/research/techreps/UU-CS-2005-034.html"
"doi": "http://dx.doi.org/10.1109/SCAM.2005.26"
tags:
- "programming languages"
- "meta programming"
- "case study"
- "Stratego/XT"
- "transformation language"
- "extensible languages"
- "programming"
- "abstraction"
- "Meta-Environment"
- "extensible language"
- "interpreters"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/Visser05-SCAM"
cites: 0
citedby: 1
booktitle: "5th IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2005), 30 September - 1 October 2005, Budapest, Hungary"
publisher: "IEEE Computer Society"
isbn: "0-7695-2292-0"
kind: "inproceedings"
key: "Visser05-SCAM"
- title: "Stratego/XT 0.17. A language and toolset for program transformation"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Karl Trygve Kalleberg"
link: "http://www.ii.uib.no/~karltk/"
- name: "Rob Vermaas"
link: "https://researchr.org/profile/robvermaas/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
doi: "http://dx.doi.org/10.1016/j.scico.2007.11.003"
abstract: "Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, and tools for generating such components from declarative specifications. Complete program transformation systems are composed from these components."
links:
doi: "http://dx.doi.org/10.1016/j.scico.2007.11.003"
"technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-011.pdf"
"stratego/xt": "http://strategoxt.org"
tags:
- "control systems"
- "programming languages"
- "object-oriented programming"
- "concrete object syntax"
- "reusable components"
- "rule-based"
- "completeness"
- "meta programming"
- "pattern language"
- "graph transformation"
- "Stratego/XT"
- "transformation language"
- "reuse"
- "graph-rewriting"
- "rules"
- "transformation system"
- "DSL"
- "programming"
- "subject-oriented programming"
- "context-aware"
- "abstraction"
- "Meta-Environment"
- "rewriting"
- "rewriting strategies"
- "feature-oriented programming"
- "concrete syntax"
- "meta-objects"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/BravenboerKVV08"
cites: 0
citedby: 7
journal: "Science of Computer Programming"
volume: "72"
number: "1-2"
pages: "52-70"
kind: "article"
key: "BravenboerKVV08"
- title: "Stratego: A Language for Program Transformation Based on Rewriting Strategies"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2001"
doi: "https://doi.org/10.1007/3-540-45127-7_27"
abstract: "Program transformation is used in many areas of software engineering. Examples include compilation, optimization, synthesis, refactoring, migration, normalization and improvement [15]. Rewrite rules are a natural formalism for expressing single program transformations. However, using a standard strategy for normalizing a program with a set of rewrite rules is not adequate for implementing program transformation systems. It may be necessary to apply a rule only in some phase of a transformation, to apply rules in some order, or to apply a rule only to part of a program. These restrictions may be necessary to avoid non-termination or to choose a specific path in a non-con uent rewrite system. Stratego is a language for the specification of program transformation systems based on the paradigm of rewriting strategies. It supports the separation of strategies from transformation rules, thus allowing careful control over the application of these rules. As a result of this separation, transformation rules are reusable in multiple difierent transformations and generic strategies capturing patterns of control can be described independently of the transformation rules they apply. Such strategies can even be formulated independently of the object language by means of the generic term traversal capabilities of Stratego. In this short paper I give a description of version 0.5 of the Stratego system, discussing the features of the language (Section 2), the library (Section 3), the compiler (Section 4) and some of the applications that have been built (Section 5). Stratego is available as free software under the GNU General Public License from http://www.stratego-language.org. "
links:
doi: "https://doi.org/10.1007/3-540-45127-7_27"
successor: "https://researchr.org/publication/BravenboerKVV06"
tags:
- "control systems"
- "programming languages"
- "optimization"
- "object-oriented programming"
- "rule-based"
- "transformation engineering"
- "pattern language"
- "generic programming"
- "graph transformation"
- "Stratego/XT"
- "traversal"
- "refactoring"
- "language engineering"
- "transformation language"
- "software language engineering"
- "term rewriting"
- "reuse"
- "termination"
- "graph-rewriting"
- "software engineering"
- "rules"
- "programming paradigms"
- "migration"
- "transformation system"
- "rule-based refactoring"
- "compiler"
- "subject-oriented programming"
- "program optimization"
- "higher-order transformations"
- "rewriting"
- "rewriting strategies"
- "feature-oriented programming"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/Visser01"
cites: 0
citedby: 1
pages: "357-362"
booktitle: "Rewriting Techniques and Applications, 12th International Conference, RTA 2001, Utrecht, The Netherlands, May 22-24, 2001, Proceedings"
editor:
- name: "Aart Middeldorp"
link: "https://researchr.org/alias/aart-middeldorp"
volume: "2051"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-42117-3"
kind: "inproceedings"
key: "Visser01"
- title: "A core language for rewriting"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
- name: "Zine-El-Abidine Benaissa"
link: "http://web.archive.org/web/20010515202744/www.cse.ogi.edu/~benaissa/"
year: "1998"
doi: "http://dx.doi.org/10.1016/S1571-0661(05)80027-1"
abstract: "System S is a calculus providing the basic abstractions of term rewriting: matching and building terms, term traversal, combining computations and handling failure. The calculus forms a core language for implementation of a wide variety of rewriting languages, or more generally, languages for specifying tree transformations. In this paper we show how a conventional rewriting language based on conditional term rewriting can be implemented straightforwardly in System S. Subsequently we show how this implementation can be extended with features such as matching conditions, negative conditions, default rules, non-strictness annotations and alternative evaluation strategies."
links:
doi: "http://dx.doi.org/10.1016/S1571-0661(05)80027-1"
tags:
- "rule-based"
- "SDF"
- "graph transformation"
- "traversal"
- "transformation language"
- "term rewriting"
- "graph-rewriting"
- "rules"
- "transformation system"
- "abstraction"
- "rewriting"
- "rewriting strategies"
- "ASF+SDF"
- "transformation"
researchr: "https://researchr.org/publication/VisserB98"
cites: 0
citedby: 1
journal: "Electronic Notes in Theoretical Computer Science"
volume: "15"
pages: "422-441"
kind: "article"
key: "VisserB98"
- title: "Mixing source and bytecode: a case for compilation by normalization"
author:
- name: "Lennart C. L. Kats"
link: "http://www.lclnet.nl/"
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
doi: "http://doi.acm.org/10.1145/1449764.1449772"
abstract: "Language extensions increase programmer productivity by providing concise, often domain-specific syntax, and support for static verification of correctness, security, and style constraints. Language extensions can often be realized through translation to the base language, supported by preprocessors and extensible compilers. However, various kinds of extensions require further adaptation of a base compiler's internal stages and components, for example to support separate compilation or to make use of low-level primitives of the platform (e.g., jump instructions or unbalanced synchronization). To allow for a more loosely coupled approach, we propose an open compiler model based on normalization steps from a high-level language to a subset of it, the core language. We developed such a compiler for a mixed Java and (core) bytecode language, and evaluate its effectiveness for composition mechanisms such as traits, as well as statement-level and expression-level language extensions. "
links:
doi: "http://doi.acm.org/10.1145/1449764.1449772"
"technical report (pdf)": "http://www.lclnet.nl/publications/TUD-SERG-2008-030.pdf"
"project home page": "http://www.strategoxt.org/Stratego/TheDryadCompiler"
tags:
- "compilation by normalization"
- "rule-based"
- "Java"
- "synchronization"
- "translation"
- "meta-model"
- "modeling language"
- "Stratego/XT"
- "language modeling"
- "composition"
- "constraints"
- "source-to-source"
- "C++"
- "Dryad"
- "security"
- "compiler"
- "Meta-Environment"
- "extensible language"
- "systematic-approach"
- "open-source"
- "Stratego"
- "JavaFront"
- "domain-specific language"
researchr: "https://researchr.org/publication/KatsBV08"
cites: 44
citedby: 3
pages: "91-108"
booktitle: "Proceedings of the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-23, 2008, Nashville, TN, USA"
editor:
- name: "Gail E. Harris"
link: "https://researchr.org/alias/gail-e.-harris"
publisher: "ACM"
isbn: "978-1-60558-215-3"
kind: "inproceedings"
key: "KatsBV08"
- title: "Building Program Optimizers with Rewriting Strategies"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
- name: "Zine-El-Abidine Benaissa"
link: "http://web.archive.org/web/20010515202744/www.cse.ogi.edu/~benaissa/"
- name: "Andrew P. Tolmach"
link: "http://www.cs.pdx.edu/~apt"
year: "1998"
doi: "http://doi.acm.org/10.1145/289423.289425"
abstract: "We describe a language for defining term rewriting strategies, and its application to the production of program optimizers. Valid transformations on program terms can be described by a set of rewrite rules; rewriting strategies are used to describe when and how the various rules should be applied in order to obtain the desired optimization effects. Separating rules from strategies in this fashion makes it easier to reason about the behavior of the optimizer as a whole, compared to traditional monolithic optimizer implementations. We illustrate the expressiveness of our language by using it to describe a simple optimizer for an ML-like intermediate representation.The basic strategy language uses operators such as sequential composition, choice, and recursion to build transformers from a set of labeled unconditional rewrite rules. We also define an extended language in which the side-conditions and contextual rules that arise in realistic optimizer specifications can themselves be expressed as strategy-driven rewrites. We show that the features of the basic and extended languages can be expressed by breaking down the rewrite rules into their primitive building blocks, namely matching and building terms in variable binding environments. This gives us a low-level core language which has a clear semantics, can be implemented straightforwardly and can itself be optimized. The current implementation generates C code from a strategy specification. "
links:
doi: "http://doi.acm.org/10.1145/289423.289425"
"postscript": "http://www.st.ewi.tudelft.nl/~eelco/papers/VBT98.ps"
tags:
- "programming languages"
- "optimization"
- "semantics"
- "rule-based"
- "meta programming"
- "graph transformation"
- "variable binding"
- "Stratego/XT"
- "transformation language"
- "term rewriting"
- "composition"
- "graph-rewriting"
- "rules"
- "C++"
- "program optimization"
- "Meta-Environment"
- "higher-order transformations"
- "rewriting"
- "rewriting strategies"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/VisserBT98"
cites: 0
citedby: 5
pages: "13-26"
booktitle: "Proceedings of the third ACM SIGPLAN international conference on Functional programming"
editor:
- name: "Matthias Felleisen"
link: "http://www.ccs.neu.edu/home/matthias/"
- name: "Paul Hudak"
link: "http://www.cs.yale.edu/homes/hudak/"
- name: "Christian Queinnec"
link: "https://researchr.org/alias/christian-queinnec"
address: "Baltimore, Maryland, United States"
publisher: "ACM"
kind: "inproceedings"
key: "VisserBT98"
- title: "Meta-programming with Concrete Object Syntax"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2002"
doi: "https://doi.org/10.1007/3-540-45821-2_19"
abstract: "Meta programs manipulate structured representations, i.e., abstract syntax trees, of programs. The conceptual distance between the concrete syntax meta-programmers use to reason about programs and the notation for abstract syntax manipulation provided by general purpose (meta-) programming languages is too great for many applications. In this paper it is shown how the syntax definition formalism SDF can be employed to fit any meta-programming language with concrete syntax notation for composing and analyzing object programs. As a case study, the addition of concrete syntax to the program transformation language Stratego is presented. The approach is then generalized to arbitrary meta-languages. "
links:
doi: "https://doi.org/10.1007/3-540-45821-2_19"
tags:
- "programming languages"
- "model-to-model transformation"
- "object-oriented programming"
- "concrete object syntax"
- "syntax definition"
- "meta programming"
- "case study"
- "SDF"
- "meta-model"
- "abstract syntax"
- "Stratego/XT"
- "transformation language"
- "source-to-source"
- "model transformation"
- "programming"
- "subject-oriented programming"
- "Meta-Environment"
- "parsing"
- "scannerless parsing"
- "systematic-approach"
- "ASF+SDF"
- "feature-oriented programming"
- "concrete syntax"
- "meta-objects"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/Visser02"
cites: 23
citedby: 6
pages: "299-315"
booktitle: "Generative Programming and Component Engineering, ACM SIGPLAN/SIGSOFT Conference, GPCE 2002, Pittsburgh, PA, USA, October 6-8, 2002, Proceedings"
editor:
- name: "Don S. Batory"
link: "http://www.cs.utexas.edu/~dsb/"
- name: "Charles Consel"
link: "https://researchr.org/alias/charles-consel"
- name: "Walid Taha"
link: "http://www.cs.rice.edu/~taha/"
volume: "2487"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-44284-7"
kind: "inproceedings"
key: "Visser02"
- title: "Code Generation by Model Transformation"
author:
- name: "Zef Hemel"
link: "http://zef.me"
- name: "Lennart C. L. Kats"
link: "http://www.lclnet.nl/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2008"
doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13"
abstract: "The realization of model-driven software development requires effective techniques for implementing code generators. In this paper, we present a case study of code generation by model transformation with Stratego, a high-level transformation language based on the paradigm of rewrite rules with programmable strategies that integrates model-to-model, model-to-code, and code-to-code transformations. The use of concrete object syntax guarantees syntactic correctness of code patterns, and enables the subsequent transformation of generated code. The composability of strategies supports two dimensions of transformation modularity. Vertical modularity is achieved by designing a generator as a pipeline of model-to-model transformations that gradually transforms a high-level input model to an implementation. Horizontal modularity is achieved by supporting the definition of plugins which implement all aspects of a language feature. We discuss the application of these techniques in the implementation of WebDSL, a domain-specific language for dynamic web applications with a rich data model. "
links:
doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13"
successor: "https://researchr.org/publication/HemelKGV10"
"technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-012.pdf"
tags:
- "programming languages"
- "model-to-model transformation"
- "object-oriented programming"
- "WebDSL"
- "concrete object syntax"
- "rule-based"
- "transformation engineering"
- "syntax definition"
- "meta programming"
- "data-flow language"
- "pattern language"
- "case study"
- "graph transformation"
- "meta-model"
- "modeling language"
- "modeling"
- "language engineering"
- "transformation language"
- "software language engineering"
- "language modeling"
- "web engineering"
- "data-flow programming"
- "model-driven development"
- "data-flow"
- "source-to-source"
- "graph-rewriting"
- "software engineering"
- "rules"
- "model-driven engineering"
- "C++"
- "programming paradigms"
- "code generation"
- "object-role modeling"
- "aspect oriented programming"
- "model transformation"
- "web applications"
- "DSL"
- "subject-oriented programming"
- "Meta-Environment"
- "rewriting"
- "rewriting strategies"
- "feature-oriented programming"
- "concrete syntax"
- "open-source"
- "meta-objects"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/HemelKV08"
cites: 0
citedby: 3
pages: "183-198"
booktitle: "Theory and Practice of Model Transformations, First International Conference, ICMT 2008, Zürich, Switzerland, July 1-2, 2008, Proceedings"
editor:
- name: "Antonio Vallecillo"
link: "http://www.lcc.uma.es/~av/"
- name: "Jeffrey G. Gray"
link: "http://www.gray-area.org/"
- name: "Alfonso Pierantonio"
link: "http://www.di.univaq.it/alfonso"
volume: "5063"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "978-3-540-69926-2"
kind: "inproceedings"
key: "HemelKV08"
- title: "Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2003"
doi: "https://doi.org/10.1007/978-3-540-25935-0_13"
abstract: "Stratego/XT is a framework for the development of transformation systems aiming to support a wide range of program transformations. The framework consists of the transformation language Stratego and the XT collection of transformation tools. Stratego is based on the paradigm of rewriting under the control of programmable rewriting strategies. The XT tools provide facilities for the infrastructure of transformation systems including parsing and pretty-printing. The framework addresses the entire range of the development process; from the specification of transformations to their composition into transformation systems. This chapter gives an overview of the main ingredients involved in the composition of transformation systems with Stratego/XT, where we distinguish the abstraction levels of rules, strategies, tools, and systems."
links:
doi: "https://doi.org/10.1007/978-3-540-25935-0_13"
successor: "https://researchr.org/publication/BravenboerKVV06"
"springer": "http://www.springerlink.com/content/my9we5tj86u2f59n/"
tags:
- "control systems"
- "programming languages"
- "rule-based"
- "graph transformation"
- "Stratego/XT"
- "transformation language"
- "composition"
- "graph-rewriting"
- "rules"
- "programming paradigms"
- "transformation system"
- "abstraction"
- "rewriting"
- "parsing"
- "rewriting strategies"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/Visser03"
cites: 0
citedby: 4
pages: "216-238"
booktitle: "Domain-Specific Program Generation, International Seminar, Dagstuhl Castle, Germany, March 23-28, 2003, Revised Papers"
editor:
- name: "Christian Lengauer"
link: "http://www.infosun.fim.uni-passau.de/cl/staff/lengauer/"
- name: "Don S. Batory"
link: "http://www.cs.utexas.edu/~dsb/"
- name: "Charles Consel"
link: "https://researchr.org/alias/charles-consel"
- name: "Martin Odersky"
link: "http://lampwww.epfl.ch/~odersky/"
volume: "3016"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-22119-0"
kind: "inproceedings"
key: "Visser03"
- title: "XT: a bundle of program transformation tools"
author:
- name: "Merijn de Jonge"
link: "https://researchr.org/profile/merijndejonge/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
- name: "Joost Visser"
link: "http://www.di.uminho.pt/~joost.visser/"
year: "2001"
doi: "http://dx.doi.org/10.1016/S1571-0661(04)80921-6"
abstract: "XT bundles existing and newly developed program transformation libraries and tools into an open framework that supports component-based development of program transformations. We discuss the roles of XT's constituents in the development process of program transformation tools, as well as some experiences with building program transformation systems with XT. "
links:
doi: "http://dx.doi.org/10.1016/S1571-0661(04)80921-6"
successor: "https://researchr.org/publication/BravenboerKVV06"
tags:
- "model-to-model transformation"
- "rule-based"
- "Stratego/XT"
- "model-driven development"
- "source-to-source"
- "transformation system"
- "model transformation"
- "programming"
- "open-source"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/JongeVV01"
cites: 0
citedby: 0
journal: "Electronic Notes in Theoretical Computer Science"
volume: "44"
number: "2"
pages: "79-86"
kind: "article"
key: "JongeVV01"
- title: "A survey of strategies in rule-based program transformation systems"
author:
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2005"
doi: "http://dx.doi.org/10.1016/j.jsc.2004.12.011"
abstract: "Program transformation is the mechanical manipulation of a program in order to improve it relative to some cost function and is understood broadly as the domain of computation where programs are the data. The natural basic building blocks of the domain of program transformation are transformation rules expressing a ?one-step? transformation on a fragment of a program. The ultimate perspective of research in this area is a high-level, language parametric, rule-based program transformation system, which supports a wide range of transformations, admitting efficient implementations that scale to large programs. This situation has not yet been reached, as trade-offs between different goals need to be made. This survey gives an overview of issues in rule-based program transformation systems, focusing on the expressivity of rule-based program transformation systems and in particular on transformation strategies available in various approaches. The survey covers term rewriting, extensions of basic term rewriting, tree parsing strategies, systems with programmable strategies, traversal strategies, and context-sensitive rules."
links:
doi: "http://dx.doi.org/10.1016/j.jsc.2004.12.011"
tags:
- "programming languages"
- "transformation strategy"
- "tree parsing"
- "rule-based"
- "attribute grammars"
- "tree traversal"
- "data-flow language"
- "pattern language"
- "generic programming"
- "congruence operators"
- "transformation strategies"
- "graph transformation"
- "traversal"
- "transformation language"
- "term rewriting"
- "generic traversal strategies"
- "tree pattern matching"
- "data-flow programming"
- "program transformation system"
- "data-flow"
- "graph-rewriting"
- "survey"
- "rules"
- "pattern matching"
- "strategy annotations"
- "strategy combinators"
- "transformation system"
- "program representation"
- "programming"
- "context-aware"
- "rule-based program transformation"
- "context-sensitive transformation"
- "higher-order transformations"
- "rewriting"
- "parsing"
- "systematic-approach"
- "rewriting strategies"
- "transformation"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/Visser05"
cites: 1
citedby: 1
journal: "Journal of Symbolic Computation"
volume: "40"
number: "1"
pages: "831-873"
kind: "article"
key: "Visser05"
- title: "Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2004"
doi: "http://doi.acm.org/10.1145/1028976.1029007"
abstract: "Application programmer's interfaces give access to domain knowledge encapsulated in class libraries without providing the appropriate notation for expressing domain composition. Since object-oriented languages are designed for extensibility and reuse, the language constructs are often sufficient for expressing domain abstractions at the semantic level. However, they do not provide the right abstractions at the syntactic level. In this paper we describe MetaBorg, a method for providing concrete syntax for domain abstractions to application programmers. The method consists of embedding domain-specific languages in a general purpose host language and assimilating the embedded domain code into the surrounding host code. Instead of extending the implementation of the host language, the assimilation phase implements domain abstractions in terms of existing APIs leaving the host language undisturbed. Indeed, MetaBorg can be considered a method for promoting APIs to the language level. The method is supported by proven and available technology, i.e. the syntax definition formalism SDF and the program transformation language and toolset Stratego/XT. We illustrate the method with applications in three domains: code generation, XML generation, and user-interface construction."
links:
doi: "http://doi.acm.org/10.1145/1028976.1029007"
tags:
- "programming languages"
- "object-oriented programming"
- "concrete object syntax"
- "syntax definition"
- "meta programming"
- "assimilation"
- "SDF"
- "XML"
- "XML Schema"
- "Stratego/XT"
- "transformation language"
- "composition"
- "MetaBorg"
- "language design"
- "reuse"
- "code generation"
- "subject-oriented programming"
- "abstraction"
- "Meta-Environment"
- "extensible language"
- "ASF+SDF"
- "feature-oriented programming"
- "concrete syntax"
- "meta-objects"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/BravenboerV04"
cites: 51
citedby: 8
pages: "365-383"
booktitle: "Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004"
editor:
- name: "John M. Vlissides"
link: "https://researchr.org/alias/john-m.-vlissides"
- name: "Douglas C. Schmidt"
link: "https://researchr.org/alias/douglas-c.-schmidt"
address: "Vancouver, BC, Canada"
publisher: "ACM"
isbn: "1-58113-831-8"
kind: "inproceedings"
key: "BravenboerV04"
- title: "Combining Aspect-Oriented and Strategic Programming"
author:
- name: "Karl Trygve Kalleberg"
link: "http://www.ii.uib.no/~karltk/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2006"
doi: "http://dx.doi.org/10.1016/j.entcs.2005.06.035"
abstract: "Properties such as logging, persistence, debugging, tracing, distribution, performance monitoring and exception handling occur in most programming paradigms and are normally very difficult or even impossible to modularize with traditional modularization mechanisms because they are cross-cutting. Recently, aspect-oriented programming has enjoyed recognition as a practical solution for separating these concerns. In this paper we describe an extension to the Stratego term rewriting language for capturing such properties. We show our aspect language offers a concise, practical and adaptable solution for dealing with unanticipated algorithm extension for forward data-flow propagation and dynamic type checking of terms. We briefly discuss some of the challenges faced when designing and implementing an aspect extension for and in a rule-based term rewriting system."
links:
doi: "http://dx.doi.org/10.1016/j.entcs.2005.06.035"
tags:
- "programming languages"
- "object-oriented programming"
- "rule-based"
- "transformation aspects"
- "data-flow language"
- "graph transformation"
- "exceptions"
- "Stratego/XT"
- "transformation language"
- "term rewriting"
- "type system"
- "data-flow programming"
- "data-flow"
- "graph-rewriting"
- "rules"
- "programming paradigms"
- "type checking"
- "strategic programming"
- "debugging"
- "transformation system"
- "Strategic term rewriting"
- "aspect oriented programming"
- "programming"
- "subject-oriented programming"
- "rewriting"
- "feature-oriented programming"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/KallebergV06"
cites: 0
citedby: 0
journal: "Electronic Notes in Theoretical Computer Science"
volume: "147"
number: "1"
pages: "5-30"
kind: "article"
key: "KallebergV06"
- title: "Strategies for Source-to-Source Constant Progagation"
author:
- name: "Karina Olmos"
link: "https://researchr.org/profile/karinaolmos/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2002"
doi: "https://doi.org/10.1016/S1571-0661(04)80605-4"
abstract: "Data-flow optimizations are usually implemented on low-level intermediate repre- sentations. This is not appropriate for source-to-source optimizations, which re- construct a source level program after transformation. In this paper we show how constant propagation, a well known data-flow optimization problem, can be imple- mented on abstract syntax trees in Stratego, a rewriting system extended with programmable rewriting strategies for the control over the application of rules and dynamic rewrite rules for the propagation of information. "
links:
doi: "https://doi.org/10.1016/S1571-0661(04)80605-4"
tags:
- "control systems"
- "model-to-model transformation"
- "optimization"
- "rule-based"
- "graph transformation"
- "dynamic rewrite rules"
- "abstract syntax"
- "Stratego/XT"
- "data-flow programming"
- "data-flow"
- "source-to-source"
- "graph-rewriting"
- "rules"
- "transformation system"
- "model transformation"
- "program optimization"
- "rewriting"
- "constant propagation"
- "rewriting strategies"
- "open-source"
- "transformation"
- "Stratego"
- "program transformation"
researchr: "https://researchr.org/publication/OlmosV02"
cites: 0
citedby: 0
journal: "Electronic Notes in Theoretical Computer Science"
volume: "70"
number: "6"
pages: "156-175"
kind: "article"
key: "OlmosV02"
- title: "The Spoofax language workbench: rules for declarative specification of languages and IDEs"
author:
- name: "Lennart C. L. Kats"
link: "http://www.lclnet.nl/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2010"
doi: "https://doi.org/10.1145/1869459.1869497"
abstract: "Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into a single environment. It uses concise, declarative specifications for languages and IDE services. In this paper we describe the architecture of Spoofax and introduce idioms for high-level specifications of language semantics using rewrite rules, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion. The implementation of these services is supported by language-parametric editor service classes that can be dynamically loaded by the Eclipse IDE, allowing new languages to be developed and used side-by-side in the same Eclipse environment."
links:
doi: "https://doi.org/10.1145/1869459.1869497"
dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsV10"
"acm dl": "https://doi.org/10.1145/1932682.1869497"
tags:
- "programming languages"
- "model-to-model transformation"
- "workbench"
- "semantics"
- "rule-based"
- "Eclipse"
- "meta programming"
- "model editor"
- "graph transformation"
- "meta-model"
- "transformation language"
- "architecture"
- "reuse"
- "model-driven development"
- "graph-rewriting"
- "rules"
- "C++"
- "code completion"
- "code generation"
- "model transformation"
- "programming"
- "language workbench"
- "Spoofax"
- "Meta-Environment"
- "rewriting"
- "parsing"
- "meta-objects"
- "transformation"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/KatsV10"
cites: 0
citedby: 2
pages: "444-463"
booktitle: "Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA"
editor:
- name: "William R. Cook"
link: "http://www.cs.utexas.edu/~wcook/"
- name: "Siobhán Clarke"
link: "https://www.cs.tcd.ie/Siobhan.Clarke/"
- name: "Martin C. Rinard"
link: "https://researchr.org/alias/martin-c.-rinard"
address: "Reno/Tahoe, Nevada"
publisher: "ACM"
isbn: "978-1-4503-0203-6"
kind: "inproceedings"
key: "KatsV10"
- title: "Designing Syntax Embeddings and Assimilations for Language Libraries"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2007"
doi: "http://dx.doi.org/10.1007/978-3-540-69073-3_5"
abstract: "Language libraries extend regular libraries with domain-specific notation. More precisely, a language library is a combination of a domain-specific language embedded in the general-purpose host language, a regular library implementing the underlying functionality, and an assimilation transformation that maps embedded DSL fragments to host language code. While the basic architecture for realizing language libraries is the same for all applications, there are many design choices to be made in the design of a particular combination of library, guest language syntax, host language, and assimilation. In this paper, we give an overview of the design space for syntax embeddings and assimilations for the realization of language libraries. "
links:
doi: "http://dx.doi.org/10.1007/978-3-540-69073-3_5"
technicalreport: "https://researchr.org/publication/TUD-SERG-2008-042"
tags:
- "syntax embedding"
- "syntax definition"
- "assimilation"
- "transformation language"
- "architecture"
- "language design"
- "DSL"
- "language libraries"
- "design"
- "transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/BravenboerV07"
cites: 24
citedby: 1
pages: "34-46"
booktitle: "Models in Software Engineering, Workshops and Symposia at MoDELS 2007, Nashville, TN, USA, September 30 - October 5, 2007, Reports and Revised Selected Papers"
editor:
- name: "Holger Giese"
link: "https://researchr.org/alias/holger-giese"
volume: "5002"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "978-3-540-69069-6"
kind: "inproceedings"
key: "BravenboerV07"
- title: "Decorated Attribute Grammars: Attribute Evaluation Meets Strategic Programming"
author:
- name: "Lennart C. L. Kats"
link: "http://www.lclnet.nl/"
- name: "Anthony M. Sloane"
link: "http://www.comp.mq.edu.au/~asloane"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2009"
doi: "http://dx.doi.org/10.1007/978-3-642-00722-4_11"
abstract: "Attribute grammars are a powerful specification formalism for tree-based computation, particularly for software language processing. Various extensions have been proposed to abstract over common patterns in attribute grammar specifications. These include various forms of copy rules to support non-local dependencies, collection attributes, and expressing dependencies that are evaluated to a fixed point. Rather than implementing extensions natively in an attribute evaluator, we propose attribute decorators that describe an abstract evaluation mechanism for attributes, making it possible to provide such extensions as part of a library of decorators. Inspired by strategic programming, decorators are specified using generic traversal operators. To demonstrate their effectiveness, we describe how to employ decorators in name, type, and flow analysis. "
links:
doi: "http://dx.doi.org/10.1007/978-3-642-00722-4_11"
"technical report (pdf)": "http://www.lclnet.nl/publications/TUD-SERG-2008-038a.pdf"
"project home page": "http://strategoxt.org/Stratego/Aster"
tags:
- "programming languages"
- "rule-based"
- "attribute grammars"
- "program analysis"
- "etaps"
- "data-flow language"
- "pattern language"
- "generic programming"
- "Stratego/XT"
- "traversal"
- "analysis"
- "data-flow programming"
- "data-flow"
- "graph-rewriting"
- "rules"
- "C++"
- "strategic programming"
- "programming"
- "rewriting"
- "data-flow analysis"
- "Aster"
- "grammar"
- "Stratego"
researchr: "https://researchr.org/publication/KatsSV09"
cites: 36
citedby: 1
pages: "142-157"
booktitle: "Compiler Construction, 18th International Conference, CC 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings"
editor:
- name: "Oege de Moor"
link: "http://progtools.comlab.ox.ac.uk/members/oege"
- name: "Michael I. Schwartzbach"
link: "http://www.brics.dk/~mis/"
volume: "5501"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "978-3-642-00721-7"
kind: "inproceedings"
key: "KatsSV09"
- title: "MetaBorg in Action: Examples of Domain-Specific Language Embedding and Assimilation Using Stratego/XT"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "René de Groot"
link: "http://strategoxt.org/Main/ReneDeGroot"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2006"
doi: "http://dx.doi.org/10.1007/11877028_10"
abstract: "General-purpose programming languages provide limited facilities for expressing domain-specific concepts in a natural manner. All domain concepts need to be captured using the same generic syntactic and semantic constructs. Generative programming methods and program transformation techniques can be used to overcome this lack of abstraction in general-purpose languages. In this tutorial we describe the MetaBorg method for embedding domain-specific languages, tailored syntactically and semantically to the application domain at hand, in a general-purpose language. MetaBorg is based on Stratego/XT, a language and toolset for the implementation of program transformation systems, which is used for the definition of syntactic embeddings and assimilation of the embedded constructs into the surrounding code. We illustrate MetaBorg with three examples. JavaSwul is a custom designed language for implementing graphical user-interfaces, which provides high-level abstractions for component composition and event-handling. JavaRegex is a new embedding of regular expression matching and string rewriting. JavaJava is an embedding of Java in Java for generating Java code. For these cases we show how Java programs in these domains become dramatically more readable, and we give an impression of the implementation of the language embeddings. "
links:
doi: "http://dx.doi.org/10.1007/11877028_10"
tags:
- "generative programming"
- "programming languages"
- "rule-based"
- "transformation engineering"
- "Java"
- "generic programming"
- "assimilation"
- "graph transformation"
- "Stratego/XT"
- "language engineering"
- "domain-specific language embedding"
- "transformation language"
- "composition"
- "MetaBorg"
- "language design"
- "graph-rewriting"
- "transformation system"
- "language embedding"
- "DSL"
- "programming"
- "abstraction"
- "language composition"
- "rewriting"
- "transformation"
- "Stratego"
- "program transformation"
- "domain-specific language"
researchr: "https://researchr.org/publication/BravenboerGV06"
cites: 0
citedby: 3
pages: "297-311"
booktitle: "Generative and Transformational Techniques in Software Engineering, International Summer School, GTTSE 2005, Braga, Portugal, July 4-8, 2005. Revised Papers"
editor:
- name: "Ralf Lämmel"
link: "http://www.uni-koblenz.de/~laemmel/Site/Home.html"
- name: "João Saraiva"
link: "http://di.uminho.pt/~jas"
- name: "Joost Visser"
link: "http://www.di.uminho.pt/~joost.visser/"
volume: "4143"
series: "Lecture Notes in Computer Science"
publisher: "Springer"
isbn: "3-540-45778-X"
kind: "inproceedings"
key: "BravenboerGV06"
- title: "Preventing injection attacks with syntax embeddings"
author:
- name: "Martin Bravenboer"
link: "http://martin.bravenboer.name/"
- name: "Eelco Dolstra"
link: "https://researchr.org/profile/eelcodolstra/publications"
- name: "Eelco Visser"
link: "http://eelcovisser.org"
year: "2007"
doi: "http://doi.acm.org/10.1145/1289971.1289975"
abstract: "Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A client can then supply specially crafted input that causes the constructed sentence to be interpreted in an unintended way, leading to an injection attack. We describe a more natural style of programming that yields code that is impervious to injections by construction. Our approach embeds the grammars of the guest languages (e.g., SQL) into that of the host language (e.g., Java) and automatically generates code that maps the embedded language to constructs in the host language that reconstruct the embedded sentences, adding escaping functions where appropriate. This approach is generic, meaning that it can be applied with relative ease to any combination of host and guest languages."
links:
doi: "http://doi.acm.org/10.1145/1289971.1289975"
successor: "https://researchr.org/publication/BravenboerDV10"
tags:
- "programming languages"
- "syntax embedding"
- "Java"
- "preventing injection attacks"
- "generic programming"
- "injection attack"
- "SDF"
- "XML"
- "embedded software"
- "XML Schema"
- "SQL"
- "security"
- "language embedding"
- "DSL"
- "programming"
- "systematic-approach"
- "ASF+SDF"
- "grammar"
- "query language"
researchr: "https://researchr.org/publication/BravenboerDV07"
cites: 0
citedby: 4
pages: "3-12"
booktitle: "Generative Programming and Component Engineering, 6th International Conference, GPCE 2007"
editor:
- name: "Charles Consel"
link: "https://researchr.org/alias/charles-consel"
- name: "Julia L. Lawall"
link: "http://www.diku.dk/hjemmesider/ansatte/julia/"
address: "Salzburg, Austria"
publisher: "ACM"
isbn: "978-1-59593-855-8"
kind: "inproceedings"
key: "BravenboerDV07"