publications: - title: "Self: The Power of Simplicity" author: - name: "David Ungar" link: "http://research.sun.com/people/ungar/" - name: "Randall B. Smith" link: "http://research.sun.com/people/randy/" year: "1987" abstract: "Self is an object-oriented language for exploratory programming based on a small number of simple and concrete ideas: prototypes, slots, and behavior. Prototypes combine inheritance and instantiation to provide a framework that is simpler and more flexible than most object-oriented languages. Slots unite variables and procedures into a single construct. This permits the inheritance hierarchy to take over the function of lexical scoping in conventional languages. Finally, because Self does not distinguish state from behavior, it narrows the gaps between ordinary objects, procedures, and closures. Self's simplicity and expressiveness offer new insights into object-oriented computation. " links: "sun": "http://research.sun.com/self/papers/self-power.html" "postscript": "http://research.sun.com/self/papers/selfPower.ps.gz" tags: - "programming languages" - "object-oriented programming" - "rule-based" - "meta programming" - "Self" - "prototype" - "programming" - "subject-oriented programming" - "Meta-Environment" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/UngarS87" cites: 0 citedby: 0 pages: "227-242" booktitle: "OOPSLA" kind: "inproceedings" key: "UngarS87" - title: "REL: A Rapidly Extensible Language system" author: - name: "Thompson, F. B." link: "https://researchr.org/alias/thompson%2C-f.-b." - name: "Lockemann, P. C." link: "https://researchr.org/alias/lockemann%2C-p.-c." - name: "Dostert, B." link: "https://researchr.org/alias/dostert%2C-b." - name: "Deverill, R. S." link: "https://researchr.org/alias/deverill%2C-r.-s." year: "1969" doi: "http://doi.acm.org/10.1145/800195.805947" links: doi: "http://doi.acm.org/10.1145/800195.805947" tags: - "C++" - "extensible language" researchr: "https://researchr.org/publication/805947" cites: 0 citedby: 0 booktitle: "Proceedings of the 1969 24th national conference" kind: "inproceedings" key: "805947" - title: "A Compilation and Optimization Model for Aspect-Oriented Programs" author: - name: "Hidehiko Masuhara" link: "https://researchr.org/alias/hidehiko-masuhara" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Christopher Dutchyn" link: "https://researchr.org/alias/christopher-dutchyn" year: "2003" doi: "http://link.springer.de/link/service/series/0558/bibs/2622/26220046.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/2622/26220046.htm" tags: - "optimization" - "object-oriented programming" - "AOP" - "object-role modeling" - "aspect oriented programming" - "subject-oriented programming" - "program optimization" - "feature-oriented programming" researchr: "https://researchr.org/publication/MasuharaKD03" cites: 0 citedby: 0 pages: "46-60" booktitle: "cc" kind: "inproceedings" key: "MasuharaKD03" - title: "An Overview of AspectJ" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Erik Hilsdale" link: "https://researchr.org/alias/erik-hilsdale" - name: "Jim Hugunin" link: "https://researchr.org/alias/jim-hugunin" - name: "Mik Kersten" link: "https://researchr.org/alias/mik-kersten" - name: "Jeffrey Palm" link: "https://researchr.org/alias/jeffrey-palm" - name: "William G. Griswold" link: "https://researchr.org/alias/william-g.-griswold" year: "2001" doi: "http://link.springer.de/link/service/series/0558/bibs/2072/20720327.htm" abstract: "AspectJ™ is a simple and practical aspect-oriented extension to Java.. With just a few new constructs, AspectJ provides support for modular implementation of a range of crosscutting concerns. In AspectJ’s dynamic join point model, join points are well-defined points in the execution of the program; pointcuts are collections of join points; advice are special method-like constructs that can be attached to pointcuts; and aspects are modular units of crosscutting implementation, comprising pointcuts, advice, and ordinary Java member declarations. AspectJ code is compiled into standard Java bytecode. Simple extensions to existing Java development environments make it possible to browse the crosscutting structure of aspects in the same kind of way as one browses the inheritance structure of classes. Several examples show that AspectJ is powerful, and that programs written using it are easy to understand." links: doi: "http://link.springer.de/link/service/series/0558/bibs/2072/20720327.htm" tags: - "AspectJ" - "object-oriented programming" - "Java" - "meta programming" - "meta-model" - "AOP" - "model-driven development" - "object-role modeling" - "aspect oriented programming" - "compiler" - "subject-oriented programming" - "Meta-Environment" - "feature-oriented programming" researchr: "https://researchr.org/publication/KiczalesHHKPG01" cites: 0 citedby: 1 pages: "327-353" booktitle: "ECOOP" kind: "inproceedings" key: "KiczalesHHKPG01" - title: "Programming as an Experience: The Inspiration for Self" author: - name: "Randall B. Smith" link: "http://research.sun.com/people/randy/" - name: "David Ungar" link: "http://research.sun.com/people/ungar/" year: "1995" doi: "http://link.springer.de/link/service/series/0558/bibs/0952/09520303.htm" abstract: "The Self system attempts to integrate intellectual and non-intellectual aspects of programming to create an overall experience. The language semantics, user interface, and implementation each help create this integrated experience. The language semantics embed the programmer in a uniform world of simple ob jects that can be modified without appealing to definitions of abstractions. In a similar way, the graphical interface puts the user into a uniform world of tangible objects that can be directly manipulated and changed without switching modes. The implementation strives to support the world-of-objects illusion by minimiz ing perceptible pauses and by providing true source-level semantics without sac rificing performance. As a side benefit, it encourages factoring. Although we see areas that fall short of the vision, on the whole, the language, interface, and im plementation conspire so that the Self programmer lives and acts in a consistent and malleable world of objects. " links: doi: "http://link.springer.de/link/service/series/0558/bibs/0952/09520303.htm" "sun": "http://research.sun.com/self/papers/programming-as-experience.html" tags: - "programming languages" - "object-oriented programming" - "semantics" - "meta programming" - "Self" - "source-to-source" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "abstraction" - "Meta-Environment" - "feature-oriented programming" - "open-source" - "meta-objects" researchr: "https://researchr.org/publication/SmithU95" cites: 0 citedby: 0 pages: "303-330" booktitle: "ECOOP" kind: "inproceedings" key: "SmithU95" - title: "Aspects: passing fad or new foundation?" author: - name: "Adrian M. Colyer" link: "https://researchr.org/alias/adrian-m.-colyer" - name: "Jack Greenfield" link: "https://researchr.org/alias/jack-greenfield" - name: "Ivar Jacobson" link: "https://researchr.org/alias/ivar-jacobson" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Dave A. Thomas" link: "https://researchr.org/alias/dave-a.-thomas" year: "2005" doi: "http://doi.acm.org/10.1145/1094855.1094977" links: doi: "http://doi.acm.org/10.1145/1094855.1094977" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/ColyerGJKT05" cites: 0 citedby: 0 pages: "376-377" booktitle: "OOPSLA" kind: "inproceedings" key: "ColyerGJKT05" - 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: "SCAM" kind: "inproceedings" key: "BaggeKHV03" - title: "The Automated Transformation of Abstract Specifications of Numerical Algorithms into Efficient Array Processor Implementations" author: - name: "Stephen Fitzpatrick" link: "https://researchr.org/alias/stephen-fitzpatrick" - name: "Terence J. Harmer" link: "https://researchr.org/alias/terence-j.-harmer" - name: "Alan Stewart" link: "https://researchr.org/alias/alan-stewart" - name: "Maurice Clint" link: "https://researchr.org/alias/maurice-clint" - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" year: "1997" tags: - "transformation" researchr: "https://researchr.org/publication/FitzpatrickHSCB97" cites: 0 citedby: 0 journal: "SCP" volume: "28" number: "1" pages: "1-41" kind: "article" key: "FitzpatrickHSCB97" - title: "Modeling Turnpike Frontend System: A Model-Driven Development Framework Leveraging UML Metamodeling and Attribute-Oriented Programming" author: - name: "Hiroshi Wada" link: "https://researchr.org/alias/hiroshi-wada" - name: "Junichi Suzuki" link: "https://researchr.org/alias/junichi-suzuki" year: "2005" doi: "http://dx.doi.org/10.1007/11557432_44" links: doi: "http://dx.doi.org/10.1007/11557432_44" tags: - "object-oriented programming" - "meta programming" - "meta-model" - "modeling" - "UML" - "model-driven development" - "object-role modeling" - "programming" - "subject-oriented programming" - "Meta-Environment" - "feature-oriented programming" researchr: "https://researchr.org/publication/WadaS05" cites: 0 citedby: 0 pages: "584-600" booktitle: "uml" kind: "inproceedings" key: "WadaS05" - title: "Open Implementation Design Guidelines" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "John Lamping" link: "https://researchr.org/alias/john-lamping" - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Chris Maeda" link: "https://researchr.org/alias/chris-maeda" - name: "Anurag Mendhekar" link: "https://researchr.org/alias/anurag-mendhekar" - name: "Gail C. Murphy" link: "https://researchr.org/alias/gail-c.-murphy" year: "1997" doi: "http://doi.acm.org/10.1145/253228.253431" links: doi: "http://doi.acm.org/10.1145/253228.253431" tags: - "object-oriented programming" - "AOP" - "source-to-source" - "C++" - "aspect oriented programming" - "subject-oriented programming" - "design" - "feature-oriented programming" - "open-source" researchr: "https://researchr.org/publication/KiczalesLLMMM97" cites: 0 citedby: 0 pages: "481-490" booktitle: "ICSE" kind: "inproceedings" key: "KiczalesLLMMM97" - title: "Boo Manifesto" author: - name: "Rodrigo Barreto de Oliveira" link: "https://researchr.org/alias/rodrigo-barreto-de-oliveira" year: "2005" doi: "http://boo.codehaus.org/BooManifesto.pdf" links: doi: "http://boo.codehaus.org/BooManifesto.pdf" tags: - "Boo" - "extensible language" researchr: "https://researchr.org/publication/Oliveira%3A2005" cites: 0 citedby: 0 howpublished: "Website" kind: "misc" key: "Oliveira:2005" - title: "Getting started with ASPECTJ" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Erik Hilsdale" link: "https://researchr.org/alias/erik-hilsdale" - name: "Jim Hugunin" link: "https://researchr.org/alias/jim-hugunin" - name: "Mik Kersten" link: "https://researchr.org/alias/mik-kersten" - name: "Jeffrey Palm" link: "https://researchr.org/alias/jeffrey-palm" - name: "William G. Griswold" link: "https://researchr.org/alias/william-g.-griswold" year: "2001" tags: - "AspectJ" - "object-oriented programming" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/KiczalesHHKPG01%3A0" cites: 0 citedby: 0 journal: "CACM" volume: "44" number: "10" pages: "59-65" kind: "article" key: "KiczalesHHKPG01:0" - 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: "CC" 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: "MoDELS" kind: "inproceedings" key: "HemelVV08" - 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: "AMAI" volume: "29" number: "1-4" pages: "1-34" kind: "article" key: "JohannV00" - title: "XLR: Extensible Language and Runtime website" year: "2009" doi: "http://xlr.sourceforge.net/" links: doi: "http://xlr.sourceforge.net/" tags: - "extensible language" researchr: "https://researchr.org/publication/xlr-website" cites: 0 citedby: 0 howpublished: "\\url{http://xlr.sourceforge.net/}" kind: "misc" key: "xlr-website" - title: "Transformations to Restructure and Re-engineer COBOL Programs" author: - name: "Terence J. Harmer" link: "https://researchr.org/alias/terence-j.-harmer" - name: "Patrick J. McParland" link: "https://researchr.org/alias/patrick-j.-mcparland" - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" year: "1998" tags: - "Cobol" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/HarmerMB98" cites: 0 citedby: 0 journal: "ASE" volume: "5" number: "3" pages: "321-345" kind: "article" key: "HarmerMB98" - 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: "ENTCS" 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: "ENTCS" 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: "GTTSE" 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: "ENTCS" volume: "59" number: "4" pages: "375-396" kind: "article" key: "Visser01-DR" - title: "A computational reflection mechanism to support platform debugging in SystemC" author: - name: "Bruno Albertini" link: "https://researchr.org/alias/bruno-albertini" - name: "Sandro Rigo" link: "https://researchr.org/alias/sandro-rigo" - name: "Guido Araujo" link: "https://researchr.org/alias/guido-araujo" - name: "Cristiano C. de Araujo" link: "https://researchr.org/alias/cristiano-c.-de-araujo" - name: "Edna Barros" link: "https://researchr.org/alias/edna-barros" - name: "Willians Azevedo" link: "https://researchr.org/alias/willians-azevedo" year: "2007" doi: "http://doi.acm.org/10.1145/1289816.1289838" abstract: "System-level and Platform-based design, along with Transaction Level modeling (TLM) techniques and languages like SystemC, appeared as a response to the ever increasing complexity of electronics systems design, where complex SoCs composed of several modules integrated on the same chip have become very common. In this scenario, the exploration and verification of several architecture models early in the design flow has played an important role. This paper proposes a mechanism that relies on computational reflection to enable designers to interact, on the fly, with platform simulation models written in SystemC TLM. This allows them to monitor and change signals or even IP internal register values, thus injecting specific stimuli that guide the simulation flow through corner cases during platform debugging, which are usually hard to handle by standard techniques, thus improving functional coverage. The key advantages of our approach are that we do not require code instrumentation from the IP designer, do not need a specialized SystemC library, and not even need the IP source code to be able to inspect its contents. The reflection mechanism was implemented using a C++ reflection library and integrated into a platform modeling framework. We evaluate our technique through some platform case studies." links: doi: "http://doi.acm.org/10.1145/1289816.1289838" tags: - "rule-based" - "data-flow language" - "case study" - "meta-model" - "modeling language" - "modeling" - "computational reflection" - "design complexity" - "architecture" - "language modeling" - "language design" - "data-flow" - "source-to-source" - "C++" - "object-role modeling" - "debugging" - "Meta-Environment" - "reflection" - "design" - "coverage" - "systematic-approach" - "open-source" - "domain-specific language" researchr: "https://researchr.org/publication/AlbertiniRAABA07" cites: 0 citedby: 0 pages: "81-86" booktitle: "codes" kind: "inproceedings" key: "AlbertiniRAABA07" - title: "Fluid AOP join point models" author: - name: "Terry Hon" link: "https://researchr.org/alias/terry-hon" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2006" doi: "http://doi.acm.org/10.1145/1176617.1176687" links: doi: "http://doi.acm.org/10.1145/1176617.1176687" tags: - "object-oriented programming" - "AOP" - "object-role modeling" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/HonK06" cites: 0 citedby: 0 pages: "712-713" booktitle: "OOPSLA" kind: "inproceedings" key: "HonK06" - title: "Aspect-oriented programming and modular reasoning" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2005" doi: "http://doi.acm.org/10.1145/1062455.1062482" links: doi: "http://doi.acm.org/10.1145/1062455.1062482" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/KiczalesM05%3A0" cites: 0 citedby: 0 pages: "49-58" booktitle: "ICSE" kind: "inproceedings" key: "KiczalesM05:0" - title: "A Theory of Hygienic Macros" author: - name: "David Herman" link: "http://calculist.org/" - name: "Mitchell Wand" link: "https://researchr.org/alias/mitchell-wand" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-78739-6_4" abstract: "Hygienic macro systems, such as Scheme’s, automatically rename variables to prevent unintentional variable capture—in short, they “just work.” Yet hygiene has never been formally presented as a specification rather than an algorithm. According to folklore, the definition of hygienic macro expansion hinges on the preservation of alpha-equivalence. But the only known notion of alpha-equivalence for programs with macros depends on the results of macro expansion! We break this circularity by introducing explicit binding specifications into the syntax of macro definitions, permitting a definition of alpha-equivalence independent of expansion. We define a semantics for a first-order subset of Scheme-like macros and prove hygiene as a consequence of confluence." links: doi: "http://dx.doi.org/10.1007/978-3-540-78739-6_4" tags: - "macros" - "Hygienic Macro" researchr: "https://researchr.org/publication/HermanW08" cites: 0 citedby: 0 pages: "48-62" booktitle: "ESOP" kind: "inproceedings" key: "HermanW08" - title: "Language-Oriented Programming" author: - name: "Martin P. Ward" link: "https://researchr.org/alias/martin-p.-ward" year: "1994" doi: "http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf" abstract: "This paper describes the concept of language oriented programming which is a novel way of organising the development of a large software system, leading to a different structure for the finished product. The approach starts by developing a formally specified, domain-oriented, very high-level language which is designed to be well-suited to developing \"this kind of program\". The development process then splits into two independent stages: (1) Implement the system using this \"middle level\" language, and (2) Implement a compiler or translator or interpreter for the language, using existing technology. The approach is claimed to have advantages for domain analysis, rapid prototyping, maintenance, portability, user-enhanceable systems, reuse of development work, while also providing high development productivity. We give an example where the method has been used very successfully (in conjunction with rapid prototyping) in the development of a large software system: the FermaT reverse engineering tool. A major benefit of this approach to software development, as compared to the usual sequential \"waterfall model\" is the speed with which products can be brought to market. This is due to \"concurrent engineering\": the effective overlap of development stages. Finally, the \"middle out\" development style is compared and contrasted with the more usual \"top down\", \"bottom up\" and \"outside in\" development methods." links: doi: "http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf" tags: - "programming languages" - "object-oriented programming" - "program analysis" - "meta programming" - "language-oriented programming" - "meta-model" - "interpreter" - "reverse engineering" - "modeling language" - "language engineering" - "software language engineering" - "language modeling" - "LOP" - "domain analysis" - "analysis" - "language design" - "reuse" - "model-driven development" - "maintenance" - "software engineering" - "model-driven engineering" - "object-role modeling" - "compiler" - "programming" - "subject-oriented programming" - "Meta-Environment" - "process modeling" - "systematic-approach" - "feature-oriented programming" - "domain-specific language" researchr: "https://researchr.org/publication/ward94languageoriented" cites: 0 citedby: 0 journal: "Software --- Concepts and Tools" volume: "15" number: "4" kind: "article" key: "ward94languageoriented" - 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: "SCAM" kind: "inproceedings" key: "OlmosV03" - title: "Safe reflection through polymorphism" author: - name: "Toon Verwaest" link: "https://researchr.org/alias/toon-verwaest" - name: "Lukas Renggli" link: "http://www.lukas-renggli.ch/" year: "2009" doi: "http://doi.acm.org/10.1145/1595768.1595776" abstract: "Code executed in a fully reflective system switches back and forth between application and interpreter code. These two states can be seen as contexts in which an expression is evaluated. Current language implementations obtain reflective capabilities by exposing objects to the interpreter. However, in doing so these systems break the encapsulation of the application objects. In this paper we propose safe reflection through polymorphism, \\ie by unifying the interface and ensuring the encapsulation of objects from both the interpreter and application context. We demonstrate a \\emphhomogeneous system that defines the execution semantics in terms of itself, thus enforcing that encapsulation is not broken." links: doi: "http://doi.acm.org/10.1145/1595768.1595776" tags: - "semantics" - "interpreter" - "computational reflection" - "safe reflection" - "context-aware" - "Meta-Environment" - "reflection" - "meta-objects" researchr: "https://researchr.org/publication/VerwaestR%3ACASTA%3A2009" cites: 0 citedby: 0 booktitle: "CASTA '09: Proceedings of the first international workshop on Context-aware software technology and applications" kind: "inproceedings" key: "VerwaestR:CASTA:2009" - title: "OpenAda: Compile-Time Reflection for Ada 95" author: - name: "Patrick Rogers" link: "https://researchr.org/alias/patrick-rogers" - name: "Andy J. Wellings" link: "https://researchr.org/alias/andy-j.-wellings" year: "2004" doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=3063&spage=166" links: doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=3063&spage=166" tags: - "compiler" - "reflection" researchr: "https://researchr.org/publication/RogersW04" cites: 0 citedby: 0 pages: "166-177" booktitle: "Ada-Europe" kind: "inproceedings" key: "RogersW04" - title: "Domain specific language implementation via compile-time meta-programming" author: - name: "Laurence Tratt" link: "http://tratt.net/laurie/" year: "2008" doi: "http://doi.acm.org/10.1145/1391956.1391958" abstract: "Domain specific languages (DSLs) are mini-languages that are increasingly seen as being a valuable tool for software developers and non-developers alike. DSLs must currently be created in an ad-hoc fashion, often leading to high development costs and implementations of variable quality. In this article, I show how expressive DSLs can be hygienically embedded in the Converge programming language using its compile-time meta-programming facility, the concept of DSL blocks, and specialised error reporting techniques. By making use of pre-existing facilities, and following a simple methodology, DSL implementation costs can be significantly reduced whilst leading to higher quality DSL implementations." links: doi: "http://doi.acm.org/10.1145/1391956.1391958" tags: - "programming languages" - "meta programming" - "meta-model" - "embedded software" - "model-driven development" - "compiler" - "DSL" - "programming" - "Meta-Environment" - "extensible language" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/Tratt08-TOPLAS" cites: 0 citedby: 1 journal: "TOPLAS" volume: "30" number: "6" kind: "article" key: "Tratt08-TOPLAS" - title: "Improving design and source code modularity using AspectJ (tutorial session)" author: - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2000" doi: "http://doi.acm.org/10.1145/337180.337848" links: doi: "http://doi.acm.org/10.1145/337180.337848" tags: - "AspectJ" - "object-oriented programming" - "AOP" - "source-to-source" - "aspect oriented programming" - "subject-oriented programming" - "design" - "feature-oriented programming" - "open-source" researchr: "https://researchr.org/publication/LopesK00%3A0" cites: 0 citedby: 0 pages: "825" booktitle: "ICSE" kind: "inproceedings" key: "LopesK00:0" - 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: "RTA" kind: "inproceedings" key: "BravenboerV02" - title: "A semantics for advice and dynamic join points in aspect-oriented programming" author: - name: "Mitchell Wand" link: "https://researchr.org/alias/mitchell-wand" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Christopher Dutchyn" link: "https://researchr.org/alias/christopher-dutchyn" year: "2004" doi: "http://doi.acm.org/10.1145/1018203.1018208" links: doi: "http://doi.acm.org/10.1145/1018203.1018208" tags: - "object-oriented programming" - "semantics" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/WandKD04" cites: 0 citedby: 0 journal: "TOPLAS" volume: "26" number: "5" pages: "890-910" kind: "article" key: "WandKD04" - title: "Brittle systems will break - not bend: can aspect-oriented programming help?" author: - name: "Yvonne Coady" link: "https://researchr.org/alias/yvonne-coady" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Joon Suan Ong" link: "https://researchr.org/alias/joon-suan-ong" - name: "Andrew Warfield" link: "https://researchr.org/alias/andrew-warfield" - name: "Michael J. Feeley" link: "https://researchr.org/alias/michael-j.-feeley" year: "2002" doi: "http://doi.acm.org/10.1145/1133373.1133389" links: doi: "http://doi.acm.org/10.1145/1133373.1133389" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/CoadyKOWF02" cites: 0 citedby: 0 pages: "79-86" booktitle: "sigopsE" kind: "inproceedings" key: "CoadyKOWF02" - title: "Macro Instruction Extensions of Compiler Languages" author: - name: "M. Douglas McIlroy" link: "https://researchr.org/alias/m.-douglas-mcilroy" year: "1960" doi: "http://doi.acm.org/10.1145/367177.367223" abstract: "Macroinstruction compilers constructed from a small set of functions can be made extremely powerful. In particular, conditional assembly, nested definitions, and parenthetical notation serve to make a compiler capable of accepting very general extensions to its ground language." links: doi: "http://doi.acm.org/10.1145/367177.367223" tags: - "macros" - "compiler" - "extensible language" researchr: "https://researchr.org/publication/McIlroy60" cites: 0 citedby: 0 journal: "CACM" volume: "3" number: "4" pages: "214-220" kind: "article" key: "McIlroy60" - title: "OpenJava: A Class-Based Macro System for Java" author: - name: "Michiaki Tatsubori" link: "https://researchr.org/alias/michiaki-tatsubori" - name: "Shigeru Chiba" link: "http://www.csg.is.titech.ac.jp/~chiba/" - name: "Kozo Itano" link: "https://researchr.org/alias/kozo-itano" - name: "Marc-Olivier Killijian" link: "https://researchr.org/alias/marc-olivier-killijian" year: "1999" doi: "http://link.springer.de/link/service/series/0558/bibs/1826/18260117.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1826/18260117.htm" tags: - "macro" - "rule-based" - "Java" - "meta programming" - "meta-model" - "macros" - "Meta-Environment" - "extensible language" - "meta-objects" researchr: "https://researchr.org/publication/TatsuboriCIK99" cites: 0 citedby: 1 pages: "117-133" booktitle: "oorase" kind: "inproceedings" key: "TatsuboriCIK99" - 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: "LOPSTR" kind: "inproceedings" key: "FischerV03" - title: "Language Workbenches: The Killer-App for Domain Specific Languages?" author: - name: "Martin Fowler" link: "http://martinfowler.com/" year: "2005" doi: "http://www.martinfowler.com/articles/languageWorkbench.html" abstract: "Most new ideas in software developments are really new variations on old ideas. This article describes one of these, the growing idea of a class of tools that I call Language Workbenches - examples of which include Intentional Software, JetBrains's Meta Programming System, and Microsoft's Software Factories. These tools take an old style of development - which I call language oriented programming and use IDE tooling in a bid to make language oriented programming a viable approach. Although I'm not enough of a prognosticator to say whether they will succeed in their ambition, I do think that these tools are some of the most interesting things on the horizon of software development. Interesting enough to write this essay to try to explain, at least in outline, how they work and the main issues around their future usefulness." links: doi: "http://www.martinfowler.com/articles/languageWorkbench.html" tags: - "programming languages" - "workbench" - "object-oriented programming" - "meta programming" - "language-oriented programming" - "meta-model" - "LOP" - "model-driven development" - "programming" - "subject-oriented programming" - "language workbench" - "Meta-Environment" - "systematic-approach" - "feature-oriented programming" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/Fowler2004" cites: 0 citedby: 3 kind: "misc" key: "Fowler2004" - title: "Discussing aspects of AOP" author: - name: "Tzilla Elrad" link: "https://researchr.org/alias/tzilla-elrad" - name: "Mehmet Aksit" link: "http://www.utwente.nl/ewi/trese/people/Aksit/" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Karl J. Lieberherr" link: "https://researchr.org/alias/karl-j.-lieberherr" - name: "Harold Ossher" link: "http://portal.acm.org/author_page.cfm?id=81100333974&coll=GUIDE&dl=GUIDE&trk=0&CFID=51132785&CFTOKEN=62287740" year: "2001" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/ElradAKLO01" cites: 0 citedby: 0 journal: "CACM" volume: "44" number: "10" pages: "33-38" kind: "article" key: "ElradAKLO01" - title: "A Program-Algebraic Approach to Eliminating Common Subexpressions" author: - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" - name: "R. Daniel Resler" link: "https://researchr.org/alias/r.-daniel-resler" year: "2000" tags: - " algebra" - "systematic-approach" researchr: "https://researchr.org/publication/BoyleR00" cites: 0 citedby: 0 journal: "informaticaSI" volume: "24" number: "3" kind: "article" key: "BoyleR00" - title: "Boo Primer" author: - name: "Cameron Kenneth Knight" link: "https://researchr.org/alias/cameron-kenneth-knight" doi: "url: http://boo.codehaus.org/Boo+Primer" tags: - "Boo" - "extensible language" researchr: "https://researchr.org/publication/Boo" cites: 0 citedby: 0 kind: "manual" key: "Boo" - title: "Language Oriented Programming: The Next Programming Paradigm" author: - name: "Sergey Dmitriev" link: "https://researchr.org/alias/sergey-dmitriev" year: "2004" doi: "http://www.onboard.jetbrains.com/is1/articles/04/10/lop/mps.pdf" links: doi: "http://www.onboard.jetbrains.com/is1/articles/04/10/lop/mps.pdf" tags: - "programming languages" - "object-oriented programming" - "language-oriented programming" - "LOP" - "programming paradigms" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/lopnextprogrammingparadigm" cites: 0 citedby: 1 kind: "misc" key: "lopnextprogrammingparadigm" - title: "Modular and Extensible Parser Implementation using Mixins" author: - name: "Yuuji Ichisugi" link: "https://researchr.org/alias/yuuji-ichisugi" year: "1998" doi: "http://www.etl.go.jp/epp/edoc/epp-parser.pdf" links: doi: "http://www.etl.go.jp/epp/edoc/epp-parser.pdf" tags: - "parsing" researchr: "https://researchr.org/publication/IchisugiEpp" cites: 0 citedby: 0 journal: "Transactions of Information Processing Society of Japan" volume: "39" kind: "article" key: "IchisugiEpp" - title: "The Application of Compile-Time Reflection to Software Fault Tolerance Using Ada 95" author: - name: "Patrick Rogers" link: "https://researchr.org/alias/patrick-rogers" - name: "Andy J. Wellings" link: "https://researchr.org/alias/andy-j.-wellings" year: "2005" doi: "http://dx.doi.org/10.1007/11499909_19" links: doi: "http://dx.doi.org/10.1007/11499909_19" tags: - "compiler" - "reflection" researchr: "https://researchr.org/publication/RogersW05" cites: 0 citedby: 0 pages: "236-247" booktitle: "Ada-Europe" kind: "inproceedings" key: "RogersW05" - title: "A Metaobject Protocol for C++" author: - name: "Shigeru Chiba" link: "http://www.csg.is.titech.ac.jp/~chiba/" year: "1995" doi: "http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.9788" links: doi: "http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.9788" tags: - "meta-object protocol" - "meta-model" - "protocol" - "C++" - "Meta-Environment" - "extensible language" - "meta-objects" researchr: "https://researchr.org/publication/Chiba95" cites: 0 citedby: 0 pages: "285-299" booktitle: "OOPSLA" kind: "inproceedings" key: "Chiba95" - title: "The Java Syntactic Extender" author: - name: "Jonathan Bachrach" link: "http://people.csail.mit.edu/jrb/" - name: "Keith Playford" link: "https://researchr.org/alias/keith-playford" year: "2001" doi: "http://people.csail.mit.edu/jrb/jse/jse.pdf" abstract: "The ability to extend a language with new syntactic forms is a powerful tool. A sufficiently flexible macro system allows programmers to build from a common base towards a language designed specifically for their problem domain. However, macro facilities that are integrated, capable, and at the same time simple enough to be widely used have been limited to the Lisp family of languages to date. In this paper we introduce a macro facility, called the Java Syntactic Extender (JSE), with the superior power and ease of use of Lisp macro sytems, but for Java, a language with a more conventional algebraic syntax. The design is based on the Dylan macro system, but exploits Java's compilation model to offer a full procedural macro engine. In other words, syntax expanders may be implemented in, and so use all the facilities of, the full Java language " links: doi: "http://people.csail.mit.edu/jrb/jse/jse.pdf" tags: - "programming languages" - "rule-based" - "Java" - "meta programming" - "syntax macros" - "JSE" - "meta-model" - "Java Syntactic Extender" - "modeling language" - "language modeling" - "language design" - "macros" - " algebra" - "Meta-Environment" - "design" - "domain-specific language" researchr: "https://researchr.org/publication/BachrachP01" cites: 0 citedby: 0 pages: "31-42" booktitle: "OOPSLA" kind: "inproceedings" key: "BachrachP01" - title: "Structuring operating system aspects" author: - name: "Yvonne Coady" link: "https://researchr.org/alias/yvonne-coady" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Michael J. Feeley" link: "https://researchr.org/alias/michael-j.-feeley" - name: "Norman C. Hutchinson" link: "https://researchr.org/alias/norman-c.-hutchinson" - name: "Joon Suan Ong" link: "https://researchr.org/alias/joon-suan-ong" year: "2001" tags: - "object-oriented programming" - "operating system" - "AOP" - "C++" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/CoadyKFHO01" cites: 0 citedby: 0 journal: "CACM" volume: "44" number: "10" pages: "79-82" kind: "article" key: "CoadyKFHO01" - 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: "ENTCS" volume: "203" number: "2" pages: "21-36" kind: "article" key: "KallebergV08" - title: "An Abstract Architecture for Computational Reflection in Multi-Agent Systems" author: - name: "Martin Rehák" link: "https://researchr.org/alias/martin-reh%C3%A1k" - name: "Jan Tozicka" link: "https://researchr.org/alias/jan-tozicka" - name: "Michal Pechoucek" link: "https://researchr.org/alias/michal-pechoucek" - name: "Filip Zelezný" link: "https://researchr.org/alias/filip-zelezn%C3%BD" - name: "Milan Rollo" link: "https://researchr.org/alias/milan-rollo" year: "2005" doi: "http://doi.ieeecomputersociety.org/10.1109/IAT.2005.35" links: doi: "http://doi.ieeecomputersociety.org/10.1109/IAT.2005.35" tags: - "computational reflection" - "architecture" - "reflection" researchr: "https://researchr.org/publication/RehakTPZR05" cites: 0 citedby: 0 pages: "128-131" booktitle: "iat" kind: "inproceedings" key: "RehakTPZR05" - title: "Modeling Crosscutting in Aspect-Oriented Mechanisms" author: - name: "Hidehiko Masuhara" link: "https://researchr.org/alias/hidehiko-masuhara" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2003" doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=2743&spage=2" links: doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=2743&spage=2" tags: - "object-oriented programming" - "modeling" - "AOP" - "object-role modeling" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/MasuharaK03" cites: 0 citedby: 0 pages: "2-28" booktitle: "ECOOP" kind: "inproceedings" key: "MasuharaK03" - title: "Aspect-Oriented System Structure" author: - name: "Yvonne Coady" link: "https://researchr.org/alias/yvonne-coady" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Michael J. Feeley" link: "https://researchr.org/alias/michael-j.-feeley" - name: "Norman C. Hutchinson" link: "https://researchr.org/alias/norman-c.-hutchinson" - name: "Joon Suan Ong" link: "https://researchr.org/alias/joon-suan-ong" - name: "Stephan Gudmundson" link: "https://researchr.org/alias/stephan-gudmundson" year: "2001" doi: "http://csdl.computer.org/comp/proceedings/hotos/2001/1040/00/10400166.pdf" links: doi: "http://csdl.computer.org/comp/proceedings/hotos/2001/1040/00/10400166.pdf" tags: - "object-oriented programming" - "AOP" - "C++" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/CoadyKFHOG01" cites: 0 citedby: 0 pages: "166" booktitle: "hotos" kind: "inproceedings" key: "CoadyKFHOG01" - title: "A Formal Way from Text to Code Templates" author: - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-00593-0_8" abstract: "We present an approach to define template languages for generating syntactically correct code. In the first part of the paper, we define the syntax and semantics of a template language for text generation. We use Natural Semantics for expressing both the static and the dynamic semantics of the language. In the second part, we deal with template languages for code generation in a particular target language. We provide construction steps for the syntax and semantics of such languages. The approach is generic and can be applied to any target language." links: doi: "http://dx.doi.org/10.1007/978-3-642-00593-0_8" tags: - "model-to-model transformation" - "semantics" - "transformation engineering" - "formal semantics" - "model-to-text transformation" - "language engineering" - "transformation language" - "composition" - "source-to-source" - "model-driven engineering" - "code generation" - "model transformation" - "natural semantics" - "language composition" - "grammarware" - "modelware" - "systematic-approach" - "open-source" - "transformation" researchr: "https://researchr.org/publication/Wachsmuth09" cites: 0 citedby: 0 pages: "109-123" booktitle: "FASE" kind: "inproceedings" key: "Wachsmuth09" - title: "Data Abstraction in AspectJ" author: - name: "Stephan Gudmundson" link: "https://researchr.org/alias/stephan-gudmundson" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2001" doi: "http://link.springer.de/link/service/series/0558/bibs/2192/21920270.htm" abstract: "The AspectJ project[1] is exploring language support to enable programmers to implement crosscutting concerns in a modular fashion. Previous work in this area has primarily examined the expressiveness of AspectJ, to further aspect-oriented programming language research. In our work we focus on critical software engineering issues related to system modularity. In particular, we want to understand how use of AspectJ interacts with the well-known data abstraction principle[2]. In this abstract, we describe some of our work in identifying the explicit and implicit ways that modules can become dependent upon design decisions of another module in AspectJ. We hope that this information will provide a useful perspective to aspect-oriented programming language designers and will help users of AspectJ make informed design decisions. Given the space constraints, we must assume that the reader is familiar with the AspectJ language[1]. " links: doi: "http://link.springer.de/link/service/series/0558/bibs/2192/21920270.htm" tags: - "programming languages" - "AspectJ" - "object-oriented programming" - "data-flow language" - "AOP" - "language engineering" - "software language engineering" - "design research" - "language design" - "constraints" - "data-flow programming" - "data-flow" - "software engineering" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "abstraction" - "reflection" - "design" - "feature-oriented programming" researchr: "https://researchr.org/publication/GudmundsonK01" cites: 0 citedby: 0 pages: "270-271" booktitle: "reflection" kind: "inproceedings" key: "GudmundsonK01" - title: "Computational Reflection in Class-Based Object-Oriented Languages" author: - name: "Jacques Ferber" link: "https://researchr.org/alias/jacques-ferber" year: "1989" tags: - "rule-based" - "computational reflection" - "Meta-Environment" - "reflection" - "meta-objects" researchr: "https://researchr.org/publication/Ferber89" cites: 0 citedby: 0 pages: "317-326" booktitle: "OOPSLA" kind: "inproceedings" key: "Ferber89" - title: "Wikipedia: Camlp4" doi: "http://en.wikipedia.org/wiki/Camlp4" abstract: "Camlp4 is a software system for writing extensible parsers for programming languages. It provides a set of Objective Caml libraries that are used to define grammars as well as loadable syntax extensions of such grammars. Camlp4 stands for Caml Preprocessor and Pretty-Printer and one of its most important applications is the definition of domain-specific extensions of the syntax of OCaml." links: doi: "http://en.wikipedia.org/wiki/Camlp4" tags: - "programming languages" - "syntax definition" - "writing" - "programming" - "parsing" - "extensible language" - "grammar" - "domain-specific language" researchr: "https://researchr.org/publication/camlp4-wikipedia" cites: 0 citedby: 0 howpublished: "\\url{http://en.wikipedia.org/wiki/Camlp4}" kind: "misc" key: "camlp4-wikipedia" - title: "Aspect-oriented programming" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2005" doi: "http://doi.acm.org/10.1145/1062455.1062640" links: doi: "http://doi.acm.org/10.1145/1062455.1062640" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/Kiczales05" cites: 0 citedby: 0 pages: "730" booktitle: "ICSE" kind: "inproceedings" key: "Kiczales05" - title: "Making the Code Look Like the Design - Aspects and Other Recent Work" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2007" doi: "http://doi.ieeecomputersociety.org/10.1109/ICPC.2007.25" links: doi: "http://doi.ieeecomputersociety.org/10.1109/ICPC.2007.25" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "design" - "feature-oriented programming" researchr: "https://researchr.org/publication/Kiczales07" cites: 0 citedby: 0 pages: "14" booktitle: "IWPC" kind: "inproceedings" key: "Kiczales07" - title: "Aspect-Oriented Programming" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "1996" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/Kiczales96%3A0" cites: 0 citedby: 0 journal: "ACM Comput. Surv." volume: "28" number: "4es" pages: "154" kind: "article" key: "Kiczales96:0" - title: "Practical Transformation of Functional Programs for Efficient Execution: A Case Study" author: - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" - name: "Terence J. Harmer" link: "https://researchr.org/alias/terence-j.-harmer" year: "1993" tags: - "case study" - "functional programming" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/BoyleH93" cites: 0 citedby: 0 pages: "62-88" booktitle: "ifip2-1" kind: "inproceedings" key: "BoyleH93" - 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: "ASF+SDF" 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: "PEPM" kind: "inproceedings" key: "BravenboerKVV06" - title: "Spoon: annotation-driven program transformation --- the AOP case" author: - name: "Pawlak, Renaud" link: "https://researchr.org/alias/pawlak%2C-renaud" year: "2005" doi: "http://doi.acm.org/10.1145/1101560.1101566" abstract: "This paper presents Spoon and its AOP extension. Spoon is a pure Java 5 framework for implementing source-level and annotation-driven program transformations. It aims to be a powerful tool to build and integrate middleware. Spoon allows for the definition of program processors and annotation processors that use Compile-Time reflection, which is achieved with an extension of Sun's APT. In particular, Spoon provides an AOP extension under the form of a set of annotation processors. With Spoon, it is possible to do comprehensive and efficient AOP in pure Java, without relying on any specific language or IDE support." links: doi: "http://doi.acm.org/10.1145/1101560.1101566" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "Java" - "annotation" - "AOP" - "transformation language" - "source-to-source" - "aspect oriented programming" - "compiler" - "model transformation" - "programming" - "subject-oriented programming" - "reflection" - "feature-oriented programming" - "open-source" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/Pawlak%3A2005" cites: 0 citedby: 0 booktitle: "AOMD '05: Proceedings of the 1st workshop on Aspect oriented middleware development" kind: "inproceedings" key: "Pawlak:2005" - 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: "Dagstuhl" kind: "inproceedings" key: "FischerV04-dagstuhl" - title: "Self" author: - name: "David Ungar" link: "http://research.sun.com/people/ungar/" - name: "Randall B. Smith" link: "http://research.sun.com/people/randy/" year: "2007" doi: "http://doi.acm.org/10.1145/1238844.1238853" links: doi: "http://doi.acm.org/10.1145/1238844.1238853" tags: - "programming languages" - "history of programming languages" - "Self" - "HOPL" - "history" researchr: "https://researchr.org/publication/UngarS07" cites: 0 citedby: 0 pages: "1-50" booktitle: "HOPL" kind: "inproceedings" key: "UngarS07" - 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: "GPCE" kind: "inproceedings" key: "BravenboerVVV05" - title: "Aspect-Oriented Programming" author: - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2000" doi: "http://doi.ieeecomputersociety.org/10.1109/TOOLS.2000.10016" links: doi: "http://doi.ieeecomputersociety.org/10.1109/TOOLS.2000.10016" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/LopesK00" cites: 0 citedby: 0 pages: "468" booktitle: "TOOLS" kind: "inproceedings" key: "LopesK00" - title: "Modeling turnpike: a model-driven framework for domain-specific software development" author: - name: "Hiroshi Wada" link: "https://researchr.org/alias/hiroshi-wada" - name: "Junichi Suzuki" link: "https://researchr.org/alias/junichi-suzuki" - name: "Katsuya Oba" link: "https://researchr.org/alias/katsuya-oba" year: "2005" doi: "http://doi.acm.org/10.1145/1094855.1094897" links: doi: "http://doi.acm.org/10.1145/1094855.1094897" tags: - "meta-model" - "modeling" - "model-driven development" - "Meta-Environment" researchr: "https://researchr.org/publication/WadaSO05" cites: 0 citedby: 0 pages: "128-129" booktitle: "OOPSLA" kind: "inproceedings" key: "WadaSO05" - title: "Seed7 Homepage" doi: "http://seed7.sourceforge.net" links: doi: "http://seed7.sourceforge.net" tags: - "extensible language" researchr: "https://researchr.org/publication/seed7-website" cites: 0 citedby: 0 howpublished: "\\url{http://seed7.sourceforge.net/index.htm}" kind: "misc" key: "seed7-website" - title: "Application-specific models and pointcuts using a logic metalanguage" author: - name: "Brichau, Johan" link: "https://researchr.org/alias/brichau%2C-johan" - name: "Andy Kellens" link: "http://soft.vub.ac.be/~akellens/" - name: "Gybels, Kris" link: "https://researchr.org/alias/gybels%2C-kris" - name: "Kim Mens" link: "http://www.info.ucl.ac.be/~km/MyResearchPages/research/" - name: "Robert Hirschfeld" link: "http://www.hpi.uni-potsdam.de/personen/professoren/hirschfeld.html" - name: "Theo D'Hondt" link: "http://soft.vub.ac.be/~tjdhondt/HTM.dir/homepage.htm" year: "2008" doi: "http://dx.doi.org/10.1016/j.cl.2007.05.004" links: doi: "http://dx.doi.org/10.1016/j.cl.2007.05.004" tags: - "logic" researchr: "https://researchr.org/publication/1327721" cites: 0 citedby: 0 journal: "Comput. Lang. Syst. Struct." volume: "34" number: "2-3" kind: "article" key: "1327721" - title: "Boo Language Guide" doi: "http://boo.codehaus.org/Language+Guide" links: doi: "http://boo.codehaus.org/Language+Guide" tags: - "Boo" - "extensible language" researchr: "https://researchr.org/publication/boo-language-guide" cites: 0 citedby: 0 howpublished: "\\url{http://boo.codehaus.org/Language+Guide}" kind: "misc" key: "boo-language-guide" - 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: "ENTCS" volume: "65" number: "3" pages: "57-76" kind: "article" key: "DolstraV02" - title: "Extensible programming for the 21st century" author: - name: "Gregory V. Wilson" link: "https://researchr.org/alias/gregory-v.-wilson" year: "2004" doi: "http://doi.acm.org/10.1145/1039511.1039534" abstract: "Is an open, more flexible programming environment just around the corner? In his keynote address at OOPSLA '98 (Object-Oriented Programming, Systems, Languages, and Applications), Sun Microsystems Fellow Guy L. Steele Jr. said, \"From now on, a main goal in designing a language should be to plan for growth.\" Functions, user-defined types, operator overloading, and generics (such as C++ templates) are no longer enough: tomorrow's languages must allow programmers to add entirely new kinds of information to programs, and control how it is processed." links: doi: "http://doi.acm.org/10.1145/1039511.1039534" tags: - "control systems" - "programming languages" - "object-oriented programming" - "meta programming" - "generic programming" - "type system" - "source-to-source" - "C++" - "programming" - "subject-oriented programming" - "Meta-Environment" - "extensible language" - "feature-oriented programming" - "open-source" - "meta-objects" researchr: "https://researchr.org/publication/Wilson04%3A2" cites: 0 citedby: 0 journal: "queue" volume: "2" number: "9" pages: "48-57" kind: "article" key: "Wilson04:2" - title: "Program Generation and Transformation - Tools for Mathematical Software Development" author: - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" - name: "Kenneth W. Dritz" link: "https://researchr.org/alias/kenneth-w.-dritz" - name: "Oleg B. Arushanian" link: "https://researchr.org/alias/oleg-b.-arushanian" - name: "Yuri V. Kuchevsky" link: "https://researchr.org/alias/yuri-v.-kuchevsky" year: "1977" tags: - "transformation" - "program transformation" researchr: "https://researchr.org/publication/BoyleDAK77" cites: 0 citedby: 0 pages: "303-308" booktitle: "ifip11-9" kind: "inproceedings" key: "BoyleDAK77" - title: "A Model Transformation Framework for Domain Specific Languages: An Approach Using UML and Attribute-Oriented Programming" author: - name: "Hiroshi Wada" link: "https://researchr.org/alias/hiroshi-wada" - name: "Junichi Suzuki" link: "https://researchr.org/alias/junichi-suzuki" - name: "Shingo Takada" link: "https://researchr.org/alias/shingo-takada" year: "2005" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "meta programming" - "meta-model" - "modeling language" - "transformation language" - "language modeling" - "UML" - "source-to-source" - "object-role modeling" - "model transformation" - "programming" - "subject-oriented programming" - "Meta-Environment" - "systematic-approach" - "feature-oriented programming" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/Wada05amodel" cites: 0 citedby: 0 booktitle: "In Proc. of the 9th World Multi-Conference on Systemics, Cybernetics and Informatics" kind: "inproceedings" key: "Wada05amodel" - title: "Hygienic Macro Expansion" author: - name: "Eugene E. Kohlbecker" link: "https://researchr.org/alias/eugene-e.-kohlbecker" - name: "Daniel P. Friedman" link: "https://researchr.org/alias/daniel-p.-friedman" - name: "Matthias Felleisen" link: "http://www.ccs.neu.edu/home/matthias/" - name: "Bruce F. Duba" link: "https://researchr.org/alias/bruce-f.-duba" year: "1986" doi: "http://delivery.acm.org/10.1145/320000/319859/p151-kohlbecker.pdf?key1=319859&key2=7573098711&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618" links: doi: "http://delivery.acm.org/10.1145/320000/319859/p151-kohlbecker.pdf?key1=319859&key2=7573098711&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618" tags: - "macros" - "e-science" - "Hygienic Macro" researchr: "https://researchr.org/publication/KohlbeckerFFD86" cites: 0 citedby: 0 pages: "151-161" booktitle: "lfp" kind: "inproceedings" key: "KohlbeckerFFD86" - 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: "ICWE" kind: "inproceedings" key: "GroenewegenV08" - title: "Extensible syntax with lexical scoping" author: - name: "Luca Cardelli" link: "http://lucacardelli.name" - name: "Florian Matthes" link: "https://researchr.org/alias/florian-matthes" - name: "Martín Abadi" link: "https://researchr.org/alias/mart%C3%ADn-abadi" year: "1994" month: "February" doi: "http://lucacardelli.name/Papers/SRC-121.ps" abstract: "A frequent dilemma in programming language design is the choice between a language with a rich set of notations and a small simple core language. We address this dilemma by proposing extensible grammars, a syntax definition formalism for incremental language extensions and restrictions. The translation of programs written in rich object languages into a small core language is defined via syntax-directed patterns. In contrast to macro- expansion and program-rewriting tools, our extensible grammars respect scoping rules. Therefore, we can introduce binding constructs while avoiding problems with unwanted name clashes. We develop extensible grammars and illustrate their use by extending the lambda calculus with let-bindings conditionals and constructs from database programming languages, such as SQL query expressions. We then give a formal description of the underlying rules for parsing transformation and substitution Finally, we sketch how these rules are exploited in an implementation of a generic, extensible parser package." links: doi: "http://lucacardelli.name/Papers/SRC-121.ps" "cardelli's papers": "http://lucacardelli.name/indexPapers.html" tags: - "programming languages" - "object-oriented programming" - "rule-based" - "translation" - "syntax definition" - "meta programming" - "pattern language" - "generic programming" - "lexical syntax" - "graph transformation" - "graph query" - "SQL" - "extensible grammar" - "transformation language" - "language design" - "macros" - "graph-rewriting" - "rules" - "programming" - "subject-oriented programming" - "database" - "Meta-Environment" - "rewriting" - "parsing" - "incremental" - "design" - "extensible language" - "feature-oriented programming" - "meta-objects" - "transformation" - "grammar" - "query language" - "program transformation" researchr: "https://researchr.org/publication/CardelliMA94" cites: 0 citedby: 1 institution: "Digital Equipment Corporation Systems Research Center" type: "SRC Research Report" number: "121" kind: "techreport" key: "CardelliMA94" - 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: "FUIN" volume: "69" number: "1-2" pages: "123-178" kind: "article" key: "BravenboerDOV06" - title: "The Application of Compile-Time Reflection to Software Fault Tolerance Using Ada 95" year: "2005" doi: "http://dx.doi.org/10.1007/11499909_19" links: doi: "http://dx.doi.org/10.1007/11499909_19" tags: - "compiler" - "reflection" researchr: "https://researchr.org/publication/RogersW05%3A0" cites: 0 citedby: 0 booktitle: "Ada-Europe" kind: "inproceedings" key: "RogersW05:0" - title: "A Formal Analysis of Smithsonian Computational Reflection" author: - name: "Inge M. C. Lemmens" link: "https://researchr.org/alias/inge-m.-c.-lemmens" - name: "Peter J. Braspenning" link: "https://researchr.org/alias/peter-j.-braspenning" year: "1999" doi: "http://link.springer.de/link/service/series/0558/bibs/1616/16160135.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1616/16160135.htm" tags: - "computational reflection" - "analysis" - "C++" - "reflection" researchr: "https://researchr.org/publication/LemmensB99" cites: 0 citedby: 0 pages: "135-137" booktitle: "reflection" kind: "inproceedings" key: "LemmensB99" - title: "Automatic, Self-adaptive Control and Unfold Transformations" author: - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" year: "1994" tags: - "transformation" researchr: "https://researchr.org/publication/Boyle94" cites: 0 citedby: 0 pages: "83-103" booktitle: "procomet" kind: "inproceedings" key: "Boyle94" - title: "Beyond Annotations: A Proposal for Extensible Java (XJ)" author: - name: "Tony Clark" link: "http://itcentre.tvu.ac.uk/~clark/" - name: "Paul Sammut" link: "https://researchr.org/alias/paul-sammut" - name: "James S. Willans" link: "https://researchr.org/alias/james-s.-willans" year: "2008" doi: "http://dx.doi.org/10.1109/SCAM.2008.34" abstract: "Annotations provide a limited way of extending Java in order to tailor the language for specific tasks. This paper describes a proposal for a Java extension which generalises annotations to allow Java to be a platform for developing domain specific languages." links: doi: "http://dx.doi.org/10.1109/SCAM.2008.34" tags: - "Java" - "extensible language" - "domain-specific language" researchr: "https://researchr.org/publication/ClarkSW08" cites: 0 citedby: 0 pages: "229-238" booktitle: "SCAM" kind: "inproceedings" key: "ClarkSW08" - title: "Proving refinement transformations for deriving high-assurance software" author: - name: "Victor L. Winter" link: "http://faculty.ist.unomaha.edu/winter/" - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" year: "1996" doi: "http://computer.org/proceedings/hase/7629/76290068abs.htm" links: doi: "http://computer.org/proceedings/hase/7629/76290068abs.htm" tags: - "refinement" - "transformation" researchr: "https://researchr.org/publication/WinterB96" cites: 0 citedby: 0 pages: "68-77" booktitle: "hase" kind: "inproceedings" key: "WinterB96" - 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: "SCAM" kind: "inproceedings" key: "Visser05-SCAM" - title: "Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages" author: - name: "Terence John Parr" link: "http://www.cs.usfca.edu/~parrt/" year: "2010" doi: "http://pragprog.com/titles/tpdsl/language-implementation-patterns" abstract: "Learn to build configuration file readers, data readers, model-driven code generators, source-to-source translators, source analyzers, and interpreters. You don’t need a background in computer science—ANTLR creator Terence Parr demystifies language implementation by breaking it down into the most common design patterns. Pattern by pattern, you’ll learn the key skills you need to implement your own computer languages." links: doi: "http://pragprog.com/titles/tpdsl/language-implementation-patterns" tags: - "programming languages" - "design science" - "meta programming" - "data-flow language" - "pattern language" - "meta-model" - "interpreter" - "modeling language" - "language modeling" - "language design" - "data-flow programming" - "data-flow" - "source-to-source" - "e-science" - "ANTLR" - "DSL" - "programming" - "software languages" - "Meta-Environment" - "compilers" - "design" - "interpreters" - "open-source" - "domain-specific language" researchr: "https://researchr.org/publication/Parr%3A2010" cites: 0 citedby: 0 publisher: "The Pragmatic Bookshelf" kind: "book" key: "Parr:2010" - title: "The scalability of AspectJ" author: - name: "Arjun Singh" link: "https://researchr.org/alias/arjun-singh" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2007" doi: "http://doi.acm.org/10.1145/1321211.1321233" abstract: "The AspectJ project[1] is exploring language support to enable programmers to implement crosscutting concerns in a modular fashion. Previous work in this area has primarily examined the expressiveness of AspectJ, to further aspect-oriented programming language research. In our work we focus on critical software engineering issues related to system modularity. In particular, we want to understand how use of AspectJ interacts with the well-known data abstraction principle[2]. In this abstract, we describe some of our work in identifying the explicit and implicit ways that modules can become dependent upon design decisions of another module in AspectJ. We hope that this information will provide a useful perspective to aspect-oriented programming language designers and will help users of AspectJ make informed design decisions. Given the space constraints, we must assume that the reader is familiar with the AspectJ language[1]. " links: doi: "http://doi.acm.org/10.1145/1321211.1321233" tags: - "programming languages" - "AspectJ" - "object-oriented programming" - "data-flow language" - "AOP" - "language engineering" - "software language engineering" - "design research" - "language design" - "constraints" - "data-flow programming" - "data-flow" - "software engineering" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "abstraction" - "design" - "feature-oriented programming" researchr: "https://researchr.org/publication/SinghK07" cites: 0 citedby: 0 pages: "203-214" booktitle: "cascon" kind: "inproceedings" key: "SinghK07" - title: "Uniform Support for Modeling Crosscutting Structure" author: - name: "Maria Tkatchenko" link: "https://researchr.org/alias/maria-tkatchenko" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2005" doi: "http://dx.doi.org/10.1007/11557432_39" links: doi: "http://dx.doi.org/10.1007/11557432_39" tags: - "object-oriented programming" - "modeling" - "AOP" - "UML" - "object-role modeling" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/TkatchenkoK05" cites: 0 citedby: 0 pages: "508-521" booktitle: "uml" kind: "inproceedings" key: "TkatchenkoK05" - title: "Lightweight virtual machine support for AspectJ" author: - name: "Ryan M. Golbeck" link: "https://researchr.org/alias/ryan-m.-golbeck" - name: "Samuel Davis" link: "https://researchr.org/alias/samuel-davis" - name: "Immad Naseer" link: "https://researchr.org/alias/immad-naseer" - name: "Igor Ostrovsky" link: "https://researchr.org/alias/igor-ostrovsky" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2008" doi: "http://doi.acm.org/10.1145/1353482.1353504" abstract: "Advice weaving can be efficiently supported with only lightweight enhancements to existing Virtual Machines. Performing weaving at the Java bytecode (JBC) level while preserving appropriate metadata enables the VM to understand the AspectJ-specific semantics of the code and optimize it. This allows the overhead of advice weaving and performing non-local advice dispatch optimization to occur prior to runtime. It also allows the VM to perform optimizations that are unavailable to a bytecode level weaver. An experimental implementation shows that this approach can take advantage of previously known macro optimizations of expensive constructs, including cflow, as well as micro optimizations including those based on improved type analysis unavailable to JBC-based advice dispatch. A thorough benchmark evaluation confirms that the use of this architecture does not result in runtime performance overhead and benefits from the implemented optimizations. " links: doi: "http://doi.acm.org/10.1145/1353482.1353504" tags: - "optimization" - "AspectJ" - "object-oriented programming" - "semantics" - "rule-based" - "Java" - "AOP" - "architecture" - "analysis" - "macros" - "weaving" - "aspect oriented programming" - "subject-oriented programming" - "systematic-approach" - "feature-oriented programming" researchr: "https://researchr.org/publication/GolbeckDNOK08" cites: 0 citedby: 0 pages: "180-190" booktitle: "AOSD" kind: "inproceedings" key: "GolbeckDNOK08" - title: "Aspect-oriented programming" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Erik Hilsdale" link: "https://researchr.org/alias/erik-hilsdale" year: "2001" doi: "http://doi.acm.org/10.1145/503209.503260" links: doi: "http://doi.acm.org/10.1145/503209.503260" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/KiczalesH01" cites: 0 citedby: 0 pages: "313" booktitle: "ESEC/FSE" kind: "inproceedings" key: "KiczalesH01" - title: "Program Reusability through Program Transformation" author: - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" - name: "Monagur N. Muralidharan" link: "https://researchr.org/alias/monagur-n.-muralidharan" year: "1984" tags: - "reuse" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/BoyleM84" cites: 0 citedby: 0 journal: "TSE" volume: "10" number: "5" pages: "574-588" kind: "article" key: "BoyleM84" - 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: "SCP" volume: "72" number: "1-2" pages: "52-70" kind: "article" key: "BravenboerKVV08" - title: "hygiene-versus-gensym" doi: "http://community.schemewiki.org/?hygiene-versus-gensym" links: doi: "http://community.schemewiki.org/?hygiene-versus-gensym" tags: - "Hygienic Macro" researchr: "https://researchr.org/publication/hygienevsgensym" cites: 0 citedby: 0 kind: "misc" key: "hygienevsgensym" - title: "Aspect-Oriented Programming of Sparse Matrix Code" author: - name: "John Irwin" link: "https://researchr.org/alias/john-irwin" - name: "Jean-Marc Loingtier" link: "https://researchr.org/alias/jean-marc-loingtier" - name: "John R. Gilbert" link: "https://researchr.org/alias/john-r.-gilbert" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "John Lamping" link: "https://researchr.org/alias/john-lamping" - name: "Anurag Mendhekar" link: "https://researchr.org/alias/anurag-mendhekar" - name: "Tatiana Shpeisman" link: "https://researchr.org/alias/tatiana-shpeisman" year: "1997" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/IrwinLGKLMS97" cites: 0 citedby: 0 pages: "249-256" booktitle: "iscope" kind: "inproceedings" key: "IrwinLGKLMS97" - 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: "RTA" kind: "inproceedings" key: "Visser01" - title: "A Family of Data-Parallel Derivations" author: - name: "Maurice Clint" link: "https://researchr.org/alias/maurice-clint" - name: "Stephen Fitzpatrick" link: "https://researchr.org/alias/stephen-fitzpatrick" - name: "Terence J. Harmer" link: "https://researchr.org/alias/terence-j.-harmer" - name: "Peter Kilpatrick" link: "https://researchr.org/alias/peter-kilpatrick" - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" year: "1994" tags: - "data-flow" researchr: "https://researchr.org/publication/ClintFHKB94" cites: 0 citedby: 0 pages: "457-462" booktitle: "hpcn" kind: "inproceedings" key: "ClintFHKB94" - title: "Compile-time meta-programming in Converge" author: - name: "Laurence Tratt" link: "http://tratt.net/laurie/" year: "2002" month: "December" abstract: "Compile-time meta-programming allows programs to be constructed by the user at compile-time. Few modern languages are capable of compile-time meta-programming, and of those that do, many of the most powerful are statically typed functional languages. In this paper I present the dynamically typed, object orientated language Converge which allows compile-time meta-programming in the spirit of Template Haskell. Converge demonstrates that integrating powerful, safe compiletime meta-programming features into a dynamic language requires few restrictions to the exible development style facilitated by the paradigm." tags: - "converge" - "programming languages" - "object-oriented programming" - "meta programming" - "meta-model" - "functional programming" - "Haskell" - "model-driven development" - "programming paradigms" - "compiler" - "programming" - "subject-oriented programming" - "Meta-Environment" - "extensible language" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/tratt04compiletm" cites: 0 citedby: 0 institution: "Department of Computer Science, King's College London" number: "TR-04-11" kind: "techreport" key: "tratt04compiletm" - title: "Macro Processing in Object-Oriented Languages" author: - name: "Shigeru Chiba" link: "http://www.csg.is.titech.ac.jp/~chiba/" year: "1998" doi: "http://doi.ieeecomputersociety.org/10.1109/TOOLS.1998.750029" abstract: "There are a number of programmable macro systems such as Lisp's. While they can handle complex program transformation, they still have difficulty in handling some kinds of transformation typical in object-oriented programming. This paper examines this problem and, to address it, presents an advanced macro system based on ideas borrowed from reflection. Unlike other macro systems, our macro system provides metaobjects as the data structure used for the macro processing instead of an abstract syntax tree. This feature makes it easy to implement a range of transformations of object-oriented programs." links: doi: "http://doi.ieeecomputersociety.org/10.1109/TOOLS.1998.750029" tags: - "programming languages" - "object-oriented programming" - "macro" - "rule-based" - "meta programming" - "data-flow language" - "abstract syntax" - "transformation language" - "macros" - "data-flow programming" - "data-flow" - "transformation system" - "programming" - "subject-oriented programming" - "Meta-Environment" - "reflection" - "feature-oriented programming" - "meta-objects" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/Chiba98" cites: 0 citedby: 0 pages: "113-126" booktitle: "TOOLS" kind: "inproceedings" key: "Chiba98" - title: "Aspect-Oriented Programming" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "John Lamping" link: "https://researchr.org/alias/john-lamping" - name: "Anurag Mendhekar" link: "https://researchr.org/alias/anurag-mendhekar" - name: "Chris Maeda" link: "https://researchr.org/alias/chris-maeda" - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Jean-Marc Loingtier" link: "https://researchr.org/alias/jean-marc-loingtier" - name: "John Irwin" link: "https://researchr.org/alias/john-irwin" year: "1997" doi: "10.1007/BFb0053381" abstract: "We have found many programming problems for which neither procedural nor object-oriented programming techniques are sufficient to clearly capture some of the important design decisions the program must implement. This forces the implementation of those design decisions to be scattered throughout the code, resulting in “tangled” code that is excessively difficult to develop and maintain. We present an analysis of why certain design decisions have been so difficult to clearly capture in actual code. We call the properties these decisions address aspects, and show that the reason they have been hard to capture is that they cross-cut the system's basic functionality. We present the basis for a new programming technique, called aspect-oriented programming, that makes it possible to clearly express programs involving such aspects, including appropriate isolation, composition and reuse of the aspect code. The discussion is rooted in systems we have built using aspect-oriented programming." tags: - "object-oriented programming" - "program analysis" - "meta programming" - "AOP" - "composition" - "functional programming" - "analysis" - "reuse" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "Meta-Environment" - "design" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/KiczalesLMMLLI97" cites: 0 citedby: 3 pages: "220-242" booktitle: "ECOOP" kind: "inproceedings" key: "KiczalesLMMLLI97" - 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: "ENTCS" volume: "15" pages: "422-441" kind: "article" key: "VisserB98" - title: "Wikipedia: Extensible Programming" doi: "http://en.wikipedia.org/wiki/Extensible_programming" links: doi: "http://en.wikipedia.org/wiki/Extensible_programming" tags: - "programming" - "extensible language" researchr: "https://researchr.org/publication/wikipedia-extensible-programming" cites: 0 citedby: 0 howpublished: "\\url{http://en.wikipedia.org/wiki/Extensible_programming}" kind: "misc" key: "wikipedia-extensible-programming" - title: "AspectJ(tm): Aspect-Oriented Programming in Java" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2002" doi: "http://link.springer.de/link/service/series/0558/bibs/2591/25910001.htm" abstract: "Aspect-oriented programming (AOP) gives software developers a powerful new tool for structuring the design and code of software systems. AOP simplifies development of system aspects that previously were among the most difficult to handle, including failure handling strategies, synchronization policies, change propagation, security checking, distribution, policy enforcement and many others. AOP using AspectJ makes it possible to describe, in just one place in the system, the implementation of such crosscutting aspects. This reduces development time, improves software quality, and makes software more flexible. This talk will show what it is like to design and implement with AspectJ, and what implications this has for software developers in terms of time-to-market, software quality, and product flexibility. For more info about AOP and AspectJ go to http://aspectj.org/servlets/AJSite." links: doi: "http://link.springer.de/link/service/series/0558/bibs/2591/25910001.htm" tags: - "AspectJ" - "object-oriented programming" - "Java" - "synchronization" - "AOP" - "software product quality" - "security" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "change propagation" - "design" - "feature-oriented programming" researchr: "https://researchr.org/publication/Kiczales02" cites: 0 citedby: 0 pages: "1" booktitle: "jit" kind: "inproceedings" key: "Kiczales02" - title: "Experience with an extensible language" author: - name: "Edgar T. Irons" link: "https://researchr.org/alias/edgar-t.-irons" year: "1970" doi: "http://doi.acm.org/10.1145/361953.361966" links: doi: "http://doi.acm.org/10.1145/361953.361966" tags: - "extensible language" researchr: "https://researchr.org/publication/361966" cites: 0 citedby: 0 journal: "CACM" volume: "13" number: "1" kind: "article" key: "361966" - title: "Back to the future: a retroactive study of aspect evolution in operating system code" author: - name: "Yvonne Coady" link: "https://researchr.org/alias/yvonne-coady" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2003" doi: "http://doi.acm.org/10.1145/643603.643609" links: doi: "http://doi.acm.org/10.1145/643603.643609" tags: - "object-oriented programming" - "operating system" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/CoadyK03" cites: 0 citedby: 0 pages: "50-59" booktitle: "AOSD" kind: "inproceedings" key: "CoadyK03" - title: "Aspect-Oriented Programming" author: - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2000" doi: "http://doi.ieeecomputersociety.org/10.1109/TOOLS.2000.10031" links: doi: "http://doi.ieeecomputersociety.org/10.1109/TOOLS.2000.10031" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/LopesK00a" cites: 0 citedby: 0 pages: "461-462" booktitle: "TOOLS" kind: "inproceedings" key: "LopesK00a" - title: "Deforestation: Transforming Programs to Eliminate Trees" author: - name: "Philip Wadler" link: "http://homepages.inf.ed.ac.uk/wadler/" year: "1990" researchr: "https://researchr.org/publication/Wadler90%3A0" cites: 0 citedby: 0 journal: "TCS" volume: "73" number: "2" pages: "231-248" kind: "article" key: "Wadler90:0" - title: "Recent Developments in Aspect" author: - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "1998" doi: "http://link.springer.de/link/service/series/0558/bibs/1543/15430398.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1543/15430398.htm" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/LopesK98" cites: 0 citedby: 0 pages: "398-401" booktitle: "ECOOPW" kind: "inproceedings" key: "LopesK98" - 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: "OOPSLA" 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: "ICFP" kind: "inproceedings" key: "VisserBT98" - title: "Separation of concerns through semantic annotations" author: - name: "Cachopo, Jo\\, {a}o" link: "https://researchr.org/alias/cachopo%2C-jo%5Eb%2C-%7Ba%7Do" year: "2002" doi: "http://doi.acm.org/10.1145/985072.985074" abstract: "Programming languages provide a limited range of mechanisms to represent concepts. This means that the final program lacks important information that the programmer has about the domain. We propose the use of programmer-extensible program annotations as a means to represent that information about the domain. Using these program annotations we can specify join points by means of semantic properties of the programs, thereby improving the reusability and robustness of aspects." links: doi: "http://doi.acm.org/10.1145/985072.985074" tags: - "programming languages" - "separation of concerns" - "reuse" - "programming" - "extensible language" - "domain-specific language" researchr: "https://researchr.org/publication/985074" cites: 0 citedby: 0 booktitle: "OOPSLA '02: Companion of the 17th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications" kind: "inproceedings" key: "985074" - title: "Yet Another java.lang.Class" author: - name: "Shigeru Chiba" link: "http://www.csg.is.titech.ac.jp/~chiba/" - name: "Michiaki Tatsubori" link: "https://researchr.org/alias/michiaki-tatsubori" year: "1998" doi: "http://link.springer.de/link/service/series/0558/bibs/1543/15430372.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1543/15430372.htm" "pdf": "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.46.9857&rep=rep1&type=url&i=1" researchr: "https://researchr.org/publication/ChibaT98" cites: 0 citedby: 0 pages: "372-373" booktitle: "ECOOPW" kind: "inproceedings" key: "ChibaT98" - 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: "GPCE" 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: "ICMT" kind: "inproceedings" key: "HemelKV08" - title: "The Converge programming language" author: - name: "Laurence Tratt" link: "http://tratt.net/laurie/" year: "2005" month: "February" tags: - "converge" - "programming languages" - "programming" - "extensible language" researchr: "https://researchr.org/publication/tratt05convergepl" cites: 0 citedby: 1 institution: "Department of Computer Science, King's College London" number: "TR-05-01" kind: "techreport" key: "tratt05convergepl" - title: "Separation of Concerns with Procedures, Annotations, Advice and Pointcuts" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2005" doi: "http://dx.doi.org/10.1007/11531142_9" links: doi: "http://dx.doi.org/10.1007/11531142_9" tags: - "object-oriented programming" - "separation of concerns" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/KiczalesM05" cites: 0 citedby: 0 pages: "195-213" booktitle: "ECOOP" kind: "inproceedings" key: "KiczalesM05" - 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: "Dagstuhl" 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: "ENTCS" volume: "44" number: "2" pages: "79-86" kind: "article" key: "JongeVV01" - title: "US Patent 6467086 Aspect-oriented programming" author: - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Lamping" link: "https://researchr.org/alias/lamping" - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Hugunin" link: "https://researchr.org/alias/hugunin" - name: "Hilsdale" link: "https://researchr.org/alias/hilsdale" - name: "Boyapati" link: "https://researchr.org/alias/boyapati" year: "2002" month: "october" doi: "http://www.patentstorm.us/patents/6467086.html" abstract: "The concept of a general purpose aspect is introduced where an aspect transparently forces cross-cutting behavior on object classes and other software entities. A reusable aspect is further described for use as part of an aspect library." links: doi: "http://www.patentstorm.us/patents/6467086.html" tags: - "object-oriented programming" - "meta programming" - "AOP" - "reuse" - "Patent" - "6467086" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "Meta-Environment" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/US+Patent+6467086" cites: 0 citedby: 0 howpublished: "Patent" kind: "misc" key: "US Patent 6467086" - 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: "JSC" 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: "OOPSLA" 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: "ENTCS" volume: "147" number: "1" pages: "5-30" kind: "article" key: "KallebergV06" - title: "A Practical Functional Program for the CRAY X-MP" author: - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" - name: "Terence J. Harmer" link: "https://researchr.org/alias/terence-j.-harmer" year: "1992" tags: - "functional programming" researchr: "https://researchr.org/publication/BoyleH92" cites: 0 citedby: 0 journal: "JFP" volume: "2" number: "1" pages: "81-126" kind: "article" key: "BoyleH92" - title: "Applications of the TAMPR Transformation System" author: - name: "Terence J. Harmer" link: "https://researchr.org/alias/terence-j.-harmer" - name: "Patrick J. McParland" link: "https://researchr.org/alias/patrick-j.-mcparland" - name: "James M. Boyle" link: "http://portal.acm.org/author_page.cfm?id=81100205555&coll=GUIDE&dl=GUIDE&trk=0&CFID=62455845&CFTOKEN=17008970" year: "1998" tags: - "transformation system" - "transformation" researchr: "https://researchr.org/publication/HarmerMB98%3A0" cites: 0 citedby: 0 booktitle: "iwfm" kind: "inproceedings" key: "HarmerMB98:0" - title: "Feature-Oriented Programming" doi: "http://en.wikipedia.org/wiki/Feature_Oriented_Programming" links: doi: "http://en.wikipedia.org/wiki/Feature_Oriented_Programming" tags: - "object-oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/fop" cites: 0 citedby: 0 kind: "misc" key: "fop" - title: "Scalable satisfiability checking and test data generation from modeling diagrams" author: - name: "Yannis Smaragdakis" link: "http://smaragd.org" - name: "Christoph Csallner" link: "https://researchr.org/alias/christoph-csallner" - name: "Ranjith Subramanian" link: "https://researchr.org/alias/ranjith-subramanian" year: "2009" doi: "http://dx.doi.org/10.1007/s10515-008-0044-6" links: doi: "http://dx.doi.org/10.1007/s10515-008-0044-6" tags: - "model checking" - "meta-model" - "modeling" - "testing" - "data-flow" - "Meta-Environment" researchr: "https://researchr.org/publication/SmaragdakisCS09" cites: 0 citedby: 0 journal: "ASE" volume: "16" number: "1" pages: "73-99" kind: "article" key: "SmaragdakisCS09" - 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: "ENTCS" volume: "70" number: "6" pages: "156-175" kind: "article" key: "OlmosV02" - title: "How We Should Use Aspects" author: - name: "Shigeru Chiba" link: "http://www.csg.is.titech.ac.jp/~chiba/" year: "2007" tags: - "aspect" researchr: "https://researchr.org/publication/Chiba07" cites: 0 citedby: 0 pages: "3-6" booktitle: "ECOOPW" kind: "inproceedings" key: "Chiba07" - title: "Extensibility in programming language design" author: - name: "Thomas A. Standish" link: "https://researchr.org/alias/thomas-a.-standish" year: "1975" doi: "http://doi.acm.org/10.1145/1499949.1500003" abstract: "What is extensibility? What is it good for, if anything? Is it worth bothering about when designing a programming language?" links: doi: "http://doi.acm.org/10.1145/1499949.1500003" tags: - "programming languages" - "language design" - "programming" - "design" - "extensible language" researchr: "https://researchr.org/publication/Standish75" cites: 0 citedby: 0 pages: "287-290" booktitle: "afips" kind: "inproceedings" key: "Standish75" - 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" kind: "inproceedings" key: "BravenboerV07" - title: "Concepts and Experiments in Computational Reflection" author: - name: "Pattie Maes" link: "http://web.media.mit.edu/~pattie/" year: "1987" doi: "http://doi.acm.org/10.1145/38807.38821" abstract: "This paper brings some perspective to various concepts in computational reflection. A definition of computational reflection is presented, the importance of computational reflection is discussed and the architecture of languages that support reflection is studied. Further, this paper presents a survey of some experiments in reflection which have been performed. Examples of existing procedural, logic-based and rule-based languages with an architecture for reflection are briefly presented. The main part of the paper describes an original experiment to introduce a reflective architecture in an object-oriented language. It stresses the contributions of this language to the field of object-oriented programming and illustrates the new programming style made possible. The examples show that a lot of programming problems that were previously handled on an ad hoc basis, can in a reflective architecture be solved more elegantly." links: doi: "http://doi.acm.org/10.1145/38807.38821" tags: - "programming languages" - "object-oriented programming" - "rule-based" - "meta programming" - "computational reflection" - "architecture" - "survey" - "rules" - "logic programming" - "programming" - "subject-oriented programming" - "logic" - "Meta-Environment" - "reflection" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/Maes87%3AOOPSLA" cites: 0 citedby: 0 pages: "147-155" booktitle: "OOPSLA" kind: "inproceedings" key: "Maes87:OOPSLA" - title: "Using aspectC to improve the modularity of path-specific customization in operating system code" author: - name: "Yvonne Coady" link: "https://researchr.org/alias/yvonne-coady" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Michael J. Feeley" link: "https://researchr.org/alias/michael-j.-feeley" - name: "Greg Smolyn" link: "https://researchr.org/alias/greg-smolyn" year: "2001" doi: "http://doi.acm.org/10.1145/503209.503223" links: doi: "http://doi.acm.org/10.1145/503209.503223" tags: - "object-oriented programming" - "operating system" - "AOP" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/CoadyKFS01" cites: 0 citedby: 0 pages: "88-98" booktitle: "ESEC/FSE" kind: "inproceedings" key: "CoadyKFS01" - title: "Superlanguages: Developing Languages and Applications with XMF" author: - name: "A. Clark" link: "https://researchr.org/alias/a.-clark" - name: "P. Sammut" link: "https://researchr.org/alias/p.-sammut" - name: "J. Willans" link: "https://researchr.org/alias/j.-willans" year: "2008" month: "March" doi: "http://itcentre.tvu.ac.uk/~clark/Papers/Superlanguages.pdf" links: doi: "http://itcentre.tvu.ac.uk/~clark/Papers/Superlanguages.pdf" tags: - "extensible language" researchr: "https://researchr.org/publication/superlanguages" cites: 0 citedby: 2 edition: "1" kind: "book" key: "superlanguages" - title: "Design pattern implementation in Java and aspectJ" author: - name: "Jan Hannemann" link: "https://researchr.org/alias/jan-hannemann" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2002" doi: "http://doi.acm.org/10.1145/582419.582436" abstract: "AspectJ implementations of the GoF design patterns show modularity improvements in 17 of 23 cases. These improvements are manifested in terms of better code locality, reusability, composability, and (un)pluggability.The degree of improvement in implementation modularity varies, with the greatest improvement coming when the pattern solution structure involves crosscutting of some form, including one object playing multiple roles, many objects playing one role, or an object playing roles in multiple pattern instances." links: doi: "http://doi.acm.org/10.1145/582419.582436" tags: - "AspectJ" - "object-oriented programming" - "Java" - "meta programming" - "AOP" - "reuse" - "aspect oriented programming" - "subject-oriented programming" - "Meta-Environment" - "design" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/HannemannK02" cites: 0 citedby: 0 pages: "161-173" booktitle: "OOPSLA" kind: "inproceedings" key: "HannemannK02" - title: "Aspects and/versus modularity the grand debate" author: - name: "Richard P. Gabriel" link: "http://www.dreamsongs.com/RPG.html" - name: "Guy L. Steele Jr." link: "http://research.sun.com/people/mybio.php?uid=25706" - name: "Friedrich Steimann" link: "http://www.fernuni-hagen.de/ps/team/friedrich.steimann.shtml" - name: "Jim Waldo" link: "https://researchr.org/alias/jim-waldo" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" - name: "Kevin Sullivan" link: "https://researchr.org/alias/kevin-sullivan" year: "2006" doi: "http://doi.acm.org/10.1145/1176617.1176749" links: doi: "http://doi.acm.org/10.1145/1176617.1176749" tags: - "object-oriented programming" - "AOP" - "Modularity" - "aspect oriented programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/GabrielSSWKS06" cites: 0 citedby: 0 pages: "935-936" booktitle: "OOPSLA" kind: "inproceedings" key: "GabrielSSWKS06" - title: "Aspect-Oriented Programming Workshop Report" author: - name: "Kim Mens" link: "http://www.info.ucl.ac.be/~km/MyResearchPages/research/" - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Bedir Tekinerdogan" link: "https://researchr.org/alias/bedir-tekinerdogan" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "1997" doi: "http://link.springer.de/link/service/series/0558/bibs/1357/13570483.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1357/13570483.htm" tags: - "object-oriented programming" - "AOP" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/MensLTK97" cites: 0 citedby: 0 pages: "483-496" booktitle: "ECOOPW" kind: "inproceedings" key: "MensLTK97" - title: "Role-based refactoring of crosscutting concerns" author: - name: "Jan Hannemann" link: "https://researchr.org/alias/jan-hannemann" - name: "Gail C. Murphy" link: "https://researchr.org/alias/gail-c.-murphy" - name: "Gregor Kiczales" link: "http://people.cs.ubc.ca/~gregor/" year: "2005" doi: "http://doi.acm.org/10.1145/1052898.1052910" links: doi: "http://doi.acm.org/10.1145/1052898.1052910" tags: - "object-oriented programming" - "rule-based" - "AOP" - "refactoring" - "C++" - "aspect oriented programming" - "rule-based refactoring" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/HannemannMK05" cites: 0 citedby: 0 pages: "135-146" booktitle: "AOSD" kind: "inproceedings" key: "HannemannMK05" - title: "Polyglot: An Extensible Compiler Framework for Java" author: - name: "Nathaniel Nystrom" link: "https://researchr.org/alias/nathaniel-nystrom" - name: "Michael R. Clarkson" link: "https://researchr.org/alias/michael-r.-clarkson" - name: "Andrew C. Myers" link: "https://researchr.org/alias/andrew-c.-myers" year: "2003" doi: "http://link.springer.de/link/service/series/0558/bibs/2622/26220138.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/2622/26220138.htm" tags: - "Java" - "C++" - "compiler" researchr: "https://researchr.org/publication/NystromCM03" cites: 0 citedby: 4 pages: "138-152" booktitle: "cc" kind: "inproceedings" key: "NystromCM03" - 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: "CC" 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: "GTTSE" 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: "GPCE" kind: "inproceedings" key: "BravenboerDV07"