publications: - 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: "International Workshop on Language Descriptions, Tools, and Applications, LDTA '12, Tallinn, Estonia, March 31 - April 1, 2012" editor: - name: "Anthony Sloane" link: "https://researchr.org/alias/anthony-sloane" - name: "Suzana Andova" link: "https://researchr.org/alias/suzana-andova" publisher: "ACM" isbn: "978-1-4503-1536-4" kind: "inproceedings" key: "VollebregtKV12" - 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: "Electronic Notes in Theoretical Computer Science" volume: "238" number: "3" pages: "281-291" kind: "article" key: "DuranRBBEKKMSV09" - 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: "Rewriting Logic and Its Applications - 8th International Workshop, WRLA 2010, Held as a Satellite Event of ETAPS 2010, Paphos, Cyprus, March 20-21, 2010, Revised Selected Papers" editor: - name: "Peter Csaba Ölveczky" link: "https://researchr.org/alias/peter-csaba-%C3%B6lveczky" volume: "6381" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-16309-8" kind: "inproceedings" key: "DuranRBBBCEEJK10" - 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: "Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA" editor: - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" - name: "Siobhán Clarke" link: "https://www.cs.tcd.ie/Siobhan.Clarke/" - name: "Martin C. Rinard" link: "https://researchr.org/alias/martin-c.-rinard" address: "Reno/Tahoe, Nevada" publisher: "ACM" isbn: "978-1-4503-0203-6" kind: "inproceedings" key: "KatsV10" - 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: "Science of Computer Programming" volume: "78" number: "10" pages: "1752-1769" kind: "article" key: "SloaneKV13" - 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" publisher: "ACM" isbn: "978-1-4503-0942-4" kind: "inproceedings" key: "ErdwegKRKOV11-extensibility" - 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: "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" editor: - name: "Cristina Videira Lopes" link: "https://researchr.org/alias/cristina-videira-lopes" - name: "Kathleen Fisher" link: "https://researchr.org/alias/kathleen-fisher" publisher: "ACM" isbn: "978-1-4503-0942-4" kind: "inproceedings" key: "KatsVV11a" - 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: "Software and Systems Modeling" volume: "9" number: "3" pages: "375-402" kind: "article" key: "HemelKGV10" - 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: "ACM Transactions on Programming Languages and Systems" volume: "34" number: "4" pages: "15" kind: "article" key: "JongeKVS12" - title: "Building Blocks for Language Workbenches" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" year: "2011" doi: "https://www.base-search.net/Record/3444274c4be75a1b11bf7583bbf954be4964f8829339765c83b366ae9e789c4a" note: "base-search.net (fttudelft:oai:tudelft.nl:uuid:c3b17264-a7ed-4f6d-aca7-88c34f2f6958)" links: doi: "https://www.base-search.net/Record/3444274c4be75a1b11bf7583bbf954be4964f8829339765c83b366ae9e789c4a" dblp: "http://dblp.uni-trier.de/rec/bibtex/phd/basesearch/Kats11" researchr: "https://researchr.org/publication/basesearch-8138" cites: 0 citedby: 0 school: "Delft University of Technology, Netherlands" kind: "phdthesis" key: "basesearch-8138" - 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: "Journal of Symbolic Computation" volume: "46" number: "2" pages: "150-182" kind: "article" key: "HemelGKV11" - 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: "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" editor: - name: "Cristina Videira Lopes" link: "https://researchr.org/alias/cristina-videira-lopes" - name: "Kathleen Fisher" link: "https://researchr.org/alias/kathleen-fisher" publisher: "ACM" isbn: "978-1-4503-0942-4" kind: "inproceedings" key: "ErdwegKRKOV11-mdsd" - 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: "ACM Symposium on New Ideas in Programming and Reflections on Software, Onward! 2012, part of SPLASH '12, Tucson, AZ, USA, October 21-26, 2012" editor: - name: "Gary T. Leavens" link: "https://researchr.org/alias/gary-t.-leavens" - name: "Jonathan Edwards" link: "https://researchr.org/alias/jonathan-edwards" publisher: "ACM" isbn: "978-1-4503-1562-3" kind: "inproceedings" key: "KatsVKV12" - 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: "Companion to the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-13, 2007, Nashville, TN, USA" editor: - name: "Gail E. Harris" link: "https://researchr.org/alias/gail-e.-harris" publisher: "ACM" isbn: "978-1-60558-220-7" kind: "inproceedings" key: "GroenewegenHKV08" - 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: "Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers" editor: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Dragan Gasevic" link: "http://www.sfu.ca/~dgasevic/" - name: "Jeffrey G. Gray" link: "http://www.gray-area.org/" volume: "5969" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-12106-7" kind: "inproceedings" key: "JongeNKV09" - 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: "Proceedings of 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" editor: - name: "Cristina Videira Lopes" link: "https://researchr.org/alias/cristina-videira-lopes" - name: "Kathleen Fisher" link: "https://researchr.org/alias/kathleen-fisher" publisher: "ACM" isbn: "978-1-4503-0940-0" kind: "inproceedings" key: "KatsVV11" - 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: "Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA" editor: - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" - name: "Siobhán Clarke" link: "https://www.cs.tcd.ie/Siobhan.Clarke/" - name: "Martin C. Rinard" link: "https://researchr.org/alias/martin-c.-rinard" address: "Reno/Tahoe, Nevada" publisher: "ACM" isbn: "978-1-4503-0203-6" kind: "inproceedings" key: "KatsVW10" - 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: "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: "Proceedings of the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2009, October 25-29, 2009, Orlando, Florida, USA" editor: - name: "Shail Arora" link: "https://researchr.org/alias/shail-arora" - name: "Gary T. Leavens" link: "https://researchr.org/alias/gary-t.-leavens" publisher: "ACM" isbn: "978-1-60558-766-0" kind: "inproceedings" key: "KatsJNV09" - 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: "Generative Programming And Component Engineering, Proceedings of the 10th International Conference on Generative Programming and Component Engineering, GPCE 2011, Portland, Oregon, USA, October 22-24, 2011" editor: - name: "Ewen Denney" link: "https://researchr.org/alias/ewen-denney" - name: "Ulrik Pagh Schultz" link: "https://researchr.org/alias/ulrik-pagh-schultz" publisher: "ACM" isbn: "978-1-4503-0689-8" kind: "inproceedings" key: "LindemanKV11" - 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: "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: "Proceedings of the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-23, 2008, Nashville, TN, USA" editor: - name: "Gail E. Harris" link: "https://researchr.org/alias/gail-e.-harris" publisher: "ACM" isbn: "978-1-60558-215-3" kind: "inproceedings" key: "KatsBV08" - 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" 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: published: "https://researchr.org/publication/KatsVKV12" researchr: "https://researchr.org/publication/preprint-KatsVKV12" cites: 0 citedby: 0 type: "Preprint" kind: "techreport" key: "preprint-KatsVKV12" - title: "Supporting Language Extension and Separate Compilation by Mixing Java and Bytecode" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" year: "2007" month: "August" abstract: "Language extensions, such as embedded domain-specific languages, are often implemented by assimilating (rewriting) the extended language constructs to the host language. The result can then be compiled by a standard compiler. This approach is limited by the host language, which may not be designed with code generation in mind. An example of this is Java, which provides insufficient protection against name capture of host language identifiers, and does not provide the same low-level primitives that exist in the underlying Java Virtual Machine. For example, it does not provide equivalents for a jump or jump subroutine instruction, unbalanced synchronization, stack manipulation, or specification of debugging information. Code generated from a language that does not match Java’s structure can therefore require inefficient or laborious alternatives instead. We propose a new open compiler model to provide generators direct access to the underlying compiled code. With conventional open compilers, leveraging the bytecode-generating back-end is an intricate process, requiring adaptations tangled throughout the system. The result is hard to develop, understand, and maintain. By providing a mixed source language of Java and the underlying bytecode instruction language, we can provide access to the back-end at the source-level. Compiled instructions can be used in place of statements or expressions, which can aid language extensions but also applications of separate compilation. For example, it can simplify aspect weavers by enabling direct composition of source code aspects with compiled classes, or vice versa. As such, we also introduce a Java traits compiler that allows operation on classes and traits in both source and compiled form." note: "INF/SCR-07-02" links: "pdf": "http://www.lclnet.nl/publications/kats-mastersthesis.pdf" "project home page": "http://www.strategoxt.org/Stratego/TheDryadCompiler" tags: - "Java" - "synchronization" - "language extension" - "modeling language" - "language modeling" - "composition" - "language design" - "source-to-source" - "graph-rewriting" - " direct manipulation" - "C++" - "code generation" - "debugging" - "compiler" - "language embedding" - "information models" - "language composition" - "rewriting" - "compilers" - "process modeling" - "systematic-approach" - "open-source" - "domain-specific language" researchr: "https://researchr.org/publication/Kats07" cites: 0 citedby: 1 school: "Utrecht University" address: "Utrecht, The Netherlands" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" kind: "mastersthesis" key: "Kats07" - title: "EpiSpin: An Eclipse Plug-In for Promela/Spin Using Spoofax" author: - name: "Bob de Vos" link: "https://researchr.org/alias/bob-de-vos" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Cornelis Pronk" link: "https://researchr.org/alias/cornelis-pronk" year: "2011" doi: "http://dx.doi.org/10.1007/978-3-642-22306-8_12" abstract: "This paper presents EpiSpin: an Eclipse plug-in for editing Promela models. It provides error markers as you type, various editor services and an interface to perform verification and simulation runs using Spin. An additional tool shows the static relations between channels, processes and global variables. These tools have been built using the Spoofax language workbench." links: doi: "http://dx.doi.org/10.1007/978-3-642-22306-8_12" tags: - "workbench" - "Eclipse" - "model editor" - "meta-model" - "modeling language" - "modeling" - "language modeling" - "C++" - "language workbench" - "Spoofax" - "Meta-Environment" - "process modeling" researchr: "https://researchr.org/publication/VKP2011" cites: 0 citedby: 0 pages: "177-182" booktitle: "Model Checking Software. Proceedings of the 18th International SPIN Workshop" volume: "6823" series: "Lecture Notes in Computer Science" publisher: "Springer" kind: "inproceedings" key: "VKP2011" - 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: "Software Language Engineering - Third International Conference, SLE 2010, Eindhoven, The Netherlands, October 12-13, 2010, Revised Selected Papers" editor: - name: "Brian A. Malloy" link: "https://researchr.org/alias/brian-a.-malloy" - name: "Steffen Staab" link: "https://researchr.org/alias/steffen-staab" - name: "Mark van den Brand" link: "https://researchr.org/alias/mark-van-den-brand" volume: "6563" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-19439-9" kind: "inproceedings" key: "KatsKV10-SLE" - 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: "Companion to the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, SPLASH/OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA" editor: - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" - name: "Siobhán Clarke" link: "https://www.cs.tcd.ie/Siobhan.Clarke/" - name: "Martin C. Rinard" link: "https://researchr.org/alias/martin-c.-rinard" publisher: "ACM" isbn: "978-1-4503-0240-1" kind: "inproceedings" key: "KatsV10a" - 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: "Proceedings of the 8th OOPSLA Workshop on Domain Specific Modelling (DSM'08)" editor: - name: "Jeffrey G. Gray" link: "http://www.gray-area.org/" - name: "Jonathan Sprinkle" link: "https://researchr.org/alias/jonathan-sprinkle" - name: "Juha-Pekka Tolvanen" link: "http://www.metacase.com/jpt.html" - name: "Matti Rossi" link: "https://researchr.org/alias/matti-rossi" address: "Nashville, Tennessee, USA" kind: "inproceedings" key: "GroenewegenHKV08-DSM" - 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: "Generative Programming And Component Engineering, Proceedings of the 10th International Conference on Generative Programming and Component Engineering, GPCE 2011, Portland, Oregon, USA, October 22-24, 2011" editor: - name: "Ewen Denney" link: "https://researchr.org/alias/ewen-denney" - name: "Ulrik Pagh Schultz" link: "https://researchr.org/alias/ulrik-pagh-schultz" publisher: "ACM" isbn: "978-1-4503-0689-8" kind: "inproceedings" key: "ErdwegKRKOV11gpce" - 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: "Tenth IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2010, Timisoara, Romania, 12-13 September 2010" publisher: "IEEE Computer Society" isbn: "978-0-7695-4178-5" kind: "inproceedings" key: "KatsV10scam" - title: "Code Generation by Model Transformation" author: - name: "Zef Hemel" link: "http://zef.me" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13" abstract: "The realization of model-driven software development requires effective techniques for implementing code generators. In this paper, we present a case study of code generation by model transformation with Stratego, a high-level transformation language based on the paradigm of rewrite rules with programmable strategies that integrates model-to-model, model-to-code, and code-to-code transformations. The use of concrete object syntax guarantees syntactic correctness of code patterns, and enables the subsequent transformation of generated code. The composability of strategies supports two dimensions of transformation modularity. Vertical modularity is achieved by designing a generator as a pipeline of model-to-model transformations that gradually transforms a high-level input model to an implementation. Horizontal modularity is achieved by supporting the definition of plugins which implement all aspects of a language feature. We discuss the application of these techniques in the implementation of WebDSL, a domain-specific language for dynamic web applications with a rich data model. " links: doi: "http://dx.doi.org/10.1007/978-3-540-69927-9_13" successor: "https://researchr.org/publication/HemelKGV10" "technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-012.pdf" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "WebDSL" - "concrete object syntax" - "rule-based" - "transformation engineering" - "syntax definition" - "meta programming" - "data-flow language" - "pattern language" - "case study" - "graph transformation" - "meta-model" - "modeling language" - "modeling" - "language engineering" - "transformation language" - "software language engineering" - "language modeling" - "web engineering" - "data-flow programming" - "model-driven development" - "data-flow" - "source-to-source" - "graph-rewriting" - "software engineering" - "rules" - "model-driven engineering" - "C++" - "programming paradigms" - "code generation" - "object-role modeling" - "aspect oriented programming" - "model transformation" - "web applications" - "DSL" - "subject-oriented programming" - "Meta-Environment" - "rewriting" - "rewriting strategies" - "feature-oriented programming" - "concrete syntax" - "open-source" - "meta-objects" - "transformation" - "Stratego" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/HemelKV08" cites: 0 citedby: 3 pages: "183-198" booktitle: "Theory and Practice of Model Transformations, First International Conference, ICMT 2008, Zürich, Switzerland, July 1-2, 2008, Proceedings" editor: - name: "Antonio Vallecillo" link: "http://www.lcc.uma.es/~av/" - name: "Jeffrey G. Gray" link: "http://www.gray-area.org/" - name: "Alfonso Pierantonio" link: "http://www.di.univaq.it/alfonso" volume: "5063" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-69926-2" kind: "inproceedings" key: "HemelKV08" - title: "Building Blocks for Language Workbenches" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" year: "2011" abstract: "This dissertation presents research on techniques, methods, and tool support for domain-specific language engineering. Domain-specific language engineering is the discipline of designing, developing, and maintaining domain-specific programming languages. The focus of this thesis is the architecture of language workbenches their underlying technologies. Language workbenches are tools that make language engineering more efficient by providing an integrated development environment for language engineering tasks. In particular, we introduce the Spoofax language workbench, and describe its techniques for high-level, portable language definitions, language composition, interactive support for defining languages, and language testing. Our research focuses on three main themes: applying domain-specific languages for declarative specification of languages and IDEs; supporting declarative syntax definition for generating a parser-based, interactive development environment; and providing interactive meta-tooling support, exploring the application of modern IDE technology to DSL engineering. " links: "pdf": "http://lclnet.nl/thesis" tags: - "programming languages" - "workbench" - "rule-based" - "syntax definition" - "meta programming" - "meta-model" - "language engineering" - "architecture" - "composition" - "testing" - "model-driven development" - "model-driven engineering" - "C++" - "DSL" - "programming" - "language workbench" - "Spoofax" - "Meta-Environment" - "parsing" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/Kats2011" cites: 0 citedby: 0 school: "Delft University of Technology" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Arie van Deursen" link: "http://www.st.ewi.tudelft.nl/~arie/" kind: "phdthesis" key: "Kats2011" - 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: "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: "Compiler Construction, 18th International Conference, CC 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings" editor: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Michael I. Schwartzbach" link: "http://www.brics.dk/~mis/" volume: "5501" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-00721-7" kind: "inproceedings" key: "KatsSV09" - 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: "Proceedings of the Eight Workshop on Language Descriptions, Tools, and Applications" editor: - name: "Jurgen J. Vinju" link: "http://homepages.cwi.nl/~jurgenv/" - name: "Adrian Johnstone" link: "http://www.cs.rhul.ac.uk/~adrian/" volume: "238" number: "5" series: "Electronic Notes in Theoretical Computer Science " publisher: "Elsevier" kind: "inproceedings" key: "KatsKV08" - 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: "Electronic Notes in Theoretical Computer Science" volume: "253" number: "7" pages: "149-163" kind: "article" key: "KatsKV10" - 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: "Electronic Notes in Theoretical Computer Science" volume: "253" number: "7" pages: "205-219" kind: "article" key: "SloaneKV10"