publications: - title: "The ASF+SDF Meta-environment: A Component-Based Language Development Environment" author: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Arie van Deursen" link: "http://www.st.ewi.tudelft.nl/~arie/" - name: "Jan Heering" link: "http://homepages.cwi.nl/~jan/" - name: "H. A. de Jong" link: "http://www.cwi.nl" - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" - name: "Tobias Kuipers" link: "http://www.sig.eu" - name: "Paul Klint" link: "http://homepages.cwi.nl/~paulk/" - name: "Leon Moonen" link: "http://simula.no/~leonm/" - name: "Pieter A. Olivier" link: "http://www.cwi.nl" - name: "Jeroen Scheerder" link: "http://www.linkedin.com/in/jeroenscheerder" - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Joost Visser" link: "http://www.di.uminho.pt/~joost.visser/" year: "2001" doi: "https://doi.org/10.1016/S1571-0661(04)80917-4" abstract: "The Asf+Sdf Meta-environment is an interactive development environment for the automatic generation of interactive systems for constructing language definitions and generating tools for them. Over the years, this system has been used in a variety of academic and commercial projects ranging from formal program manipulation to conversion of COBOL systems. Since the existing implementation of the Meta-environment started exhibiting more and more characteristics of a legacy system, we decided to build a completely new, component-based, version. We demonstrate this new system and stress its open architecture. " links: doi: "https://doi.org/10.1016/S1571-0661(04)80917-4" tags: - "programming languages" - "rule-based" - "meta programming" - "SDF" - "meta-model" - "architecture" - "model-driven development" - "source-to-source" - "DSL" - "metaprogramming" - "Meta-Environment" - "Cobol" - "ASF+SDF" - "open-source" - "meta-objects" researchr: "https://researchr.org/publication/BrandDHJ01" cites: 0 citedby: 3 pages: "365-370" booktitle: "CC" kind: "inproceedings" key: "BrandDHJ01" - title: "Disambiguation Filters for Scannerless Generalized LR Parsers" author: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Jeroen Scheerder" link: "http://www.linkedin.com/in/jeroenscheerder" - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2002" doi: "https://doi.org/10.1007/3-540-45937-5_12" abstract: "In this paper we present the fusion of generalized LR parsing and scannerless parsing. This combination supports syntax definitions in which all aspects (lexical and context-free) of the syntax of a language are defined explicitly in one formalism. Furthermore, there are no restrictions on the class of grammars, thus allowing a natural syntax tree structure. Ambiguities that arise through the use of unrestricted grammars are handled by explicit disambiguation constructs, instead of implicit defaults that are taken by traditional scanner and parser generators. Hence, a syntax definition becomes a full declarative description of a language. Scannerless generalized LR parsing is a viable technique that has been applied in various industrial and academic projects. " links: doi: "https://doi.org/10.1007/3-540-45937-5_12" tags: - "GLR parsing" - "syntax definition" - "SDF" - "lexical syntax" - "scannerless" - "disambiguation" - "GLR" - "context-aware" - "parsing" - "scannerless parsing" - "ASF+SDF" - "SGLR" - "grammar" researchr: "https://researchr.org/publication/BrandSVV02" cites: 0 citedby: 4 pages: "143-158" booktitle: "CC" kind: "inproceedings" key: "BrandSVV02" - title: "Pretty-Printing for Software Reengineering" author: - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" year: "2002" doi: "http://computer.org/proceedings/icsm/1819/18190550abs.htm" abstract: "Automatic software reengineering changes or repairs existing software systems. They are usually tailor-made for a specific customer and language dependent. Maintaining similar reengineering for multiple customers and different language dialects may, therefore, soon become problematic unless advanced language technology is used. Generic pretty-printing is part of such technology and is the subject of this paper. We discuss specific pretty-print aspects of software reengineering such as fulfilling customer-specific format conventions, preserving existing layout, and producing multiple output formats. In addition, we describe pretty-print techniques that help to reduce maintenance effort of tailor-made reengineering supporting multiple language dialects. Applications such as COBOL reengineering and SDL documentation generation show that our techniques, implemented in the generic pretty-printer GPP, are feasible." links: doi: "http://computer.org/proceedings/icsm/1819/18190550abs.htm" researchr: "https://researchr.org/publication/Jonge02" cites: 0 citedby: 0 pages: "550-559" booktitle: "ICSM" kind: "inproceedings" key: "Jonge02" - title: "AMBIDEXTER: Practical Ambiguity Detection" author: - name: "Bas Basten" link: "http://homepages.cwi.nl/~basten" - name: "Tijs van der Storm" link: "http://homepages.cwi.nl/~storm/" year: "2010" doi: "http://dx.doi.org/10.1109/SCAM.2010.21" links: doi: "http://dx.doi.org/10.1109/SCAM.2010.21" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/scam/BastenS10" researchr: "https://researchr.org/publication/BastenS10" cites: 0 citedby: 0 pages: "101-102" booktitle: "SCAM" kind: "inproceedings" key: "BastenS10" - title: "An Efficient Context-Free Parsing Algorithm for Natural Languages" author: - name: "Masaru Tomita" link: "https://researchr.org/alias/masaru-tomita" year: "1985" tags: - "parsing algorithm" - "context-aware" - "parsing" researchr: "https://researchr.org/publication/Tomita85" cites: 0 citedby: 1 pages: "756-764" booktitle: "IJCAI" kind: "inproceedings" key: "Tomita85" - title: "A Language Designer's Workbench: A One-Stop-Shop for Implementation and Verification of Language Designs" author: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Andrew P. Tolmach" link: "http://www.cs.pdx.edu/~apt" - name: "Pierre Néron" link: "https://researchr.org/profile/pierrejeanmichelneron/publications" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Augusto Passalaqua" link: "http://www.linkedin.com/pub/augusto-passalaqua/9/829/b29" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" year: "2014" doi: "http://doi.acm.org/10.1145/2661136.2661149" abstract: "The realization of a language design requires multiple artifacts that redundantly encode the same information. This entails significant effort for language implementors, and often results in late detection of errors in language definitions. In this paper we present a proof-of-concept language designer's workbench that supports generation of IDEs, interpreters, and verification infrastructure from a single source. This constitutes a first milestone on the way to a system that fully automates language implementation and verification. " links: doi: "http://doi.acm.org/10.1145/2661136.2661149" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/VisserWTNVPK14" "pdf": "http://dl.acm.org/ft_gateway.cfm?id=2661149&ftid=1505232&dwn=1&CFID=550125770&CFTOKEN=54358949" researchr: "https://researchr.org/publication/VisserOnward14" cites: 0 citedby: 0 pages: "95-111" booktitle: "OOPSLA" kind: "inproceedings" key: "VisserOnward14" - title: "Code generation by model transformation: a case study in transformation modularity" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "10.1007/s10270-009-0136-1" abstract: "The realization of model-driven software development requires effective techniques for implementing code generators for domain-specific languages. This paper identifies techniques for improving separation of concerns in the implementation of generators. The core technique is code generation by model transformation, that is, the generation of a structured representation (model) of the target program instead of plain text. This approach enables the transformation of code after generation, which in turn enables the extension of the target language with features that allow better modularity in code generation rules. The technique can also be applied to ‘internal code generation’ for the translation of high-level extensions of a DSL to lower-level constructs within the same DSL using model-to-model transformations. This paper refines our earlier description of code generation by model transformation with an improved architecture for the composition of model-to-model normalization rules, solving the problem of combining type analysis and transformation. Instead of coarse-grained stages that alternate between normalization and type analysis, we have developed a new style of type analysis that can be integrated with normalizing transformations in a fine-grained manner. The normalization strategy has a simple extension interface and integrates non-local, context-sensitive transformation rules. We have applied the techniques in a realistic case study of domain-specific language engineering, i.e. the code generator for WebDSL, using Stratego, a high-level transformation language that integrates model-to-model, model-to-code, and code-to-code transformations." links: dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/sosym/HemelKGV10" tags: - "model-to-model transformation" - "case study" - "meta-model" - "source-to-source" - "C++" - "code generation" - "model transformation" - "Meta-Environment" - "transformation" researchr: "https://researchr.org/publication/HemelKGV10" cites: 0 citedby: 0 journal: "SoSyM" volume: "9" number: "3" pages: "375-402" kind: "article" key: "HemelKGV10" - title: "The Spoofax language workbench (poster paper)" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://doi.acm.org/10.1145/1869542.1869592" abstract: "Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. It provides a comprehensive environment that integrates syntax definition, program transformation, code generation, and declarative specification of IDE components." links: doi: "http://doi.acm.org/10.1145/1869542.1869592" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsV10a" tags: - "programming languages" - "workbench" - "syntax definition" - "meta programming" - "transformation language" - "C++" - "code generation" - "language workbench" - "Spoofax" - "Meta-Environment" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/KatsV10a" cites: 0 citedby: 0 pages: "237-238" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsV10a" - 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: "Generation of Formatters for Context-Free Languages" author: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "1996" doi: "https://doi.org/10.1145/226155.226156" abstract: "Good documentation is important for the production of reusable and maintainable software. For the production of accurate documentation it is necessary that the original program text is not copied manually to obtain a typeset version. Apart from being tedious, this will invariably introduce errors. The production of tools that support the production of legible and accurate documentation is a software engineering challenge in itself. We present an algebraic approach to the generation of tools that produce typographically effective presentations of computer programs. A specification of a formatter is generated from the context-free grammar of a (programming) language. These generated formatters translate abstract syntax trees of programs into box expressions. Box expressions are translated by language-independent interpreters of the box language into ASCII or TEX. The formatting rules that are generated can easily be tuned in order to get the desired formatting of programs. We demonstrate this by means of real-life applications. Furthermore, we give a practical solution for the problem of formatting comments, which occur in the original text. The formatter generation approach proposed in this article can be used to generate formatting programs for arbitrary programming environments. Our formatter generation approach can be used to automatically generate formatters that have to be programmed explicitly in other systems. " links: doi: "https://doi.org/10.1145/226155.226156" tags: - "programming languages" - "rule-based" - "translation" - "meta programming" - "SDF" - "interpreter" - "abstract syntax" - "language engineering" - "software language engineering" - "reuse" - "source-to-source" - "software engineering" - "rules" - "algebraic specification" - "source code formatting" - "code generation" - "pretty-printing" - " algebra" - "programming" - "context-aware" - "Meta-Environment" - "systematic-approach" - "ASF+SDF" - "open-source" - "grammar" researchr: "https://researchr.org/publication/BrandV96" cites: 46 citedby: 12 journal: "TOSEM" volume: "5" number: "1" pages: "1-41" kind: "article" key: "BrandV96" - title: "Separation of Concerns and Linguistic Integration in WebDSL" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Zef Hemel" link: "http://zef.me" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1109/MS.2010.92" abstract: "WebDSL is a domain-specific language for Web information systems that maintains separation of concerns while integrating its sublanguages, enabling consistency checking and reusing common language concepts." links: doi: "http://dx.doi.org/10.1109/MS.2010.92" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/software/GroenewegenHV10" tags: - "WebDSL" - "separation of concerns" researchr: "https://researchr.org/publication/GroenewegenHV10" cites: 0 citedby: 0 journal: "IEEE Software" volume: "27" number: "5" pages: "31-37" kind: "article" key: "GroenewegenHV10" - title: "A Theory of Name Resolution" author: - name: "Pierre Néron" link: "https://researchr.org/profile/pierrejeanmichelneron/publications" - name: "Andrew P. Tolmach" link: "http://www.cs.pdx.edu/~apt" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" year: "2015" doi: "http://dx.doi.org/10.1007/978-3-662-46669-8_9" abstract: "We describe a language-independent theory for name binding and resolution, suitable for programming languages with complex scoping rules including both lexical scoping and modules. We formulate name resolution as a two-stage problem. First a language-independent scope graph is constructed using language-specific rules from an abstract syntax tree. Then references in the scope graph are resolved to corresponding declarations using a language-independent resolution process. We introduce a resolution calculus as a concise, declarative, and languageindependent specification of name resolution. We develop a resolution algorithm that is sound and complete with respect to the calculus. Based on the resolution calculus we develop language-independent definitions of α-equivalence and rename refactoring. We illustrate the approach using a small example language with modules. In addition, we show how our approach provides a model for a range of name binding patterns in existing languages." links: doi: "http://dx.doi.org/10.1007/978-3-662-46669-8_9" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/esop/NeronTVW15" technicalreport: "https://researchr.org/publication/TUD-SERG-2015-001" researchr: "https://researchr.org/publication/NeronTVW15" cites: 0 citedby: 0 pages: "205-231" booktitle: "ESOP" kind: "inproceedings" key: "NeronTVW15" - title: "A Meta-Environment for Generating Programming Environments" author: - name: "Paul Klint" link: "http://homepages.cwi.nl/~paulk/" year: "1993" doi: "http://doi.acm.org/10.1145/151257.151260" abstract: "Over the last decade, considerable progress has been made in solving the problems of automatic generation of programming/development environments, given a formal definition of some programming or specification language. In most cases, research has focused on the functionality and efficiency of the generated environments, and, of course, these aspects will ultimately determine the acceptance of environment generators. However, only marginal attention has been paid to the development process of formal language definitions itself. Assuming that the quality of automatically generated environments will be satisfactory within a few years, the development costs of formal language definitions will then become the next limiting factor determining ultimate success and acceptance of environment generators. In this paper we describe the design and implementation of a meta-environment (a development environment for formal language definitions) based on the formalism ASF + SDF. This meta-environment is currently being implemented as part of the Centaur system and is, at least partly, obtained by applying environment generation techniques to the language definition formalism itself. A central problem is providing fully interactive editing of modular language definitions such that modifications made to the language definition during editing can be translated immediately to modifications in the programming environment generated from the original language definition. Therefore, some of the issues addressed are the treatment of formalisms with user-definable syntax and incremental program generation techniques. " links: doi: "http://doi.acm.org/10.1145/151257.151260" tags: - "programming languages" - "rule-based" - "translation" - "syntax definition" - "meta programming" - "SDF" - "meta-model" - "functional programming" - "design research" - "language design" - "model-driven development" - "programming" - "Meta-Environment" - "incremental" - "design" - "ASF+SDF" - "meta-objects" researchr: "https://researchr.org/publication/Klint93" cites: 33 citedby: 40 journal: "TOSEM" volume: "2" number: "2" pages: "176-201" kind: "article" key: "Klint93" - title: "Static consistency checking of web applications with WebDSL" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "https://doi.org/10.1016/j.jsc.2010.08.006" abstract: "Modern web application development frameworks provide web application developers with high-level abstractions to improve their productivity. However, their support for static verification of applications is limited. Inconsistencies in an application are often not detected statically, but appear as errors at run-time. The reports about these errors are often obscure and hard to trace back to the source of the inconsistency. A major part of this inadequate consistency checking can be traced back to the lack of linguistic integration of these frameworks. Parts of an application are defined with separate domain-specific languages, which are not checked for consistency with the rest of the application. Examples include regular expressions, query languages and XML-based languages for definition of user interfaces. We give an overview and analysis of typical problems arising in development with frameworks for web application development, with Ruby on Rails, Lift and Seam as representatives. To remedy these problems, in this paper, we argue that domain-specific languages should be designed from the ground up with static verification and cross-aspect consistency checking in mind, providing linguistic integration of domain-specific sub-languages. We show how this approach is applied in the design of WebDSL, a domain-specific language for web applications, by examining how its compiler detects inconsistencies not caught by web frameworks, providing accurate and clear error messages. Furthermore, we show how this consistency analysis can be expressed with a declarative rule-based approach using the Stratego transformation language." links: doi: "https://doi.org/10.1016/j.jsc.2010.08.006" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jsc/HemelGKV11" "technical report ": "http://resolver.tudelft.nl/uuid:588b78a1-f8d8-45fc-855f-fd03699725cf" "jsc": "https://doi.org/10.1016/j.jsc.2010.08.006" tags: - "model-to-model transformation" - "WebDSL" - "rule-based" - "application framework" - "model checking" - "XML" - "XML Schema" - "transformation language" - "points-to analysis" - "domain analysis" - "analysis" - "language design" - "static analysis" - "model-driven development" - "source-to-source" - "rules" - "C++" - "compiler" - "model transformation" - "web applications" - "consistency" - "abstraction" - "design" - "systematic-approach" - "open-source" - "transformation" - "Ruby on Rails" - "Stratego" - "Ruby" - "query language" - "domain-specific language" researchr: "https://researchr.org/publication/HemelGKV11" cites: 0 citedby: 0 journal: "JSC" volume: "46" number: "2" pages: "150-182" kind: "article" key: "HemelGKV11" - title: "Testing domain-specific languages" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Rob Vermaas" link: "https://researchr.org/profile/robvermaas/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2048147.2048160" abstract: "The Spoofax testing language provides a new approach to testing domain-specific languages as they are developed. It allows test cases to be written using fragments of the language under test, providing full IDE support for writing test cases and supporting tests for language syntax, semantics, and editor services." links: doi: "http://doi.acm.org/10.1145/2048147.2048160" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsVV11a" researchr: "https://researchr.org/publication/KatsVV11a" cites: 0 citedby: 0 pages: "25-26" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsVV11a" - title: "An Algorithm for Layout Preservation in Refactoring Transformations" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://dx.doi.org/10.1007/978-3-642-28830-2_3" abstract: "Transformations and semantic analysis for source-to-source transformations such as refactorings are most effectively implemented using an abstract representation of the source code. An intrinsic limitation of transformation techniques based on abstract syntax trees is the loss of layout, i.e. comments and whitespace. This is especially relevant in the context of refactorings, which produce source code for human consumption. In this paper, we present an algorithm for fully automatic source code reconstruction for source-to-source transformations. The algorithm preserves the layout and comments of the unaffected parts and reconstructs the indentation of the affected parts, using a set of clearly defined heuristic rules to handle comments." links: doi: "http://dx.doi.org/10.1007/978-3-642-28830-2_3" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/JongeV11" technicalreport: "https://researchr.org/publication/DeJongeVisser2012-TUD-SERG-2011-027" researchr: "https://researchr.org/publication/JongeV11" cites: 0 citedby: 0 pages: "40-59" booktitle: "SLE" kind: "inproceedings" key: "JongeV11" - title: "Natural and Flexible Error Recovery for Generated Modular Language Environments" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Emma Söderberg" link: "https://researchr.org/alias/emma-s%C3%B6derberg" year: "2012" doi: "http://doi.acm.org/10.1145/2400676.2400678" abstract: "Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. Unlike conventional parsing algorithms, scannerless generalized-LR parsing supports the full set of context-free grammars, which is closed under composition, and hence can parse languages composed from separate grammar modules. To apply this algorithm in an interactive environment, this paper introduces a novel error recovery mechanism. Our approach is language-independent, and relies on automatic derivation of recovery rules from grammars. By taking layout information into consideration it can efficiently suggest natural recovery suggestions." links: doi: "http://doi.acm.org/10.1145/2400676.2400678" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/toplas/JongeKVS12" researchr: "https://researchr.org/publication/JongeKVS12" cites: 0 citedby: 0 journal: "TOPLAS" volume: "34" number: "4" pages: "15" kind: "article" key: "JongeKVS12" - title: "Declarative, formal, and extensible syntax definition for AspectJ" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Éric Tanter" link: "http://pleiad.dcc.uchile.cl/people/etanter" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2006" doi: "http://doi.acm.org/10.1145/1167473.1167491" abstract: " Aspect-Oriented Programming (AOP) is attracting attention from both research and industry, as illustrated by the ever-growing popularity of AspectJ, the de facto standard AOP extension of Java. From a compiler construction perspective AspectJ is interesting as it is a typical example of compositional language, ie a language composed of a number of separate languages with different syntactical styles: in addition to plain Java, AspectJ includes a language for defining pointcuts and one for defining advices. Language composition represents a non-trivial challenge for conventional parsing techniques. First, combining several languages with different lexical syntax leads to considerable complexity in the lexical states to processed. Second, as new language features for AOP are being explored, many research proposals are concerned with further extending the AspectJ language, resulting in a need for an extensible syntax definition.This paper shows how scannerless parsing elegantly addresses the issues encountered by conventional techniques when parsing AspectJ . We present the design of a modular, extensible, and formal definition of the lexical and context-free aspects of the AspectJ syntax in the Syntax Definition Formalism SDF, which is implemented by a scannerless, generalized-LR parser (SGLR). We introduce grammar mixins as a novel application of SDF's modularity features, which allows the declarative definition of different keyword policies and combination of extensions. We illustrate the modular extensibility of our definition with syntax extensions taken from current research on aspect languages. Finally, benchmarks show the reasonable performance of scannerless generalized-LR parsing for this grammar. " links: doi: "http://doi.acm.org/10.1145/1167473.1167491" tags: - "programming languages" - "AspectJ" - "object-oriented programming" - "Java" - "syntax definition" - "SDF" - "lexical syntax" - "design complexity" - "composition" - "design research" - "language design" - "aspect oriented programming" - "compiler" - "programming" - "subject-oriented programming" - "context-aware" - "language composition" - "parsing" - "design" - "scannerless parsing" - "extensible language" - "ASF+SDF" - "feature-oriented programming" - "SGLR" - "grammar" researchr: "https://researchr.org/publication/BravenboerTV06" cites: 0 citedby: 1 pages: "209-228" booktitle: "OOPSLA" kind: "inproceedings" key: "BravenboerTV06" - title: "The syntax definition formalism SDF - reference manual" author: - name: "Jan Heering" link: "http://homepages.cwi.nl/~jan/" - name: "P. R. H. Hendriks" link: "https://researchr.org/alias/p.-r.-h.-hendriks" - name: "Paul Klint" link: "http://homepages.cwi.nl/~paulk/" - name: "Jan Rekers" link: "http://www.cwi.nl" year: "1989" doi: "http://doi.acm.org/10.1145/71605.71607" abstract: "SDF is a formalism for the definition of syntax which is comparable to BNF in some respects, but has a wider scope in that it also covers the definition of lexical and abstract syntax. Its design and implementation are tailored towards the language designer who wants to develop new languages as well as implement existing ones in a highly interactive manner. It emphasizes compactness of syntax definitions by offering (a) a standard interface between lexical and context-free syntax; (b) a standard correspondence between context-free and abstract syntax; (c) powerful disambiguation and list constructs; and (d) an efficient incremental implementation which accepts arbitrary context-free syntax definitions. SDF can be combined with a variety of programming and specification languages. In this way these obtain fully general user-definable syntax. " links: doi: "http://doi.acm.org/10.1145/71605.71607" tags: - "programming languages" - "syntax definition" - "SDF" - "lexical syntax" - "abstract syntax" - "disambiguation" - "language design" - "C++" - "programming" - "context-aware" - "incremental" - "design" - "ASF+SDF" researchr: "https://researchr.org/publication/HeeringHKR89" cites: 0 citedby: 4 journal: "SIGPLAN" volume: "24" number: "11" pages: "43-75" kind: "article" key: "HeeringHKR89" - title: "Spoofax: An Interactive Development Environment for Program Transformation with Stratego/XT" author: - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2007" month: "March" links: "url": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2007-018.pdf" tags: - "model-to-model transformation" - "meta programming" - "meta-model" - "model-driven development" - "model transformation" - "Spoofax" - "Meta-Environment" - "meta-objects" - "transformation" - "Stratego" - "program transformation" researchr: "https://researchr.org/publication/KallebergV07" cites: 0 citedby: 0 booktitle: "Proceedings of the Seventh Workshop on Language Descriptions, Tools and Applications (LDTA 2007)" kind: "inproceedings" key: "KallebergV07" - title: "Layout-Sensitive Generalized Parsing" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Tillmann Rendel" link: "https://researchr.org/alias/tillmann-rendel" - name: "Christian Kästner" link: "https://researchr.org/alias/christian-k%C3%A4stner" - name: "Klaus Ostermann" link: "https://researchr.org/alias/klaus-ostermann" year: "2012" doi: "http://dx.doi.org/10.1007/978-3-642-36089-3_14" links: doi: "http://dx.doi.org/10.1007/978-3-642-36089-3_14" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/ErdwegRKO12" researchr: "https://researchr.org/publication/ErdwegRKO12" cites: 0 citedby: 0 pages: "244-263" booktitle: "SLE" kind: "inproceedings" key: "ErdwegRKO12" - title: "From Box to TeX: An algebraic approach to the generation of documentation tools" author: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" year: "1994" month: "July" abstract: "We define a translation from an intermediate box language for pretty printing to TeX. This translation can be used as a back-end for pretty printers in documentation tools for programming languages. The translation is formulated in an executable algebraic specification formalism. An important aspect of the translation is the transformation of boxes according to a set of equations. These equations preserve the text formatting semantics of boxes which is also defined algebraically. New in this approach is that algebraic transformations of box terms are used to circumvent the limitations of the typesetter. The TeX generator, which translates the box language to TeX code, is a component of documentation tools generated for the programming environments developed with the ASF+SDF meta-environment, but can also be used as a separate tool. As a case study, the construction of a typesetter for the process specification formalism PSF is shown." links: "url": "ftp://ftp.wins.uva.nl/pub/programming-research/reports/1994/P9420.ps.Z" tags: - "programming languages" - "model-to-model transformation" - "semantics" - "translation" - "meta programming" - "case study" - "SDF" - "meta-model" - "transformation language" - "process algebra" - "algebraic specification" - "code generation" - "model transformation" - " algebra" - "programming" - "Meta-Environment" - "systematic-approach" - "ASF+SDF" - "meta-objects" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/BrandV94" cites: 0 citedby: 0 institution: "Programming Research Group, University of Amsterdam" number: "P9420" kind: "techreport" key: "BrandV94" - 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: "The State of the Art in Language Workbenches - Conclusions from the Language Workbench Challenge" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Tijs van der Storm" link: "http://homepages.cwi.nl/~storm/" - name: "Markus Völter" link: "http://www.voelter.de/" - name: " Meinte Boersma" link: "https://researchr.org/alias/meinte-boersma" - name: "Remi Bosman" link: "https://researchr.org/alias/remi-bosman" - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" - name: "Albert Gerritsen" link: "https://researchr.org/alias/albert-gerritsen" - name: "Angelo Hulshout" link: "https://researchr.org/alias/angelo-hulshout" - name: "Steven Kelly" link: "https://researchr.org/alias/steven-kelly" - name: "Alex Loh" link: "https://researchr.org/alias/alex-loh" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Pedro J. Molina" link: "https://researchr.org/alias/pedro-j.-molina" - name: "Martin Palatnik" link: "https://researchr.org/alias/martin-palatnik" - name: "Risto Pohjonen" link: "https://researchr.org/alias/risto-pohjonen" - name: "Eugen Schindler" link: "https://researchr.org/alias/eugen-schindler" - name: "Klemens Schindler" link: "https://researchr.org/alias/klemens-schindler" - name: "Riccardo Solmi" link: "https://researchr.org/alias/riccardo-solmi" - name: "Vlad A. Vergu" link: "https://researchr.org/alias/vlad-a.-vergu" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Kevin van der Vlist" link: "https://researchr.org/alias/kevin-van-der-vlist" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Jimi van der Woning" link: "https://researchr.org/alias/jimi-van-der-woning" year: "2013" doi: "http://dx.doi.org/10.1007/978-3-319-02654-1_11" abstract: "Language workbenches are tools that provide high-level mechanisms for the implementation of (domain-specific) languages. Language workbenches are an active area of research that also receives many contributions from industry. To compare and discuss existing language workbenches, the annual Language Workbench Challenge was launched in 2011. Each year, participants are challenged to realize a given domain-specific language with their workbenches as a basis for discussion and comparison. In this paper, we describe the state of the art of language workbenches as observed in the previous editions of the Language Workbench Challenge. In particular, we capture the design space of language workbenches in a feature model and show where in this design space the participants of the 2013 Language Workbench Challenge reside. We compare these workbenches based on a DSL for questionnaires that was realized in all workbenches." links: doi: "http://dx.doi.org/10.1007/978-3-319-02654-1_11" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/ErdwegSVBBCGHKLKMPPSSSVVVWW13" researchr: "https://researchr.org/publication/ErdwegSV13" cites: 0 citedby: 0 pages: "197-217" booktitle: "SLE" kind: "inproceedings" key: "ErdwegSV13" - 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: "Language Design with the Spoofax Language Workbench" author: - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2014" doi: "http://dx.doi.org/10.1109/MS.2014.100" abstract: "IDEs are essential for programming language developers, and state-of-the-art IDE support is mandatory for programming languages to be successful. Although IDE features for mainstream programming languages are typically implemented manually, this often isn't feasible for programming languages that must be developed with significantly fewer resources. The Spoofax language workbench is a platform for developing textual programming languages with state-of-the-art IDE support. Spoofax is a comprehensive environment that integrates syntax definition, name binding, type analysis, program transformation, code generation, and declarative specification of IDE components. It also provides high-level languages for each of these aspects. These languages are highly declarative, abstracting over the implementation of IDE features and letting engineers focus on language design." links: doi: "http://dx.doi.org/10.1109/MS.2014.100" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/software/WachsmuthKV14" researchr: "https://researchr.org/publication/WachsmuthKV14" cites: 0 citedby: 0 journal: "IEEE Software" volume: "31" number: "5" pages: "35-43" kind: "article" key: "WachsmuthKV14" - title: "Using Filters for the Disambiguation of Context-free Grammars" author: - name: "Paul Klint" link: "http://homepages.cwi.nl/~paulk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "1994" month: "October" abstract: "An ambiguous context-free grammar defines a language in which some sentences have multiple interpretations. For conciseness, ambiguous context-free grammars are frequently used to define even completely unambiguous languages and numerous disambiguation methods exist for specifying which interpretation is the intended one for each sentence. The existing methods can be divided in `parser specific' methods that describe how some parsing technique deals with ambiguous sentences and `logical' methods that describe the intended interpretation without reference to a specific parsing technique. We propose a framework of \\em filters\\/ to describe and compare a wide range of disambiguation problems in a parser-independent way. A filter is a function that selects from a set of parse trees (the canonical representation of the interpretations of a sentence) the intended trees. The framework enables us to define several general properties of disambiguation methods. The expressive power of filters is illustrated by several case studies. Finally, a start is made with the study of efficient implementation techniques for filters by exploiting the commutativity of parsing steps and filter steps for certain classes of filters." links: technicalreport: "https://researchr.org/publication/KlintV94-P9426" tags: - "case study" - "disambiguation" - "context-aware" - "parsing" - "grammar" - "domain-specific language" researchr: "https://researchr.org/publication/KlintV94" cites: 0 citedby: 0 booktitle: "Proceedings of the ASMICS Workshop on Parsing Theory" kind: "inproceedings" key: "KlintV94" - title: "ELAN: A logical framework based on computational systems" author: - name: "Peter Borovanský" link: "https://researchr.org/alias/peter-borovansk%C3%BD" - name: "Claude Kirchner" link: "http://www.loria.fr/~ckirchne/" - name: "Hélène Kirchner" link: "https://researchr.org/alias/h%C3%A9l%C3%A8ne-kirchner" - name: "Pierre-Etienne Moreau" link: "http://www.loria.fr/~moreau/dokuwiki/doku.php" - name: "Marian Vittek" link: "https://researchr.org/alias/marian-vittek" year: "1996" doi: "http://www.elsevier.com/gej-ng/31/29/23/29/23/show/Products/notes/index.htt#004" links: doi: "http://www.elsevier.com/gej-ng/31/29/23/29/23/show/Products/notes/index.htt#004" tags: - "rule-based" researchr: "https://researchr.org/publication/BorovanskyKKMV96" cites: 0 citedby: 0 journal: "ENTCS" volume: "4" pages: "35-50" kind: "article" key: "BorovanskyKKMV96" - 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: "Parser Generation for Interactive Environments" author: - name: "Jan Rekers" link: "http://www.cwi.nl" year: "1992" month: "January" links: "url": "https://homepages.cwi.nl/~paulk/dissertations/Rekers.pdf" tags: - "GLR parsing" - "GLR" - "Meta-Environment" - "parsing" researchr: "https://researchr.org/publication/Rekers1992" cites: 0 citedby: 3 school: "University of Amsterdam" address: "Amsterdam, The Netherlands" advisor: - name: "Paul Klint" link: "http://homepages.cwi.nl/~paulk/" kind: "phdthesis" key: "Rekers1992" - 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: "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: "SLE" kind: "inproceedings" key: "BravenboerV08" - title: "Transformations for Abstractions" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2005" month: "October" doi: "http://dx.doi.org/10.1109/SCAM.2005.26" abstract: "The transformation language Stratego provides high-level abstractions for implementation of a wide range of transformations. Our aim is to integrate transformation in the software development process and make it available to programmers. This requires the transformations provided by the programming environment to be extensible. This paper presents a case study in the implementation of extensible programming environments using Stratego, by developing a small collection of language extensions and several typical transformations for these languages." links: doi: "http://dx.doi.org/10.1109/SCAM.2005.26" "pdf": "http://www.cs.uu.nl/research/techreps/repo/CS-2005/2005-034.pdf" "technical report": "http://www.cs.uu.nl/research/techreps/UU-CS-2005-034.html" "doi": "http://dx.doi.org/10.1109/SCAM.2005.26" tags: - "programming languages" - "meta programming" - "case study" - "Stratego/XT" - "transformation language" - "extensible languages" - "programming" - "abstraction" - "Meta-Environment" - "extensible language" - "interpreters" - "transformation" - "Stratego" - "program transformation" researchr: "https://researchr.org/publication/Visser05-SCAM" cites: 0 citedby: 1 booktitle: "SCAM" kind: "inproceedings" key: "Visser05-SCAM" - title: "Stratego/XT Reference Manual" 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://releases.strategoxt.org/strategoxt-manual/strategoxt-manual-0.17pre18721-8c3vml4h/manual/" links: doi: "http://releases.strategoxt.org/strategoxt-manual/strategoxt-manual-0.17pre18721-8c3vml4h/manual/" "html": "http://releases.strategoxt.org/strategoxt-manual/strategoxt-manual-0.17pre18721-8c3vml4h/manual/" researchr: "https://researchr.org/publication/StrategoXTReferenceManual" cites: 0 citedby: 0 kind: "manual" key: "StrategoXTReferenceManual" - 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: "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 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: "Programming and Programming Languages" author: - name: "Shriram Krishnamurthi" link: "http://www.cs.brown.edu/~sk/" year: "2014" researchr: "https://researchr.org/publication/Krishnamurthi2014" cites: 0 citedby: 0 organization: "Brown University" kind: "book" key: "Krishnamurthi2014" - title: "Integrated language definition testing: enabling test-driven language development" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Rob Vermaas" link: "https://researchr.org/profile/robvermaas/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2048066.2048080" abstract: "The reliability of compilers, interpreters, and development environments for programming languages is essential for effective software development and maintenance. They are often tested only as an afterthought. Languages with a smaller scope, such as domain-specific languages, often remain untested. General-purpose testing techniques and test case generation methods fall short in providing a low-threshold solution for test-driven language development. In this paper we introduce the notion of a language-parametric testing language (LPTL) that provides a reusable, generic basis for declaratively specifying language definition tests. We integrate the syntax, semantics, and editor services of a language under test into the LPTL for writing test inputs. This paper describes the design of an LPTL and the tool support provided for it, shows use cases using examples, and describes our implementation in the form of the Spoofax testing language." links: doi: "http://doi.acm.org/10.1145/2048066.2048080" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsVV11" researchr: "https://researchr.org/publication/KatsVV11" cites: 0 citedby: 0 pages: "139-154" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsVV11" - 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: "Declarative specification of template-based textual editors" author: - name: "Tobi Vollebregt" link: "http://www.tobivollebregt.nl/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://doi.acm.org/10.1145/2427048.2427056" abstract: "Syntax discoverability has been a crucial advantage of structure editors for new users of a language. Despite this advantage, structure editors have not been widely adopted. Based on immediate parsing and analyses, modern textual code editors are also increasingly syntax-aware: structure and textual editors are converging into a new editing paradigm that combines text and templates. Current text-based language workbenches require redundant specification of the ingredients for a template-based editor, which is detrimental to the quality of syntactic completion, as consistency and completeness of the definition cannot be guaranteed. In this paper we describe the design and implementation of a specification language for syntax definition based on templates. It unifies the specification of parsers, unparsers and template-based editors. We evaluate the template language by application to two domain-specific languages used for tax benefits and mobile applications. " links: doi: "http://doi.acm.org/10.1145/2427048.2427056" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ldta/VollebregtKV12" researchr: "https://researchr.org/publication/VollebregtKV12" cites: 0 citedby: 0 pages: "1-7" booktitle: "LDTA" kind: "inproceedings" key: "VollebregtKV12" - 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: "Pure and declarative syntax definition: paradise lost and regained" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" year: "2010" doi: "http://doi.acm.org/10.1145/1869459.1869535" abstract: "Syntax definitions are pervasive in modern software systems, and serve as the basis for language processing tools like parsers and compilers. Mainstream parser generators pose restrictions on syntax definitions that follow from their implementation algorithm. They hamper evolution, maintainability, and compositionality of syntax definitions. The pureness and declarativity of syntax definitions is lost. We analyze how these problems arise for different aspects of syntax definitions, discuss their consequences for language engineers, and show how the pure and declarative nature of syntax definitions can be regained." links: doi: "http://doi.acm.org/10.1145/1869459.1869535" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsVW10" "pdf (tech report)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2010-019.pdf" tags: - "parsing algorithm" - "syntax definition" - "composition" - "software evolution" - "C++" - "compiler" - "parsing" researchr: "https://researchr.org/publication/KatsVW10" cites: 0 citedby: 1 pages: "918-932" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsVW10" - title: "SugarJ: library-based syntactic language extensibility" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Tillmann Rendel" link: "https://researchr.org/alias/tillmann-rendel" - name: "Christian Kästner" link: "https://researchr.org/alias/christian-k%C3%A4stner" - name: "Klaus Ostermann" link: "https://researchr.org/alias/klaus-ostermann" year: "2011" doi: "http://doi.acm.org/10.1145/2048066.2048099" links: doi: "http://doi.acm.org/10.1145/2048066.2048099" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/ErdwegRKO11" researchr: "https://researchr.org/publication/ErdwegRKO11" cites: 0 citedby: 0 pages: "391-406" booktitle: "OOPSLA" kind: "inproceedings" key: "ErdwegRKO11" - 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: "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: "The Spoofax Name Binding Language" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "https://doi.org/10.1145/2384716.2384748" abstract: "In textual software languages, names are used to identify program elements such as variables, methods, and classes. Name analysis algorithms resolve names in order to establish references between definitions and uses of names. In this poster, we present the Spoofax Name Binding Language (NBL), a declarative meta-language for the specification of name binding and scope rules, which departs from the programmatic encodings of name binding provided by regular approaches. NBL aspires to become the universal language for name binding, which can be used next to BNF definitions in reference manuals, as well as serve the generation of implementations." links: doi: "https://doi.org/10.1145/2384716.2384748" "url": "https://doi.org/10.1145/2384716.2384748" tags: - "C++" - "Spoofax" researchr: "https://researchr.org/publication/KonatVKWV2012" cites: 0 citedby: 0 booktitle: "Companion to the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2012, Tucson, AR, USA, October 19 - 26, 2012" kind: "inproceedings" key: "KonatVKWV2012" - title: "The Spoofax language workbench: rules for declarative specification of languages and IDEs" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "https://doi.org/10.1145/1869459.1869497" abstract: "Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into a single environment. It uses concise, declarative specifications for languages and IDE services. In this paper we describe the architecture of Spoofax and introduce idioms for high-level specifications of language semantics using rewrite rules, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion. The implementation of these services is supported by language-parametric editor service classes that can be dynamically loaded by the Eclipse IDE, allowing new languages to be developed and used side-by-side in the same Eclipse environment." links: doi: "https://doi.org/10.1145/1869459.1869497" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsV10" "acm dl": "https://doi.org/10.1145/1932682.1869497" tags: - "programming languages" - "model-to-model transformation" - "workbench" - "semantics" - "rule-based" - "Eclipse" - "meta programming" - "model editor" - "graph transformation" - "meta-model" - "transformation language" - "architecture" - "reuse" - "model-driven development" - "graph-rewriting" - "rules" - "C++" - "code completion" - "code generation" - "model transformation" - "programming" - "language workbench" - "Spoofax" - "Meta-Environment" - "rewriting" - "parsing" - "meta-objects" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/KatsV10" cites: 0 citedby: 2 pages: "444-463" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsV10" - title: "A Language Independent Task Engine for Incremental Name and Type Analysis" author: - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2013" doi: "http://dx.doi.org/10.1007/978-3-319-02654-1_15" abstract: "IDEs depend on incremental name and type analysis for responsive feedback for large projects. In this paper, we present a language-independent approach for incremental name and type analysis. Analysis consists of two phases. The first phase analyzes lexical scopes and binding instances and creates deferred analysis tasks. A task captures a single name resolution or type analysis step. Tasks might depend on other tasks and are evaluated in the second phase. Incrementality is supported on file and task level. When a file changes, only this file is recollected and only those tasks are reevaluated, which are affected by the changes in the collected data. The analysis does neither re-parse nor re-traverse unchanged files, even if they are affected by changes in other files. We implemented the approach as part of the Spoofax Language Workbench and evaluated it for the WebDSL web programming language. " links: doi: "http://dx.doi.org/10.1007/978-3-319-02654-1_15" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/WachsmuthKVGV13" technicalreport: "https://researchr.org/publication/TUD-SERG-2013-018" researchr: "https://researchr.org/publication/WachsmuthKVGV13" cites: 0 citedby: 0 pages: "260-280" booktitle: "SLE" kind: "inproceedings" key: "WachsmuthKVGV13" - 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: "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: "2010" doi: "http://dx.doi.org/10.1016/j.scico.2009.05.004" 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 context-free host and guest languages." links: doi: "http://dx.doi.org/10.1016/j.scico.2009.05.004" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/BravenboerDV10" technicalreport: "https://researchr.org/publication/preprint-BravenboerDV-SCP-2009" tags: - "injection attack" researchr: "https://researchr.org/publication/BravenboerDV10" cites: 0 citedby: 0 journal: "SCP" volume: "75" number: "7" pages: "473-495" kind: "article" key: "BravenboerDV10" - title: "Declaratively programming the mobile web with Mobl" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2048066.2048121" abstract: "A new generation of mobile touch devices, such as the iPhone, iPad and Android devices, are equipped with powerful, modern browsers. However, regular websites are not optimized for the specific features and constraints of these devices, such as limited screen estate, unreliable Internet access, touch-based interaction patterns, and features such as GPS. While recent advances in web technology enable web developers to build web applications that take advantage of the unique properties of mobile devices, developing such applications exposes a number of problems, specifically: developers are required to use many loosely coupled languages with limited tool support and application code is often verbose and imperative. We introduce mobl, a new language designed to declaratively construct mobile web applications. Mobl integrates languages for user interface design, styling, data modeling, querying and application logic into a single, unified language that is flexible, expressive, enables early detection of errors, and has good IDE support." links: doi: "http://doi.acm.org/10.1145/2048066.2048121" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/HemelV11" technicalreport: "https://researchr.org/publication/HemelVisser2011-TUD-SERG-2011-024" researchr: "https://researchr.org/publication/HemelV11" cites: 0 citedby: 0 pages: "695-712" booktitle: "OOPSLA" kind: "inproceedings" key: "HemelV11" - title: "An overview of ELAN" author: - name: "Peter Borovanský" link: "https://researchr.org/alias/peter-borovansk%C3%BD" - name: "Claude Kirchner" link: "http://www.loria.fr/~ckirchne/" - name: "Hélène Kirchner" link: "https://researchr.org/alias/h%C3%A9l%C3%A8ne-kirchner" - name: "Pierre-Etienne Moreau" link: "http://www.loria.fr/~moreau/dokuwiki/doku.php" - name: "Christophe Ringeissen" link: "http://www.loria.fr/~ringeiss/" year: "1998" doi: "http://www.elsevier.com/gej-ng/31/29/23/39/23/show/Products/notes/index.htt#022" links: doi: "http://www.elsevier.com/gej-ng/31/29/23/39/23/show/Products/notes/index.htt#022" researchr: "https://researchr.org/publication/BorovanskyKKMR98" cites: 0 citedby: 0 journal: "ENTCS" volume: "15" pages: "55-70" kind: "article" key: "BorovanskyKKMR98" - title: "Scannerless Generalized-LR Parsing" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "1997" month: "July" abstract: "Current deterministic parsing techniques have a number of problems. These include the limitations of parser generators for deterministic languages and the complex interface between scanner and parser. Scannerless parsing is a parsing technique in which lexical and context-free syntax are integrated into one grammar and are all handled by a single context-free analysis phase. This approach has a number of advantages including discarding of the scanner and lexical disambiguation by means of the context in which a lexical token occurs, Scannerless parsing generates a number of interesting problems as well. Integrated grammars do not fit the requirements of the conventional deterministic parsing techniques. A plain context-free grammar formalism leads to unwieldy grammars. if all lexical information is included. Lexical disambiguation needs to be reformulated for use in context-free parsing. The scannerless generalized-LR parsing approach presented in this paper solves these problems. Grammar normalization is used to support an expressive grammar formalism without complicating the underlying machinery. Follow restrictions are used to express longest match lexical disambiguation. Reject productions are used to express the prefer keywords rule for lexical disambiguation. The SLR parser generation algorithm is adapted to implement disambiguation by general priority and associativity declarations and to interpret follow restrictions. Generalized-LR parsing is used to provide dynamic lookahead and to support parsing of arbitrary context-free grammars including ambiguous ones. An adaptation of the GLR algorithm supports the interpretation of grammars with reject productions. " tags: - "parsing algorithm" - "GLR parsing" - "rule-based" - "SDF" - "lexical syntax" - "disambiguation" - "GLR" - "analysis" - "rules" - "context-aware" - "parsing" - "scannerless parsing" - "systematic-approach" - "ASF+SDF" - "SGLR" - "grammar" researchr: "https://researchr.org/publication/Visser97-SGLR" cites: 0 citedby: 6 institution: "Programming Research Group, University of Amsterdam" number: "P9707" kind: "techreport" key: "Visser97-SGLR" - title: "A Family of Syntax Definition Formalisms" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "1997" month: "August" abstract: "In the next chapters we present the design and specification of a family of syntax definition formalisms. The kernel of this family of formalisms is formed by context-free grammars. A number of orthogonal extensions to the kernel is defined. Many of these extensions are defined in terms of the primitives of the kernel by means of normalization functions. This provides a framework for constructing new formalisms by adapting and extending previous ones. Included in the family are the following extensions of context-free grammars, uniform definition of lexical and context-free syntax, variables, disambiguation by priorities, follow restrictions and reject productions, a rich set of regular expressions defined in terms of context-free productions, character classes, aliases, parameterized modules with hidden imports and renamings. The accumulation of these extensions is the syntax definition formalism SDF. This chapter provides an introduction to SDF and gives an overview of the design and specification of the family of formalisms." links: "postscript": "http://www.st.ewi.tudelft.nl/~eelco/papers/P9706.ps" tags: - "syntax definition" - "SDF" - "lexical syntax" - "scannerless" - "disambiguation" - "context-aware" - "parsing" - "design" - "scannerless parsing" - "ASF+SDF" - "grammar" researchr: "https://researchr.org/publication/Visser97-SDF" cites: 0 citedby: 2 institution: "Programming Research Group, University of Amsterdam" number: "P9706" kind: "techreport" key: "Visser97-SDF" - title: "Understanding software through linguistic abstraction" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2015" doi: "http://dx.doi.org/10.1016/j.scico.2013.12.001" abstract: "In this essay, I argue that linguistic abstraction should be used systematically as a tool to capture our emerging understanding of domains of computation. Moreover, to enable that systematic application, we need to capture our understanding of the domain of linguistic abstraction itself in higher-level meta languages. The argument is illustrated with examples from the SDF, Stratego, Spoofax, and WebDSL projects in which I explore these ideas." links: doi: "http://dx.doi.org/10.1016/j.scico.2013.12.001" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/Visser15" technicalreport: "https://researchr.org/publication/TUD-SERG-2013-017" "tech report pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2013-017.pdf" researchr: "https://researchr.org/publication/Visser15" cites: 0 citedby: 0 journal: "SCP" volume: "97" pages: "11-16" kind: "article" key: "Visser15"