publications: - title: "ICMT 2011 Special Section" author: - name: "Jordi Cabot" link: "https://researchr.org/alias/jordi-cabot" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://dx.doi.org/10.5381/jot.2012.11.2.e2" links: doi: "http://dx.doi.org/10.5381/jot.2012.11.2.e2" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jot/CabotV12" researchr: "https://researchr.org/publication/CabotV12-0" cites: 0 citedby: 0 journal: "jot" volume: "11" number: "2" kind: "article" key: "CabotV12-0" - title: "Declarative Specification of Information System Data Models and Business Logic" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" year: "2019" doi: "https://www.base-search.net/Record/8ed1529807591ce29158f438f054ba5a45f902739190f75831ceb28ae7e30590" links: doi: "https://www.base-search.net/Record/8ed1529807591ce29158f438f054ba5a45f902739190f75831ceb28ae7e30590" dblp: "http://dblp.uni-trier.de/rec/bibtex/phd/basesearch/Harkes19" researchr: "https://researchr.org/publication/Harkes19" cites: 0 citedby: 0 school: "Delft University of Technology, Netherlands" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" kind: "phdthesis" key: "Harkes19" - title: "From Whole Program Compilation to Incremental Compilation: A Critical Case" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" month: "10" abstract: "We introduce a design approach for incremental compilers that we believe may be applicable to other languages. We demonstrate it on the critical case of Stratego, a term rewriting language with open extensibility features. After a brief overview of the open extensibility features, we show our compilation method, which is somewhere in between separate and incremental compilation. Our approach allows us to reuse almost all of the existing compiler while gaining great improvements in recompilation speed. We evaluate the new compiler with a benchmark on the version control history of a large Stratego project." researchr: "https://researchr.org/publication/SmitsKV19" cites: 0 citedby: 0 booktitle: "Second Workshop on Incremental Computing (IC 2019)" kind: "inproceedings" key: "SmitsKV19" - title: "Executable component-based semantics" author: - name: "L. Thomas van Binsbergen" link: "https://researchr.org/alias/l.-thomas-van-binsbergen" - name: "Peter D. Mosses" link: "https://pdmosses.github.io" - name: "Neil Sculthorpe" link: "https://researchr.org/alias/neil-sculthorpe" year: "2019" doi: "https://doi.org/10.1016/j.jlamp.2018.12.004" links: doi: "https://doi.org/10.1016/j.jlamp.2018.12.004" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jlp/BinsbergenMS19" researchr: "https://researchr.org/publication/BinsbergenMS19" cites: 0 citedby: 0 journal: "jlp" volume: "103" pages: "184-212" kind: "article" key: "BinsbergenMS19" - title: "Intrinsically-typed definitional interpreters for linear, session-typed languages" author: - name: "Arjen Rouvoet" link: "https://www.linkedin.com/in/arjen-rouvoet-760347a5/" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.1145/3372885.3373818" abstract: "An intrinsically-typed definitional interpreter is a concise specification of dynamic semantics, that is executable and type safe by construction. Unfortunately, scaling intrinsically-typed definitional interpreters to more complicated object languages often results in definitions that are cluttered with manual proof work. For linearly-typed languages (including session-typed languages) one has to prove that the interpreter, as well as all the operations on semantic components, treat values linearly. We present new methods and tools that make it possible to implement intrinsically-typed definitional interpreters for linearly-typed languages in a way that hides the majority of the manual proof work. Inspired by separation logic, we develop reusable and composable abstractions for programming with linear operations using dependent types. Using these abstractions, we define interpreters for linear lambda calculi with strong references, concurrency, and session-typed communication in Agda." links: doi: "https://doi.org/10.1145/3372885.3373818" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/cpp/RouvoetPKV20" researchr: "https://researchr.org/publication/RouvoetPKV20" cites: 0 citedby: 0 pages: "284-298" booktitle: "CPP" kind: "inproceedings" key: "RouvoetPKV20" - title: "Product Line Engineering Using Domain-Specific Languages" author: - name: "Markus Völter" link: "http://www.voelter.de/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://dx.doi.org/10.1109/SPLC.2011.25" abstract: "This paper investigates the application of domain-specific languages in product line engineering (PLE). We start by analyzing the limits of expressivity of feature models. Feature models correspond to context-free grammars without recursion, which prevents the expression of multiple instances and references. We then show how domain-specific languages (DSLs) can serve as a middle ground between feature modeling and programming. They can be used in cases where feature models are too limited, while keeping the separation between problem space and solution space provided by feature models. We then categorize useful combinations between configuration with feature model and construction with DSLs and provide an integration of DSLs into the conceptual framework of PLE. Finally we show how use of a consistent, unified formalism for models, code, and configuration can yield important benefits for managing variability and trace ability. We illustrate the concepts with several examples from industrial case studies." links: doi: "http://dx.doi.org/10.1109/SPLC.2011.25" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/splc/VolterV11" researchr: "https://researchr.org/publication/VolterV11" cites: 0 citedby: 0 pages: "70-79" booktitle: "SPLC" kind: "inproceedings" key: "VolterV11" - title: "Towards language-parametric semantic editor services based on declarative type system specifications" author: - name: "Daniël A. A. Pelsmaeker" link: "https://pelsmaeker.net/" - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" doi: "https://doi.org/10.1145/3359061.3362782" abstract: "New programming languages often lack good IDE support, as developing advanced semantic editor services takes additional effort. In previous work we discussed the operational requirements of a constraint solver that leverages the declarative type system specification of a language to provide language-parametric semantic editor services. In this work we describe the implementation of our solver as a two stage process: inference and search. An editor-service specific search strategy determines how and where the search is conducted, and when it terminates. We are currently implementing and evaluating this idea." links: doi: "https://doi.org/10.1145/3359061.3362782" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/PelsmaekerAV19" researchr: "https://researchr.org/publication/PelsmaekerAV19-SPLASH" cites: 0 citedby: 0 pages: "19-20" booktitle: "OOPSLA" kind: "inproceedings" key: "PelsmaekerAV19-SPLASH" - title: "Towards Language-Parametric Semantic Editor Services Based on Declarative Type System Specifications (Brave New Idea Paper)" author: - name: "Daniël A. A. Pelsmaeker" link: "https://pelsmaeker.net/" - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2019.26" abstract: "Editor services assist programmers to more effectively write and comprehend code. Implementing editor services correctly is not trivial. This paper focuses on the specification of semantic editor services, those that use the semantic model of a program. The specification of refactorings is a common subject of study, but many other semantic editor services have received little attention. We propose a language-parametric approach to the definition of semantic editor services, using a declarative specification of the static semantics of the programming language, and constraint solving. Editor services are specified as constraint problems, and language specifications are used to ensure correctness. We describe our approach for the following semantic editor services: reference resolution, find usages, goto subclasses, code completion, and the extract definition refactoring. We do this in the context of Statix, a constraint language for the specification of type systems. We investigate the specification of editor services in terms of Statix constraints, and the requirements these impose on a suitable solver." links: doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2019.26" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/PelsmaekerAV19" researchr: "https://researchr.org/publication/PelsmaekerAV19" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "PelsmaekerAV19" - title: "Implementing a category-theoretic framework for typed abstract syntax" author: - name: "Benedikt Ahrens" link: "https://researchr.org/alias/benedikt-ahrens" - name: "Ralph Matthes" link: "https://researchr.org/alias/ralph-matthes" - name: "Anders Mörtberg" link: "https://researchr.org/alias/anders-m%C3%B6rtberg" year: "2022" doi: "https://doi.org/10.1145/3497775.3503678" links: doi: "https://doi.org/10.1145/3497775.3503678" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/cpp/AhrensMM22" researchr: "https://researchr.org/publication/AhrensMM22" cites: 0 citedby: 0 pages: "307-323" booktitle: "CPP" kind: "inproceedings" key: "AhrensMM22" - title: "A scalable infrastructure for teaching concepts of programming languages in Scala with WebLab: an experience report" author: - name: "Tim van der Lippe" link: "https://researchr.org/alias/tim-van-der-lippe" - name: "Thomas Smith" link: "https://researchr.org/alias/thomas-smith" - name: "Daniël A. A. Pelsmaeker" link: "https://pelsmaeker.net/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" doi: "http://doi.acm.org/10.1145/2998392.2998402" abstract: "In this paper, we report on our experience in teaching a course on concepts of programming languages at TU Delft based on Krishnamurthi's PAPL book with the definitional interpreter approach using Scala as meta-language and using the WebLab learning management system. In particular, we discuss our experience with encoding of definitional interpreters in Scala using case classes, pattern matching, and recursive functions; offering this material in the web-based learning management system WebLab; automated grading and feedback of interpreter submissions using unit tests; testing tests to force students to formulate tests, instead of just implementing interpreters; generation of tests based on a reference implementation to reduce the effort of producing unit tests; and the construction of a product line of interpreters in order to maximize reuse and consistency between reference implementations. " links: doi: "http://doi.acm.org/10.1145/2998392.2998402" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/scala/LippeSPV16" researchr: "https://researchr.org/publication/LippeSPV16" cites: 0 citedby: 0 pages: "65-74" booktitle: "SCALA" kind: "inproceedings" key: "LippeSPV16" - title: "Encapsulating Software Platform Logic by Aspect-Oriented Programming: A Case Study in Using Aspects for Language Portability" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1109/SCAM.2010.11" abstract: "Software platforms such as the Java Virtual Machine or the CLR. NET virtual machine have their own ecosystem of a core programming language or instruction set, libraries, and developer community. Programming languages can target multiple software platforms to increase interoperability or to boost performance. Introducing a new compiler backend for a language is the first step towards targeting a new platform, translating the language to the platform's language or instruction set. Programs written in modern languages generally make extensive use of APIs, based on the runtime system of the software platform, introducing additional portability concerns. They may use APIs that are implemented by platform-specific libraries. Libraries may perform platform-specific operations, make direct native calls, or make assumptions about performance characteristics of operations or about the file system. This paper proposes to use aspect weaving to invasively adapt programs and libraries to address such portability concerns, and identifies four classes of aspects for this purpose. We evaluate this approach through a case study where we retarget the Stratego program transformation language towards the Java Virtual Machine." links: doi: "http://dx.doi.org/10.1109/SCAM.2010.11" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/scam/KatsV10" tags: - "programming languages" - "object-oriented programming" - "case study" - "C++" - "logic programming" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "logic" - "feature-oriented programming" researchr: "https://researchr.org/publication/KatsV10scam" cites: 0 citedby: 0 pages: "147-156" booktitle: "SCAM" kind: "inproceedings" key: "KatsV10scam" - title: "Optimising First-Class Pattern Matching" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Toine Hartman" link: "https://www.linkedin.com/in/toinehartman/" - name: "Jesper Cockx" link: "https://jesper.sikanda.be" year: "2022" doi: "https://doi.org/10.1145/3567512.3567519" links: doi: "https://doi.org/10.1145/3567512.3567519" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/SmitsHC22" researchr: "https://researchr.org/publication/SmitsHC22" cites: 0 citedby: 0 pages: "74-83" booktitle: "SLE" kind: "inproceedings" key: "SmitsHC22" - title: "An extensible framework for variable-precision data-flow analyses in MPS" author: - name: "Tamás Szabó" link: "https://researchr.org/alias/tam%C3%A1s-szab%C3%B3" - name: "Simon Alperovich" link: "https://researchr.org/alias/simon-alperovich" - name: "Markus Völter" link: "http://www.voelter.de/" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2016" doi: "http://doi.acm.org/10.1145/2970276.2970296" links: doi: "http://doi.acm.org/10.1145/2970276.2970296" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/kbse/SzaboAVE16" researchr: "https://researchr.org/publication/SzaboAVE16" cites: 0 citedby: 0 pages: "870-875" booktitle: "ASE" kind: "inproceedings" key: "SzaboAVE16" - title: "Static type checking without downcast operator" author: - name: "Arjan J. Mooij" link: "https://researchr.org/alias/arjan-j.-mooij" year: "2022" doi: "https://doi.org/10.1016/j.ipl.2022.106285" links: doi: "https://doi.org/10.1016/j.ipl.2022.106285" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/ipl/Mooij22" researchr: "https://researchr.org/publication/Mooij22" cites: 0 citedby: 0 journal: "ipl" volume: "178" pages: "106285" kind: "article" key: "Mooij22" - title: "PIL: A Platform Independent Language for Retargetable DSLs" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_17" abstract: "Intermediate languages are used in compiler construction to simplify retargeting compilers to multiple machine architectures. In the implementation of domain-specific languages (DSLs), compilers typically generate high-level source code, rather than low-level machine instructions. DSL compilers target a software platform, i.e. a programming language with a set of libraries, deployable on one or more operating systems. DSLs enable targeting multiple software platforms if its abstractions are platform independent. While transformations from DSL to each targeted platform are often conceptually very similar, there is little reuse between transformations due to syntactic and API differences of the target platforms, making supporting multiple platforms expensive. In this paper, we discuss the design and implementation of PIL, a Platform Independent Language, an intermediate language providing a layer of abstraction between DSL and target platform code, abstracting from syntactic and API differences between platforms, thereby removing the need for platform-specific transformations. We discuss the use of PIL in an implemementation of WebDSL, a DSL for building web applications." links: doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_17" tags: - "DSL" researchr: "https://researchr.org/publication/HemelV09" cites: 0 citedby: 1 pages: "224-243" booktitle: "SLE" kind: "inproceedings" key: "HemelV09" - title: "Leibniz equality is isomorphic to Martin-Löf identity, parametrically" author: - name: "Andreas Abel 0001" link: "https://researchr.org/alias/andreas-abel-0001" - name: "Jesper Cockx" link: "https://jesper.sikanda.be" - name: "Dominique Devriese" link: "https://researchr.org/alias/dominique-devriese" - name: "Amin Timany" link: "https://researchr.org/alias/amin-timany" - name: "Philip Wadler" link: "https://researchr.org/alias/philip-wadler" year: "2020" doi: "https://doi.org/10.1017/S0956796820000155" links: doi: "https://doi.org/10.1017/S0956796820000155" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jfp/AbelCDTW20" researchr: "https://researchr.org/publication/AbelCDTW20" cites: 0 citedby: 0 journal: "JFP" volume: "30" kind: "article" key: "AbelCDTW20" - title: "Exploration of language specifications by compilation to first-order logic" author: - name: "Sylvia Grewe" link: "https://researchr.org/alias/sylvia-grewe" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Michael Raulf" link: "https://researchr.org/alias/michael-raulf" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2016" doi: "http://doi.acm.org/10.1145/2967973.2968606" links: doi: "http://doi.acm.org/10.1145/2967973.2968606" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ppdp/GreweERM16" researchr: "https://researchr.org/publication/GreweERM16" cites: 0 citedby: 0 pages: "104-117" booktitle: "ppdp" kind: "inproceedings" key: "GreweERM16" - title: "CoFI with Don Sannella" author: - name: "Peter D. Mosses" link: "https://pdmosses.github.io" year: "2018" doi: "https://www.wikidata.org/entity/Q57783357" links: doi: "https://www.wikidata.org/entity/Q57783357" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/tcs/Mosses18" researchr: "https://researchr.org/publication/Mosses18" cites: 0 citedby: 0 journal: "TCS" volume: "741" pages: "44-47" kind: "article" key: "Mosses18" - title: "Towards Live Language Development" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" abstract: "We would like to see live programming applied to language development, to getlive language development. With live language development, a language developer gets fast feed- back when they change their language, enabling experimentation with language design and development. In this paper, we describe what live language development is and why it is useful, and we analyze what is needed to achieve live language development. Moreover, we describe our work in progress in supporting live language development in the Spoofax language workbench." links: technicalreport: "https://researchr.org/publication/preprint-KonatEV16-0" researchr: "https://researchr.org/publication/KonatEV16-LIVE" cites: 0 citedby: 0 booktitle: "Workshop on Live Programming Systems (LIVE)" kind: "inproceedings" key: "KonatEV16-LIVE" - title: "A completely unique account of enumeration" author: - name: "Cas van der Rest" link: "https://researchr.org/alias/cas-van-der-rest" - name: "Wouter Swierstra" link: "https://researchr.org/alias/wouter-swierstra" year: "2022" doi: "https://doi.org/10.1145/3547636" links: doi: "https://doi.org/10.1145/3547636" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/RestS22" researchr: "https://researchr.org/publication/RestS22" cites: 0 citedby: 0 journal: "PACMPL" volume: "6" number: "ICFP" pages: "411-437" kind: "article" key: "RestS22" - title: "The Semantics of Name Resolution in Grace" author: - name: "Vlad Vergu" link: "https://researchr.org/alias/vlad-vergu" - name: "Michiel Haisma" link: "https://researchr.org/alias/michiel-haisma" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "https://doi.org/10.1145/3170472.3133847" abstract: "Grace is a dynamic object oriented programming language designed to aid programming education. We present a formal model of and give an operational semantics for its object model and name resolution algorithm. Our main contributions are a systematic model of Grace's name resolution using scope graphs, relating linguistic features to other languages, and an operationalization of this model in the form of an operational semantics which is readable and executable. The semantics are extensively tested against a reference Grace implementation. " links: doi: "https://doi.org/10.1145/3170472.3133847" published: "https://researchr.org/publication/VerguHV17" researchr: "https://researchr.org/publication/TUD-SERG-2017-011" cites: 0 citedby: 0 institution: "Software Engineering Research Group, Delft University of Technology" number: "TUD-SERG-2017-011" kind: "techreport" key: "TUD-SERG-2017-011" - title: "A Modular SGLR Parsing Architecture for Systematic Performance Optimization" author: - name: "Jasper Denkers" link: "https://jasperdenkers.com" year: "2018" doi: "http://resolver.tudelft.nl/uuid:7d9f9bcc-117c-4617-860a-4e3e0bbc8988" abstract: "SGLR parsing is an approach that enables parsing of context-free languages by means of declarative, concise and maintainable syntax definition. Existing implementations suffer from performance issues and their architectures are often highly coupled without clear separation between their components. This work introduces a modular SGLR architecture with several variants implemented for its components to systematically benchmark and improve performance. This work evaluates these variants both independently and combined using artificial and real world programming languages grammars. The architecture is implemented in Java as JSGLR2, the successor of the original parser in Spoofax, interpreting parse tables generated by SDF3. The improvements combined result into a parsing and imploding time speedup from 3x on Java to 10x on GreenMarl with respect to the previous JSGLR implementation." links: doi: "http://resolver.tudelft.nl/uuid:7d9f9bcc-117c-4617-860a-4e3e0bbc8988" "tu delft library": "http://resolver.tudelft.nl/uuid:7d9f9bcc-117c-4617-860a-4e3e0bbc8988" researchr: "https://researchr.org/publication/Denkers2018" cites: 0 citedby: 1 school: "Delft University of Technology" kind: "mastersthesis" key: "Denkers2018" - title: "To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries" author: - name: "Michael J. Steindorfer" link: "http://michael.steindorfer.name" - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" year: "2018" doi: "http://doi.acm.org/10.1145/3192366.3192420" links: doi: "http://doi.acm.org/10.1145/3192366.3192420" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pldi/SteindorferV18" researchr: "https://researchr.org/publication/SteindorferV18" cites: 0 citedby: 0 pages: "283-295" booktitle: "PLDI" kind: "inproceedings" key: "SteindorferV18" - title: "Incrementalizing lattice-based program analyses in Datalog" author: - name: "Tamás Szabó" link: "https://researchr.org/alias/tam%C3%A1s-szab%C3%B3" - name: "Gábor Bergmann" link: "https://researchr.org/alias/g%C3%A1bor-bergmann" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Markus Voelter" link: "https://researchr.org/alias/markus-voelter" year: "2018" doi: "https://doi.org/10.1145/3276509" links: doi: "https://doi.org/10.1145/3276509" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/SzaboBEV18" researchr: "https://researchr.org/publication/SzaboBEV18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "OOPSLA" kind: "article" key: "SzaboBEV18" - 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: "Language-Independent Type-Dependent Name Resolution" author: - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - 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" month: "July" abstract: "We extend and combine two existing declarative formalisms, the scope graphs of Neron et al. and type constraint systems, to build a language-independent theory that can describe both name and type resolution for realistic languages with complex scope and typing rules. Unlike conventional static semantics presentations, our approach maintains a clear separation between scoping and typing concerns, while still be- ing able to handle language constructs, such as class field access, for which name and type resolution are necessarily intertwined. We define a constraint scheme that can express both typing and name binding constraints, and give a for- mal notion of constraint satisfiability together with a sound algorithm for finding solutions in important special cases. We describe the details of constraint generation for a model language that illustrates many of the interesting resolution issues associated with modules, classes, and records. Our constraint generator and solver have been implemented in the Spoofax Language Workbench." links: "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2015-006.pdf" researchr: "https://researchr.org/publication/TUD-SERG-2015-006" cites: 0 citedby: 0 institution: "Delft University of Technology, Software Engineering Research Group" number: "TUD-SERG-2015-006" address: "Delft, The Netherlands" kind: "techreport" key: "TUD-SERG-2015-006" - title: "WebWorkFlow: An Object-Oriented Workflow Modeling Language for Web Applications" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Ruben Verhaaf" link: "http://www.linkedin.com/pub/ruben-verhaaf/3/a73/2ab" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-87875-9_8" abstract: "Workflow languages are designed for the high-level description of processes and are typically not suitable for the generation of complete applications. In this paper, we present WebWorkFlow, an object-oriented workflow modeling language for the high-level description of workflows in web applications. Workflow descriptions define procedures operating on domain objects. Procedures are composed using sequential and concurrent process combinators. WebWorkFlow is an embedded language, extending WebDSL, a domain-specific language for web application development, with workflow abstractions. The extension is implemented by means of model-to-model transformations. Rather than providing an exclusive workflow language, WebWorkFlow supports interaction with the underlying WebDSL language. WebWorkFlow supports most of the basic workflow control patterns. " links: doi: "http://dx.doi.org/10.1007/978-3-540-87875-9_8" "technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-029.pdf" tags: - "workflow patterns" - "model-to-model transformation" - "interaction design" - "WebDSL" - "transformation engineering" - "completeness" - "pattern language" - "meta-model" - "modeling language" - "modeling" - "language engineering" - "transformation language" - "language modeling" - "web engineering" - "language design" - "model-driven development" - "source-to-source" - "model-driven engineering" - "object-role modeling" - "model transformation" - "web applications" - "DSL" - "abstraction" - "Meta-Environment" - "workflow" - "process modeling" - "WebWorkFlow" - "meta-objects" - "transformation" - "domain-specific language" researchr: "https://researchr.org/publication/HemelVV08" cites: 0 citedby: 6 pages: "113-127" booktitle: "MoDELS" kind: "inproceedings" key: "HemelVV08" - title: "Language extension and composition with language workbenches" author: - name: "Markus Völter" link: "http://www.voelter.de/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://doi.acm.org/10.1145/1869542.1869623" abstract: " Domain-specific languages (DSLs) provide high expressive power focused on a particular problem domain. They provide linguistic abstractions and specialized syntax specifically designed for a domain, allowing developers to avoid boilerplate code and low-level implementation details. Language workbenches are tools that integrate all aspects of the definition of domain-specific or general-purpose software languages and the creation of a programming environment from such a definition. To count as a language workbench, a tool needs to satisfy basic requirements for the integrated definition of syntax, semantics, and editor services, and preferably also support language extension and composition. Within these requirements there is ample room for variation in the design of a language workbench. In this tutorial, we give an introduction to the state of the art in textual DSLs and language workbenches. We discuss the main requirements and variation points in the design of language workbenches, and describe two points in the design space using two state-of-the-art language workbenches. Spoofax is an example of a parser-based language workbench, while MPS represents language workbenches based on projectional editors. " links: doi: "http://doi.acm.org/10.1145/1869542.1869623" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/VolterV10" tags: - "workbench" - "composition" - "language workbench" researchr: "https://researchr.org/publication/VolterV10" cites: 0 citedby: 0 pages: "301-304" booktitle: "OOPSLA" kind: "inproceedings" key: "VolterV10" - 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: "Optimizing and Incrementalizing Higher-order Collection Queries by AST Transformation" author: - name: "Paolo G. Giarrusso" link: "https://www.informatik.uni-marburg.de/~pgiarrusso/" year: "2020" doi: "http://d-nb.info/1205313524" links: doi: "http://d-nb.info/1205313524" dblp: "http://dblp.uni-trier.de/rec/bibtex/phd/dnb/Giarrusso20" researchr: "https://researchr.org/publication/dnb-22573" cites: 0 citedby: 0 school: "University of Tübingen, Germany" kind: "phdthesis" key: "dnb-22573" - title: "Generating Editors for Embedded Languages. Integrating SGLR into IMP" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" month: "April" abstract: "Integrated Development Environments (IDEs) increase productivity by providing a rich user interface and rapid feedback for a specific language. Creating an editor for a specific language is not a trivial undertaking, and is a cumbersome task even when working with an extensible framework such as Eclipse. A new IBM-guided effort, the IMP framework, relieves the IDE developer from a significant portion of the required work by providing various abstractions for this. For embedded languages, such as embedded regular expressions, SQL queries, or code generation templates, its LALR parser generator falls short, however. Scannerless parsing with SGLR enables concise, modular definition of such languages. In this paper, we present an integration of SGLR into IMP, demonstrating that a scannerless parser can be successfully integrated into an IDE. Given an SDF syntax definition, the sdf2imp tool automatically generates an editor plugin based on the IMP API, complete with syntax checking, syntax highlighting, outline view, and code folding. Using declarative domain-specific languages, these services can be customized, and using the IMP metatooling framework it can be extended with other features. " links: successor: "https://researchr.org/publication/KatsVisser2010" "spoofax homepage": "http://strategoxt.org/Spoofax" "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-006.pdf" tags: - "rule-based" - "Eclipse" - "syntax definition" - "completeness" - "SDF" - "SQL" - "C++" - "code generation" - "abstraction" - "Spoofax" - "Meta-Environment" - "parsing" - "scannerless parsing" - "extensible language" - "ASF+SDF" - "SGLR" - "query language" - "domain-specific language" researchr: "https://researchr.org/publication/KatsKV08" cites: 0 citedby: 1 booktitle: "LDTA" kind: "inproceedings" key: "KatsKV08" - 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: "Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-LR parsing" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Emma Nilsson-Nyman" link: "http://www.cs.lth.se/home/Emma.Nilsson_Nyman/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://doi.acm.org/10.1145/1640089.1640122" abstract: "Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. A heavy burden lies on developers of new languages to provide adequate IDE support. Code generation techniques provide a viable, efficient approach to semi-automatically produce IDE plugins. Key components for the realization of plugins are the language's grammar and parser. For embedded languages and language extensions, constituent IDE plugin modules and their grammars can be combined. 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 language embeddings and extensions composed from separate grammar modules. To apply this algorithm in an interactive environment, this paper introduces a novel error recovery mechanism, which allows it to be used with files with syntax errors -- common in interactive editing. Error recovery is vital for providing rapid feedback in case of syntax errors, as most IDE services depend on the parser -- from syntax highlighting to semantic analysis and cross-referencing. We base our approach on the principles of island grammars, and derive permissive grammars with error recovery productions from normal SDF grammars. To cope with the added complexity of these grammars, we adapt the parser to support backtracking. We evaluate the recovery quality and performance of our approach using a set of composed languages, based on Java and Stratego. " links: doi: "http://doi.acm.org/10.1145/1640089.1640122" successor: "https://researchr.org/publication/JongeKVS12" "technical report (pdf)": "http://www.lclnet.nl/publications/error-recovery.pdf" tags: - "parsing algorithm" - "semantics" - "rule-based" - "Java" - "SDF" - "composition" - "analysis" - "principles" - "C++" - "code generation" - "context-aware" - "Meta-Environment" - "parsing" - "scannerless parsing" - "systematic-approach" - "island grammars" - "ASF+SDF" - "grammar" - "Stratego" researchr: "https://researchr.org/publication/KatsJNV09" cites: 0 citedby: 1 pages: "445-464" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsJNV09" - title: "Programming Language Techniques for Incremental and Reactive Computing (Dagstuhl Seminar 16402)" author: - name: "Camil Demetrescu" link: "https://researchr.org/alias/camil-demetrescu" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Matthew A. Hammer" link: "https://researchr.org/alias/matthew-a.-hammer" - name: "Shriram Krishnamurthi" link: "https://researchr.org/alias/shriram-krishnamurthi" year: "2016" doi: "http://dx.doi.org/10.4230/DagRep.6.10.1" links: doi: "http://dx.doi.org/10.4230/DagRep.6.10.1" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/dagstuhl-reports/DemetrescuEHK16" researchr: "https://researchr.org/publication/DemetrescuEHK16" cites: 0 citedby: 0 journal: "dagstuhl-reports" volume: "6" number: "10" pages: "1-12" kind: "article" key: "DemetrescuEHK16" - title: "Grammar Engineering Support for Precedence Rule Recovery and Compatibility Checking" author: - name: "Eric Bouwers" link: "http://www.st.ewi.tudelft.nl/~bouwers/main/" - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.046" abstract: "A wide range of parser generators are used to generate parsers for programming languages. The grammar formalisms that come with parser generators provide different approaches for defining operator precedence. Some generators (e.g. YACC) support precedence declarations, others require the grammar to be unambiguous, thus encoding the precedence rules. Even if the grammar formalism provides precedence rules, a particular grammar might not use it. The result is grammar variants implementing the same language. For the C language, the GNU Compiler uses YACC with precedence rules, the C-Transformers uses SDF without priorities, while the SDF library does use priorities. For PHP, Zend uses YACC with precedence rules, whereas PHP-front uses SDF with priority and associativity declarations. The variance between grammars raises the question if the precedence rules of one grammar are compatible with those of another. This is usually not obvious, since some languages have complex precedence rules. Also, for some parser generators the semantics of precedence rules is defined operationally, which makes it hard to reason about their effect on the defined language. We present a method and tool for comparing the precedence rules of different grammars and parser generators. Although it is undecidable whether two grammars define the same language, this tool provides support for comparing and recovering precedence rules, which is especially useful for reliable migration of a grammar from one grammar formalism to another. We evaluate our method by the application to non-trivial mainstream programming languages, such as PHP and C." links: doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.046" tags: - "programming languages" - "semantics" - "rule-based" - "syntax definition" - "YACC" - "precedence rule" - "SDF" - "Stratego/XT" - "language engineering" - "grammar engineering" - "PHP" - "rules" - "C++" - "migration" - "compiler" - "programming" - "operational semantics" - "priority" - "parsing" - "scannerless parsing" - "systematic-approach" - "ASF+SDF" - "grammar" - "Stratego" researchr: "https://researchr.org/publication/BouwersBV08" cites: 0 citedby: 1 journal: "ENTCS" volume: "203" number: "2" pages: "85-101" kind: "article" key: "BouwersBV08" - title: "A Formal C Memory Model for Separation Logic" author: - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" year: "2016" doi: "http://dx.doi.org/10.1007/s10817-016-9369-1" links: doi: "http://dx.doi.org/10.1007/s10817-016-9369-1" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jar/Krebbers16" researchr: "https://researchr.org/publication/Krebbers16" cites: 0 citedby: 0 journal: "JAR" volume: "57" number: "4" pages: "319-387" kind: "article" key: "Krebbers16" - title: "Scope States (Artifact)" author: - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2021" doi: "https://doi.org/10.4230/DARTS.7.2.1" links: doi: "https://doi.org/10.4230/DARTS.7.2.1" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/darts/AntwerpenV21" researchr: "https://researchr.org/publication/AntwerpenV21-artifact" cites: 0 citedby: 0 journal: "darts" volume: "7" number: "2" kind: "article" key: "AntwerpenV21-artifact" - 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: "Automating Proof Steps of Progress Proofs: Comparing Vampire and Dafny" author: - name: "Sylvia Grewe" link: "https://researchr.org/alias/sylvia-grewe" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2016" doi: "http://www.easychair.org/publications/paper/Automating_Proof_Steps_of_Progress_Proofs_Comparing_Vampire_and_Dafny" links: doi: "http://www.easychair.org/publications/paper/Automating_Proof_Steps_of_Progress_Proofs_Comparing_Vampire_and_Dafny" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/cade/GreweEM16" researchr: "https://researchr.org/publication/GreweEM16" cites: 0 citedby: 0 pages: "33-45" booktitle: "cade" kind: "inproceedings" key: "GreweEM16" - title: "Type Theory Unchained: Extending Agda with User-Defined Rewrite Rules" author: - name: "Jesper Cockx" link: "https://jesper.sikanda.be" year: "2019" doi: "https://doi.org/10.4230/LIPIcs.TYPES.2019.2" links: doi: "https://doi.org/10.4230/LIPIcs.TYPES.2019.2" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/types/Cockx19" researchr: "https://researchr.org/publication/Cockx19" cites: 0 citedby: 0 booktitle: "TYPES" kind: "inproceedings" key: "Cockx19" - 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: "Scope States: Guarding Safety of Name Resolution in Parallel Type Checkers" author: - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2021" doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2021.1" links: doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2021.1" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/AntwerpenV21" researchr: "https://researchr.org/publication/AntwerpenV21" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "AntwerpenV21" - title: "FlowSpec: declarative dataflow analysis specification" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "http://doi.acm.org/10.1145/3136014.3136029" abstract: "We present FlowSpec, a declarative specification language for the domain of dataflow analysis. FlowSpec has declarative support for the specification of control flow graphs of programming languages, and dataflow analyses on these control flow graphs. We define the formal semantics of FlowSpec, which is rooted in Monotone Frameworks. We also discuss a prototype implementation of the language, built in the Spoofax Language Workbench. Finally, we evaluate the expressiveness and conciseness of the language with two case studies. These case studies are analyses for Green-Marl, an industrial, domain-specific language for graph processing. The first case study is a classical dataflow analysis, scaled to this full language. The second case study is a domain-specific analysis of Green-Marl. " links: doi: "http://doi.acm.org/10.1145/3136014.3136029" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/SmitsV17" successor: "https://researchr.org/publication/SmitsWV20" researchr: "https://researchr.org/publication/SmitsV17" cites: 0 citedby: 0 pages: "221-231" booktitle: "SLE" kind: "inproceedings" key: "SmitsV17" - title: "A Research Agenda for Formal Methods in the Netherlands" author: - name: "Marieke Huisman" link: "https://researchr.org/alias/marieke-huisman" - name: "Wouter Swierstra" link: "http://www.cse.chalmers.se/~wouter/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" month: "July" doi: "http://www.staff.science.uu.nl/~swier004/publications/2019-CS-004.pdf" abstract: "On September 3 and 4, 2018, we organized a meeting on formal methods research in the Netherlands. Goal of the meeting was to create a Dutch formal methods community, to increase awareness of each other’s activities, and to find common grounds for collaborations. All researchers working on formal methods in the Netherlands were invited to contribute a 2-page abstract with their vision on the future of formal methods research. This document bundles these visions." links: doi: "http://www.staff.science.uu.nl/~swier004/publications/2019-CS-004.pdf" researchr: "https://researchr.org/publication/HuismanSV19" cites: 0 citedby: 0 institution: "Department of Information and Computing Sciences, Utrecht University, Utrecht, The Netherlands" number: "UU-CS-2019-004" kind: "techreport" key: "HuismanSV19" - title: "WebDSL: a domain-specific language for dynamic web applications" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://doi.acm.org/10.1145/1449814.1449858" abstract: "WebDSL is a domain-specific language for the implementation of dynamic web applications with a rich datamodel. It consists of a core language with constructs to define entities, pages and business logic. Higher-level abstractions, modeling access control and workflow, are defined in a modular fashion as extensions of the core language." links: doi: "http://doi.acm.org/10.1145/1449814.1449858" tags: - "WebDSL" - "meta-model" - "modeling language" - "modeling" - "language engineering" - "language modeling" - "web engineering" - "model-driven engineering" - "C++" - "web applications" - "DSL" - "logic" - "abstraction" - "Meta-Environment" - "access control" - "workflow" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenHKV08" cites: 0 citedby: 0 pages: "779-780" booktitle: "OOPSLA" kind: "inproceedings" key: "GroenewegenHKV08" - title: "Mtac2: typed tactics for backward reasoning in Coq" author: - name: "Jan-Oliver Kaiser" link: "https://researchr.org/alias/jan-oliver-kaiser" - name: "Beta Ziliani" link: "https://researchr.org/alias/beta-ziliani" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Yann Régis-Gianas" link: "https://researchr.org/alias/yann-r%C3%A9gis-gianas" - name: "Derek Dreyer" link: "https://researchr.org/alias/derek-dreyer" year: "2018" doi: "https://doi.org/10.1145/3236773" links: doi: "https://doi.org/10.1145/3236773" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/KaiserZKRD18" researchr: "https://researchr.org/publication/KaiserZKRD18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "ICFP" kind: "article" key: "KaiserZKRD18" - title: "IceDust: Incremental and Eventual Computation of Derived Values in Persistent Object Graphs" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" doi: "http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.11" abstract: "Derived values are values calculated from base values. They can be expressed in object-oriented languages by means of getters calculating the derived value, and in relational or logic databases by means of (materialized) views. However, switching to a different calculation strategy (for example caching) in object-oriented programming requires invasive code changes, and the databases limit expressiveness by disallowing recursive aggregation. In this paper, we present IceDust, a data modeling language for expressing derived attribute values without committing to a calculation strategy. IceDust provides three strategies for calculating derived values in persistent object graphs: Calculate-on-Read, Calculate-on-Write, and Calculate-Eventually. We have developed a path-based abstract interpretation that provides static dependency analysis to generate code for these strategies. Benchmarks show that different strategies perform better in different scenarios. In addition we have conducted a case study that suggests that derived value calculations of systems used in practice can be expressed in IceDust. " links: doi: "http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.11" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/HarkesGV16" researchr: "https://researchr.org/publication/HarkesGV16" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "HarkesGV16" - 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 language generic solution for name binding preservation in refactorings" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://doi.acm.org/10.1145/2427048.2427050" abstract: "The implementation of refactorings for new languages requires considerable effort from the language developer. We aim at reducing that effort by using language generic techniques. This paper focuses on behavior preservation, in particular the preservation of static name bindings. To detect name binding violations, we implement a technique that reuses the name analysis defined in the compiler front end. Some languages offer the possibility to access variables using qualified names. As a refinement to violation detection, we show that name analysis can be defined as a reusable traversal strategy that can be applied to restore name bindings by creating qualified names. These techniques offer an efficient and reliable solution; the semantics of the language is implemented only once, with the compiler being the single source of truth. We evaluate our approach by implementing a language generic rename refactoring, which we apply to two domain specific languages and a subset of the Java language." links: doi: "http://doi.acm.org/10.1145/2427048.2427050" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ldta/JongeV12" researchr: "https://researchr.org/publication/JongeV12-LDTA" cites: 0 citedby: 0 pages: "2" booktitle: "LDTA" kind: "inproceedings" key: "JongeV12-LDTA" - title: "Iron: managing obligations in higher-order concurrent separation logic" author: - name: "Ales Bizjak" link: "https://researchr.org/alias/ales-bizjak" - name: "Daniel Gratzer" link: "https://researchr.org/alias/daniel-gratzer" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Lars Birkedal" link: "https://researchr.org/alias/lars-birkedal" year: "2019" doi: "https://dl.acm.org/citation.cfm?id=3290378" links: doi: "https://dl.acm.org/citation.cfm?id=3290378" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/BizjakGKB19" researchr: "https://researchr.org/publication/BizjakGKB19" cites: 0 citedby: 0 journal: "PACMPL" volume: "3" kind: "article" key: "BizjakGKB19" - 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: "Specializing a meta-interpreter: JIT compilation of Dynsem specifications on the Graal VM" author: - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.1145/3237009.3237018" abstract: " DynSem is a domain-specific language for concise specification of the dynamic semantics of programming languages, aimed at rapid experimentation and evolution of language designs. DynSem specifications can be executed to interpret programs in the language under development. To enable fast turnaround during language development, we have developed a meta-interpreter for DynSem specifications, which requires minimal processing of the specification. In addition to fast development time, we also aim to achieve fast run times for interpreted programs. In this paper we present the design of a meta-interpreter for DynSem and report on experiments with JIT compiling the application of the meta-interpreter on the Graal VM. By interpreting specifications directly, we have minimal compilation overhead. By specializing pattern matches, maintaining call-site dispatch chains and using native control-flow constructs we gain significant run-time performance. We evaluate the performance of the meta-interpreter when applied to the Tiger language specification running a set of common benchmark programs. Specialization enables the Graal VM to JIT compile the meta-interpreter giving speedups of up to factor 15 over running on the standard Oracle Java VM. " links: doi: "https://doi.org/10.1145/3237009.3237018" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pppj/VerguV18" researchr: "https://researchr.org/publication/VerguV18" cites: 0 citedby: 0 booktitle: "PPPJ" kind: "inproceedings" key: "VerguV18" - title: "Flag-based big-step semantics" author: - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Peter D. Mosses" link: "https://pdmosses.github.io" year: "2017" doi: "http://dx.doi.org/10.1016/j.jlamp.2016.05.001" links: doi: "http://dx.doi.org/10.1016/j.jlamp.2016.05.001" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jlp/PoulsenM17" researchr: "https://researchr.org/publication/PoulsenM17" cites: 0 citedby: 0 journal: "jlp" volume: "88" pages: "174-190" kind: "article" key: "PoulsenM17" - title: "Efficient development of consistent projectional editors using grammar cells" author: - name: "Markus Völter" link: "http://www.voelter.de/" - name: "Tamás Szabó" link: "https://researchr.org/alias/tam%C3%A1s-szab%C3%B3" - name: "Sascha Lisson" link: "https://researchr.org/alias/sascha-lisson" - name: " Bernd Kolb" link: "https://researchr.org/alias/bernd-kolb" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Thorsten Berger" link: "https://researchr.org/alias/thorsten-berger" year: "2016" doi: "http://dl.acm.org/citation.cfm?id=2997365" links: doi: "http://dl.acm.org/citation.cfm?id=2997365" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/VoelterSLKEB16" researchr: "https://researchr.org/publication/VoelterSLKEB16" cites: 0 citedby: 0 pages: "28-40" booktitle: "SLE" kind: "inproceedings" key: "VoelterSLKEB16" - title: "Proceedings of the 9th ACM SIGPLAN International Symposium on Scala, SCALA@ICFP 2018, St. Louis, MO, USA, September 28, 2018" year: "2018" doi: "https://doi.org/10.1145/3241653" links: doi: "https://doi.org/10.1145/3241653" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/scala/2018" researchr: "https://researchr.org/publication/scala-2018" cites: 0 citedby: 0 booktitle: "Proceedings of the 9th ACM SIGPLAN International Symposium on Scala, SCALA@ICFP 2018, St. Louis, MO, USA, September 28, 2018" conference: "SCALA" editor: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Bruno C. D. S. Oliveira" link: "https://researchr.org/alias/bruno-c.-d.-s.-oliveira" publisher: "ACM" kind: "proceedings" key: "scala-2018" - title: "Constructing Hybrid Incremental Compilers for Cross-Module Extensibility with an Internal Build System" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.22152/programming-journal.org/2020/4/16" abstract: "Context: Compilation time is an important factor in the adaptability of a software project. Fast recompilation enables cheap experimentation with changes to a project, as those changes can be tested quickly. Separate and incremental compilation has been a topic of interest for a long time to facilitate fast recompilation. Inquiry: Despite the benefits of an incremental compiler, such compilers are usually not the default. This is because incrementalization requires cross-cutting, complicated, and error-prone techniques such as dependency tracking, caching, cache invalidation, and change detection. Especially in compilers for languages with cross-module definitions and integration, correctly and efficiently implementing an incremental compiler can be a challenge. Retrofitting incrementality into a compiler is even harder. We address this problem by developing a compiler design approach that reuses parts of an existing non-incremental compiler to lower the cost of building an incremental compiler. It also gives an intuition into compiling difficult-to-incrementalize language features through staging. Approach: We use the compiler design approach presented in this paper to develop an incremental com- piler for the Stratego term-rewriting language. This language has a set of features that at first glance look incompatible with incremental compilation. Therefore, we treat Stratego as our critical case to demonstrate the approach on. We show how this approach decomposes the original compiler and has a solution to com- pile Stratego incrementally. The key idea on which we build our incremental compiler is to internally use an incremental build system to wire together the components we extract from the original compiler. Knowledge: The resulting compiler is already in use as a replacement of the original whole-program compiler. We find that the incremental build system inside the compiler is a crucial component of our approach. This allows a compiler writer to think in multiple steps of compilation, and combine that into a incremental compiler almost effortlessly. Normally, separate compilation à la C is facilitated by an external build system, where the programmer is responsible for managing dependencies between files. We reuse an existing sound and optimal incremental build system, and integrate its dependency tracking into the compiler. Grounding: The incremental compiler for Stratego is available as an artefact along with this article. We evaluate it on a large Stratego project to test its performance. The benchmark replays edits to the Stratego project from version control. These benchmarks are part of the artefact, packaged as a virtual machine image for easy reproducibility. Importance: Although we demonstrate our design approach on the Stratego programming language, we also describe it generally throughout this paper. Many currently used programming languages have a compiler that is much slower than necessary. Our design provides an approach to change this, by reusing an existing compiler and making it incremental within a reasonable amount of time." links: doi: "https://doi.org/10.22152/programming-journal.org/2020/4/16" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/programming/SmitsKV20" researchr: "https://researchr.org/publication/SmitsKV20" cites: 0 citedby: 0 journal: "Programming" volume: "4" number: "3" pages: "16" kind: "article" key: "SmitsKV20" - title: "A longitudinal field study on creation and use of domain-specific languages in industry" author: - name: "Jasper Denkers" link: "https://jasperdenkers.com" year: "2019" doi: "https://doi.org/10.1145/3338906.3341463" links: doi: "https://doi.org/10.1145/3338906.3341463" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sigsoft/Denkers19" researchr: "https://researchr.org/publication/Denkers19" cites: 0 citedby: 0 pages: "1152-1155" booktitle: "FSE" kind: "inproceedings" key: "Denkers19" - title: "Natural and Flexible Error Recovery for Generated Parsers" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Emma Nilsson-Nyman" link: "http://www.cs.lth.se/home/Emma.Nilsson_Nyman/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_16" abstract: "Parser generators are an indispensable tool for rapid language development. However, they often fall short of the finesse of a hand-crafted parser, built with the language semantics in mind. One area where generated parsers have provided unsatisfactory results is that of error recovery. Good error recovery is both natural, giving recovery suggestions in line with the intention of the programmer; and flexible, allowing it to be adapted according to language insights and language changes. This paper describes a novel approach to error recovery, taking into account not only the context-free grammar, but also indentation usage. We base our approach on an extension of the SGLR parser that supports fine-grained error recovery rules and can be used to parse complex, composed languages. We take a divide-and-conquer approach to error recovery: using indentation, erroneous regions of code are identified. These regions constrain the search space for applying recovery rules, improving performance and ensuring recovery suggestions local to the error. As a last resort, erroneous regions can be discarded. Our approach also integrates bridge parsing to provide more accurate suggestions for indentation-sensitive language constructs such as scopes. We evaluate our approach by comparison with the JDT Java parser used in Eclipse. " links: doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_16" successor: "https://researchr.org/publication/JongeKVS12" tags: - "semantics" - "rule-based" - "Java" - "Eclipse" - "rules" - "C++" - "search suggestions" - "context-aware" - "search" - "parsing" - "error recovery" - "systematic-approach" - "SGLR" - "grammar" researchr: "https://researchr.org/publication/JongeNKV09" cites: 0 citedby: 0 pages: "204-223" booktitle: "SLE" kind: "inproceedings" key: "JongeNKV09" - title: "2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, Onward! 2016, Amsterdam, The Netherlands, November 2-4, 2016" year: "2016" doi: "http://doi.acm.org/10.1145/2986012" links: doi: "http://doi.acm.org/10.1145/2986012" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/2016onward" researchr: "https://researchr.org/publication/oopsla-2016onward" cites: 0 citedby: 0 booktitle: "2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, Onward! 2016, Amsterdam, The Netherlands, November 2-4, 2016" conference: "OOPSLA" editor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Emerson R. Murphy-Hill" link: "https://researchr.org/alias/emerson-r.-murphy-hill" - name: "Crista Lopes" link: "https://researchr.org/alias/crista-lopes" publisher: "ACM" isbn: "978-1-4503-4076-2" kind: "proceedings" key: "oopsla-2016onward" - title: "Exploration of language specifications by compilation to first-order logic" author: - name: "Sylvia Grewe" link: "https://researchr.org/alias/sylvia-grewe" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "André Pacak" link: "https://researchr.org/alias/andr%C3%A9-pacak" - name: "Michael Raulf" link: "https://researchr.org/alias/michael-raulf" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2018" doi: "https://doi.org/10.1016/j.scico.2017.08.001" links: doi: "https://doi.org/10.1016/j.scico.2017.08.001" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/GreweEPRM18" researchr: "https://researchr.org/publication/GreweEPRM18" cites: 0 citedby: 0 journal: "SCP" volume: "155" pages: "146-172" kind: "article" key: "GreweEPRM18" - title: "Software meta-language engineering and CBS" author: - name: "Peter D. Mosses" link: "https://pdmosses.github.io" year: "2019" doi: "https://doi.org/10.1016/j.jvlc.2018.11.003" links: doi: "https://doi.org/10.1016/j.jvlc.2018.11.003" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/vlc/Mosses19" researchr: "https://researchr.org/publication/Mosses19" cites: 0 citedby: 0 journal: "JCL (JVLC)" volume: "50" pages: "39-48" kind: "article" key: "Mosses19" - title: "Fusing a Transformation Language with an Open Compiler" author: - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.042" abstract: "Program transformation systems provide powerful analysis and transformation frameworks as well as concise languages for language processing, but instantiating them for every subject language is an arduous task, most often resulting in half-completed frontends. Compilers provide mature frontends with robust parsers and type checkers, but solving language processing problems in general-purpose languages without transformation libraries is tedious. Reusing these frontends with existing transformation systems is therefore attractive. However, for this reuse to be optimal, the functional logic found in the frontend should be exposed to the transformation system – simple data serialization of the abstract syntax tree is not enough, since this fails to expose important compiler functionality, such as import graphs, symbol tables and the type checker. In this paper, we introduce a novel and general technique for combining term-based transformation systems with existing language frontends. The technique is presented in the context of a scriptable analysis and transformation framework for Java built on top of the Eclipse Java compiler. The framework consists of an adapter automatically extracted from the abstract syntax tree of the compiler and an interpreter for the Stratego program transformation language. The adapter allows the Stratego interpreter to rewrite directly on the compiler AST. We illustrate the applicability of our system with scripts written in Stratego that perform framework and library-specific analyses and transformations." links: doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.042" "technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2007-025.pdf" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "rule-based" - "Java" - "program analysis" - "Eclipse" - "completeness" - "data-flow language" - "graph transformation" - "interpreter" - "abstract syntax" - "Stratego/XT" - "transformation language" - "term rewriting" - "functional programming" - "Eclipse Java Compiler" - "points-to analysis" - "domain analysis" - "analysis" - "type system" - "reuse" - "data-flow programming" - "data-flow" - "source-to-source" - "graph-rewriting" - "logic programming" - "transformation system" - "compiler" - "model transformation" - "open compiler" - "subject-oriented programming" - "context-aware" - "logic" - "Spoofax" - "rewriting logic" - "rewriting" - "data-flow analysis" - "parsing" - "feature-oriented programming" - "open-source" - "transformation" - "Stratego" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/KallebergV08" cites: 0 citedby: 1 journal: "ENTCS" volume: "203" number: "2" pages: "21-36" kind: "article" key: "KallebergV08" - title: "Domain-Specific Languages (Dagstuhl Seminar 15062)" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Martin Erwig" link: "https://researchr.org/alias/martin-erwig" - name: "Richard F. Paige" link: "https://researchr.org/alias/richard-f.-paige" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2015" doi: "http://dx.doi.org/10.4230/DagRep.5.2.26" abstract: "This report documents the program and outcomes of Dagstuhl Seminar 15062 “Domain-Specific Languages”, which took place February 1–6, 2015. The seminar was motivated on the one hand by the high interest in domain-specific languages in academia and industry and on the other hand by the observation that the community is divided into largely disconnected subdisciplines (e.g., internal, external, visual, model-driven). The seminar included participants across these subdisciplines and included overview talks, technical talks, demos, discussion groups, and an industrial panel. This report collects the abstracts of talks and other activities at the seminar and summarizes the outcomes of the seminar." links: doi: "http://dx.doi.org/10.4230/DagRep.5.2.26" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/dagstuhl-reports/ErdwegEPV15" researchr: "https://researchr.org/publication/ErdwegEPV15" cites: 0 citedby: 0 journal: "dagstuhl-reports" volume: "5" number: "2" pages: "26-43" kind: "article" key: "ErdwegEPV15" - title: "Bootstrapping Domain-Specific Meta-Languages in Language Workbenches" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" doi: "http://doi.acm.org/10.1145/2993236.2993242" abstract: " It is common practice to bootstrap compilers of programming languages. By using the compiled language to implement the compiler, compiler developers can code in their own high-level language and gain a large-scale test case. In this paper, we investigate bootstrapping of compiler-compilers as they occur in language workbenches. Language workbenches support the development of compilers through the application of multiple collaborating domain-specific meta-languages for defining a language's syntax, analysis, code generation, and editor support. We analyze the bootstrapping problem of language workbenches in detail, propose a method for sound bootstrapping based on fixpoint compilation, and show how to conduct breaking meta-language changes in a bootstrapped language workbench. We have applied sound bootstrapping to the Spoofax language workbench and report on our experience. " links: doi: "http://doi.acm.org/10.1145/2993236.2993242" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/gpce/KonatEV16" researchr: "https://researchr.org/publication/KonatEV16" cites: 0 citedby: 0 pages: "47-58" booktitle: "GPCE" kind: "inproceedings" key: "KonatEV16" - title: "DynSem: A DSL for Dynamic Semantics Specification" author: - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Pierre Néron" link: "https://researchr.org/profile/pierrejeanmichelneron/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2015" doi: "http://dx.doi.org/10.4230/LIPIcs.RTA.2015.365" abstract: "The formal semantics of a programming language and its implementation are typically separately defined, with the risk of divergence such that properties of the formal semantics are not properties of the implementation. In this paper, we present DynSem, a domain-specific language for the specification of the dynamic semantics of programming languages that aims at supporting both formal reasoning and efficient interpretation. DynSem supports the specification of the operational semantics of a language by means of statically typed conditional term reduction rules. DynSem supports concise specification of reduction rules by providing implicit build and match coercions based on reduction arrows and implicit term constructors. DynSem supports modular specification by adopting implicit propagation of semantic components from I-MSOS, which allows omitting propagation of components such as environments and stores from rules that do not affect those. DynSem supports the declaration of native operators for delegation of aspects of the semantics to an external definition or implementation. DynSem supports the definition of auxiliary meta-functions, which can be expressed using regular reduction rules and are subject to semantic component propagation. DynSem specifications are executable through automatic generation of a Java-based AST interpreter. " links: doi: "http://dx.doi.org/10.4230/LIPIcs.RTA.2015.365" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/rta/VerguNV15" "techreport": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2015-003.pdf" researchr: "https://researchr.org/publication/VerguNV15" cites: 0 citedby: 0 pages: "365-378" booktitle: "RTA" kind: "inproceedings" key: "VerguNV15" - 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: "RustBelt: securing the foundations of the rust programming language" author: - name: "Ralf Jung" link: "https://researchr.org/alias/ralf-jung" - name: "Jacques-Henri Jourdan" link: "https://researchr.org/alias/jacques-henri-jourdan" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Derek Dreyer" link: "https://researchr.org/alias/derek-dreyer" year: "2018" doi: "http://doi.acm.org/10.1145/3158154" links: doi: "http://doi.acm.org/10.1145/3158154" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/0002JKD18" researchr: "https://researchr.org/publication/JungJKD18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "POPL" kind: "article" key: "JungJKD18" - 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: "The Second Rewrite Engines Competition" author: - name: "Francisco Durán" link: "http://www.lcc.uma.es/~duran/" - name: "Manuel Roldán" link: "https://researchr.org/alias/manuel-rold%C3%A1n" - name: "Emilie Balland" link: "http://www.loria.fr/~balland/" - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Steven Eker" link: "http://www.csl.sri.com/people/eker/" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Pierre-Etienne Moreau" link: "http://www.loria.fr/~moreau/dokuwiki/doku.php" - name: "Ruslan Shevchenko" link: "https://researchr.org/alias/ruslan-shevchenko" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1016/j.entcs.2009.05.025" abstract: "The 2nd Rewrite Engines Competition (REC) was celebrated as part of the 7th Workshop on Rewriting Logic and its Applications (WRLA 2008). In this edition of the competition participated ve systems, namely ASF+SDF, Maude, Stratego/XT, Termware, and Tom. We explain here how the competition was organized and conducted, and present its main results and conclusions." links: doi: "http://dx.doi.org/10.1016/j.entcs.2009.05.025" tags: - "rewrite engine" - "SDF" - "term rewriting" - "graph-rewriting" - "C++" - "logic" - "rewriting logic" - "rewriting" - "rewriting strategies" - "ASF+SDF" - "Stratego" researchr: "https://researchr.org/publication/DuranRBBEKKMSV09" cites: 0 citedby: 0 journal: "ENTCS" volume: "238" number: "3" pages: "281-291" kind: "article" key: "DuranRBBEKKMSV09" - title: "Principled syntactic code completion using placeholders" author: - name: "Luis Eduardo de Souza Amorim" link: "https://www.linkedin.com/profile/view?id=136481548" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" doi: "http://dx.doi.org/10.1145/2997364.2997374" abstract: "Principled syntactic code completion enables developers to change source code by inserting code templates, thus increasing developer efficiency and supporting language exploration. However, existing code completion systems are ad-hoc and neither complete nor sound. They are not complete and only provide few code templates for selected programming languages. They also are not sound and propose code templates that yield invalid programs when inserted.This paper presents a generic framework that automatically derives complete and sound syntactic code completion from the syntax definition of arbitrary languages. A key insight of our work is to provide an explicit syntactic representation for incomplete programs using placeholders. This enables us to address the following challenges for code completion separately: (i) completing incomplete programs by replacing placeholders with code templates, (ii) injecting placeholders into complete programs to make them incomplete, and (iii) introducing lexemes and placeholders into incorrect programs through error-recovery parsing to make them correct so we can apply one of the previous strategies. We formalize our framework and provide an implementation in the Spoofax Language Workbench. " links: doi: "http://dx.doi.org/10.1145/2997364.2997374" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/AmorimEWV16" researchr: "https://researchr.org/publication/AmorimEWV16" cites: 0 citedby: 0 pages: "163-175" booktitle: "SLE" kind: "inproceedings" key: "AmorimEWV16" - 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: "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: "A pure embedding of attribute grammars" author: - name: "Anthony M. Sloane" link: "https://researchr.org/alias/anthony-m.-sloane" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2013" doi: "http://dx.doi.org/10.1016/j.scico.2011.11.005" abstract: "Attribute grammars are a powerful specification paradigm for many language processing tasks, particularly semantic analysis of programming languages. Recent attribute grammar systems use dynamic scheduling algorithms to evaluate attributes on demand. In this paper, we show how to remove the need for a generator, by embedding a dynamic approach in a modern, object-oriented and functional programming language. The result is a small, lightweight attribute grammar library that is part of our larger Kiama language processing library. Kiama’s attribute grammar library supports a range of advanced features including cached, uncached, higher order, parameterised and circular attributes. Forwarding is available to modularise higher order attributes and decorators abstract away from the details of attribute value propagation. Kiama also implements new techniques for dynamic extension and variation of attribute equations. We use the Scala programming language because of its support for domain-specific notations and emphasis on scalability. Unlike generators with specialised notation, Kiama attribute grammars use standard Scala notations such as pattern-matching functions for equations, traits and mixins for composition and implicit parameters for forwarding. A benchmarking exercise shows that our approach is practical for realistic language processing." links: doi: "http://dx.doi.org/10.1016/j.scico.2011.11.005" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/SloaneKV13" researchr: "https://researchr.org/publication/SloaneKV13" cites: 0 citedby: 0 journal: "SCP" volume: "78" number: "10" pages: "1752-1769" kind: "article" key: "SloaneKV13" - title: "Generating Version Convertors for Domain-Specific Languages" author: - name: "Gerardo de Geest" link: "http://www.linkedin.com/pub/gerardo-de-geest/9/820/138" - name: "Sander Vermolen" link: "http://www.sandervermolen.nl" - name: "Arie van Deursen" link: "http://www.st.ewi.tudelft.nl/~arie/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1109/WCRE.2008.50" abstract: "Domain-specific languages (DSLs) improve programmer productivity by providing high-level abstractions for the development of applications in a particular domain. However,the smaller distance to the application domain entails more frequent changes to the language. As a result, existing DSL models need to be converted to the new version. Manual conversion is tedious and error prone.This paper presents an approach to support DSL evolution by generation of convertors between DSLs. By analyzing the differences between DSL meta-models, a mapping is reverse engineered which can be used to generate reengineering tools to automatically convert models between different versions of a DSL. The approach has been implemented for the Microsoft DSL Tools infrastructure in two tools called DSLCompare and ConverterGenerator. The approach has been evaluated by means of three case studies taken from the software development practice at the company Avanade." links: doi: "http://dx.doi.org/10.1109/WCRE.2008.50" tags: - "case study" - "meta-model" - "evolution" - "modeling language" - "modeling" - "dsl-tools" - "language modeling" - "model-driven development" - "software evolution" - "DSL" - "abstraction" - "Meta-Environment" - "convertors" - "systematic-approach" - "language" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/GeestVDV08" cites: 0 citedby: 0 pages: "197-201" booktitle: "WCRE" kind: "inproceedings" key: "GeestVDV08" - title: "Separation of concerns in language definition" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2014" doi: "http://doi.acm.org/10.1145/2584469.2584662" abstract: "Effectively applying linguistic abstraction to emerging domains of computation requires the ability to rapidly develop software languages. However, a software language is a complex software system in its own right and can take significant effort to design and implement. We are currently investigating a radical separation of concerns in language definition by designing high-level declarative meta-languages specialized to the various concerns of language definition that can be used as the single source of production quality (incremental) semantic operations and as a model for reasoning about language properties." links: doi: "http://doi.acm.org/10.1145/2584469.2584662" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/aosd/Visser14" researchr: "https://researchr.org/publication/VisserModularity14" cites: 0 citedby: 0 pages: "1-2" booktitle: "AOSD" kind: "inproceedings" key: "VisserModularity14" - title: "Safety and Completeness of Disambiguation corresponds to Termination and Confluence of Reordering" author: - name: "Luí­s Eduardo Amorim de Souza" link: "https://researchr.org/alias/lu%C3%AD%C2%ADs-eduardo-amorim-de-souza" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" month: "June" abstract: "Associativity and priority are well known techniques to disambiguate expression grammars. In recent work we develop a direct semantics for disambiguation by associativity and priority rules and prove that a safe and complete disambiguation relation produces a safe and complete disambiguation. The proof approach relies on a correspondence between disambiguation and term rewriting such that safety of disambiguation corresponds to termination of the rewrite system and completeness of disambiguation correspond to confluence of the rewrite system. In this extended abstract we illustrate that approach using diagrams." researchr: "https://researchr.org/publication/AmorimV20-IWC" cites: 0 citedby: 0 kind: "misc" key: "AmorimV20-IWC" - title: "Higher-order ghost state" author: - name: "Ralf Jung 0002" link: "https://researchr.org/alias/ralf-jung-0002" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Lars Birkedal" link: "https://researchr.org/alias/lars-birkedal" - name: "Derek Dreyer" link: "https://researchr.org/alias/derek-dreyer" year: "2016" doi: "http://doi.acm.org/10.1145/2951913.2951943" links: doi: "http://doi.acm.org/10.1145/2951913.2951943" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/icfp/0002KBD16" researchr: "https://researchr.org/publication/0002KBD16" cites: 0 citedby: 0 pages: "256-269" booktitle: "ICFP" kind: "inproceedings" key: "0002KBD16" - title: "From definitional interpreter to symbolic executor" author: - name: "Adrian D. Mensing" link: "https://researchr.org/alias/adrian-d.-mensing" - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" doi: "https://doi.org/10.1145/3358502.3361269" abstract: "Symbolic execution is a technique for automatic software validation and verification. New symbolic executors regularly appear for both existing and new languages and such symbolic executors are generally manually (re)implemented each time we want to support a new language. We propose to automatically generate symbolic executors from language definitions, and present a technique for mechanically (but as yet, manually) deriving a symbolic executor from a definitional interpreter. The idea is that language designers define their language as a monadic definitional interpreter, where the monad of the interpreter defines the meaning of branch points. Developing a symbolic executor for a language is a matter of changing the monadic interpretation of branch points. In this paper, we illustrate the technique on a language with recursive functions and pattern matching, and use the derived symbolic executor to automatically generate test cases for definitional interpreters implemented in our defined language." links: doi: "https://doi.org/10.1145/3358502.3361269" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/MensingAPV19" researchr: "https://researchr.org/publication/MensingAPV19" cites: 0 citedby: 0 pages: "11-20" booktitle: "OOPSLA" kind: "inproceedings" key: "MensingAPV19" - title: "The semantics of name resolution in grace" author: - name: "Vlad A. Vergu" link: "https://researchr.org/alias/vlad-a.-vergu" - name: "Michiel Haisma" link: "https://researchr.org/alias/michiel-haisma" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "https://doi.org/10.1145/3133841.3133847" abstract: "Grace is a dynamic object oriented programming language designed to aid programming education. We present a formal model of and give an operational semantics for its object model and name resolution algorithm. Our main contributions are a systematic model of Grace’s name resolution using scope graphs, relating linguistic features to other languages, and an operationalization of this model in the form of an operational semantics which is readable and executable. The semantics are extensively tested against a reference Grace implementation. " links: doi: "https://doi.org/10.1145/3133841.3133847" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/dls/VerguHV17" technicalreport: "https://researchr.org/publication/TUD-SERG-2017-011" researchr: "https://researchr.org/publication/VerguHV17" cites: 0 citedby: 0 pages: "63-74" booktitle: "DLS" kind: "inproceedings" key: "VerguHV17" - title: "IceDust Calculation Strategy Composition Performance in Web Applications" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" researchr: "https://researchr.org/publication/HarkesV17-IC" cites: 0 citedby: 0 kind: "misc" key: "HarkesV17-IC" - title: "Mobl: the new language of the mobile web" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2048147.2048159" abstract: "Mobl is 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/2048147.2048159" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/HemelV11a" researchr: "https://researchr.org/publication/HemelV11a" cites: 0 citedby: 0 pages: "23-24" booktitle: "OOPSLA" kind: "inproceedings" key: "HemelV11a" - title: "Fast and Safe Linguistic Abstraction for the Masses" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" month: "July" doi: "http://eelcovisser.org/blog/2019/09/29/fast-and-safe-linguistic-abstraction-for-the-masses/" abstract: "Language workbenches support the high-level definition of (domain-specific) programming languages and the automatic derivation of implementations from such definitions. The mission of language workbench research is to increase the level of abstraction of language definitions and expand the range of tools that can be generated automatically from language definitions. In this note, I give an overview of research into language workbenches at TU Delft and the perspective of future research." links: doi: "http://eelcovisser.org/blog/2019/09/29/fast-and-safe-linguistic-abstraction-for-the-masses/" researchr: "https://researchr.org/publication/Visser19-0" cites: 0 citedby: 0 pages: "10-11" booktitle: "A Research Agenda for Formal Methods in the Netherlands" organization: "Department of Information and Computing Sciences, Utrecht University, Utrecht, The Netherlands" kind: "incollection" key: "Visser19-0" - title: "Integration of data validation and user interface concerns in a DSL for web applications" author: - 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/s10270-010-0173-9" abstract: "Data validation rules constitute the constraints that data input and processing must adhere to in addition to the structural constraints imposed by a data model. Web modeling tools do not make all types of data validation explicit in their models, hampering full code generation and model expressivity. Web application frameworks do not offer a consistent interface for data validation. In this paper, we present a solution for the integration of declarative data validation rules with user interface models in the domain of web applications, unifying syntax, mechanisms for error handling, and semantics of validation checks, and covering value well-formedness, data invariants, input assertions, and action assertions. We have implemented the approach in WebDSL, a domain-specific language for the definition of web applications." links: doi: "http://dx.doi.org/10.1007/s10270-010-0173-9" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/sosym/GroenewegenV13" tags: - "WebDSL" researchr: "https://researchr.org/publication/GroenewegenV13" cites: 0 citedby: 0 journal: "SoSyM" volume: "12" number: "1" pages: "35-52" kind: "article" key: "GroenewegenV13" - title: "Lasagne: a static binary translator for weak memory model architectures" author: - name: "Rodrigo C. O. Rocha" link: "https://researchr.org/alias/rodrigo-c.-o.-rocha" - name: "Dennis Sprokholt" link: "https://researchr.org/alias/dennis-sprokholt" - name: "Martin Fink" link: "https://researchr.org/alias/martin-fink" - name: "Redha Gouicem" link: "https://researchr.org/alias/redha-gouicem" - name: "Tom Spink" link: "https://researchr.org/alias/tom-spink" - name: "Soham Chakraborty" link: "https://researchr.org/alias/soham-chakraborty" - name: "Pramod Bhatotia" link: "https://researchr.org/alias/pramod-bhatotia" year: "2022" doi: "https://doi.org/10.1145/3519939.3523719" links: doi: "https://doi.org/10.1145/3519939.3523719" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pldi/RochaS0GSCB22" researchr: "https://researchr.org/publication/RochaS0GSCB22" cites: 0 citedby: 0 pages: "888-902" booktitle: "PLDI" kind: "inproceedings" key: "RochaS0GSCB22" - title: "Stratego/XT 0.16: components for transformation systems" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Rob Vermaas" link: "https://researchr.org/profile/robvermaas/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2006" doi: "http://doi.acm.org/10.1145/1111542.1111558" abstract: "Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, as well as declarative languages for deriving new components. Complete program transformation systems are composed from these components. In this paper we give an overview of Stratego/XT 0.16. " links: doi: "http://doi.acm.org/10.1145/1111542.1111558" successor: "https://researchr.org/publication/BravenboerKVV08" tags: - "control systems" - "programming languages" - "object-oriented programming" - "concrete object syntax" - "reusable components" - "rule-based" - "completeness" - "meta programming" - "pattern language" - "graph transformation" - "Stratego/XT" - "transformation language" - "reuse" - "graph-rewriting" - "rules" - "transformation system" - "subject-oriented programming" - "context-aware" - "abstraction" - "Meta-Environment" - "rewriting" - "rewriting strategies" - "feature-oriented programming" - "concrete syntax" - "meta-objects" - "transformation" - "Stratego" - "program transformation" researchr: "https://researchr.org/publication/BravenboerKVV06" cites: 0 citedby: 0 pages: "95-99" booktitle: "PEPM" kind: "inproceedings" key: "BravenboerKVV06" - title: "Software development environments on the web: a research agenda" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Richard Vogelij" link: "http://www.linkedin.com/pub/richard-vogelij/10/554/719" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://doi.acm.org/10.1145/2384592.2384603" abstract: "Software is rapidly moving from the desktop to the Web. The Web provides a generic user interface that allows ubiquitous access, instant collaboration, integration with other online services, and avoids installation and configuration on desktop computers. For software development, the Web presents a shift away from developer workstations as a silo, and has the promise of closer collaboration and improved feedback through innovations in Web-based interactive development environments (IDEs). Moving IDEs to the Web is not just a matter of porting desktop IDEs; a fundamental reconsideration of the IDE architecture is necessary in order to realize the full potential that the combination of modern IDEs and the Web can offer. This paper discusses research challenges and opportunities in this area, guided by a pilot study of a web IDE implementation." links: doi: "http://doi.acm.org/10.1145/2384592.2384603" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsVKV12" technicalreport: "https://researchr.org/publication/preprint-KatsVKV12" researchr: "https://researchr.org/publication/KatsVKV12" cites: 0 citedby: 0 pages: "99-116" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsVKV12" - title: "Migrating custom DSL implementations to a language workbench (tool demo)" author: - name: "Jasper Denkers" link: "https://jasperdenkers.com" - name: "Louis van Gool" link: "https://researchr.org/alias/louis-van-gool" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.1145/3276604.3276608" abstract: "We present a tool architecture that supports migrating custom domain-specific language (DSL) implementations to a language workbench. We demonstrate an implementation of this architecture for models in the domains of defining component interfaces (IDL) and modeling system behavior (OIL) which are developed and used at a digital printer manufacturing company. Increasing complexity and the lack of DSL syntax and IDE support for existing implementations in Python based on XML syntax hindered their evolution and adoption. A reimplementation in Spoofax using modular language definition enables composition between IDL and OIL and introduces more concise DSL syntax and IDE support. The presented tool supports migrating to new implementations while being backward compatible with existing syntax and related tooling." links: doi: "https://doi.org/10.1145/3276604.3276608" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/DenkersGV18" researchr: "https://researchr.org/publication/DenkersGV18" cites: 0 citedby: 0 pages: "205-209" booktitle: "SLE" kind: "inproceedings" key: "DenkersGV18" - title: "Finding bugs in program generators by dynamic analysis of syntactic language constraints" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2014" doi: "http://doi.acm.org/10.1145/2584469.2584474" abstract: "Program generators and transformations are hard to implement correctly, because the implementation needs to generically describe how to construct programs, for example, using templates or rewrite rules. We apply dynamic analysis to program generators in order to support developers in finding bugs and identifying the source of the bug. Our analysis focuses on syntactic language constraints and checks that generated programs are syntactically well-formed. To retain a language's grammar as the unique specification of the language's syntax, we devised mechanisms to derive the analysis from the grammar. Moreover, we designed a run-time system to support the modular activation/deactivation of the analysis, so that generators do not require adaption. We have implemented the analysis for the Stratego term-rewriting language and applied it in case studies based on Spoofax and SugarJ." links: doi: "http://doi.acm.org/10.1145/2584469.2584474" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/aosd/ErdwegVMV14" researchr: "https://researchr.org/publication/ErdwegVMV14-demo" cites: 0 citedby: 0 pages: "17-20" booktitle: "AOSD" kind: "inproceedings" key: "ErdwegVMV14-demo" - 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: "Bicategories in univalent foundations" author: - name: "Benedikt Ahrens" link: "https://researchr.org/alias/benedikt-ahrens" - name: "Dan Frumin" link: "https://researchr.org/alias/dan-frumin" - name: "Marco Maggesi" link: "https://researchr.org/alias/marco-maggesi" - name: "Niccolò Veltri" link: "https://researchr.org/alias/niccol%C3%B2-veltri" - name: "Niels van der Weide" link: "https://researchr.org/alias/niels-van-der-weide" year: "2021" doi: "https://doi.org/10.1017/S0960129522000032" links: doi: "https://doi.org/10.1017/S0960129522000032" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/mscs/AhrensFMVW21" researchr: "https://researchr.org/publication/AhrensFMVW21" cites: 0 citedby: 0 journal: "mscs" volume: "31" number: "10" pages: "1232-1269" kind: "article" key: "AhrensFMVW21" - title: "Definitional proof-irrelevance without K" author: - name: "Gaëtan Gilbert" link: "https://researchr.org/alias/ga%C3%ABtan-gilbert" - name: "Jesper Cockx" link: "https://jesper.sikanda.be" - name: "Matthieu Sozeau" link: "https://researchr.org/alias/matthieu-sozeau" - name: "Nicolas Tabareau" link: "https://researchr.org/alias/nicolas-tabareau" year: "2019" doi: "https://dl.acm.org/citation.cfm?id=3290316" links: doi: "https://dl.acm.org/citation.cfm?id=3290316" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/GilbertCST19" researchr: "https://researchr.org/publication/GilbertCST19" cites: 0 citedby: 0 journal: "PACMPL" volume: "3" kind: "article" key: "GilbertCST19" - title: "Special issue on Partial Evaluation and Program Manipulation (selected papers from PEPM 2007)" author: - name: "Ganesan Ramalingam" link: "http://research.microsoft.com/en-us/um/people/grama/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" month: "June" doi: "http://dx.doi.org/10.1016/j.scico.2011.01.001" links: doi: "http://dx.doi.org/10.1016/j.scico.2011.01.001" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/RamalingamV11" tags: - "partial evaluation" researchr: "https://researchr.org/publication/RamalingamV11" cites: 0 citedby: 0 journal: "SCP" volume: "76" number: "6" pages: "467-468" kind: "article" key: "RamalingamV11" - title: "Special Issue on Generative Programming and Component Engineering (Selected Papers from GPCE 2004/2005)" author: - name: "Robert Glück" link: "http://www.diku.dk/hjemmesider/ansatte/glueck/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" month: "May" doi: "http://dx.doi.org/10.1016/j.scico.2011.02.001" links: doi: "http://dx.doi.org/10.1016/j.scico.2011.02.001" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/GluckV11" tags: - "generative programming" - "programming" researchr: "https://researchr.org/publication/GluckV11" cites: 0 citedby: 0 journal: "SCP" volume: "76" number: "5" pages: "347-348" kind: "article" key: "GluckV11" - title: "Software deployment in a dynamic cloud: From device to service orientation in a hospital environment" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" year: "2009" month: "May" doi: "http://dx.doi.org/10.1109/CLOUD.2009.5071534" abstract: "Hospital environments are currently primarily device-oriented: software services are installed, often manually, on specific devices. For instance, an application to view MRI scans may only be available on a limited number of workstations. The medical world is changing to a service-oriented environment, which means that every software service should be available on every device. However, these devices have widely varying capabilities, ranging from powerful workstations to PDAs, and high-bandwidth local machines to low-bandwidth remote machines. To support running applications in such an environment, we need to treat the hospital machines as a cloud, where components of the application are automatically deployed to machines in the cloud with the required capabilities and connectivity. In this paper, we suggest an architecture for applications in such a cloud, in which components are reliably and automatically deployed on the basis of a declarative model of the application using the Nix package manager." links: doi: "http://dx.doi.org/10.1109/CLOUD.2009.5071534" tags: - "deployment" - "software architecture" - "software components" - "distributed deployment" - "meta-model" - "architecture" - "software deployment" - "Nix" - "software component" - "Meta-Environment" researchr: "https://researchr.org/publication/BurgDV09" cites: 0 citedby: 0 booktitle: "CLOUD" kind: "inproceedings" key: "BurgDV09" - title: "Sound type-dependent syntactic language extension" author: - name: "Florian Lorenzen" link: "https://researchr.org/alias/florian-lorenzen" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2016" doi: "http://doi.acm.org/10.1145/2837614.2837644" links: doi: "http://doi.acm.org/10.1145/2837614.2837644" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/popl/LorenzenE16" researchr: "https://researchr.org/publication/LorenzenE16" cites: 0 citedby: 0 pages: "204-216" booktitle: "POPL" kind: "inproceedings" key: "LorenzenE16" - title: "FlowSpec: A Declarative Specification Language for Intra-Procedural Flow-Sensitive Data-Flow Analysis" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.1016/j.cola.2019.100924" abstract: "Data-flow analysis is the static analysis of programs to estimate their approximate run-time behavior or approximate intermediate run-time values. It is an integral part of modern language specifications and compilers. In the specification of static semantics of programming languages, the concept of data-flow allows the description of well-formedness such as definite assignment of a local variable before its first use. In the implementation of compiler back-ends, data-flow analyses inform optimizations. Data-flow analysis has an established theoretical foundation. What lags behind is implementations of data-flow analysis in compilers, which are usually ad-hoc. This makes such implementations difficult to extend and maintain. In previous work researchers have proposed higher-level formalisms suitable for whole-program analysis in a separate tool, incremental analysis within editors, or bound to a specific intermediate representation. In this paper, we present FlowSpec, an executable formalism for specification of data-flow analysis. FlowSpec is a domain-specific language that enables direct and concise specification of data-flow analysis for programming languages, designed to express flow-sensitive, intra-procedural analyses. We define the formal semantics of FlowSpec in terms of monotone frameworks. We describe the design of FlowSpec using examples of standard analyses. We also include a description of our implementation of FlowSpec. In a case study we evaluate FlowSpec with the static analyses for Green-Marl, a domain-specific programming language for graph analytics." links: doi: "https://doi.org/10.1016/j.cola.2019.100924" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/vlc/SmitsWV20" researchr: "https://researchr.org/publication/SmitsWV20" cites: 0 citedby: 0 journal: "JCL (JVLC)" volume: "57" pages: "100924" kind: "article" key: "SmitsWV20" - title: "Weaving web applications with WebDSL: (demonstration)" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://doi.acm.org/10.1145/1639950.1640020" abstract: "WebDSL is a domain-specific language for the development of web applications that integrates data-models, user-interface models, actions, validation, access control, and workflow. The compiler verifies the consistency of applications and generates complete implementations in Java or Python. We illustrate the key concepts of the language with a small web application." links: doi: "http://doi.acm.org/10.1145/1639950.1640020" tags: - "data validation" - "WebDSL" - "Java" - "completeness" - "data-flow language" - "meta-model" - "modeling language" - "modeling" - "language modeling" - "model-driven development" - "data-flow" - "weaving" - "compiler" - "web applications" - "consistency" - "Meta-Environment" - "access control" - "workflow" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenV09-demo" cites: 0 citedby: 0 pages: "797-798" booktitle: "OOPSLA" kind: "inproceedings" key: "GroenewegenV09-demo" - title: "IceDust 2: Derived Bidirectional Relations and Calculation Strategy Composition" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2017.14" abstract: "Derived values are values calculated from base values. They can be expressed with views in relational databases, or with expressions in incremental or reactive programming. However, relational views do not provide multiplicity bounds, and incremental and reactive programming require significant boilerplate code in order to encode bidirectional derived values. Moreover, the composition of various strategies for calculating derived values is either disallowed, or not checked for producing derived values which will be consistent with the derived values they depend upon. In this paper we present IceDust2, an extension of the declarative data modeling language IceDust with derived bidirectional relations with multiplicity bounds and support for statically checked composition of calculation strategies. Derived bidirectional relations, multiplicity bounds, and calculation strategies all influence runtime behavior of changes to data, leading to hundreds of possible behavior definitions. IceDust2 uses a product-line based code generator to avoid explicitly defining all possible combinations, making it easier to reason about correctness. The type system allows only sound composition of strategies and guarantees multiplicity bounds. Finally, our case studies validate the usability of IceDust2 in applications. " links: doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2017.14" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/HarkesV17" researchr: "https://researchr.org/publication/HarkesV17" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "HarkesV17" - title: "Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2016, part of SPLASH 2016, Amsterdam, The Netherlands, October 30 - November 4, 2016" year: "2016" doi: "http://doi.acm.org/10.1145/2983990" links: doi: "http://doi.acm.org/10.1145/2983990" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/2016" researchr: "https://researchr.org/publication/oopsla-2016" cites: 0 citedby: 0 booktitle: "Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2016, part of SPLASH 2016, Amsterdam, The Netherlands, October 30 - November 4, 2016" conference: "OOPSLA" editor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Yannis Smaragdakis" link: "https://researchr.org/alias/yannis-smaragdakis" publisher: "ACM" isbn: "978-1-4503-4444-9" kind: "proceedings" key: "oopsla-2016" - 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: "Intrinsically typed compilation with nameless labels" author: - name: "Arjen Rouvoet" link: "https://www.linkedin.com/in/arjen-rouvoet-760347a5/" - name: "Robbert Krebbers" link: "https://researchr.org/alias/robbert-krebbers" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2021" doi: "https://doi.org/10.1145/3434303" abstract: "To avoid compilation errors it is desirable to verify that a compiler is type correct—i.e., given well-typed source code, it always outputs well-typed target code. This can be done intrinsically by implementing it as a function in a dependently typed programming language, such as Agda. This function manipulates data types of well-typed source and target programs, and is therefore type correct by construction. A key challenge in implementing an intrinsically typed compiler is the representation of labels in bytecode. Because label names are global, bytecode typing appears to be inherently a non-compositional, whole-program property. The individual operations of the compiler do not preserve this property, which requires the programmer to reason about labels, which spoils the compiler definition with proof terms. In this paper, we address this problem using a new nameless and co-contextual representation of typed global label binding, which is compositional. Our key idea is to use linearity to ensure that all labels are defined exactly once. To write concise compilers that manipulate programs in our representation, we develop a linear, dependently typed, shallowly embedded language in Agda, based on separation logic. We show that this language enables the concise specification and implementation of intrinsically typed operations on bytecode, culminating in an intrinsically typed compiler for a language with structured control-flow." links: doi: "https://doi.org/10.1145/3434303" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/RouvoetKV21" tags: - "Intrinsic-Verification" researchr: "https://researchr.org/publication/RouvoetKV21" cites: 0 citedby: 0 journal: "PACMPL" volume: "5" number: "POPL" pages: "1-28" kind: "article" key: "RouvoetKV21" - title: "ReLoC: A Mechanised Relational Logic for Fine-Grained Concurrency" author: - name: "Dan Frumin" link: "https://researchr.org/alias/dan-frumin" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Lars Birkedal" link: "https://researchr.org/alias/lars-birkedal" year: "2018" doi: "http://doi.acm.org/10.1145/3209108.3209174" links: doi: "http://doi.acm.org/10.1145/3209108.3209174" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/lics/FruminKB18" researchr: "https://researchr.org/publication/FruminKB18" cites: 0 citedby: 0 pages: "442-451" booktitle: "lics" kind: "inproceedings" key: "FruminKB18" - title: "Multi-purpose Syntax Definition with SDF3" author: - name: "Luis Eduardo de Souza Amorim" link: "https://www.linkedin.com/profile/view?id=136481548" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.1007/978-3-030-58768-0_1" abstract: "SDF3 is a syntax definition formalism that extends plain context-free grammars with features such as constructor declarations, declarative disambiguation rules, character-level grammars, permissive syntax, layout constraints, formatting templates, placeholder syntax, and modular composition. These features support the multi-purpose interpretation of syntax definitions, including derivation of type schemas for abstract syntax tree representations, scannerless generalized parsing of the full class of context-free grammars, error recovery, layout-sensitive parsing, parenthesization and formatting, and syntactic completion. This paper gives a high level overview of SDF3 by means of examples and provides a guide to the literature for further details." links: doi: "https://doi.org/10.1007/978-3-030-58768-0_1" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sefm/AmorimV20" researchr: "https://researchr.org/publication/AmorimV20" cites: 0 citedby: 0 pages: "1-23" booktitle: "SEFM" kind: "inproceedings" key: "AmorimV20" - title: "Semi-automated Reasoning About Non-determinism in C Expressions" author: - name: "Dan Frumin" link: "https://researchr.org/alias/dan-frumin" - name: "Léon Gondelman" link: "https://researchr.org/alias/l%C3%A9on-gondelman" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" year: "2019" doi: "https://doi.org/10.1007/978-3-030-17184-1_3" links: doi: "https://doi.org/10.1007/978-3-030-17184-1_3" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/esop/FruminGK19" researchr: "https://researchr.org/publication/FruminGK19" cites: 0 citedby: 0 pages: "60-87" booktitle: "ESOP" kind: "inproceedings" key: "FruminGK19" - title: "The taming of the rew: a type theory with computational assumptions" author: - name: "Jesper Cockx" link: "https://jesper.sikanda.be" - name: "Nicolas Tabareau" link: "https://researchr.org/alias/nicolas-tabareau" - name: "Théo Winterhalter" link: "https://researchr.org/alias/th%C3%A9o-winterhalter" year: "2021" doi: "https://doi.org/10.1145/3434341" links: doi: "https://doi.org/10.1145/3434341" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/CockxTW21" researchr: "https://researchr.org/publication/CockxTW21" cites: 0 citedby: 0 journal: "PACMPL" volume: "5" number: "POPL" pages: "1-29" kind: "article" key: "CockxTW21" - title: "Dependently Typed Languages in Statix" author: - name: "Jonathan Brouwer" link: "https://researchr.org/alias/jonathan-brouwer" - name: "Jesper Cockx" link: "https://jesper.sikanda.be" - name: "Aron Zwaan" link: "https://aronzwaan.github.io" year: "2023" doi: "https://doi.org/10.4230/OASIcs.EVCS.2023.6" links: doi: "https://doi.org/10.4230/OASIcs.EVCS.2023.6" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/birthday/BrouwerCZ23" researchr: "https://researchr.org/publication/BrouwerCZ23" cites: 0 citedby: 0 booktitle: "BIRTHDAY" kind: "inproceedings" key: "BrouwerCZ23" - title: "Towards improved GADT reasoning in Scala" author: - name: "Lionel Parreaux" link: "https://researchr.org/alias/lionel-parreaux" - name: "Aleksander Boruch-Gruszecki" link: "https://researchr.org/alias/aleksander-boruch-gruszecki" - name: "Paolo G. Giarrusso" link: "https://www.informatik.uni-marburg.de/~pgiarrusso/" year: "2019" doi: "https://doi.org/10.1145/3337932.3338813" links: doi: "https://doi.org/10.1145/3337932.3338813" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/scala/ParreauxBG19" researchr: "https://researchr.org/publication/ParreauxBG19" cites: 0 citedby: 0 pages: "12-16" booktitle: "SCALA" kind: "inproceedings" key: "ParreauxBG19" - title: "Intrinsically-typed definitional interpreters for imperative languages" author: - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Arjen Rouvoet" link: "https://www.linkedin.com/in/arjen-rouvoet-760347a5/" - name: "Andrew P. Tolmach" link: "http://www.cs.pdx.edu/~apt" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "http://doi.acm.org/10.1145/3158104" abstract: " A definitional interpreter defines the semantics of an object language in terms of the (well-known) semantics of a host language, enabling understanding and validation of the semantics through execution. Combining a definitional interpreter with a separate type system requires a separate type safety proof. An alternative approach, at least for pure object languages, is to use a dependently-typed language to encode the object language type system in the definition of the abstract syntax. Using such intrinsically-typed abstract syntax definitions allows the host language type checker to verify automatically that the interpreter satisfies type safety. Does this approach scale to larger and more realistic object languages, and in particular to languages with mutable state and objects? In this paper, we describe and demonstrate techniques and libraries in Agda that successfully scale up intrinsically-typed definitional interpreters to handle rich object languages with non-trivial binding structures and mutable state. While the resulting interpreters are certainly more complex than the simply-typed λ-calculus interpreter we start with, we claim that they still meet the goals of being concise, comprehensible, and executable, while guaranteeing type safety for more elaborate object languages. We make the following contributions: (1) A dependent-passing style technique for hiding the weakening of indexed values as they propagate through monadic code. (2) An Agda library for programming with scope graphs and frames, which provides a uniform approach to dealing with name binding in intrinsically-typed interpreters. (3) Case studies of intrinsically-typed definitional interpreters for the simply-typed λ-calculus with references (STLC+Ref) and for a large subset of Middleweight Java (MJ). " links: doi: "http://doi.acm.org/10.1145/3158104" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/PoulsenRTKV18" technicalreport: "https://researchr.org/publication/preprint-PoulsenRTKV18" tags: - "Intrinsic-Verification" researchr: "https://researchr.org/publication/PoulsenRTKV18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "POPL" kind: "article" key: "PoulsenRTKV18" - title: "Gradually Typing Strategies - Artifact" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" month: "September" doi: "10.5281/zenodo.4032445" abstract: "This is the artifact for the paper Gradually Typing Strategies, accepted at International Conference on Software Language Engineering." links: successor: "https://researchr.org/publication/SmitsV20" "url": "https://doi.org/10.5281/zenodo.4032445" researchr: "https://researchr.org/publication/SmitsV20-Artifact" cites: 0 citedby: 0 howpublished: "Zenodo" kind: "misc" key: "SmitsV20-Artifact" - title: "Configuration Space Exploration for Digital Printing Systems" author: - name: "Jasper Denkers" link: "https://jasperdenkers.com" - name: "Marvin Brunner" link: "https://researchr.org/alias/marvin-brunner" - name: "Louis van Gool" link: "https://researchr.org/alias/louis-van-gool" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2021" doi: "https://doi.org/10.1007/978-3-030-92124-8_24" links: doi: "https://doi.org/10.1007/978-3-030-92124-8_24" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sefm/DenkersBGV21" researchr: "https://researchr.org/publication/DenkersBGV21" cites: 0 citedby: 0 pages: "423-442" booktitle: "SEFM" kind: "inproceedings" key: "DenkersBGV21" - title: "Declarative Access Control for WebDSL: Combining Language Integration and Separation of Concerns" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1109/ICWE.2008.15" abstract: "In this paper, we present the extension of WebDSL, a domain-specific language for web application development, with abstractions for declarative definition of access control. The extension supports the definition of a wide range of access control policies concisely and transparently as a separate concern. In addition to regulating the access to pages and actions, access control rules are used to infer navigation options not accessible to the current user, preventing the presentation of inaccessible links. The extension is an illustration of a general approach to the design of domain-specific languages for different technical domains to support separation of concerns in application development, while preserving linguistic integration. This approach is realized by means of a transformational semantics that weaves separately defined aspects into an integrated implementation. " links: doi: "http://dx.doi.org/10.1109/ICWE.2008.15" "webdsl": "http://webdsl.org" tags: - "WebDSL" - "semantics" - "rule-based" - "separation of concerns" - "transformation language" - " action semantics" - "language design" - "weaving" - "rules" - "web applications" - "DSL" - "abstraction" - "access control policies" - "access control" - "aspect weaving" - "design" - "role-based access control" - "systematic-approach" - "transformation" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenV08" cites: 26 citedby: 7 pages: "175-188" booktitle: "ICWE" kind: "inproceedings" key: "GroenewegenV08" - title: "Heterogeneous Coupled Evolution of Software Languages" author: - name: "Sander Vermolen" link: "http://www.sandervermolen.nl" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-87875-9_44" abstract: "As most software artifacts, meta-models can evolve. Their evolution requires conforming models to co-evolve along with them. Coupled evolution supports this. Its applicability is not limited to the modeling domain. Other domains are for example evolving grammars or database schemas. Existing approaches to coupled evolution focus on a single, homogeneous domain. They solve the co-evolution problems locally and repeatedly. In this paper we present a systematic, heterogeneous approach to coupled evolution. It provides an automatically derived domain specific transformation language; a means of executing transformations at the top level; a derivation of the coupled bottom level transformation; and it allows for generic abstractions from elementary transformations. The feasibility of the architecture is evaluated by applying it to data model evolution." links: doi: "http://dx.doi.org/10.1007/978-3-540-87875-9_44" tags: - "model-to-model transformation" - "software architecture" - "coupled" - "data-flow language" - "meta-model" - "XML" - "evolution" - "modeling language" - "heterogeneous" - "XML Schema" - "languages" - "modeling" - "transformation language" - "coupled evolution" - "architecture" - "language modeling" - "model" - "data-flow" - "software evolution" - "format evolution" - "source-to-source" - "model transformation" - "database" - "abstraction" - "software languages" - "Meta-Environment" - "systematic-approach" - "meta-objects" - "transformation" - "grammar" - "domain-specific language" researchr: "https://researchr.org/publication/VermolenV08" cites: 0 citedby: 3 pages: "630-644" booktitle: "MoDELS" kind: "inproceedings" key: "VermolenV08" - title: "Domain-Specific Languages for Composable Editor Plugins" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1016/j.entcs.2010.08.038" abstract: "Modern IDEs increase developer productivity by incorporating many different kinds of editor services. These can be purely syntactic, such as syntax highlighting, code folding, and an outline for navigation; or they can be based on the language semantics, such as in-line type error reporting and resolving identifier declarations. Building all these services from scratch requires both the extensive knowledge of the sometimes complicated and highly interdependent APIs and extension mechanisms of an IDE framework, and an in-depth understanding of the structure and semantics of the targeted language. This paper describes Spoofax/IMP, a meta-tooling suite that provides high-level domain-specific languages for describing editor services, relieving editor developers from much of the framework-specific programming. Editor services are defined as composable modules of rules coupled to a modular SDF grammar. The composability provided by the SGLR parser and the declaratively defined services allows embedded languages and language extensions to be easily formulated as additional rules extending an existing language definition. The service definitions are used to generate Eclipse editor plugins. We discuss two examples: an editor plugin for WebDSL, a domain-specific language for web applications, and the embedding of WebDSL in Stratego, used for expressing the (static) semantic rules of WebDSL." links: doi: "http://dx.doi.org/10.1016/j.entcs.2010.08.038" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/entcs/KatsKV10" tags: - "C++" - "domain-specific language" researchr: "https://researchr.org/publication/KatsKV10" cites: 0 citedby: 0 journal: "ENTCS" volume: "253" number: "7" pages: "149-163" kind: "article" key: "KatsKV10" - title: "Declarative Name Binding and Scope Rules" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - 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: "http://dx.doi.org/10.1007/978-3-642-36089-3_18" abstract: "In textual software languages, names are used to reference elements like variables, methods, classes, etc. Name resolution analyses these names in order to establish references between definition and use sites of elements. In this paper, we identify recurring patterns for name bindings in programming languages and introduce a declarative metalanguage for the specification of name bindings in terms of namespaces, definition sites, use sites, and scopes. Based on such declarative name binding specifications, we provide a language-parametric algorithm for static name resolution during compile-time. We discuss the integration of the algorithm into the Spoofax Language Workbench and show how its results can be employed in semantic editor services like reference resolution, constraint checking, and content completion." links: doi: "http://dx.doi.org/10.1007/978-3-642-36089-3_18" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/KonatKWV12" researchr: "https://researchr.org/publication/KonatKWV12" cites: 0 citedby: 0 pages: "311-331" booktitle: "SLE" kind: "inproceedings" key: "KonatKWV12" - title: "When Frameworks Let You Down. Platform-Imposed Constraints on the Design and Evolution of Domain-Specific Languages" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" month: "October" abstract: "Application frameworks encapsulate domain knowledge in a reusable library, providing abstractions for a particular domain. As such, they can form the basis for domain-specific languages, which may offer notational constructs, static analysis, and optimizations specific for the domain. Additional abstractions can be incrementally added on top of a domain-specific, following an inductive approach towards its design, evolving the language as new domain insights are acquired. A problem arises when such additions do not align well with the underlying framework. In this paper, we provide different examples of this problem and describe scenarios of dealing with it." links: "technical report": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-039.pdf" tags: - "framework" - "optimization" - "WebDSL" - "application framework" - "domain analysis" - "analysis" - "language design" - "static analysis" - "constraints" - "reuse" - "software evolution" - "C++" - "DSL" - "abstraction" - "incremental" - "design" - "systematic-approach" - "domain-specific language" researchr: "https://researchr.org/publication/GroenewegenHKV08-DSM" cites: 0 citedby: 2 booktitle: "DSM" kind: "inproceedings" key: "GroenewegenHKV08-DSM" - 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: "Migrating business logic to an incremental computing DSL: a case study" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Elmer van Chastelet" link: "https://researchr.org/profile/elmervanchastelet/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.1145/3276604.3276617" abstract: " To provide empirical evidence to what extent migration of business logic to an incremental computing language (ICL) is useful, we report on a case study on a learning management system. Our contribution is to analyze a real-life project, how migrating business logic to an ICL affects information system validatability, performance, and development effort. We find that the migrated code has better validatability; it is straightforward to establish that a program ‘does the right thing’. Moreover, the performance is better than the previous hand-written incremental computing solution. The effort spent on modeling business logic is reduced, but integrating that logic in the application and tuning performance takes considerable effort. Thus, the ICL separates the concerns of business logic and performance, but does not reduce effort. " links: doi: "https://doi.org/10.1145/3276604.3276617" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/HarkesCV18" researchr: "https://researchr.org/publication/HarkesCV18" cites: 0 citedby: 0 pages: "83-96" booktitle: "SLE" kind: "inproceedings" key: "HarkesCV18" - 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: "Knowing When to Ask: Artifact" author: - name: "Arjen Rouvoet" link: "https://www.linkedin.com/in/arjen-rouvoet-760347a5/" - name: "Hendrik van Antwerpen" link: "https://researchr.org/alias/hendrik-van-antwerpen" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Robbert Krebbers" link: "https://researchr.org/alias/robbert-krebbers" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" month: "oct" doi: "https://doi.org/10.5281/zenodo.4068065" links: doi: "https://doi.org/10.5281/zenodo.4068065" "url": "https://doi.org/10.5281/zenodo.4068065" researchr: "https://researchr.org/publication/RouvoetAPKV20-artifact" cites: 0 citedby: 0 version: "1.0" kind: "software" key: "RouvoetAPKV20-artifact" - title: "Extracting the power of dependent types" author: - name: "Artjoms Sinkarovs" link: "https://researchr.org/alias/artjoms-sinkarovs" - name: "Jesper Cockx" link: "https://jesper.sikanda.be" year: "2021" doi: "https://doi.org/10.1145/3486609.3487201" links: doi: "https://doi.org/10.1145/3486609.3487201" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/gpce/SinkarovsC21" researchr: "https://researchr.org/publication/SinkarovsC21" cites: 0 citedby: 0 pages: "83-95" booktitle: "GPCE" kind: "inproceedings" key: "SinkarovsC21" - title: "Incremental type-checking for free: using scope graphs to derive incremental type-checkers" author: - name: "Aron Zwaan" link: "https://aronzwaan.github.io" - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2022" doi: "https://doi.org/10.1145/3563303" links: doi: "https://doi.org/10.1145/3563303" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/ZwaanAV22" researchr: "https://researchr.org/publication/ZwaanAV22" cites: 0 citedby: 0 journal: "PACMPL" volume: "6" number: "OOPSLA2" pages: "424-448" kind: "article" key: "ZwaanAV22" - title: "CPL: a core language for cloud computing" author: - name: "Oliver Bracevac" link: "https://researchr.org/alias/oliver-bracevac" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Guido Salvaneschi" link: "https://researchr.org/alias/guido-salvaneschi" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2016" doi: "http://doi.acm.org/10.1145/2889443.2889452" links: doi: "http://doi.acm.org/10.1145/2889443.2889452" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/aosd/BracevacESM16" researchr: "https://researchr.org/publication/BracevacESM16" cites: 0 citedby: 0 pages: "94-105" booktitle: "AOSD" kind: "inproceedings" key: "BracevacESM16" - title: "Scopes Describe Frames: A Uniform Model for Memory Layout in Dynamic Semantics" author: - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - 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" year: "2016" doi: "10.4230/LIPIcs.ECOOP.2016.20" abstract: "Semantic specifications do not make a systematic connection between the names and scopes in the static structure of a program and memory layout, and access during its execution. In this paper, we introduce a systematic approach to the alignment of names in static semantics and memory in dynamic semantics, building on the scope graph framework for name resolution. We develop a uniform memory model consisting of frames that instantiate the scopes in the scope graph of a program. This provides a language-independent correspondence between static scopes and run-time memory layout, and between static resolution paths and run-time memory access paths. The approach scales to a range of binding features, supports straightforward type soundness proofs, and provides the basis for a language-independent specification of sound reachability-based garbage collection. " links: dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/PoulsenNTV16" technicalreport: "https://researchr.org/publication/TUD-SERG-2016-010" "pdf": "http://drops.dagstuhl.de/opus/volltexte/2016/6114/pdf/LIPIcs-ECOOP-2016-20.pdf" researchr: "https://researchr.org/publication/PoulsenNTV16" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "PoulsenNTV16" - title: "Parameterized Verification under Release Acquire is PSPACE-complete" author: - name: "Shankara Narayanan Krishna" link: "https://researchr.org/alias/shankara-narayanan-krishna" - name: "Adwait Godbole" link: "https://researchr.org/alias/adwait-godbole" - name: "Roland Meyer 0001" link: "https://researchr.org/alias/roland-meyer-0001" - name: "Soham Chakraborty" link: "https://researchr.org/alias/soham-chakraborty" year: "2022" doi: "https://doi.org/10.1145/3519270.3538445" links: doi: "https://doi.org/10.1145/3519270.3538445" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/podc/KrishnaG0C22" researchr: "https://researchr.org/publication/KrishnaG0C22" cites: 0 citedby: 0 pages: "482-492" booktitle: "podc" kind: "inproceedings" key: "KrishnaG0C22" - title: "Compositional soundness proofs of abstract interpreters" author: - name: "Sven Keidel" link: "https://researchr.org/alias/sven-keidel" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2018" doi: "https://doi.org/10.1145/3236767" links: doi: "https://doi.org/10.1145/3236767" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/KeidelPE18" researchr: "https://researchr.org/publication/KeidelPE18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "ICFP" kind: "article" key: "KeidelPE18" - title: "Incremental \\lambda -Calculus in Cache-Transfer Style - Static Memoization by Program Transformation" author: - name: "Paolo G. Giarrusso" link: "https://www.informatik.uni-marburg.de/~pgiarrusso/" - name: "Yann Régis-Gianas" link: "https://researchr.org/alias/yann-r%C3%A9gis-gianas" - name: "Philipp Schuster" link: "https://researchr.org/alias/philipp-schuster" year: "2019" doi: "https://doi.org/10.1007/978-3-030-17184-1_20" links: doi: "https://doi.org/10.1007/978-3-030-17184-1_20" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/esop/GiarrussoRS19" researchr: "https://researchr.org/publication/GiarrussoRS19" cites: 0 citedby: 0 pages: "553-580" booktitle: "ESOP" kind: "inproceedings" key: "GiarrussoRS19" - 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: "Modular specification and dynamic enforcement of syntactic language constraints when generating code" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2014" doi: "http://doi.acm.org/10.1145/2577080.2577089" abstract: "A key problem in metaprogramming and specifically in generative programming is to guarantee that generated code is well-formed with respect to the context-free and context-sensitive constraints of the target language. We propose typesmart constructors as a dynamic approach to enforcing the well-formedness of generated code. A typesmart constructor is a function that is used in place of a regular constructor to create values, but it may reject the creation of values if the given data violates some language-specific constraint. While typesmart constructors can be implemented individually, we demonstrate how to derive them automatically from a grammar, so that the grammar remains the sole specification of a language's syntax and is not duplicated. We have integrated support for typesmart constructors into the run-time system of Stratego to enforce usage of typesmart constructors implicitly whenever a regular constructor is called. We evaluate the applicability, performance, and usefulness of typesmart constructors for syntactic constraints in a compiler for MiniJava developed with Spoofax and in various language extensions of Java and Haskell implemented with SugarJ and SugarHaskell." links: doi: "http://doi.acm.org/10.1145/2577080.2577089" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/aosd/ErdwegVMV14a" researchr: "https://researchr.org/publication/ErdwegVMV14" cites: 0 citedby: 0 pages: "241-252" booktitle: "AOSD" kind: "inproceedings" key: "ErdwegVMV14" - title: "A Co-contextual Type Checker for Featherweight Java " author: - name: " Edlira Kuci" link: "https://researchr.org/alias/edlira-kuci" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Oliver Bracevac" link: "https://researchr.org/alias/oliver-bracevac" - name: "Andi Bejleri" link: "https://researchr.org/alias/andi-bejleri" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2017" doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2017.18" links: doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2017.18" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/KuciEBBM17" researchr: "https://researchr.org/publication/KuciEBBM17" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "KuciEBBM17" - title: "Scopes as types" author: - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Arjen Rouvoet" link: "https://www.linkedin.com/in/arjen-rouvoet-760347a5/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.1145/3276484" abstract: "Scope graphs are a promising generic framework to model the binding structures of programming languages, bridging formalization and implementation, supporting the definition of type checkers and the automation of type safety proofs. However, previous work on scope graphs has been limited to simple, nominal type systems. In this paper, we show that viewing scopes as types enables us to model the internal structure of types in a range of non-simple type systems (including structural records and generic classes) using the generic representation of scopes. Further, we show that relations between such types can be expressed in terms of generalized scope graph queries. We extend scope graphs with scoped relations and queries. We introduce Statix, a new domain-specific meta-language for the specification of static semantics, based on scope graphs and constraints. We evaluate the scopes as types approach and the Statix design in case studies of the simply-typed lambda calculus with records, System F, and Featherweight Generic Java." links: doi: "https://doi.org/10.1145/3276484" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/AntwerpenPRV18" researchr: "https://researchr.org/publication/AntwerpenPRV18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "OOPSLA" kind: "article" key: "AntwerpenPRV18" - title: "Scalable incremental building with dynamic task dependencies" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.1145/3238147.3238196" abstract: "Incremental build systems are essential for fast, reproducible software builds. Incremental build systems enable short feedback cycles when they capture dependencies precisely and selectively execute build tasks efficiently. A much overlooked feature of build systems is the expressiveness of the scripting language, which directly influences the maintainability of build scripts. In this paper, we present a new incremental build algorithm that allows build engineers to use a full-fledged programming language with explicit task invocation, value and file inspection facilities, and conditional and iterative language constructs. In contrast to prior work on incrementality for such programmable builds, our algorithm scales with the number of tasks affected by a change and is independent of the size of the software project being built. Specifically, our algorithm accepts a set of changed files, transitively detects and re-executes affected build tasks, but also accounts for new task dependencies discovered during building. We have evaluated the performance of our algorithm in a real-world case study and confirm its scalability." links: doi: "https://doi.org/10.1145/3238147.3238196" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/kbse/KonatEV18" researchr: "https://researchr.org/publication/KonatEV18" cites: 0 citedby: 0 pages: "76-86" booktitle: "ASE" kind: "inproceedings" key: "KonatEV18" - title: "PixieDust: Declarative Incremental User Interface Rendering Through Static Dependency Tracking" author: - name: "Nick ten Veen" link: "https://www.linkedin.com/in/nicktenveen/" - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "http://doi.acm.org/10.1145/3184558.3185978" abstract: " Modern web applications are interactive. Reactive programming languages and libraries are the state-of-the-art approach for declara- tively specifying these interactive applications. However, programs written with these approaches contain error-prone boilerplate code for e ciency reasons. In this paper we present PixieDust, a declarative user-interface language for browser-based applications. PixieDust uses static de- pendency analysis to incrementally update a browser-DOM at run- time, without boilerplate code. We demonstrate that applications in PixieDust contain less boilerplate code than state-of-the-art ap- proaches, while achieving on-par performance. " links: doi: "http://doi.acm.org/10.1145/3184558.3185978" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/www/VeenHV18" researchr: "https://researchr.org/publication/VeenHV18" cites: 0 citedby: 0 pages: "721-729" booktitle: "WWW" kind: "inproceedings" key: "VeenHV18" - title: "Declaratively defining domain-specific language debuggers" author: - name: "Ricky T. Lindeman" link: "http://swerl.tudelft.nl/bin/view/Main/WebHome" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2047862.2047885" abstract: "Tool support is vital to the effectiveness of domain-specific languages. With language workbenches, domain-specific languages and their tool support can be generated from a combined, high-level specification. This paper shows how such a specification can be extended to describe a debugger for a language. To realize this, we introduce a meta-language for coordinating the debugger that abstracts over the complexity of writing a debugger by hand. We describe the implementation of a language-parametric infrastructure for debuggers that can be instantiated based on this specification. The approach is implemented in the Spoofax language workbench and validated through realistic case studies with the Stratego transformation language and the WebDSL web programming language." links: doi: "http://doi.acm.org/10.1145/2047862.2047885" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/gpce/LindemanKV11" researchr: "https://researchr.org/publication/LindemanKV11" cites: 0 citedby: 0 pages: "127-136" booktitle: "GPCE" kind: "inproceedings" key: "LindemanKV11" - title: "Language-parametric static semantic code completion" author: - name: "Daniël A. A. Pelsmaeker" link: "https://pelsmaeker.net/" - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2022" doi: "https://doi.org/10.1145/3527329" links: doi: "https://doi.org/10.1145/3527329" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/PelsmaekerAPV22" researchr: "https://researchr.org/publication/PelsmaekerAPV22" cites: 0 citedby: 0 journal: "PACMPL" volume: "6" number: "OOPSLA" pages: "1-30" kind: "article" key: "PelsmaekerAPV22" - title: "Evaluating and comparing language workbenches: Existing results and benchmarks for the future" 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: "Laurence Tratt" link: "https://researchr.org/alias/laurence-tratt" - 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: "http://www.metacase.com/stevek.html" - 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: "2015" doi: "http://dx.doi.org/10.1016/j.cl.2015.08.007" abstract: "Language workbenches are environments for simplifying the creation and use of computer languages. The annual Language Workbench Challenge (LWC) was launched in 2011 to allow the many academic and industrial researchers in this area an opportunity to quantitatively and qualitatively compare their approaches. We first describe all four LWCs to date, before focussing on the approaches used, and results generated, during the third LWC. We give various empirical data for ten approaches from the third LWC. We present a generic feature model within which the approaches can be understood and contrasted. Finally, based on our experiences of the existing LWCs, we propose a number of benchmark problems for future LWCs." links: doi: "http://dx.doi.org/10.1016/j.cl.2015.08.007" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/cl/ErdwegSVTBCGH0L15" researchr: "https://researchr.org/publication/ErdwegSVTBCGH0L15" cites: 0 citedby: 0 journal: "Comp. Lang., Syst. \\& Struct." volume: "44" pages: "24-47" kind: "article" key: "ErdwegSVTBCGH0L15" - 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: "The Third Rewrite Engines Competition" author: - name: "Francisco Durán" link: "http://www.lcc.uma.es/~duran/" - name: "Manuel Roldán" link: "https://researchr.org/alias/manuel-rold%C3%A1n" - name: "Jean-Christophe Bach" link: "http://www.loria.fr/~bachjeje" - name: "Emilie Balland" link: "http://www.loria.fr/~balland/" - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "James R. Cordy" link: "http://research.cs.queensu.ca/~cordy/" - name: "Steven Eker" link: "http://www.csl.sri.com/people/eker/" - name: "Luc Engelen" link: "https://researchr.org/alias/luc-engelen" - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Pierre-Etienne Moreau" link: "http://www.loria.fr/~moreau/dokuwiki/doku.php" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1007/978-3-642-16310-4_16" abstract: "This paper presents the main results and conclusions of the Third Rewrite Engines Competition (REC III). This edition of the competition took place as part of the 8th Workshop on Rewriting Logic and its Applications (WRLA 2010), and the systems ASF+SDF, Maude, Stratego/XT, Tom, and TXL participated in it." links: doi: "http://dx.doi.org/10.1007/978-3-642-16310-4_16" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/wrla/DuranRBBBCEEJK10" tags: - "graph-rewriting" - "C++" - "rewriting" researchr: "https://researchr.org/publication/DuranRBBBCEEJK10" cites: 0 citedby: 0 pages: "243-261" booktitle: "WRLA" kind: "inproceedings" key: "DuranRBBBCEEJK10" - title: "Towards Incremental Compilation for Stratego" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" month: "10" abstract: "Stratego is a transformation language based on term rewriting with programmable rewriting strategies. A program in Stratego consists of named rewrite rules and strategies. When definitions have the same name, they contribute to the same rule. This works across files, thereby allowing extensibility. Due to this distribution of rules over modules, the Stratego compiler has always been a whole program compiler. Large Stratego programs are slow to compile as a result. In this work we present our approach to incremental compilation of Stratego. The approach may be useful for incremental compilation of other languages with similar cross-file features." researchr: "https://researchr.org/publication/SmitsV18" cites: 3 citedby: 0 howpublished: "Poster at SPLASH" kind: "misc" key: "SmitsV18" - title: "Scopes and Frames Improve Meta-Interpreter Specialization" author: - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Andrew P. Tolmach" link: "http://www.cs.pdx.edu/~apt" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2019.4" abstract: "DynSem is a domain-specific language for concise specification of the dynamic semantics of programming languages, aimed at rapid experimentation and evolution of language designs. To maintain a short definition-to-execution cycle, DynSem specifications are meta-interpreted. Meta-interpretation introduces runtime overhead that is difficult to remove by using interpreter optimization frameworks such as the Truffle/Graal Java tools; previous work has shown order-of-magnitude improvements from applying Truffle/Graal to a meta-interpreter, but this is still far slower than what can be achieved with a language-specific interpreter. In this paper, we show how specifying the meta-interpreter using scope graphs, which encapsulate static name binding and resolution information, produces much better optimization results from Truffle/Graal. Furthermore, we identify that JIT compilation is hindered by large numbers of calls between small polymorphic rules and we introduce rule cloning to derive larger monomorphic rules at run time as a countermeasure. Our contributions improve the performance of DynSem-derived interpreters to within an order of magnitude of a handwritten language-specific interpreter." links: doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2019.4" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/VerguTV19" researchr: "https://researchr.org/publication/VerguTV19" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "VerguTV19" - title: "A Module-System Discipline for Model-Driven Software Development" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Klaus Ostermann" link: "https://researchr.org/alias/klaus-ostermann" year: "2017" doi: "https://doi.org/10.22152/programming-journal.org/2017/1/9" links: doi: "https://doi.org/10.22152/programming-journal.org/2017/1/9" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/programming/ErdwegO17" researchr: "https://researchr.org/publication/ErdwegO17" cites: 0 citedby: 0 journal: "Programming" volume: "1" number: "2" pages: "9" kind: "article" key: "ErdwegO17" - title: "Relations: a first class relationship and first class derivations programming language" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" year: "2014" doi: "http://doi.acm.org/10.1145/2584469.2584473" links: doi: "http://doi.acm.org/10.1145/2584469.2584473" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/aosd/Harkes14" researchr: "https://researchr.org/publication/Harkes14" cites: 0 citedby: 0 pages: "9-10" booktitle: "AOSD" kind: "inproceedings" key: "Harkes14" - title: "Evolution of the WebDSL runtime: reliability engineering of the WebDSL web programming language" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Elmer van Chastelet" link: "https://researchr.org/profile/elmervanchastelet/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.1145/3397537.3397553" abstract: "Web applications are ideal for implementing information systems; they can organize and persist the data in a database, do not require installation on client machines, and can be instantly updated everywhere. However, web programming is complex due to its heterogeneous nature, causing web frameworks to suffer from insufficient or leaky abstraction, weak static consistency checking, and security features that are not enforced. We developed the WebDSL web programming language, which supports direct expression of intent, strong static consistency checking, linguistic abstractions for web programming concerns, and automatically enforces security features for web applications. We have used WebDSL for over 10 years to create information systems for academic workflows with thousands of users. Based on our experiences with these applications, we improved the WebDSL compiler and runtime to increase robustness, performance, and security of applications. In this experience report, we reflect on the lessons learned and improvements made to the language runtime." links: doi: "https://doi.org/10.1145/3397537.3397553" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/programming/GroenewegenCV20" tags: - "WebDSL" researchr: "https://researchr.org/publication/GroenewegenCV20" cites: 0 citedby: 0 pages: "77-83" booktitle: "Programming" kind: "inproceedings" key: "GroenewegenCV20" - title: "Software that Meets Its Intent" author: - name: "Marieke Huisman" link: "https://researchr.org/alias/marieke-huisman" - name: "Herbert Bos" link: "https://researchr.org/alias/herbert-bos" - name: "Sjaak Brinkkemper" link: "https://researchr.org/alias/sjaak-brinkkemper" - name: "Arie van Deursen" link: "https://researchr.org/alias/arie-van-deursen" - name: "Jan Friso Groote" link: "http://www.win.tue.nl/~jfg/" - name: "Patricia Lago" link: "https://researchr.org/alias/patricia-lago" - name: "Jaco van de Pol" link: "https://researchr.org/alias/jaco-van-de-pol" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" doi: "http://dx.doi.org/10.1007/978-3-319-47169-3_47" abstract: "Software is widely used, and society increasingly depends on its reliability. However, software has become so complex and it evolves so quickly that we fail to keep it under control. Therefore, we propose intents: fundamental laws that capture a software systems’ intended behavior (resilient, secure, safe, sustainable, etc.). The realization of this idea requires novel theories, algorithms, tools, and techniques to discover, express, verify, and evolve software intents. Thus, future software systems will be able to verify themselves that they meet their intents. Moreover, they will be able to respond to deviations from intents through self-correction. In this article we propose a research agenda, outlining which novel theories, algorithms and tools are required." links: doi: "http://dx.doi.org/10.1007/978-3-319-47169-3_47" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/isola/HuismanBBDGLPV16" "techreport (pdf)": "https://pure.tudelft.nl/portal/files/8041146/TUD_SERG_2016_021.pdf" researchr: "https://researchr.org/publication/HuismanBBDGLPV16" cites: 0 citedby: 0 pages: "609-625" booktitle: "ISoLA" kind: "inproceedings" key: "HuismanBBDGLPV16" - title: "Tool support for component-based semantics" author: - name: "L. Thomas van Binsbergen" link: "https://researchr.org/alias/l.-thomas-van-binsbergen" - name: "Neil Sculthorpe" link: "https://researchr.org/alias/neil-sculthorpe" - name: "Peter D. Mosses" link: "https://pdmosses.github.io" year: "2016" doi: "http://doi.acm.org/10.1145/2892664.2893464" links: doi: "http://doi.acm.org/10.1145/2892664.2893464" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/aosd/BinsbergenSM16" researchr: "https://researchr.org/publication/BinsbergenSM16" cites: 0 citedby: 0 pages: "8-11" booktitle: "AOSD" kind: "inproceedings" key: "BinsbergenSM16" - title: "Precise, Efficient, and Expressive Incremental Build Scripts with PIE" author: - name: "Gabriël Konat" link: "https://researchr.org/alias/gabrie%CC%88l-konat" - name: " Roelof Sol" link: "https://researchr.org/alias/roelof-sol" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" abstract: "PIE is precise, as dependencies of build tasks are exactly tracked using dynamic dependencies, enabling correct and minimal incremental builds. PIE is efficient, only checking and executing tasks that have been affected by a change. Finally, PIE is expressive, as build engineers write their build scripts in a full-fledged programming language, without having to resort to workarounds or complicated design patterns." researchr: "https://researchr.org/publication/KonatSEV19" cites: 0 citedby: 0 booktitle: "Second Workshop on Incremental Computing (IC 2019)" kind: "inproceedings" key: "KonatSEV19" - title: "Engineering meta-languages for specifying software languages (keynote)" author: - name: "Peter D. Mosses" link: "https://pdmosses.github.io" year: "2017" doi: "http://doi.acm.org/10.1145/3136014.3148041" links: doi: "http://doi.acm.org/10.1145/3136014.3148041" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/Mosses17" researchr: "https://researchr.org/publication/Mosses17" cites: 0 citedby: 0 pages: "1" booktitle: "SLE" kind: "inproceedings" key: "Mosses17" - title: "Moessner's Theorem: An Exercise in Coinductive Reasoning in Coq" author: - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Louis Parlant" link: "https://researchr.org/alias/louis-parlant" - name: "Alexandra Silva" link: "https://researchr.org/alias/alexandra-silva" year: "2016" doi: "http://dx.doi.org/10.1007/978-3-319-30734-3_21" links: doi: "http://dx.doi.org/10.1007/978-3-319-30734-3_21" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/birthday/KrebbersPS16" researchr: "https://researchr.org/publication/KrebbersPS16" cites: 0 citedby: 0 pages: "309-324" booktitle: "BIRTHDAY" kind: "inproceedings" key: "KrebbersPS16" - title: "Performing Systematic Literature Reviews with Researchr: Tool Demonstration" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" month: "May" doi: "http://resolver.tudelft.nl/uuid:22b480a7-d09e-4ae6-abe7-9a5769e03c2b" abstract: "This paper describes the workflow for performing systematic literature reviews with the researchr digital library environment. " links: doi: "http://resolver.tudelft.nl/uuid:22b480a7-d09e-4ae6-abe7-9a5769e03c2b" tags: - "digital library" - "literature review" - "digital libraries" - "reviewing" - "Meta-Environment" - "workflow" - "systematic-approach" - "systematic review" researchr: "https://researchr.org/publication/Visser2010" cites: 11 citedby: 0 institution: "Software Engineering Research Group, Delft University of Technology" number: "TUD-SERG-2010-010" address: "Delft, The Netherlands" kind: "techreport" key: "Visser2010" - 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: "Towards Zero-Overhead Disambiguation of Deep Priority Conflicts" author: - name: "Luis Eduardo de Souza Amorim" link: "https://www.linkedin.com/profile/view?id=136481548" - name: "Michael J. Steindorfer" link: "http://michael.steindorfer.name" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.22152/programming-journal.org/2018/2/13" abstract: "Context Context-free grammars are widely used for language prototyping and implementation. They allow formalizing the syntax of domain-specific or general-purpose programming languages concisely and declaratively. However, the natural and concise way of writing a context-free grammar is often ambiguous. Therefore, grammar formalisms support extensions in the form of declarative disambiguation rules to specify operator precedence and associativity, solving ambiguities that are caused by the subset of the grammar that corresponds to expressions. Inquiry Implementing support for declarative disambiguation within a parser typically comes with one or more of the following limitations in practice: a lack of parsing performance, or a lack of modularity (i.e., disallowing the composition of grammar fragments of potentially different languages). The latter subject is generally addressed by scannerless generalized parsers. We aim to equip scannerless generalized parsers with novel disambiguation methods that are inherently performant, without compromising the concerns of modularity and language composition. Approach In this paper, we present a novel low-overhead implementation technique for disambiguating deep associativity and priority conflicts in scannerless generalized parsers with lightweight data-dependency. Knowledge Ambiguities with respect to operator precedence and associativity arise from combining the various operators of a language. While shallow conflicts can be resolved efficiently by one-level tree patterns, deep conflicts require more elaborate techniques, because they can occur arbitrarily nested in a tree. Current state-of-the-art approaches to solving deep priority conflicts come with a severe performance overhead. Grounding We evaluated our new approach against state-of-the-art declarative disambiguation mechanisms. By parsing a corpus of popular open-source repositories written in Java and OCaml, we found that our approach yields speedups of up to 1.73x over a grammar rewriting technique when parsing programs with deep priority conflicts—with a modest overhead of 1–2 % when parsing programs without deep conflicts. Importance A recent empirical study shows that deep priority conflicts are indeed wide-spread in real-world programs. The study shows that in a corpus of popular OCaml projects on Github, up to 17 % of the source files contain deep priority conflicts. However, there is no solution in the literature that addresses efficient disambiguation of deep priority conflicts, with support for modular and composable syntax definitions." links: doi: "https://doi.org/10.22152/programming-journal.org/2018/2/13" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/programming/AmorimSV18" "pdf": "https://arxiv.org/pdf/1803.10215v1" researchr: "https://researchr.org/publication/AmorimSV18" cites: 0 citedby: 0 journal: "Programming" volume: "2" number: "3" pages: "13" kind: "article" key: "AmorimSV18" - 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: "Language-integrated privacy-aware distributed queries" author: - name: "Guido Salvaneschi" link: "https://researchr.org/alias/guido-salvaneschi" - name: "Mirko Köhler" link: "https://researchr.org/alias/mirko-k%C3%B6hler" - name: "Daniel Sokolowski" link: "https://researchr.org/alias/daniel-sokolowski" - name: "Philipp Haller" link: "https://researchr.org/alias/philipp-haller" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2019" doi: "https://doi.org/10.1145/3360593" links: doi: "https://doi.org/10.1145/3360593" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/SalvaneschiKSHE19" researchr: "https://researchr.org/publication/SalvaneschiKSHE19" cites: 0 citedby: 0 journal: "PACMPL" volume: "3" number: "OOPSLA" kind: "article" key: "SalvaneschiKSHE19" - title: "The IDE portability problem and its solution in Monto" author: - name: "Sven Keidel" link: "https://researchr.org/alias/sven-keidel" - name: "Wulf Pfeiffer" link: "https://researchr.org/alias/wulf-pfeiffer" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2016" doi: "http://dl.acm.org/citation.cfm?id=2997368" links: doi: "http://dl.acm.org/citation.cfm?id=2997368" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/KeidelPE16" researchr: "https://researchr.org/publication/KeidelPE16" cites: 0 citedby: 0 pages: "152-162" booktitle: "SLE" kind: "inproceedings" key: "KeidelPE16" - title: "Library-based model-driven software development with SugarJ" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Tillmann Rendel" link: "http://www.informatik.uni-marburg.de/~rendel/" - name: "Christian Kästner" link: "http://wwwiti.cs.uni-magdeburg.de/~ckaestne/" - name: "Klaus Ostermann" link: "http://www.informatik.uni-marburg.de/~kos/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2048147.2048156" abstract: "SugarJ is a Java-based programming language that provides extensible surface syntax, static analyses, and IDE support. SugarJ extensions are organized as libraries; conventional import statements suffice to activate and compose language extensions. We demonstrate how programmers can use SugarJ to modularly extend Java's syntax, semantic analyses and IDE support." links: doi: "http://doi.acm.org/10.1145/2048147.2048156" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/ErdwegKRKOV11" researchr: "https://researchr.org/publication/ErdwegKRKOV11-mdsd" cites: 0 citedby: 0 pages: "17-18" booktitle: "OOPSLA" kind: "inproceedings" key: "ErdwegKRKOV11-mdsd" - 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: "Code Generation by Model Transformation" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13" abstract: "The realization of model-driven software development requires effective techniques for implementing code generators. In this paper, we present a case study of code generation by model transformation with Stratego, a high-level transformation language based on the paradigm of rewrite rules with programmable strategies that integrates model-to-model, model-to-code, and code-to-code transformations. The use of concrete object syntax guarantees syntactic correctness of code patterns, and enables the subsequent transformation of generated code. The composability of strategies supports two dimensions of transformation modularity. Vertical modularity is achieved by designing a generator as a pipeline of model-to-model transformations that gradually transforms a high-level input model to an implementation. Horizontal modularity is achieved by supporting the definition of plugins which implement all aspects of a language feature. We discuss the application of these techniques in the implementation of WebDSL, a domain-specific language for dynamic web applications with a rich data model. " links: doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13" successor: "https://researchr.org/publication/HemelKGV10" "technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-012.pdf" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "WebDSL" - "concrete object syntax" - "rule-based" - "transformation engineering" - "syntax definition" - "meta programming" - "data-flow language" - "pattern language" - "case study" - "graph transformation" - "meta-model" - "modeling language" - "modeling" - "language engineering" - "transformation language" - "software language engineering" - "language modeling" - "web engineering" - "data-flow programming" - "model-driven development" - "data-flow" - "source-to-source" - "graph-rewriting" - "software engineering" - "rules" - "model-driven engineering" - "C++" - "programming paradigms" - "code generation" - "object-role modeling" - "aspect oriented programming" - "model transformation" - "web applications" - "DSL" - "subject-oriented programming" - "Meta-Environment" - "rewriting" - "rewriting strategies" - "feature-oriented programming" - "concrete syntax" - "open-source" - "meta-objects" - "transformation" - "Stratego" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/HemelKV08" cites: 0 citedby: 3 pages: "183-198" booktitle: "ICMT" kind: "inproceedings" key: "HemelKV08" - title: "Interactive proofs in higher-order concurrent separation logic" author: - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Amin Timany" link: "https://researchr.org/alias/amin-timany" - name: "Lars Birkedal" link: "https://researchr.org/alias/lars-birkedal" year: "2017" doi: "http://dl.acm.org/citation.cfm?id=3009855" links: doi: "http://dl.acm.org/citation.cfm?id=3009855" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/popl/KrebbersTB17" researchr: "https://researchr.org/publication/KrebbersTB17" cites: 0 citedby: 0 pages: "205-217" booktitle: "POPL" kind: "inproceedings" key: "KrebbersTB17" - 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: "A constraint language for static semantic analysis based on scope graphs" author: - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - 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: "2016" doi: "http://doi.acm.org/10.1145/2847538.2847543" abstract: "In previous work, we introduced scope graphs as a formalism for describing program binding structure and performing name resolution in an AST-independent way. In this paper, we show how to use scope graphs to build static semantic analyzers. We use constraints extracted from the AST to specify facts about binding, typing, and initialization. We treat name and type resolution as separate building blocks, but our approach can handle language constructs -- such as record field access -- for which binding and typing are mutually dependent. We also refine and extend our previous scope graph theory to address practical concerns including ambiguity checking and support for a wider range of scope relationships. We describe the details of constraint generation for a model language that illustrates many of the interesting static analysis issues associated with modules and records. " links: doi: "http://doi.acm.org/10.1145/2847538.2847543" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pepm/AntwerpenNTVW16" researchr: "https://researchr.org/publication/AntwerpenNTVW16" cites: 0 citedby: 0 pages: "49-60" booktitle: "PEPM" kind: "inproceedings" key: "AntwerpenNTVW16" - title: "A Constraint Language for Static Semantic Analysis based on Scope Graphs with Proofs" author: - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - 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" month: "September" abstract: "In previous work, we introduced scope graphs as a formalism for describing program binding structure and performing name resolution in an AST-independent way. In this paper, we show how to use scope graphs to build static semantic analyzers. We use constraints extracted from the AST to specify facts about binding, typing, and initialization. We treat name and type resolution as separate building blocks, but our approach can handle language constructs—such as record field access—for which binding and typing are mutually dependent. We also refine and extend our previous scope graph theory to address practical concerns including ambiguity checking and support for a wider range of scope relationships. We describe the details of constraint generation for a model language that illustrates many of the interesting static analysis issues associated with modules and records." links: "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2015-009.pdf" researchr: "https://researchr.org/publication/TUD-SERG-2015-009" cites: 0 citedby: 0 institution: "Software Engineering Research Group, Delft University of Technology" number: "TUD-SERG-2015-009" kind: "techreport" key: "TUD-SERG-2015-009" - title: "SugarJ: library-based language extensibility" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Tillmann Rendel" link: "http://www.informatik.uni-marburg.de/~rendel/" - name: "Christian Kästner" link: "http://wwwiti.cs.uni-magdeburg.de/~ckaestne/" - name: "Klaus Ostermann" link: "http://www.informatik.uni-marburg.de/~kos/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2048147.2048199" abstract: "SugarJ is a Java-based programming language that provides extensible surface syntax, static analyses, and IDE support. SugarJ extensions are organized as libraries; conventional import statements suffice to activate and compose language extensions. We illustrate how programmers can use SugarJ to modularly extend Java’s syntax, semantic analyses and IDE support." links: doi: "http://doi.acm.org/10.1145/2048147.2048199" tags: - "rule-based" - "C++" - "extensible language" researchr: "https://researchr.org/publication/ErdwegKRKOV11-extensibility" cites: 0 citedby: 0 pages: "187-188" booktitle: "Companion to the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22 - 27, 2011" kind: "inproceedings" key: "ErdwegKRKOV11-extensibility" - title: "Interactive Disambiguation of Meta Programs with Concrete Object Syntax" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1007/978-3-642-19440-5_22" abstract: "In meta-programming with concrete object syntax, meta programs can be written using the concrete syntax of manipulated programs. Quotations of concrete syntax fragments and anti-quotations for meta-level expressions and variables are used to manipulate the abstract representation of programs. These small, isolated fragments are often ambiguous and must be explicitly disambiguated with quotation tags or types, using names from the non-terminals of the object language syntax. Discoverability of these names has been an open issue, as they depend on the (grammar) implementation and are not part of the concrete syntax of a language. Based on advances in interactive development environments, we introduce interactive disambiguation to address this issue, providing real-time feedback and proposing quick fixes in case of ambiguities. " links: doi: "http://dx.doi.org/10.1007/978-3-642-19440-5_22" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/KatsKV10" tags: - "programming languages" - "object-oriented programming" - "concrete object syntax" - "rule-based" - "meta programming" - "meta-model" - "abstract syntax" - "tagging" - "disambiguation" - "model-driven development" - "source-to-source" - "C++" - "programming" - "subject-oriented programming" - "Meta-Environment" - "feature-oriented programming" - "concrete syntax" - "open-source" - "meta-objects" - "grammar" researchr: "https://researchr.org/publication/KatsKV10-SLE" cites: 0 citedby: 0 pages: "327-336" booktitle: "SLE" kind: "inproceedings" key: "KatsKV10-SLE" - title: "Editorial Message" author: - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2019" links: "pdf": "https://portalparts.acm.org/3370000/3366395/fm/frontmatter.pdf" researchr: "https://researchr.org/publication/Visser19-PACMPL" cites: 0 citedby: 0 journal: "PACMPL" volume: "3" number: "OOPSLA" kind: "article" key: "Visser19-PACMPL" - title: "Declarative specification of indentation rules: a tooling perspective on parsing and pretty-printing layout-sensitive languages" author: - name: "Luis Eduardo de Souza Amorim" link: "https://www.linkedin.com/profile/view?id=136481548" - name: "Michael J. Steindorfer" link: "http://michael.steindorfer.name" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.1145/3276604.3276607" abstract: " In layout-sensitive languages, the indentation of an expression or statement can influence how a program is parsed. While some of these languages (e.g., Haskell and Python) have been widely adopted, there is little support for software language engineers in building tools for layout-sensitive languages. As a result, parsers, pretty-printers, program analyses, and refactoring tools often need to be handwritten, which decreases the maintainability and extensibility of these tools. Even state-of-the-art language workbenches have little support for layout-sensitive languages, restricting the development and prototyping of such languages. In this paper, we introduce a novel approach to declarative specification of layout-sensitive languages using layout declarations. Layout declarations are high-level specifications of indentation rules that abstract from low-level technicalities. We show how to derive an efficient layout-sensitive generalized parser and a corresponding pretty-printer automatically from a language specification with layout declarations. We validate our approach in a case-study using a syntax definition for the Haskell programming language, investigating the performance of the generated parser and the correctness of the generated pretty-printer against 22191 Haskell files. " links: doi: "https://doi.org/10.1145/3276604.3276607" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/AmorimSEV18" researchr: "https://researchr.org/publication/AmorimSEV18" cites: 0 citedby: 0 pages: "3-15" booktitle: "SLE" kind: "inproceedings" key: "AmorimSEV18" - title: "PIE: A Domain-Specific Language for Interactive Software Development Pipelines" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Michael J. Steindorfer" link: "http://michael.steindorfer.name" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.22152/programming-journal.org/2018/2/9" abstract: "Context. Software development pipelines are used for automating essential parts of software engineering processes, such as build automation and continuous integration testing. In particular, interactive pipelines, which process events in a live environment such as an IDE, require timely results for low-latency feedback, and persistence to retain low-latency feedback between restarts. Inquiry. Developing an incrementalized and persistent version of a pipeline is one way to reduce feedback latency, but requires implementation of dependency tracking, cache invalidation, and other complicated and error-prone techniques. Therefore, interactivity complicates pipeline development if timeliness and persistence become responsibilities of the pipeline programmer, rather than being supported by the underlying system. Systems for programming incremental and persistent pipelines exist, but do not focus on ease of development, requiring a high degree of boilerplate, increasing development and maintenance effort. Approach. We develop Pipelines for Interactive Environments (PIE), a Domain-Specific Language (DSL), API, and runtime for developing interactive software development pipelines, where ease of development is a focus. The PIE DSL is a statically typed and lexically scoped language. PIE programs are compiled to programs implementing the API, which the PIE runtime executes in an incremental and persistent way. Knowledge. PIE provides a straightforward programming model that enables direct and concise expression of pipelines without boilerplate, reducing the development and maintenance effort of pipelines. Compiled pipeline programs can be embedded into interactive environments such as code editors and IDEs, enabling timely feedback at a low cost. Grounding. Compared to the state of the art, PIE reduces the code required to express an interactive pipeline by a factor of 6 in a case study on syntax-aware editors. Furthermore, we evaluate PIE in two case studies of complex interactive software development scenarios, demonstrating that PIE can handle complex interactive pipelines in a straightforward and concise way. Importance. Interactive pipelines are complicated software artifacts that power many important systems such as continuous feedback cycles in IDEs and code editors, and live language development in language workbenches. New pipelines, and evolution of existing pipelines, is frequently necessary. Therefore, a system for easily developing and maintaining interactive pipelines, such as PIE, is important." links: doi: "https://doi.org/10.22152/programming-journal.org/2018/2/9" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/programming/KonatSEV18" researchr: "https://researchr.org/publication/KonatSEV18" cites: 0 citedby: 0 journal: "Programming" volume: "2" number: "3" pages: "9" kind: "article" key: "KonatSEV18" - title: "IncA: a DSL for the definition of incremental program analyses" author: - name: "Tamás Szabó" link: "https://researchr.org/alias/tam%C3%A1s-szab%C3%B3" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Markus Völter" link: "http://www.voelter.de/" year: "2016" doi: "http://doi.acm.org/10.1145/2970276.2970298" links: doi: "http://doi.acm.org/10.1145/2970276.2970298" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/kbse/SzaboEV16" researchr: "https://researchr.org/publication/SzaboEV16" cites: 0 citedby: 0 pages: "320-331" booktitle: "ASE" kind: "inproceedings" key: "SzaboEV16" - title: "IceDust 2: Derived Bidirectional Relations and Calculation Strategy Composition (Artifact)" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "https://doi.org/10.4230/DARTS.3.2.1" abstract: " This artifact is based on IceDust2, a data modeling language with derived values. The provided package is designed to support the claims of the companion paper: in particular, it allows users to compile and run IceDust2 specifications. Instructions for building the IceDust2 compiler from source in Spoofax are also provided. " links: doi: "https://doi.org/10.4230/DARTS.3.2.1" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/darts/HarkesV17" researchr: "https://researchr.org/publication/HarkesV17-ART" cites: 0 citedby: 0 journal: "darts" volume: "3" number: "2" kind: "article" key: "HarkesV17-ART" - title: "Imperative Polymorphism by Store-Based Types as Abstract Interpretations" author: - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Peter D. Mosses" link: "https://pdmosses.github.io" - name: "Paolo Torrini" link: "https://researchr.org/alias/paolo-torrini" year: "2015" doi: "http://doi.acm.org/10.1145/2678015.2682545" links: doi: "http://doi.acm.org/10.1145/2678015.2682545" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pepm/PoulsenMT15" researchr: "https://researchr.org/publication/PoulsenMT15" cites: 0 citedby: 0 pages: "3-8" booktitle: "PEPM" kind: "inproceedings" key: "PoulsenMT15" - title: "Combining Aspect-Oriented and Strategic Programming" author: - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2006" doi: "http://dx.doi.org/10.1016/j.entcs.2005.06.035" abstract: "Properties such as logging, persistence, debugging, tracing, distribution, performance monitoring and exception handling occur in most programming paradigms and are normally very difficult or even impossible to modularize with traditional modularization mechanisms because they are cross-cutting. Recently, aspect-oriented programming has enjoyed recognition as a practical solution for separating these concerns. In this paper we describe an extension to the Stratego term rewriting language for capturing such properties. We show our aspect language offers a concise, practical and adaptable solution for dealing with unanticipated algorithm extension for forward data-flow propagation and dynamic type checking of terms. We briefly discuss some of the challenges faced when designing and implementing an aspect extension for and in a rule-based term rewriting system." links: doi: "http://dx.doi.org/10.1016/j.entcs.2005.06.035" tags: - "programming languages" - "object-oriented programming" - "rule-based" - "transformation aspects" - "data-flow language" - "graph transformation" - "exceptions" - "Stratego/XT" - "transformation language" - "term rewriting" - "type system" - "data-flow programming" - "data-flow" - "graph-rewriting" - "rules" - "programming paradigms" - "type checking" - "strategic programming" - "debugging" - "transformation system" - "Strategic term rewriting" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "rewriting" - "feature-oriented programming" - "transformation" - "Stratego" - "program transformation" researchr: "https://researchr.org/publication/KallebergV06" cites: 0 citedby: 0 journal: "ENTCS" volume: "147" number: "1" pages: "5-30" kind: "article" key: "KallebergV06" - title: "Semantics for two-dimensional type theory" author: - name: "Benedikt Ahrens" link: "https://researchr.org/alias/benedikt-ahrens" - name: "Paige Randall North" link: "https://researchr.org/alias/paige-randall-north" - name: "Niels van der Weide" link: "https://researchr.org/alias/niels-van-der-weide" year: "2022" doi: "https://doi.org/10.1145/3531130.3533334" links: doi: "https://doi.org/10.1145/3531130.3533334" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/lics/AhrensNW22" researchr: "https://researchr.org/publication/AhrensNW22" cites: 0 citedby: 0 booktitle: "lics" kind: "inproceedings" key: "AhrensNW22" - title: "Growing a language environment with editor libraries" author: - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Tillmann Rendel" link: "http://www.informatik.uni-marburg.de/~rendel/" - name: "Christian Kästner" link: "http://wwwiti.cs.uni-magdeburg.de/~ckaestne/" - name: "Klaus Ostermann" link: "http://www.informatik.uni-marburg.de/~kos/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2047862.2047891" abstract: "Large software projects consist of code written in a multitude of different (possibly domain-specific) languages, which are often deeply interspersed even in single files. While many proposals exist on how to integrate languages semantically and syntactically, the question of how to support this scenario in integrated development environments (IDEs) remains open: How can standard IDE services, such as syntax highlighting, outlining, or reference resolving, be provided in an extensible and compositional way, such that an open mix of languages is supported in a single file? Based on our library-based syntactic extension language for Java, SugarJ, we propose to make IDEs extensible by organizing editor services in editor libraries. Editor libraries are libraries written in the object language, SugarJ, and hence activated and composed through regular import statements on a file-by-file basis. We have implemented an IDE for editor libraries on top of SugarJ and the Eclipse-based Spoofax language workbench. We have validated editor libraries by evolving this IDE into a fully-fledged and schema-aware XML editor as well as an extensible Latex editor, which we used for writing this paper. " links: doi: "http://doi.acm.org/10.1145/2047862.2047891" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/gpce/ErdwegKRKOV11" researchr: "https://researchr.org/publication/ErdwegKRKOV11gpce" cites: 0 citedby: 0 pages: "167-176" booktitle: "GPCE" kind: "inproceedings" key: "ErdwegKRKOV11gpce" - title: "Programming the Mobile Web with Mobl" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" month: "January" abstract: "A new generation of mobile touch devices, such as the iPhone, Android and iPad, 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 is not a clean, well-integrated experience. 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, data modeling and querying, scripting and web services into a single, unified language that is flexible, expressive, enables early detection of errors, and has good IDE support. We illustrate the design of the language with the implementation of ConfPlan, an application for keeping track of the schedule of conference events." tags: - "programming languages" - "optimization" - "interaction design" - "rule-based" - "meta programming" - "data-flow language" - "pattern language" - "meta-model" - "modeling language" - "modeling" - "web service" - "language modeling" - "language design" - "constraints" - "data-flow programming" - "data-flow" - "mobile code" - "code generation" - "web services" - "web applications" - "programming" - "program optimization" - "Meta-Environment" - "design" - "mobile" - "query language" - "domain-specific language" researchr: "https://researchr.org/publication/HemelVisser2011A" cites: 0 citedby: 0 institution: "Delft University of Technology" number: "TUD-SERG-2011-01" kind: "techreport" key: "HemelVisser2011A" - title: "The Essence of Higher-Order Concurrent Separation Logic" author: - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Ralf Jung 0002" link: "https://researchr.org/alias/ralf-jung-0002" - name: "Ales Bizjak" link: "https://researchr.org/alias/ales-bizjak" - name: "Jacques-Henri Jourdan" link: "https://researchr.org/alias/jacques-henri-jourdan" - name: "Derek Dreyer" link: "https://researchr.org/alias/derek-dreyer" - name: "Lars Birkedal" link: "https://researchr.org/alias/lars-birkedal" year: "2017" doi: "http://dx.doi.org/10.1007/978-3-662-54434-1_26" links: doi: "http://dx.doi.org/10.1007/978-3-662-54434-1_26" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/esop/Krebbers0BJDB17" researchr: "https://researchr.org/publication/Krebbers0BJDB17" cites: 0 citedby: 0 pages: "696-723" booktitle: "ESOP" kind: "inproceedings" key: "Krebbers0BJDB17" - title: "Toward a Language-Parametric Code Completion Editor Service" author: - name: "Daniel A. A. Pelsmaeker" link: "https://researchr.org/alias/daniel-a.-a.-pelsmaeker" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" abstract: "Code completion is an editor service that suggests keywords and identifiers that are relevant at the caret location in the editor, from which the user can choose to either insert one or continue typing. This reduces coding errors and aids in discovering the possibilities in a language or API. Providing a code completion editor service for a new programming language requires development effort in addition to the effort required for defining the language. The goal of this work is to automatically produce an intelligent editor-agnostic code completion editor service that is parameterized only by the declarative specification of the language. We implement our approach in the Spoofax language workbench, which enables language developers to provide a declarative specification of their new programming language. We will use the declarative specification to produce a platform-agnostic code completion editor service for Spoofax languages automatically" researchr: "https://researchr.org/publication/PelsmaekerV18" cites: 0 citedby: 0 howpublished: "Poster at SPLASH" kind: "misc" key: "PelsmaekerV18" - title: "Bootstrapping, Default Formatting, and Skeleton Editing in the Spoofax Language Workbench" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Luis Eduardo de Souza Amorim" link: "https://www.linkedin.com/profile/view?id=136481548" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" abstract: "Language workbenches are tools that help language designers to design and implement (domain-specific) programming languages, aiming to produce a full featured programming environment from a high-level language description. A recent paper, resulting from a series of language workbench challenge workshops, describes a collection of benchmark problems for language workbench research [5]. In this paper, we describe solutions to two of these benchmark problems in the Spoofax Language Workbench [6], i.e. default formatting in Section 3 and skeleton editing in Section 4. In addition, we introduce a new benchmark problem — bootstrapping of meta-languages in a workbench — and describe the support for bootstrapping we developed for Spoofax in Section 2." researchr: "https://researchr.org/publication/KonatAEV16" cites: 0 citedby: 0 howpublished: "Language Workbench Challenge (LWC@SLE)" kind: "misc" key: "KonatAEV16" - title: "System Description: An Infrastructure for Combining Domain Knowledge with Automated Theorem Provers" author: - name: "Sylvia Grewe" link: "https://researchr.org/alias/sylvia-grewe" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "André Pacak" link: "https://researchr.org/alias/andr%C3%A9-pacak" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2018" doi: "https://doi.org/10.1145/3236950.3236960" links: doi: "https://doi.org/10.1145/3236950.3236960" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ppdp/GreweEPM18" researchr: "https://researchr.org/publication/GreweEPM18" cites: 0 citedby: 0 booktitle: "ppdp" kind: "inproceedings" key: "GreweEPM18" - title: "Grace in Spoofax: Readable Specification and Implementation in One" author: - name: "Michiel Haisma" link: "https://www.linkedin.com/in/michiel-haisma-b0357149" - name: "Vlad Vergu" link: "http://www.bitbang.nl" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" researchr: "https://researchr.org/publication/HaismaVV17" cites: 0 citedby: 0 howpublished: "Presented at GRACE 2016" kind: "misc" key: "HaismaVV17" - title: "Iris from the ground up: A modular foundation for higher-order concurrent separation logic" author: - name: "Ralf Jung 0002" link: "https://researchr.org/alias/ralf-jung-0002" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Jacques-Henri Jourdan" link: "https://researchr.org/alias/jacques-henri-jourdan" - name: "Ales Bizjak" link: "https://researchr.org/alias/ales-bizjak" - name: "Lars Birkedal" link: "https://researchr.org/alias/lars-birkedal" - name: "Derek Dreyer" link: "https://researchr.org/alias/derek-dreyer" year: "2018" doi: "https://doi.org/10.1017/S0956796818000151" links: doi: "https://doi.org/10.1017/S0956796818000151" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jfp/JungKJBBD18" researchr: "https://researchr.org/publication/JungKJBBD18" cites: 0 citedby: 0 journal: "JFP" volume: "28" kind: "article" key: "JungKJBBD18" - title: "DSL Engineering - Designing, Implementing and Using Domain-Specific Languages" author: - name: "Markus Völter" link: "http://www.voelter.de/" - name: "Sebastian Benz" link: "http://" - name: "Christian Dietrich" link: "https://researchr.org/alias/christian-dietrich" - name: "Birgit Engelmann" link: "https://researchr.org/alias/birgit-engelmann" - name: "Mats Helander" link: "https://researchr.org/alias/mats-helander" - 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: "2013" doi: "http://www.dslbook.org" abstract: "This book covers DSL Design, Implementation and Use of DSL in detail. It consists of four parts. Part 1 introduces DSLs in general and discusses their advantages and drawbacks. It also defines important terms and concepts and introduces the case studies used in the most of the re-mainder of the book. Part 2 discusses the design of DSLs – independent of implementation techniques. It discusses seven design dimensions, explains a number of reusable language paradigms and points out a number of process-related issues. Part 3 provides details about the implementation of DSLs with lots of code. It uses three state-of-the-art but quite different language workbenches: Jet-Brains MPS, Eclipse Xtext and TU Delft’s Spoofax. Part 4 discusses the use of DSLs for requirements, architecture, implementation and product line engineering, as well as their roles as a developer utility and for implementing business logic." links: doi: "http://www.dslbook.org" dblp: "http://dblp.uni-trier.de/rec/bibtex/books/daglib/0030751" researchr: "https://researchr.org/publication/DslEngineering2013" cites: 0 citedby: 0 publisher: "dslbook.org" isbn: "978-1-4812-1858-0" kind: "book" key: "DslEngineering2013" - 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: "Elaborating dependent (co)pattern matching: No pattern left behind" author: - name: "Jesper Cockx" link: "https://jesper.sikanda.be" - name: "Andreas Abel" link: "http://www.cse.chalmers.se/~abela/" year: "2020" doi: "https://doi.org/10.1017/S0956796819000182" links: doi: "https://doi.org/10.1017/S0956796819000182" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jfp/CockxA20" researchr: "https://researchr.org/publication/CockxA20" cites: 0 citedby: 0 journal: "JFP" volume: "30" kind: "article" key: "CockxA20" - title: "Deep priority conflicts in the wild: a pilot study" author: - name: "Luis Eduardo de Souza Amorim" link: "https://www.linkedin.com/profile/view?id=136481548" - name: "Michael J. Steindorfer" link: "http://michael.steindorfer.name" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "http://doi.acm.org/10.1145/3136014.3136020" abstract: " Context-free grammars are suitable for formalizing the syntax of programming languages concisely and declaratively. Thus, such grammars are often found in reference manuals of programming languages, and used in language workbenches for language prototyping. However, the natural and concise way of writing a context-free grammar is often ambiguous. Safe and complete declarative disambiguation of operator precedence and associativity conflicts guarantees that all ambiguities arising from combining the operators of the language are resolved. Ambiguities can occur due to shallow conflicts, which can be captured by one-level tree patterns, and deep conflicts, which require more elaborate techniques. Approaches to solve deep priority conflicts include grammar transformations, which may result in large unambiguous grammars, or may require adapted parser technologies to include data-dependency tracking at parse time. In this paper we study deep priority conflicts \"in the wild\". We investigate the efficiency of grammar transformations to solve deep priority conflicts by using a lazy parse table generation technique. On top of lazily-generated parse tables, we define metrics, aiming to answer how often deep priority conflicts occur in real-world programs and to what extent programmers explicitly disambiguate programs themselves. By applying our metrics to a small corpus of popular open-source repositories we found that in OCaml, up to 17% of the source files contain deep priority conflicts. " links: doi: "http://doi.acm.org/10.1145/3136014.3136020" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/AmorimSV17" researchr: "https://researchr.org/publication/AmorimSV17" cites: 0 citedby: 0 pages: "55-66" booktitle: "SLE" kind: "inproceedings" key: "AmorimSV17" - title: "Incremental overload resolution in object-oriented programming languages" author: - name: "Tamás Szabó" link: "https://researchr.org/alias/tam%C3%A1s-szab%C3%B3" - name: " Edlira Kuci" link: "https://researchr.org/alias/edlira-kuci" - name: "Matthijs Bijman" link: "https://researchr.org/alias/matthijs-bijman" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2018" doi: "https://doi.org/10.1145/3236454.3236485" links: doi: "https://doi.org/10.1145/3236454.3236485" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/issta/SzaboKBME18" researchr: "https://researchr.org/publication/SzaboKBME18" cites: 0 citedby: 0 pages: "27-33" booktitle: "ISSTA" kind: "inproceedings" key: "SzaboKBME18" - title: "Sound and reusable components for abstract interpretation" author: - name: "Sven Keidel" link: "https://researchr.org/alias/sven-keidel" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2019" doi: "https://doi.org/10.1145/3360602" links: doi: "https://doi.org/10.1145/3360602" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/KeidelE19" researchr: "https://researchr.org/publication/KeidelE19" cites: 0 citedby: 0 journal: "PACMPL" volume: "3" number: "OOPSLA" kind: "article" key: "KeidelE19" - 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: "Knowing When to Ask: Sound scheduling of name resolution in type checkers derived from declarative specifications (Extended Version)" author: - name: "Arjen Rouvoet" link: "https://www.linkedin.com/in/arjen-rouvoet-760347a5/" - name: "Hendrik van Antwerpen" link: "https://nl.linkedin.com/in/hendrikvanantwerpen" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" month: "Oct" doi: "http://doi.org/10.5281/zenodo.4091445" abstract: "There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative programming language specifications. This moves the burden of proving correctness from a case-by-case basis for concrete languages to a single correctness proof for the specification language. This vision is obstructed by an aspect common to all programming languages: name resolution. Naming and scoping are pervasive and complex aspects of the static semantics of programming languages. Implementations of type checkers for languages with name binding features such as modules, imports, classes, and inheritance interleave collection of binding information (i.e., declarations, scoping structure, and imports) and querying that information. This requires scheduling those two aspects in such a way that query answers are stable---i.e., they are computed only after all relevant binding structure has been collected. Type checkers for concrete languages accomplish stability using language-specific knowledge about the type system. In this paper we give a language-independent characterization of necessary and sufficient conditions to guarantee stability of name and type queries during type checking in terms of critical edges in an incomplete scope graph. We use critical edges to give a formal small-step operational semantics to a declarative specification language for type systems, that achieves soundness by delaying queries that may depend on missing information. This yields type checkers for the specified languages that are sound by construction---i.e., they schedule queries so that the answers are stable, and only accept programs that are name- and type-correct according to the declarative language specification. We implement this approach, and evaluate it against specifications of a small module and record language, as well as subsets of Java and Scala." links: doi: "http://doi.org/10.5281/zenodo.4091445" successor: "https://researchr.org/publication/RouvoetAPKV20" researchr: "https://researchr.org/publication/RouvoetAPKV20-ext" cites: 0 citedby: 0 publisher: "Zenodo" kind: "inbook" key: "RouvoetAPKV20-ext" - title: "Actris: session-type based reasoning in separation logic" author: - name: "Jonas Kastberg Hinrichsen" link: "https://researchr.org/alias/jonas-kastberg-hinrichsen" - name: "Jesper Bengtson" link: "https://researchr.org/alias/jesper-bengtson" - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" year: "2020" doi: "https://doi.org/10.1145/3371074" links: doi: "https://doi.org/10.1145/3371074" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/HinrichsenBK20" researchr: "https://researchr.org/publication/HinrichsenBK20" cites: 0 citedby: 0 journal: "PACMPL" volume: "4" number: "POPL" kind: "article" key: "HinrichsenBK20" - title: "Knowing when to ask: sound scheduling of name resolution in type checkers derived from declarative specifications" author: - name: "Arjen Rouvoet" link: "https://www.linkedin.com/in/arjen-rouvoet-760347a5/" - name: "Hendrik van Antwerpen" link: "https://researchr.org/alias/hendrik-van-antwerpen" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Robbert Krebbers" link: "https://researchr.org/alias/robbert-krebbers" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.1145/3428248" abstract: "There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative programming language specifications. This moves the burden of proving correctness from a case-by-case basis for concrete languages to a single correctness proof for the specification language. This vision is obstructed by an aspect common to all programming languages: name resolution. Naming and scoping are pervasive and complex aspects of the static semantics of programming languages. Implementations of type checkers for languages with name binding features such as modules, imports, classes, and inheritance interleave collection of binding information (i.e., declarations, scoping structure, and imports) and querying that information. This requires scheduling those two aspects in such a way that query answers are stable—i.e., they are computed only after all relevant binding structure has been collected. Type checkers for concrete languages accomplish stability using language-specific knowledge about the type system. In this paper we give a language-independent characterization of necessary and sufficient conditions to guarantee stability of name and type queries during type checking in terms of critical edges in an incomplete scope graph. We use critical edges to give a formal small-step operational semantics to a declarative specification language for type systems, that achieves soundness by delaying queries that may depend on missing information. This yields type checkers for the specified languages that are sound by construction—i.e., they schedule queries so that the answers are stable, and only accept programs that are name- and type-correct according to the declarative language specification. We implement this approach, and evaluate it against specifications of a small module and record language, as well as subsets of Java and Scala." links: doi: "https://doi.org/10.1145/3428248" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/RouvoetAPKV20" researchr: "https://researchr.org/publication/RouvoetAPKV20" cites: 0 citedby: 0 journal: "PACMPL" volume: "4" number: "OOPSLA" kind: "article" key: "RouvoetAPKV20" - title: "Gradually typing strategies" author: - name: "Jeff Smits" link: "https://www.jeffsmits.net/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2020" doi: "https://doi.org/10.1145/3426425.3426928" abstract: "The Stratego language supports program transformation by means of term rewriting with programmable rewriting strategies. Stratego's traversal primitives support concise definition of generic tree traversals. Stratego is a dynamically typed language because its features cannot be captured fully by a static type system. While dynamic typing makes for a flexible programming model, it also leads to unintended type errors, code that is harder to maintain, and missed opportunities for optimization. In this paper, we introduce a gradual type system for Stratego that combines the flexibility of dynamically typed generic programming, where needed, with the safety of statically declared and enforced types, where possible. To make sure that statically typed code cannot go wrong, all access to statically typed code from dynamically typed code is protected by dynamic type checks (casts). The type system is backwards compatible such that types can be introduced incrementally to existing Stratego programs. We formally define a type system for Core Gradual Stratego, discuss its implementation in a new type checker for Stratego, and present an evaluation of its impact on Stratego programs." links: doi: "https://doi.org/10.1145/3426425.3426928" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/SmitsV20" researchr: "https://researchr.org/publication/SmitsV20" cites: 0 citedby: 0 pages: "1-15" booktitle: "SLE" kind: "inproceedings" key: "SmitsV20" - title: "Unifying and Generalizing Relations in Role-Based Data Modeling and Navigation" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2014" doi: "http://dx.doi.org/10.1007/978-3-319-11245-9_14" abstract: "Object-oriented programming languages support concise navigation of relations represented by references. However, relations are not first-class citizens and bidirectional navigation is not supported. The relational paradigm provides first-class relations, but with bidirectional navigation through verbose queries. We present a systematic analysis of approaches to modeling and navigating relations. By unifying and generalizing the features of these approaches, we developed the design of a data modeling language that features first-class relations, n-ary relations, native multiplicities, bidirectional relations and concise navigation." links: doi: "http://dx.doi.org/10.1007/978-3-319-11245-9_14" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/HarkesV14" "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2014-023.pdf" researchr: "https://researchr.org/publication/HarkesV14" cites: 0 citedby: 0 pages: "241-260" booktitle: "SLE" kind: "inproceedings" key: "HarkesV14" - 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: "Dimensions of DSL Design" author: - name: "Markus Völter" link: "http://www.voelter.de/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" abstract: "Domain-Specific Languages (DSLs) are languages with high expressivity for a specific, narrow problem domain. They are a powerful tool for software engineering, because they can be tailor-made for a specific class of problems. However, because of the large degree of freedom in designing DSLs, and because they are supposed to cover the right domain, completely, and at the right abstraction level, DSL design is also hard. In this paper we present a framework for describing and characterizing external domain specific languages. We identify eight design dimensions that span the space within which DSLs are designed: expressivity, coverage, semantics, separation of concerns, completeness, large-scale model structure, language modularization and syntax. We illustrate the design alternatives along each of these dimensions with examples from five different case studies. These have been selected for their diversity in context, style and implementation technologies. The paper concludes with an outlook on further steps towards comprehensive DSL design guidance. " tags: - "semantics" - "completeness" - "case study" - "meta-model" - "modeling language" - "separation of concerns" - "language engineering" - "software language engineering" - "language modeling" - "language design" - "software engineering" - "model-driven engineering" - "DSL" - "context-aware" - "abstraction" - "Meta-Environment" - "design" - "coverage" - "domain-specific language" researchr: "https://researchr.org/publication/VoelterVisserDimensions2011" cites: 0 citedby: 0 booktitle: "Dimensions of DSL Design" kind: "proceedings" key: "VoelterVisserDimensions2011" - title: "Versatile event correlation with algebraic effects" author: - name: "Oliver Bracevac" link: "https://researchr.org/alias/oliver-bracevac" - name: " Nada Amin" link: "https://researchr.org/alias/nada-amin" - name: "Guido Salvaneschi" link: "https://researchr.org/alias/guido-salvaneschi" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" - name: "Patrick Eugster" link: "https://researchr.org/alias/patrick-eugster" - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" year: "2018" doi: "https://doi.org/10.1145/3236762" links: doi: "https://doi.org/10.1145/3236762" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/BracevacASEEM18" researchr: "https://researchr.org/publication/BracevacASEEM18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "ICFP" kind: "article" key: "BracevacASEEM18" - 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: "Companion Proceedings of the 2016 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity, SPLASH 2016, Amsterdam, Netherlands, October 30 - November 4, 2016" year: "2016" doi: "http://doi.acm.org/10.1145/2984043" links: doi: "http://doi.acm.org/10.1145/2984043" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/2016c" researchr: "https://researchr.org/publication/oopsla-2016c" cites: 0 citedby: 0 booktitle: "Companion Proceedings of the 2016 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity, SPLASH 2016, Amsterdam, Netherlands, October 30 - November 4, 2016" conference: "OOPSLA" editor: - name: "Eelco Visser" link: "http://eelcovisser.org" publisher: "ACM" isbn: "978-1-4503-4437-1" kind: "proceedings" key: "oopsla-2016c" - title: "Reasonable Agda is correct Haskell: writing verified Haskell using agda2hs" author: - name: "Jesper Cockx" link: "https://jesper.sikanda.be" - name: "Orestis Melkonian" link: "https://researchr.org/alias/orestis-melkonian" - name: "Lucas Escot" link: "https://researchr.org/alias/lucas-escot" - name: "James Chapman" link: "https://jmchapman.github.io/" - name: "Ulf Norell" link: "https://researchr.org/alias/ulf-norell" year: "2022" doi: "https://doi.org/10.1145/3546189.3549920" links: doi: "https://doi.org/10.1145/3546189.3549920" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/haskell/CockxME0N22" researchr: "https://researchr.org/publication/CockxME0N22" cites: 0 citedby: 0 pages: "108-122" booktitle: "haskell" kind: "inproceedings" key: "CockxME0N22" - title: "Scopes Describe Frames: A Uniform Model for Memory Layout in Dynamic Semantics (Artifact)" author: - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - 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" year: "2016" doi: "http://dx.doi.org/10.4230/DARTS.2.1.10" abstract: "Our paper introduces a systematic approach to the alignment of names in the static structure of a program, and memory layout and access during its execution. We develop a uniform memory model consisting of frames that instantiate the scopes in the scope graph of a program. This provides a language-independent correspondence between static scopes and run-time memory layout, and between static resolution paths and run-time memory access paths. The approach scales to a range of binding features, supports straightforward type soundness proofs, and provides the basis for a language-independent specification of sound reachability-based garbage collection. This Coq artifact showcases how our uniform model for memory layout in dynamic semantics provides structure to type soundness proofs. The artifact contains type soundness proofs mechanized in Coq for (supersets of) all languages in the paper. The type soundness proofs rely on a language-independent framework formalizing scope graphs and frame heaps." links: doi: "http://dx.doi.org/10.4230/DARTS.2.1.10" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/darts/PoulsenNTV16" researchr: "https://researchr.org/publication/PoulsenNTV16Artifact" cites: 0 citedby: 0 journal: "darts" volume: "2" number: "1" kind: "article" key: "PoulsenNTV16Artifact" - title: "Toward abstract interpretation of program transformations" author: - name: "Sven Keidel" link: "https://researchr.org/alias/sven-keidel" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2017" doi: "https://doi.org/10.1145/3141517.3141855" links: doi: "https://doi.org/10.1145/3141517.3141855" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KeidelE17" researchr: "https://researchr.org/publication/KeidelE17" cites: 0 citedby: 0 pages: "1-5" booktitle: "OOPSLA" kind: "inproceedings" key: "KeidelE17" - title: "Reconstructing Complex Metamodel Evolution" author: - name: "Sander Vermolen" link: "http://www.sandervermolen.nl" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://dx.doi.org/10.1007/978-3-642-28830-2_11" abstract: "Metamodel evolution requires model migration. To correctly migrate models, evolution needs to be made explicit. Manually describing evolution is error-prone and redundant. Metamodel matching offers a solution by automatically detecting evolution, but is only capable of detecting primitive evolution steps. In practice, primitive evolution steps are jointly applied to form a complex evolution step, which has the same effect on a metamodel as the sum of its parts, yet generally has a different effect in migration. Detection of complex evolution is therefore needed. In this paper, we present an approach to reconstruct complex evolution between two metamodel versions, using a matching result as input. It supports operator dependencies and mixed, overlapping, and incorrectly ordered complex operator components. It also supports interference between operators, where the effect of one operator is partially or completely hidden from the target metamodel by other operators." links: doi: "http://dx.doi.org/10.1007/978-3-642-28830-2_11" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/VermolenWV11" technicalreport: "https://researchr.org/publication/VermolenWachsmuthVisser-TUD-SERG-2011-026" researchr: "https://researchr.org/publication/VermolenWV11sle" cites: 0 citedby: 0 pages: "201-221" booktitle: "SLE" kind: "inproceedings" key: "VermolenWV11sle" - title: "Integration of Data Validation and User Interface Concerns in a DSL for Web Applications" author: - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_13" abstract: "Data validation rules constitute the constraints that data input and processing must adhere to in addition to the structural constraints imposed by a data model. Web modeling tools do not address data validation concerns explicitly, hampering full code generation and model expressivity. Web application frameworks do not offer a consistent interface for data validation. In this paper, we present a solution for the integration of declarative data validation rules with user interface models in the domain of web applications, unifying syntax, mechanisms for error handling, and semantics of validation checks, and covering value well-formedness, data invariants, input assertions, and action assertions. We have implemented the approach in WebDSL, a domain-specific language for the definition of web applications." links: doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_13" successor: "https://researchr.org/publication/GroenewegenVisser2013" tags: - "data validation" - "data-flow" - "web applications" - "DSL" researchr: "https://researchr.org/publication/GroenewegenV09" cites: 0 citedby: 0 pages: "164-173" booktitle: "SLE" kind: "inproceedings" key: "GroenewegenV09" - title: "Automated evaluation of syntax error recovery" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://doi.acm.org/10.1145/2351676.2351736" abstract: "Evaluation of parse error recovery techniques is an open problem. The community lacks objective standards and methods to measure the quality of recovery results. This paper proposes an automated technique for recovery evaluation that offers a solution for two main problems in this area. First, a representative testset is generated by a mutation based fuzzing technique that applies knowledge about common syntax errors. Secondly, the quality of the recovery results is automatically measured using an oracle-based evaluation technique. We evaluate the validity of our approach by comparing results obtained by automated evaluation with results obtained by manual inspection. The evaluation shows a clear correspondence between our quality metric and human judgement. " links: doi: "http://doi.acm.org/10.1145/2351676.2351736" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/kbse/JongeV12" technicalreport: "https://researchr.org/publication/DeJongeVisser2012-TR" researchr: "https://researchr.org/publication/JongeV12" cites: 0 citedby: 0 pages: "322-325" booktitle: "ASE" kind: "inproceedings" key: "JongeV12" - title: "MoSeL: a general, extensible modal framework for interactive proofs in separation logic" author: - name: "Robbert Krebbers" link: "https://robbertkrebbers.nl" - name: "Jacques-Henri Jourdan" link: "https://researchr.org/alias/jacques-henri-jourdan" - name: "Ralf Jung 0002" link: "https://researchr.org/alias/ralf-jung-0002" - name: "Joseph Tassarotti" link: "https://researchr.org/alias/joseph-tassarotti" - name: "Jan-Oliver Kaiser" link: "https://researchr.org/alias/jan-oliver-kaiser" - name: "Amin Timany" link: "https://researchr.org/alias/amin-timany" - name: "Arthur Charguéraud" link: "https://researchr.org/alias/arthur-chargu%C3%A9raud" - name: "Derek Dreyer" link: "https://researchr.org/alias/derek-dreyer" year: "2018" doi: "https://doi.org/10.1145/3236772" links: doi: "https://doi.org/10.1145/3236772" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/KrebbersJ0TKTCD18" researchr: "https://researchr.org/publication/KrebbersJ0TKTCD18" cites: 0 citedby: 0 journal: "PACMPL" volume: "2" number: "ICFP" kind: "article" key: "KrebbersJ0TKTCD18" - title: "Intrinsically-typed definitional interpreters à la carte" author: - name: "Cas van der Rest" link: "https://researchr.org/alias/cas-van-der-rest" - name: "Casper Bach Poulsen" link: "http://www.casperbp.net" - name: "Arjen Rouvoet" link: "https://researchr.org/alias/arjen-rouvoet" - name: "Eelco Visser" link: "https://researchr.org/alias/eelco-visser" - name: "Peter D. Mosses" link: "https://researchr.org/alias/peter-d.-mosses" year: "2022" doi: "https://doi.org/10.1145/3563355" links: doi: "https://doi.org/10.1145/3563355" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/RestPRVM22" researchr: "https://researchr.org/publication/RestPRVM22" cites: 0 citedby: 0 journal: "PACMPL" volume: "6" number: "OOPSLA2" pages: "1903-1932" kind: "article" key: "RestPRVM22" - title: "Conf.Researchr.Org: towards a domain-specific content management system for managing large conference websites" author: - name: "Elmer van Chastelet" link: "https://researchr.org/profile/elmervanchastelet/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Craig Anslow" link: "https://researchr.org/alias/craig-anslow" year: "2015" doi: "http://doi.acm.org/10.1145/2814189.2817270" abstract: "Federated conferences such as SPLASH are complex organizations composed of many parts (co-located conferences, symposia, and workshops), and are put together by many different people and committees. Developing the website for such a conference requires a considerable effort, and is often reinvented for each edition of a conference using software that provides little to no support for the domain. In this paper, we give a high-level overview of the design of Conf.Researchr.Org, a domain-specific content management system developed to support the production of large conference web sites, which is being used for the federated conferences of ACM SIGPLAN." links: doi: "http://doi.acm.org/10.1145/2814189.2817270" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/ChasteletVA15" technicalreport: "https://researchr.org/publication/ChasteletVisserAnslow2015preprint" researchr: "https://researchr.org/publication/ChasteletVA15" cites: 0 citedby: 0 pages: "50-51" booktitle: "OOPSLA" kind: "inproceedings" key: "ChasteletVA15" - 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" - title: "Robust Real-Time Synchronization between Textual and Graphical Editors" author: - name: "Oskar van Rest" link: "https://researchr.org/alias/oskar-van-rest" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Jim R. H. Steel" link: "https://researchr.org/alias/jim-r.-h.-steel" - name: "Jörn Guy Süß" link: "https://researchr.org/alias/j%C3%B6rn-guy-s%C3%BC%C3%9F" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2013" doi: "http://dx.doi.org/10.1007/978-3-642-38883-5_11" abstract: "In modern Integrated Development Environments (IDEs), textual editors are interactive and can handle intermediate, incomplete, or otherwise erroneous texts while still providing editor services such as syntax highlighting, error marking, outline views, and hover help. In this paper, we present an approach for the robust synchronization of interactive textual and graphical editors. The approach recovers from errors during parsing and text-to-model synchronization, preserves textual and graphical layout in the presence of erroneous texts and models, and provides synchronized editor services such as selection sharing and navigation between editors. It was implemented for synchronizing textual editors generated by the Spoofax language workbench and graphical editors generated by the Graphical Modeling Framework." links: doi: "http://dx.doi.org/10.1007/978-3-642-38883-5_11" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/icmt/RestWSSV13" technicalreport: "https://researchr.org/publication/preprint-VanRestWSSV2013" researchr: "https://researchr.org/publication/RestWSSV13" cites: 0 citedby: 0 pages: "92-107" booktitle: "ICMT" kind: "inproceedings" key: "RestWSSV13" - title: "Model-driven software evolution: A research agenda" author: - name: "Arie van Deursen" link: "http://www.st.ewi.tudelft.nl/~arie/" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Jos Warmer" link: "http://www.modeldrivensoftware.net/profile/JosWarmer" year: "2007" researchr: "https://researchr.org/publication/DeursenVW07" cites: 0 citedby: 0 pages: "41-49" booktitle: "Proceedings 1st International Workshop on Model-Driven Software Evolution" kind: "inproceedings" key: "DeursenVW07" - title: "Generating incremental type services" author: - name: "André Pacak" link: "https://researchr.org/alias/andr%C3%A9-pacak" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" year: "2019" doi: "https://doi.org/10.1145/3357766.3359534" links: doi: "https://doi.org/10.1145/3357766.3359534" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/PacakE19" researchr: "https://researchr.org/publication/PacakE19" cites: 0 citedby: 0 pages: "197-201" booktitle: "SLE" kind: "inproceedings" key: "PacakE19" - title: "Generating database migrations for evolving web applications" author: - name: "Sander Vermolen" link: "http://www.sandervermolen.nl" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://doi.acm.org/10.1145/2047862.2047876" abstract: "WebDSL is a domain-specific language for the implementation of dynamic web applications with a rich data model. It provides developers with object-oriented data modeling concepts but abstracts over implementation details for persisting application data in relational databases. When the underlying data model of an application evolves, persisted application data has to be migrated. While implementing migration at the database level breaks the abstractions provided by WebDSL, an implementation at the data model level requires to intermingle migration with application code. In this paper, we present a domain-specific language for the coupled evolution of data models and application data. It allows to specify data model evolution as a separate concern at the data model level and can be compiled to migration code at the database level. Its linguistic integration with WebDSL enables static checks for evolution validity and correctness." links: doi: "http://doi.acm.org/10.1145/2047862.2047876" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/gpce/VermolenWV11" researchr: "https://researchr.org/publication/VermolenWV11" cites: 0 citedby: 0 pages: "83-92" booktitle: "GPCE" kind: "inproceedings" key: "VermolenWV11" - title: "Decorated Attribute Grammars: Attribute Evaluation Meets Strategic Programming" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Anthony M. Sloane" link: "http://www.comp.mq.edu.au/~asloane" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-00722-4_11" abstract: "Attribute grammars are a powerful specification formalism for tree-based computation, particularly for software language processing. Various extensions have been proposed to abstract over common patterns in attribute grammar specifications. These include various forms of copy rules to support non-local dependencies, collection attributes, and expressing dependencies that are evaluated to a fixed point. Rather than implementing extensions natively in an attribute evaluator, we propose attribute decorators that describe an abstract evaluation mechanism for attributes, making it possible to provide such extensions as part of a library of decorators. Inspired by strategic programming, decorators are specified using generic traversal operators. To demonstrate their effectiveness, we describe how to employ decorators in name, type, and flow analysis. " links: doi: "http://dx.doi.org/10.1007/978-3-642-00722-4_11" "technical report (pdf)": "http://www.lclnet.nl/publications/TUD-SERG-2008-038a.pdf" "project home page": "http://strategoxt.org/Stratego/Aster" tags: - "programming languages" - "rule-based" - "attribute grammars" - "program analysis" - "etaps" - "data-flow language" - "pattern language" - "generic programming" - "Stratego/XT" - "traversal" - "analysis" - "data-flow programming" - "data-flow" - "graph-rewriting" - "rules" - "C++" - "strategic programming" - "programming" - "rewriting" - "data-flow analysis" - "Aster" - "grammar" - "Stratego" researchr: "https://researchr.org/publication/KatsSV09" cites: 36 citedby: 1 pages: "142-157" booktitle: "CC" kind: "inproceedings" key: "KatsSV09" - title: "MetaBorg in Action: Examples of Domain-Specific Language Embedding and Assimilation Using Stratego/XT" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "René de Groot" link: "http://strategoxt.org/Main/ReneDeGroot" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2006" doi: "http://dx.doi.org/10.1007/11877028_10" abstract: "General-purpose programming languages provide limited facilities for expressing domain-specific concepts in a natural manner. All domain concepts need to be captured using the same generic syntactic and semantic constructs. Generative programming methods and program transformation techniques can be used to overcome this lack of abstraction in general-purpose languages. In this tutorial we describe the MetaBorg method for embedding domain-specific languages, tailored syntactically and semantically to the application domain at hand, in a general-purpose language. MetaBorg is based on Stratego/XT, a language and toolset for the implementation of program transformation systems, which is used for the definition of syntactic embeddings and assimilation of the embedded constructs into the surrounding code. We illustrate MetaBorg with three examples. JavaSwul is a custom designed language for implementing graphical user-interfaces, which provides high-level abstractions for component composition and event-handling. JavaRegex is a new embedding of regular expression matching and string rewriting. JavaJava is an embedding of Java in Java for generating Java code. For these cases we show how Java programs in these domains become dramatically more readable, and we give an impression of the implementation of the language embeddings. " links: doi: "http://dx.doi.org/10.1007/11877028_10" tags: - "generative programming" - "programming languages" - "rule-based" - "transformation engineering" - "Java" - "generic programming" - "assimilation" - "graph transformation" - "Stratego/XT" - "language engineering" - "domain-specific language embedding" - "transformation language" - "composition" - "MetaBorg" - "language design" - "graph-rewriting" - "transformation system" - "language embedding" - "DSL" - "programming" - "abstraction" - "language composition" - "rewriting" - "transformation" - "Stratego" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/BravenboerGV06" cites: 0 citedby: 3 pages: "297-311" booktitle: "GTTSE" kind: "inproceedings" key: "BravenboerGV06" - title: "We should stop claiming generality in our domain-specific language papers (extended abstract)" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" year: "2018" doi: "https://doi.org/10.1145/3276954.3276967" links: doi: "https://doi.org/10.1145/3276954.3276967" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/Harkes18" researchr: "https://researchr.org/publication/Harkes18" cites: 0 citedby: 0 pages: "131-132" booktitle: "OOPSLA" kind: "inproceedings" key: "Harkes18" - title: "Preventing injection attacks with syntax embeddings" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2007" doi: "http://doi.acm.org/10.1145/1289971.1289975" abstract: "Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A client can then supply specially crafted input that causes the constructed sentence to be interpreted in an unintended way, leading to an injection attack. We describe a more natural style of programming that yields code that is impervious to injections by construction. Our approach embeds the grammars of the guest languages (e.g., SQL) into that of the host language (e.g., Java) and automatically generates code that maps the embedded language to constructs in the host language that reconstruct the embedded sentences, adding escaping functions where appropriate. This approach is generic, meaning that it can be applied with relative ease to any combination of host and guest languages." links: doi: "http://doi.acm.org/10.1145/1289971.1289975" successor: "https://researchr.org/publication/BravenboerDV10" tags: - "programming languages" - "syntax embedding" - "Java" - "preventing injection attacks" - "generic programming" - "injection attack" - "SDF" - "XML" - "embedded software" - "XML Schema" - "SQL" - "security" - "language embedding" - "DSL" - "programming" - "systematic-approach" - "ASF+SDF" - "grammar" - "query language" researchr: "https://researchr.org/publication/BravenboerDV07" cites: 0 citedby: 4 pages: "3-12" booktitle: "GPCE" kind: "inproceedings" key: "BravenboerDV07" - title: "A Pure Object-Oriented Embedding of Attribute Grammars" author: - name: "Anthony M. Sloane" link: "http://www.comp.mq.edu.au/~asloane" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1016/j.entcs.2010.08.043" abstract: "Attribute grammars are a powerful specification paradigm for many language processing tasks, particularly semantic analysis of programming languages. Recent attribute grammar systems use dynamic scheduling algorithms to evaluate attributes by need. In this paper, we show how to remove the need for a generator, by embedding a dynamic approach in a modern, object-oriented programming language to implement a small, lightweight attribute grammar library. The Kiama attribution library has similar features to current generators, including cached, uncached, circular, higher-order and parameterised attributes, and implements new techniques for dynamic extension and variation of attribute equations. We use the Scala programming language because of its combination of object-oriented and functional features, support for domain-specific notations and emphasis on scalability. Unlike generators with specialised notation, Kiama attribute grammars use standard Scala notations such as pattern-matching functions for equations and mixins for composition. A performance analysis shows that our approach is practical for realistic language processing." links: doi: "http://dx.doi.org/10.1016/j.entcs.2010.08.043" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/entcs/SloaneKV10" successor: "https://researchr.org/publication/SloaneKV13" tags: - "attribute grammars" - "C++" - "Meta-Environment" - "meta-objects" - "grammar" researchr: "https://researchr.org/publication/SloaneKV10" cites: 0 citedby: 0 journal: "ENTCS" volume: "253" number: "7" pages: "205-219" kind: "article" key: "SloaneKV10" - title: "Practical generic programming over a universe of native datatypes" author: - name: "Lucas Escot" link: "https://researchr.org/alias/lucas-escot" - name: "Jesper Cockx" link: "https://jesper.sikanda.be" year: "2022" doi: "https://doi.org/10.1145/3547644" links: doi: "https://doi.org/10.1145/3547644" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/pacmpl/EscotC22" researchr: "https://researchr.org/publication/EscotC22" cites: 0 citedby: 0 journal: "PACMPL" volume: "6" number: "ICFP" pages: "625-649" kind: "article" key: "EscotC22" - title: "Specializing Scope Graph Resolution Queries" author: - name: "Aron Zwaan" link: "https://aronzwaan.github.io" year: "2022" doi: "https://doi.org/10.1145/3567512.3567523" links: doi: "https://doi.org/10.1145/3567512.3567523" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/Zwaan22" researchr: "https://researchr.org/publication/Zwaan22" cites: 0 citedby: 0 pages: "121-133" booktitle: "SLE" kind: "inproceedings" key: "Zwaan22"