publications: - 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 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: "Software Language Engineering - 6th International Conference, SLE 2013, Indianapolis, IN, USA, October 26-28, 2013. Proceedings" editor: - name: "Martin Erwig" link: "https://researchr.org/alias/martin-erwig" - name: "Richard F. Paige" link: "https://researchr.org/alias/richard-f.-paige" - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" volume: "8225" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-319-02653-4" kind: "inproceedings" key: "WachsmuthKVGV13" - 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 Journal" volume: "4" number: "3" pages: "16" kind: "article" key: "SmitsKV20" - 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: "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: "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: "Proceedings of the 2016 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences, GPCE 2016, Amsterdam, The Netherlands, October 31 - November 1, 2016" editor: - name: "Bernd Fischer" link: "https://researchr.org/alias/bernd-fischer" - name: "Ina Schaefer" link: "https://researchr.org/alias/ina-schaefer" publisher: "ACM" isbn: "978-1-4503-4446-3" kind: "inproceedings" key: "KonatEV16" - 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: "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: "Software Language Engineering - 6th International Conference, SLE 2013, Indianapolis, IN, USA, October 26-28, 2013. Proceedings" editor: - name: "Martin Erwig" link: "https://researchr.org/alias/martin-erwig" - name: "Richard F. Paige" link: "https://researchr.org/alias/richard-f.-paige" - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" volume: "8225" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-319-02653-4" kind: "inproceedings" key: "ErdwegSV13" - 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: "Computer Languages, Systems \\& Structures" volume: "44" pages: "24-47" kind: "article" key: "ErdwegSVTBCGH0L15" - 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" publisher: "ACM" kind: "inproceedings" key: "KonatVKWV2012" - 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: "Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering" editor: - name: "Marianne Huchard" link: "https://researchr.org/alias/marianne-huchard" - name: "Christian Kästner" link: "https://researchr.org/alias/christian-k%C3%A4stner" - name: "Gordon Fraser" link: "https://researchr.org/alias/gordon-fraser" publisher: "ACM" kind: "inproceedings" key: "KonatEV18" - 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: published: "https://researchr.org/publication/KonatEV16-LIVE" researchr: "https://researchr.org/publication/preprint-KonatEV16-0" cites: 0 citedby: 0 type: "Preprint" kind: "techreport" key: "preprint-KonatEV16-0" - 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 Journal" volume: "2" number: "3" pages: "9" kind: "article" key: "KonatSEV18" - 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" month: "October" 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: published: "https://researchr.org/publication/WachsmuthKVGV13" "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2013-014.pdf" researchr: "https://researchr.org/publication/TUD-SERG-2013-018" cites: 0 citedby: 0 institution: "Delft University of Technology" number: "TUD-SERG-2013-018" address: "Delft, The Netherlands" kind: "techreport" key: "TUD-SERG-2013-018" - 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: "Onward! 2014, Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, part of SPLASH '14, Portland, OR, USA, October 20-24, 2014" editor: - name: "Andrew P. Black" link: "https://researchr.org/alias/andrew-p.-black" - name: "Shriram Krishnamurthi" link: "http://www.cs.brown.edu/~sk/" - name: "Bernd Bruegge" link: "https://researchr.org/alias/bernd-bruegge" - name: "Joseph N. Ruskiewicz" link: "https://researchr.org/alias/joseph-n.-ruskiewicz" publisher: "ACM" isbn: "978-1-4503-3210-1" kind: "inproceedings" key: "VisserOnward14" - 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: "Software Language Engineering, 5th International Conference, SLE 2012, Dresden, Germany, September 26-28, 2012, Revised Selected Papers" editor: - name: "Krzysztof Czarnecki" link: "http://www.swen.uwaterloo.ca/~kczarnec/" - name: "Görel Hedin" link: "http://cs.lth.se/gorel_hedin" volume: "7745" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-36089-3" kind: "inproceedings" key: "KonatKWV12" - title: "Language-Parametric Methods for Developing Interactive Programming Systems" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" year: "2019" doi: "https://doi.org/10.4233/uuid:03d70c5d-596d-4c8c-92da-0398dd8221cb" links: doi: "https://doi.org/10.4233/uuid:03d70c5d-596d-4c8c-92da-0398dd8221cb" dblp: "http://dblp.uni-trier.de/rec/bibtex/phd/basesearch/Konat19" researchr: "https://researchr.org/publication/KonatDissertation" cites: 0 citedby: 0 school: "Delft University of Technology, Netherlands" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Sebastian Erdweg" link: "http://www.informatik.uni-marburg.de/~seba/" kind: "phdthesis" key: "KonatDissertation"