publications: - title: "Extensible language - where are we going" author: - name: "Cheatham,Jr., T. E." link: "https://researchr.org/alias/cheatham%2Cjr.%2C-t.-e." year: "1971" doi: "http://doi.acm.org/10.1145/800006.807999" links: doi: "http://doi.acm.org/10.1145/800006.807999" tags: - "e-science" - "extensible language" researchr: "https://researchr.org/publication/807999" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807999" - title: "PPL - an extensible language that failed" author: - name: "Standish, Thomas A." link: "https://researchr.org/alias/standish%2C-thomas-a." year: "1971" doi: "http://doi.acm.org/10.1145/800006.807998" links: doi: "http://doi.acm.org/10.1145/800006.807998" tags: - "extensible language" researchr: "https://researchr.org/publication/807998" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807998" - title: "Extensible control structures" author: - name: "Prenner, Charles J." link: "https://researchr.org/alias/prenner%2C-charles-j." year: "1973" doi: "http://doi.acm.org/10.1145/800021.808301" links: doi: "http://doi.acm.org/10.1145/800021.808301" researchr: "https://researchr.org/publication/808301" cites: 0 citedby: 0 booktitle: "Proceeding of ACM SIGPLAN - SIGOPS interface meeting on Programming languages - operating systems" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "808301" - title: "Easy language extension with Meta-AspectJ" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2006" doi: "http://doi.acm.org/10.1145/1134436" links: doi: "http://doi.acm.org/10.1145/1134436" tags: - "AspectJ" - "meta-model" - "Meta-Environment" - "meta-objects" researchr: "https://researchr.org/publication/HuangS06" cites: 0 citedby: 1 pages: "865-868" booktitle: "28th International Conference on Software Engineering (ICSE 2006), Shanghai, China, May 20-28, 2006" editor: - name: "Leon J. Osterweil" link: "https://researchr.org/alias/leon-j.-osterweil" - name: "H. Dieter Rombach" link: "https://researchr.org/alias/h.-dieter-rombach" - name: "Mary Lou Soffa" link: "https://researchr.org/alias/mary-lou-soffa" publisher: "ACM" isbn: "1-59593-375-1" kind: "inproceedings" key: "HuangS06" - title: "TXL: A Rapid Prototyping System for Programming Language Dialects" author: - name: "James R. Cordy" link: "http://research.cs.queensu.ca/~cordy/" - name: "Charles D. Halpern-Hamu" link: "https://researchr.org/alias/charles-d.-halpern-hamu" - name: "Eric Promislow" link: "https://researchr.org/alias/eric-promislow" year: "1991" doi: "https://doi.org/10.1109/ICCL.1988.13075" links: doi: "https://doi.org/10.1109/ICCL.1988.13075" tags: - "programming languages" - "TXL" - "programming" researchr: "https://researchr.org/publication/CordyHP91" cites: 0 citedby: 1 journal: "Computer Languages, Systems \\& Structures" volume: "16" number: "1" pages: "97-107" kind: "article" key: "CordyHP91" - 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: "ACM Transactions on Programming Languages and Systems" volume: "30" number: "6" kind: "article" key: "Tratt08-TOPLAS" - title: "Rewriting with Layout" author: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" year: "2000" doi: "http://homepages.cwi.nl/~jurgenv/publications/papers/rewriting_with_layout.ps.gz" abstract: "Rewriting technology has proved to be an adequate and powerful mechanism to perform source code transformations. These transformations can not only be efficiently implemented using rewriting technology, but it also provides a firmer grip on the source code syntax. However, an important shortcoming of rewriting technology is that source code comments and layout are lost during rewriting. We propose \"rewriting with layout\" to solve this problem. We present a rewriting algorithm that keeps the layout of sub-terms that are not rewritten, and reuses the layout occurring in the right-hand side of the rewrite rules. " links: doi: "http://homepages.cwi.nl/~jurgenv/publications/papers/rewriting_with_layout.ps.gz" tags: - "model-to-model transformation" - "rule-based" - "source comments" - "layout" - "SDF" - "graph transformation" - "term rewriting" - "reuse" - "source-to-source" - "graph-rewriting" - "rules" - "model transformation" - "metaprogramming" - "rewriting" - "ASF+SDF" - "concrete syntax" - "open-source" - "transformation" - "whitespace" researchr: "https://researchr.org/publication/BV00" cites: 0 citedby: 0 booktitle: "Proceedings of RULE" editor: - name: "Claude Kirchner" link: "http://www.loria.fr/~ckirchne/" - name: "Nachum Dershowitz" link: "http://www.math.tau.ac.il/~nachumd/Homepage.html" kind: "inproceedings" key: "BV00" - title: "An alternative approach to macro processing" author: - name: "Hammer, Michael" link: "https://researchr.org/alias/hammer%2C-michael" year: "1971" doi: "http://doi.acm.org/10.1145/800006.807983" links: doi: "http://doi.acm.org/10.1145/800006.807983" tags: - "macros" - "systematic-approach" researchr: "https://researchr.org/publication/807983" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807983" - 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: "Fundamental Approaches to Software Engineering, 12th International Conference, FASE 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings" editor: - name: "Marsha Chechik" link: "https://researchr.org/alias/marsha-chechik" - name: "Martin Wirsing" link: "https://researchr.org/alias/martin-wirsing" volume: "5503" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-00592-3" kind: "inproceedings" key: "Wachsmuth09" - title: "Application of extensible languages to specialized application languages" author: - name: "Sammet, Jean E." link: "https://researchr.org/alias/sammet%2C-jean-e." year: "1971" doi: "http://doi.acm.org/10.1145/800006.807997" links: doi: "http://doi.acm.org/10.1145/800006.807997" tags: - "e-science" - "extensible language" researchr: "https://researchr.org/publication/807997" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807997" - title: "METAPI - a language for extensions" author: - name: "Chandler, Gerald D." link: "https://researchr.org/alias/chandler%2C-gerald-d." year: "1971" doi: "http://doi.acm.org/10.1145/800006.807972" links: doi: "http://doi.acm.org/10.1145/800006.807972" researchr: "https://researchr.org/publication/807972" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807972" - title: "Type-Driven Automatic Quotation of Concrete Object Code in Meta Programs" author: - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" year: "2005" doi: "http://dx.doi.org/10.1007/11751113_8" abstract: "Meta programming can be facilitated by the ability to represent program fragments in concrete syntax instead of abstract syntax. The resulting meta programs are more self-documenting. One caveat in concrete meta programming is the syntactic separation between the meta language and the object language. To solve this problem, many meta programming systems use quoting and anti-quoting to indicate precisely where level switches occur. These \"syntactic hedges\" can obfuscate the concrete program fragments. This paper describes an algorithm for inferring quotes, such that the meta programmer no longer needs to explicitly indicate transitions between the meta and object languages. " links: doi: "http://dx.doi.org/10.1007/11751113_8" tags: - "programming languages" - "object-oriented programming" - "concrete object syntax" - "meta programming" - "SDF" - "meta-model" - "abstract syntax" - "type system" - "programming" - "subject-oriented programming" - "metaprogramming" - "Meta-Environment" - "quotation" - "ASF+SDF" - "feature-oriented programming" - "concrete syntax" - "meta-objects" researchr: "https://researchr.org/publication/Vinju05" cites: 0 citedby: 0 pages: "97-112" booktitle: "Rapid Integration of Software Engineering Techniques, Second International Workshop, RISE 2005, Heraklion, Crete, Greece, September 8-9, 2005, Revised Selected Papers" editor: - name: "Nicolas Guelfi" link: "https://researchr.org/alias/nicolas-guelfi" - name: "Anthony Savidis" link: "https://researchr.org/alias/anthony-savidis" volume: "3943" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-34063-7" kind: "inproceedings" key: "Vinju05" - title: "Generalized Type-Based Disambiguation of Meta Programs with Concrete Object Syntax" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Rob Vermaas" link: "https://researchr.org/profile/robvermaas/publications" - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2005" doi: "http://dx.doi.org/10.1007/11561347_12" abstract: "In meta programming with concrete object syntax, object-level programs are composed from fragments written in concrete syntax. The use of small program fragments in such quotations and the use of meta-level expressions within these fragments (anti-quotation) often leads to ambiguities. This problem is usually solved through explicit disambiguation, resulting in considerable syntactic overhead. A few systems manage to reduce this overhead by using type information during parsing. Since this is hard to achieve with traditional parsing technology, these systems provide specific combinations of meta and object languages, and their implementations are difficult to reuse. In this paper, we generalize these approaches and present a language independent method for introducing concrete object syntax without explicit disambiguation. The method uses scannerless generalized-LR parsing to parse meta programs with embedded object-level fragments, which produces a forest of all possible parses. This forest is reduced to a tree by a disambiguating type checker for the meta language. To validate our method we have developed embeddings of several object languages in Java, including AspectJ and Java itself. " links: doi: "http://dx.doi.org/10.1007/11561347_12" tags: - "programming languages" - "AspectJ" - "object-oriented programming" - "concrete object syntax" - "rule-based" - "Java" - "syntax definition" - "meta programming" - "SDF" - "meta-model" - "disambiguation" - "type system" - "reuse" - "programming" - "subject-oriented programming" - "Meta-Environment" - "parsing" - "scannerless parsing" - "systematic-approach" - "ASF+SDF" - "feature-oriented programming" - "concrete syntax" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/BravenboerVVV05" cites: 0 citedby: 2 pages: "157-172" booktitle: "Generative Programming and Component Engineering, 4th International Conference, GPCE 2005" editor: - name: "Robert Glück" link: "http://www.diku.dk/hjemmesider/ansatte/glueck/" - name: "Michael R. Lowry" link: "https://researchr.org/alias/michael-r.-lowry" volume: "3676" series: "Lecture Notes in Computer Science" address: "Tallinn, Estonia" publisher: "Springer" isbn: "3-540-29138-5" kind: "inproceedings" key: "BravenboerVVV05" - title: "MetaJ: An Extensible Environment for Metaprogramming in Java" author: - name: "Ademir Alvarenga de Oliveira" link: "https://researchr.org/alias/ademir-alvarenga-de-oliveira" - name: "Thiago Henrique Braga" link: "https://researchr.org/alias/thiago-henrique-braga" - name: "Marcelo de Almeida Maia" link: "https://researchr.org/alias/marcelo-de-almeida-maia" - name: "Roberto da Silva Bigonha" link: "https://researchr.org/alias/roberto-da-silva-bigonha" year: "2004" doi: "http://www.jucs.org/jucs_10_7/metaj_an_extensible_environment" links: doi: "http://www.jucs.org/jucs_10_7/metaj_an_extensible_environment" tags: - "Java" - "meta-model" - "Meta-Environment" - "meta-objects" researchr: "https://researchr.org/publication/OliveiraBMB04" cites: 0 citedby: 0 journal: "J. UCS" volume: "10" number: "7" pages: "872-891" kind: "article" key: "OliveiraBMB04" - title: "Generalized Parsing and Term Rewriting: Semantics Driven Disambiguation" author: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Steven Klusener" link: "http://www.cs.vu.nl/~steven/" - name: "Leon Moonen" link: "http://simula.no/~leonm/" - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" year: "2003" doi: "http://www1.elsevier.com/gej-ng/31/29/23/133/52/show/Products/notes/index.htt#008" abstract: "Generalized parsing technology provides the power and flexibility to attack real-world parsing applications. However, many programming languages have syntactical ambiguities that can only be solved using semantical analysis. In this paper we propose to apply the paradigm of term rewriting to filter ambiguities based on semantical information. We start with the definition of a representation of ambiguous derivations. Then we extend term rewriting with means to handle such derivations. Finally, we apply these tools to some real world examples, namely C and COBOL. The resulting architecture is simple and efficient as compared to semantic directed parsing. " links: doi: "http://www1.elsevier.com/gej-ng/31/29/23/133/52/show/Products/notes/index.htt#008" tags: - "programming languages" - "semantics" - "rule-based" - "program analysis" - "disambiguation" - "architecture" - "term rewriting" - "analysis" - "graph-rewriting" - "C++" - "programming paradigms" - "programming" - "rewriting" - "Cobol" - "parsing" researchr: "https://researchr.org/publication/BrandKMV03" cites: 0 citedby: 0 journal: "Electronic Notes in Theoretical Computer Science" volume: "82" number: "3" pages: "575-591" kind: "article" key: "BrandKMV03" - title: "Language Prototyping. An Algebraic Specification Approach" year: "1996" month: "September" tags: - "algebraic specification" - " algebra" - "systematic-approach" researchr: "https://researchr.org/publication/DHP%3A1996" cites: 0 citedby: 2 editor: - name: "Arie van Deursen" link: "http://www.st.ewi.tudelft.nl/~arie/" - name: "Jan Heering" link: "http://homepages.cwi.nl/~jan/" - name: "Paul Klint" link: "http://homepages.cwi.nl/~paulk/" volume: "5" series: "AMAST Series in Computing" address: "Singapore" publisher: "World Scientific" kind: "book" key: "DHP:1996" - title: "Syntax Definition for Language Prototyping" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "1997" month: "September" abstract: "Language prototyping is the activity of designing and testing definitions of new or existing computer languages. An important aspect of a language definition is the definition of its syntax. The subject of this thesis are new formalisms and techniques that support the development and prototyping of syntax definitions. There are four main subjects: (1) Techniques for parsing and disambiguation of context-free languages. (2) Design and implementation of a new syntax definition formalism. (3) Design of a multi-level algebraic specification formalism. (4) Study of polymorphic syntax definition. " tags: - "syntax definition" - "SDF" - "syntax definition formalism" - "disambiguation" - "testing" - "language design" - "graph-rewriting" - "algebraic specification" - " algebra" - "context-aware" - "rewriting" - "parsing" - "design" - "scannerless parsing" - "ASF+SDF" - "SGLR" researchr: "https://researchr.org/publication/Visser97" cites: 0 citedby: 6 school: "University of Amsterdam" advisor: - name: "Paul Klint" link: "http://homepages.cwi.nl/~paulk/" kind: "phdthesis" key: "Visser97" - title: "A model of extensible language systems" author: - name: "Notley, M. G." link: "https://researchr.org/alias/notley%2C-m.-g." year: "1971" doi: "http://doi.acm.org/10.1145/800006.807977" links: doi: "http://doi.acm.org/10.1145/800006.807977" tags: - "meta-model" - "modeling language" - "language modeling" - "Meta-Environment" - "extensible language" researchr: "https://researchr.org/publication/807977" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807977" - title: "Parse Table Composition" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-00434-6_6" abstract: "Module systems, separate compilation, deployment of binary components, and dynamic linking have enjoyed wide acceptance in programming languages and systems. In contrast, the syntax of languages is usually defined in a non-modular way, cannot be compiled separately, cannot easily be combined with the syntax of other languages, and cannot be deployed as a component for later composition. Grammar formalisms that do support modules use whole program compilation. Current extensible compilers focus on source-level extensibility, which requires users to compile the compiler with a specific configuration of extensions. A compound parser needs to be generated for every combination of extensions. The generation of parse tables is expensive, which is a particular problem when the composition configuration is not fixed to enable users to choose language extensions. In this paper we introduce an algorithm for parse table composition to support separate compilation of grammars to parse table components. Parse table components can be composed (linked) efficiently at runtime, i.e. just before parsing. While the worst-case time complexity of parse table composition is exponential (like the complexity of parse table generation itself), for realistic language combination scenarios involving grammars for real languages, our parse table composition algorithm is an order of magnitude faster than computation of the parse table for the combined grammars. " links: doi: "http://dx.doi.org/10.1007/978-3-642-00434-6_6" tags: - "parsing algorithm" - "programming languages" - "deployment" - "syntax definition" - "SDF" - "composition" - "source-to-source" - "parse table composition" - "compiler" - "programming" - "language composition" - "parsing" - "extensible language" - "ASF+SDF" - "open-source" - "grammar" - "domain-specific language" researchr: "https://researchr.org/publication/BravenboerV08" cites: 0 citedby: 0 pages: "74-94" booktitle: "Software Language Engineering, First International Conference, SLE 2008, Toulouse, France, September 29-30, 2008. Revised Selected Papers" editor: - name: "Dragan Gasevic" link: "http://www.sfu.ca/~dgasevic/" - name: "Ralf Lämmel" link: "http://www.uni-koblenz.de/~laemmel/Site/Home.html" - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" volume: "5452" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-00433-9" kind: "inproceedings" key: "BravenboerV08" - title: "A short presentation of the main features of AEPL - an extensible programming language" author: - name: "Katzenelson, J." link: "https://researchr.org/alias/katzenelson%2C-j." - name: "Milgrom, E." link: "https://researchr.org/alias/milgrom%2C-e." year: "1971" doi: "http://doi.acm.org/10.1145/800006.807975" links: doi: "http://doi.acm.org/10.1145/800006.807975" tags: - "programming languages" - "e-science" - "programming" - "extensible language" researchr: "https://researchr.org/publication/807975" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807975" - title: "Repleo: a syntax-safe template engine" author: - name: "Jeroen Arnoldus" link: "http://www.repleo.nl/" - name: "Jeanot Bijpost" link: "https://researchr.org/alias/jeanot-bijpost" - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" year: "2007" doi: "http://doi.acm.org/10.1145/1289971.1289977" abstract: "Templates are a very common solution to generate code. They are used for different tasks like rendering webpages, creating Java Beans and so on. Most template systems have no notion of the object language and just generate text. The drawback of this approach is the possibility to generate syntactical incorrect code. This can lead to all kinds of annoying errors. In this paper we present an approach for a syntax safe template engine. Syntax safety guarantees that the generated code can be correctly parsed. To ensure this we use the object language grammar to evaluate the template." links: doi: "http://doi.acm.org/10.1145/1289971.1289977" tags: - "Java" - "template engine" - "Meta-Environment" - "parsing" - "systematic-approach" - "meta-objects" - "grammar" researchr: "https://researchr.org/publication/ArnoldusBB07" cites: 0 citedby: 1 pages: "25-32" booktitle: "Generative Programming and Component Engineering, 6th International Conference, GPCE 2007" editor: - name: "Charles Consel" link: "https://researchr.org/alias/charles-consel" - name: "Julia L. Lawall" link: "http://www.diku.dk/hjemmesider/ansatte/julia/" address: "Salzburg, Austria" publisher: "ACM" isbn: "978-1-59593-855-8" kind: "inproceedings" key: "ArnoldusBB07" - title: "XAspects: an extensible system for domain-specific aspect languages" author: - name: "Shonle, Macneil" link: "https://researchr.org/alias/shonle%2C-macneil" - name: "Lieberherr, Karl" link: "https://researchr.org/alias/lieberherr%2C-karl" - name: "Shah, Ankit" link: "https://researchr.org/alias/shah%2C-ankit" year: "2003" doi: "http://doi.acm.org/10.1145/949344.949349" links: doi: "http://doi.acm.org/10.1145/949344.949349" tags: - "extensible language" - "domain-specific language" researchr: "https://researchr.org/publication/949349" cites: 0 citedby: 0 booktitle: "OOPSLA '03: Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications" address: "New York, NY, USA" publisher: "ACM" isbn: "1-58113-751-6" kind: "inproceedings" key: "949349" - title: "Stratego/XT 0.17. A language and toolset for program transformation" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Rob Vermaas" link: "https://researchr.org/profile/robvermaas/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1016/j.scico.2007.11.003" abstract: "Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, and tools for generating such components from declarative specifications. Complete program transformation systems are composed from these components." links: doi: "http://dx.doi.org/10.1016/j.scico.2007.11.003" "technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-011.pdf" "stratego/xt": "http://strategoxt.org" tags: - "control systems" - "programming languages" - "object-oriented programming" - "concrete object syntax" - "reusable components" - "rule-based" - "completeness" - "meta programming" - "pattern language" - "graph transformation" - "Stratego/XT" - "transformation language" - "reuse" - "graph-rewriting" - "rules" - "transformation system" - "DSL" - "programming" - "subject-oriented programming" - "context-aware" - "abstraction" - "Meta-Environment" - "rewriting" - "rewriting strategies" - "feature-oriented programming" - "concrete syntax" - "meta-objects" - "transformation" - "Stratego" - "program transformation" researchr: "https://researchr.org/publication/BravenboerKVV08" cites: 0 citedby: 7 journal: "Science of Computer Programming" volume: "72" number: "1-2" pages: "52-70" kind: "article" key: "BravenboerKVV08" - title: "Babel, an application of extensible compilers" author: - name: "Scowen, R. S." link: "https://researchr.org/alias/scowen%2C-r.-s." year: "1971" doi: "http://doi.acm.org/10.1145/800006.807971" links: doi: "http://doi.acm.org/10.1145/800006.807971" tags: - "compiler" researchr: "https://researchr.org/publication/807971" cites: 0 citedby: 0 booktitle: "Proceedings of the international symposium on Extensible languages" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "807971" - title: "Domain-specific languages and program generation with Meta-AspectJ" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "David Zook" link: "https://researchr.org/alias/david-zook" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2008" doi: "http://doi.acm.org/10.1145/1416563.1416566" abstract: "Meta-AspectJ (MAJ) is a language for generating AspectJ programs using code templates. MAJ itself is an extension of Java, so users can interleave arbitrary Java code with AspectJ code templates. MAJ is a structured metaprogramming tool: a well-typed generator implies a syntactically correct generated program. MAJ promotes a methodology that combines aspect-oriented and generative programming. A valuable application is in implementing small domain-specific language extensions as generators using unobtrusive annotations for syntax extension and AspectJ as a back-end. The advantages of this approach are twofold. First, the generator integrates into an existing software application much as a regular API or library, instead of as a language extension. Second, a mature language implementation is easy to achieve with little effort since AspectJ takes care of the low-level issues of interfacing with the base Java language. In addition to its practical value, MAJ offers valuable insights to metaprogramming tool designers. It is a mature metaprogramming tool for AspectJ (and, by extension, Java): a lot of emphasis has been placed on context-sensitive parsing and error reporting. As a result, MAJ minimizes the number of metaprogramming (quote/unquote) operators and uses type inference to reduce the need to remember type names for syntactic entities." links: doi: "http://doi.acm.org/10.1145/1416563.1416566" tags: - "generative programming" - "programming languages" - "AspectJ" - "object-oriented programming" - "type inference" - "rule-based" - "Java" - "meta programming" - "meta-model" - "little language" - "code generation" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "context-aware" - "Meta-Environment" - "parsing" - "systematic-approach" - "feature-oriented programming" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/HuangZS08" cites: 0 citedby: 0 journal: "ACM Transactions on Software Engineering Methodology" volume: "18" number: "2" kind: "article" key: "HuangZS08" - title: "The hierarchical language system" author: - name: "Terashima, Nobuyoshi" link: "https://researchr.org/alias/terashima%2C-nobuyoshi" year: "1977" doi: "http://doi.acm.org/10.1145/954604.954613" links: doi: "http://doi.acm.org/10.1145/954604.954613" researchr: "https://researchr.org/publication/954613" cites: 0 citedby: 0 journal: "SIGPLAN Not." volume: "12" number: "9" kind: "article" key: "954613" - title: "Meta-programming with Concrete Object Syntax" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2002" doi: "https://doi.org/10.1007/3-540-45821-2_19" abstract: "Meta programs manipulate structured representations, i.e., abstract syntax trees, of programs. The conceptual distance between the concrete syntax meta-programmers use to reason about programs and the notation for abstract syntax manipulation provided by general purpose (meta-) programming languages is too great for many applications. In this paper it is shown how the syntax definition formalism SDF can be employed to fit any meta-programming language with concrete syntax notation for composing and analyzing object programs. As a case study, the addition of concrete syntax to the program transformation language Stratego is presented. The approach is then generalized to arbitrary meta-languages. " links: doi: "https://doi.org/10.1007/3-540-45821-2_19" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "concrete object syntax" - "syntax definition" - "meta programming" - "case study" - "SDF" - "meta-model" - "abstract syntax" - "Stratego/XT" - "transformation language" - "source-to-source" - "model transformation" - "programming" - "subject-oriented programming" - "Meta-Environment" - "parsing" - "scannerless parsing" - "systematic-approach" - "ASF+SDF" - "feature-oriented programming" - "concrete syntax" - "meta-objects" - "transformation" - "Stratego" - "program transformation" researchr: "https://researchr.org/publication/Visser02" cites: 23 citedby: 6 pages: "299-315" booktitle: "Generative Programming and Component Engineering, ACM SIGPLAN/SIGSOFT Conference, GPCE 2002, Pittsburgh, PA, USA, October 6-8, 2002, Proceedings" editor: - name: "Don S. Batory" link: "http://www.cs.utexas.edu/~dsb/" - name: "Charles Consel" link: "https://researchr.org/alias/charles-consel" - name: "Walid Taha" link: "http://www.cs.rice.edu/~taha/" volume: "2487" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-44284-7" kind: "inproceedings" key: "Visser02" - title: "Code Generation by Model Transformation" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13" abstract: "The realization of model-driven software development requires effective techniques for implementing code generators. In this paper, we present a case study of code generation by model transformation with Stratego, a high-level transformation language based on the paradigm of rewrite rules with programmable strategies that integrates model-to-model, model-to-code, and code-to-code transformations. The use of concrete object syntax guarantees syntactic correctness of code patterns, and enables the subsequent transformation of generated code. The composability of strategies supports two dimensions of transformation modularity. Vertical modularity is achieved by designing a generator as a pipeline of model-to-model transformations that gradually transforms a high-level input model to an implementation. Horizontal modularity is achieved by supporting the definition of plugins which implement all aspects of a language feature. We discuss the application of these techniques in the implementation of WebDSL, a domain-specific language for dynamic web applications with a rich data model. " links: doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13" successor: "https://researchr.org/publication/HemelKGV10" "technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-012.pdf" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "WebDSL" - "concrete object syntax" - "rule-based" - "transformation engineering" - "syntax definition" - "meta programming" - "data-flow language" - "pattern language" - "case study" - "graph transformation" - "meta-model" - "modeling language" - "modeling" - "language engineering" - "transformation language" - "software language engineering" - "language modeling" - "web engineering" - "data-flow programming" - "model-driven development" - "data-flow" - "source-to-source" - "graph-rewriting" - "software engineering" - "rules" - "model-driven engineering" - "C++" - "programming paradigms" - "code generation" - "object-role modeling" - "aspect oriented programming" - "model transformation" - "web applications" - "DSL" - "subject-oriented programming" - "Meta-Environment" - "rewriting" - "rewriting strategies" - "feature-oriented programming" - "concrete syntax" - "open-source" - "meta-objects" - "transformation" - "Stratego" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/HemelKV08" cites: 0 citedby: 3 pages: "183-198" booktitle: "Theory and Practice of Model Transformations, First International Conference, ICMT 2008, Zürich, Switzerland, July 1-2, 2008, Proceedings" editor: - name: "Antonio Vallecillo" link: "http://www.lcc.uma.es/~av/" - name: "Jeffrey G. Gray" link: "http://www.gray-area.org/" - name: "Alfonso Pierantonio" link: "http://www.di.univaq.it/alfonso" volume: "5063" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-69926-2" kind: "inproceedings" key: "HemelKV08" - title: "The project" author: - name: "Claus Brabrand" link: "https://researchr.org/alias/claus-brabrand" - name: "Anders Møller" link: "https://researchr.org/alias/anders-m%C3%B8ller" - name: "Michael I. Schwartzbach" link: "http://www.brics.dk/~mis/" year: "2002" doi: "http://doi.acm.org/10.1145/514183.514184" links: doi: "http://doi.acm.org/10.1145/514183.514184" researchr: "https://researchr.org/publication/BrabrandMS02" cites: 0 citedby: 1 journal: "ACM Trans. Internet Techn." volume: "2" number: "2" pages: "79-114" kind: "article" key: "BrabrandMS02" - title: "META II a syntax-oriented compiler writing language" author: - name: "Schorre, D. V." link: "https://researchr.org/alias/schorre%2C-d.-v." year: "1964" doi: "http://doi.acm.org/10.1145/800257.808896" links: doi: "http://doi.acm.org/10.1145/800257.808896" tags: - "meta-model" - "writing" - "compiler" - "Meta-Environment" - "meta-objects" researchr: "https://researchr.org/publication/808896" cites: 0 citedby: 0 booktitle: "Proceedings of the 1964 19th ACM national conference" address: "New York, NY, USA" publisher: "ACM" kind: "inproceedings" key: "808896" - title: "Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2004" doi: "http://doi.acm.org/10.1145/1028976.1029007" abstract: "Application programmer's interfaces give access to domain knowledge encapsulated in class libraries without providing the appropriate notation for expressing domain composition. Since object-oriented languages are designed for extensibility and reuse, the language constructs are often sufficient for expressing domain abstractions at the semantic level. However, they do not provide the right abstractions at the syntactic level. In this paper we describe MetaBorg, a method for providing concrete syntax for domain abstractions to application programmers. The method consists of embedding domain-specific languages in a general purpose host language and assimilating the embedded domain code into the surrounding host code. Instead of extending the implementation of the host language, the assimilation phase implements domain abstractions in terms of existing APIs leaving the host language undisturbed. Indeed, MetaBorg can be considered a method for promoting APIs to the language level. The method is supported by proven and available technology, i.e. the syntax definition formalism SDF and the program transformation language and toolset Stratego/XT. We illustrate the method with applications in three domains: code generation, XML generation, and user-interface construction." links: doi: "http://doi.acm.org/10.1145/1028976.1029007" tags: - "programming languages" - "object-oriented programming" - "concrete object syntax" - "syntax definition" - "meta programming" - "assimilation" - "SDF" - "XML" - "XML Schema" - "Stratego/XT" - "transformation language" - "composition" - "MetaBorg" - "language design" - "reuse" - "code generation" - "subject-oriented programming" - "abstraction" - "Meta-Environment" - "extensible language" - "ASF+SDF" - "feature-oriented programming" - "concrete syntax" - "meta-objects" - "transformation" - "Stratego" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/BravenboerV04" cites: 51 citedby: 8 pages: "365-383" booktitle: "Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004" editor: - name: "John M. Vlissides" link: "https://researchr.org/alias/john-m.-vlissides" - name: "Douglas C. Schmidt" link: "https://researchr.org/alias/douglas-c.-schmidt" address: "Vancouver, BC, Canada" publisher: "ACM" isbn: "1-58113-831-8" kind: "inproceedings" key: "BravenboerV04" - title: "" year: "1998" doi: "http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.25.1364" note: "(this shouldn't be a \"misc\" publication)" links: doi: "http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.25.1364" researchr: "https://researchr.org/publication/deleted" cites: 0 citedby: 0 kind: "misc" key: "deleted" - title: "Concrete syntax for data objects in functional languages" author: - name: "Aasa, Annika" link: "https://researchr.org/alias/aasa%2C-annika" - name: "Petersson, Kent" link: "https://researchr.org/alias/petersson%2C-kent" - name: "Synek, Dan" link: "https://researchr.org/alias/synek%2C-dan" year: "1988" doi: "http://doi.acm.org/10.1145/62678.62688" links: doi: "http://doi.acm.org/10.1145/62678.62688" tags: - "concrete object syntax" - "data-flow language" - "data-flow" - "Meta-Environment" - "concrete syntax" - "meta-objects" researchr: "https://researchr.org/publication/62688" cites: 0 citedby: 0 booktitle: "LFP '88: Proceedings of the 1988 ACM conference on LISP and functional programming" address: "New York, NY, USA" publisher: "ACM" isbn: "0-89791-273-X" kind: "inproceedings" key: "62688" - title: "Composable and compilable macros:: you want it when?" author: - name: "Matthew Flatt" link: "http://www.cs.utah.edu/~mflatt/" year: "2002" doi: "http://doi.acm.org/10.1145/581478.581486" links: doi: "http://doi.acm.org/10.1145/581478.581486" tags: - "macros" - "compiler" researchr: "https://researchr.org/publication/581486" cites: 0 citedby: 0 booktitle: "ICFP '02: Proceedings of the seventh ACM SIGPLAN international conference on Functional programming" address: "New York, NY, USA" publisher: "ACM" isbn: "1-58113-487-8" kind: "inproceedings" key: "581486" - title: "Implementing multi-stage languages using ASTs, Gensym, and reflection" author: - name: "Calcagno, Cristiano" link: "https://researchr.org/alias/calcagno%2C-cristiano" - name: "Walid Taha" link: "http://www.cs.rice.edu/~taha/" - name: "Huang, Liwen" link: "https://researchr.org/alias/huang%2C-liwen" - name: "Xavier Leroy" link: "http://pauillac.inria.fr/~xleroy/" year: "2003" tags: - "reflection" researchr: "https://researchr.org/publication/954190" cites: 0 citedby: 0 booktitle: "GPCE '03: Proceedings of the 2nd international conference on Generative programming and component engineering" address: "New York, NY, USA" publisher: "Springer-Verlag New York, Inc." isbn: "3-540-20102-5" kind: "inproceedings" key: "954190" - title: "Designing Syntax Embeddings and Assimilations for Language Libraries" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2007" doi: "http://dx.doi.org/10.1007/978-3-540-69073-3_5" abstract: "Language libraries extend regular libraries with domain-specific notation. More precisely, a language library is a combination of a domain-specific language embedded in the general-purpose host language, a regular library implementing the underlying functionality, and an assimilation transformation that maps embedded DSL fragments to host language code. While the basic architecture for realizing language libraries is the same for all applications, there are many design choices to be made in the design of a particular combination of library, guest language syntax, host language, and assimilation. In this paper, we give an overview of the design space for syntax embeddings and assimilations for the realization of language libraries. " links: doi: "http://dx.doi.org/10.1007/978-3-540-69073-3_5" technicalreport: "https://researchr.org/publication/TUD-SERG-2008-042" tags: - "syntax embedding" - "syntax definition" - "assimilation" - "transformation language" - "architecture" - "language design" - "DSL" - "language libraries" - "design" - "transformation" - "domain-specific language" researchr: "https://researchr.org/publication/BravenboerV07" cites: 24 citedby: 1 pages: "34-46" booktitle: "Models in Software Engineering, Workshops and Symposia at MoDELS 2007, Nashville, TN, USA, September 30 - October 5, 2007, Reports and Revised Selected Papers" editor: - name: "Holger Giese" link: "https://researchr.org/alias/holger-giese" volume: "5002" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-69069-6" kind: "inproceedings" key: "BravenboerV07" - title: "A graded bibliography on macro systems and extensible languages" author: - name: "Metzner, John R." link: "https://researchr.org/alias/metzner%2C-john-r." year: "1979" doi: "http://doi.acm.org/10.1145/954051.954056" links: doi: "http://doi.acm.org/10.1145/954051.954056" tags: - "bibliography" - "macros" - "extensible language" researchr: "https://researchr.org/publication/954056" cites: 0 citedby: 0 journal: "SIGPLAN Not." volume: "14" number: "1" kind: "article" key: "954056" - title: "Maya: multiple-dispatch syntax extension in Java" author: - name: "Baker, Jason" link: "https://researchr.org/alias/baker%2C-jason" - name: "Hsieh, Wilson C." link: "https://researchr.org/alias/hsieh%2C-wilson-c." year: "2002" doi: "http://doi.acm.org/10.1145/512529.512562" links: doi: "http://doi.acm.org/10.1145/512529.512562" tags: - "Java" - "C++" researchr: "https://researchr.org/publication/512562" cites: 0 citedby: 0 booktitle: "PLDI '02: Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation" address: "New York, NY, USA" publisher: "ACM" isbn: "1-58113-463-0" kind: "inproceedings" key: "512562" - title: "The Java syntactic extender (JSE)" author: - name: "Bachrach, Jonthan" link: "https://researchr.org/alias/bachrach%2C-jonthan" - name: "Playford, Keith" link: "https://researchr.org/alias/playford%2C-keith" year: "2001" doi: "http://doi.acm.org/10.1145/504282.504285" links: doi: "http://doi.acm.org/10.1145/504282.504285" tags: - "Java" researchr: "https://researchr.org/publication/504285" cites: 0 citedby: 2 booktitle: "OOPSLA '01: Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications" address: "New York, NY, USA" publisher: "ACM" isbn: "1-58113-335-9" kind: "inproceedings" key: "504285" - title: "Preventing injection attacks with syntax embeddings" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2007" doi: "http://doi.acm.org/10.1145/1289971.1289975" abstract: "Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A client can then supply specially crafted input that causes the constructed sentence to be interpreted in an unintended way, leading to an injection attack. We describe a more natural style of programming that yields code that is impervious to injections by construction. Our approach embeds the grammars of the guest languages (e.g., SQL) into that of the host language (e.g., Java) and automatically generates code that maps the embedded language to constructs in the host language that reconstruct the embedded sentences, adding escaping functions where appropriate. This approach is generic, meaning that it can be applied with relative ease to any combination of host and guest languages." links: doi: "http://doi.acm.org/10.1145/1289971.1289975" successor: "https://researchr.org/publication/BravenboerDV10" tags: - "programming languages" - "syntax embedding" - "Java" - "preventing injection attacks" - "generic programming" - "injection attack" - "SDF" - "XML" - "embedded software" - "XML Schema" - "SQL" - "security" - "language embedding" - "DSL" - "programming" - "systematic-approach" - "ASF+SDF" - "grammar" - "query language" researchr: "https://researchr.org/publication/BravenboerDV07" cites: 0 citedby: 4 pages: "3-12" booktitle: "Generative Programming and Component Engineering, 6th International Conference, GPCE 2007" editor: - name: "Charles Consel" link: "https://researchr.org/alias/charles-consel" - name: "Julia L. Lawall" link: "http://www.diku.dk/hjemmesider/ansatte/julia/" address: "Salzburg, Austria" publisher: "ACM" isbn: "978-1-59593-855-8" kind: "inproceedings" key: "BravenboerDV07"