publications: - title: "Generating Editors for Embedded Languages. Integrating SGLR into IMP" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" month: "April" abstract: "Integrated Development Environments (IDEs) increase productivity by providing a rich user interface and rapid feedback for a specific language. Creating an editor for a specific language is not a trivial undertaking, and is a cumbersome task even when working with an extensible framework such as Eclipse. A new IBM-guided effort, the IMP framework, relieves the IDE developer from a significant portion of the required work by providing various abstractions for this. For embedded languages, such as embedded regular expressions, SQL queries, or code generation templates, its LALR parser generator falls short, however. Scannerless parsing with SGLR enables concise, modular definition of such languages. In this paper, we present an integration of SGLR into IMP, demonstrating that a scannerless parser can be successfully integrated into an IDE. Given an SDF syntax definition, the sdf2imp tool automatically generates an editor plugin based on the IMP API, complete with syntax checking, syntax highlighting, outline view, and code folding. Using declarative domain-specific languages, these services can be customized, and using the IMP metatooling framework it can be extended with other features. " links: successor: "https://researchr.org/publication/KatsVisser2010" "spoofax homepage": "http://strategoxt.org/Spoofax" "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2008-006.pdf" tags: - "rule-based" - "Eclipse" - "syntax definition" - "completeness" - "SDF" - "SQL" - "C++" - "code generation" - "abstraction" - "Spoofax" - "Meta-Environment" - "parsing" - "scannerless parsing" - "extensible language" - "ASF+SDF" - "SGLR" - "query language" - "domain-specific language" researchr: "https://researchr.org/publication/KatsKV08" cites: 0 citedby: 1 booktitle: "LDTA" kind: "inproceedings" key: "KatsKV08" - title: "Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-LR parsing" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Emma Nilsson-Nyman" link: "http://www.cs.lth.se/home/Emma.Nilsson_Nyman/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://doi.acm.org/10.1145/1640089.1640122" abstract: "Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. A heavy burden lies on developers of new languages to provide adequate IDE support. Code generation techniques provide a viable, efficient approach to semi-automatically produce IDE plugins. Key components for the realization of plugins are the language's grammar and parser. For embedded languages and language extensions, constituent IDE plugin modules and their grammars can be combined. Unlike conventional parsing algorithms, scannerless generalized-LR parsing supports the full set of context-free grammars, which is closed under composition, and hence can parse language embeddings and extensions composed from separate grammar modules. To apply this algorithm in an interactive environment, this paper introduces a novel error recovery mechanism, which allows it to be used with files with syntax errors -- common in interactive editing. Error recovery is vital for providing rapid feedback in case of syntax errors, as most IDE services depend on the parser -- from syntax highlighting to semantic analysis and cross-referencing. We base our approach on the principles of island grammars, and derive permissive grammars with error recovery productions from normal SDF grammars. To cope with the added complexity of these grammars, we adapt the parser to support backtracking. We evaluate the recovery quality and performance of our approach using a set of composed languages, based on Java and Stratego. " links: doi: "http://doi.acm.org/10.1145/1640089.1640122" successor: "https://researchr.org/publication/JongeKVS12" "technical report (pdf)": "http://www.lclnet.nl/publications/error-recovery.pdf" tags: - "parsing algorithm" - "semantics" - "rule-based" - "Java" - "SDF" - "composition" - "analysis" - "principles" - "C++" - "code generation" - "context-aware" - "Meta-Environment" - "parsing" - "scannerless parsing" - "systematic-approach" - "island grammars" - "ASF+SDF" - "grammar" - "Stratego" researchr: "https://researchr.org/publication/KatsJNV09" cites: 0 citedby: 1 pages: "445-464" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsJNV09" - title: "Language-parametric Techniques for Language-Specific Editors" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" year: "2014" month: "January" doi: "http://dx.doi.org/10.4233/uuid:5b485a4a-e502-42d9-8bd2-21c02226ed91" abstract: "The goal of this dissertation is to develop techniques that simplify the implementation of tool support for new languages. More specifically, we focus on language-parametric solutions for the implementation of language-specific editor support. In the first part of this dissertation we investigate generic techniques to recover from syntax errors that occur during interactive editing. In the second part we look into language-parametric techniques for the implementation of refactoring tools." links: doi: "http://dx.doi.org/10.4233/uuid:5b485a4a-e502-42d9-8bd2-21c02226ed91" "blog": "http://eelcovisser.org/post/271/language-parametric-techniques-for-language-specific-editors" "pdf": "http://repository.tudelft.nl/assets/uuid:5b485a4a-e502-42d9-8bd2-21c02226ed91/doc.pdf" researchr: "https://researchr.org/publication/DeJonge2014" cites: 0 citedby: 0 school: "Delft University of Technology" address: "Delft, TheNetherlands" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Arie van Deursen" link: "http://www.st.ewi.tudelft.nl/~arie/" kind: "phdthesis" key: "DeJonge2014" - title: "Fusing a Transformation Language with an Open Compiler" author: - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2008" doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.042" abstract: "Program transformation systems provide powerful analysis and transformation frameworks as well as concise languages for language processing, but instantiating them for every subject language is an arduous task, most often resulting in half-completed frontends. Compilers provide mature frontends with robust parsers and type checkers, but solving language processing problems in general-purpose languages without transformation libraries is tedious. Reusing these frontends with existing transformation systems is therefore attractive. However, for this reuse to be optimal, the functional logic found in the frontend should be exposed to the transformation system – simple data serialization of the abstract syntax tree is not enough, since this fails to expose important compiler functionality, such as import graphs, symbol tables and the type checker. In this paper, we introduce a novel and general technique for combining term-based transformation systems with existing language frontends. The technique is presented in the context of a scriptable analysis and transformation framework for Java built on top of the Eclipse Java compiler. The framework consists of an adapter automatically extracted from the abstract syntax tree of the compiler and an interpreter for the Stratego program transformation language. The adapter allows the Stratego interpreter to rewrite directly on the compiler AST. We illustrate the applicability of our system with scripts written in Stratego that perform framework and library-specific analyses and transformations." links: doi: "http://dx.doi.org/10.1016/j.entcs.2008.03.042" "technical report (pdf)": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2007-025.pdf" tags: - "programming languages" - "model-to-model transformation" - "object-oriented programming" - "rule-based" - "Java" - "program analysis" - "Eclipse" - "completeness" - "data-flow language" - "graph transformation" - "interpreter" - "abstract syntax" - "Stratego/XT" - "transformation language" - "term rewriting" - "functional programming" - "Eclipse Java Compiler" - "points-to analysis" - "domain analysis" - "analysis" - "type system" - "reuse" - "data-flow programming" - "data-flow" - "source-to-source" - "graph-rewriting" - "logic programming" - "transformation system" - "compiler" - "model transformation" - "open compiler" - "subject-oriented programming" - "context-aware" - "logic" - "Spoofax" - "rewriting logic" - "rewriting" - "data-flow analysis" - "parsing" - "feature-oriented programming" - "open-source" - "transformation" - "Stratego" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/KallebergV08" cites: 0 citedby: 1 journal: "ENTCS" volume: "203" number: "2" pages: "21-36" kind: "article" key: "KallebergV08" - title: "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" kind: "inproceedings" key: "VKP2011" - title: "The Spoofax Name Binding Language" author: - name: "Gabriël Konat" link: "http://nl.linkedin.com/in/gabrielkonat" - name: "Vlad A. Vergu" link: "http://www.linkedin.com/in/vladv" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Guido Wachsmuth" link: "https://www.linkedin.com/in/guidowachsmuth/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "https://doi.org/10.1145/2384716.2384748" abstract: "In textual software languages, names are used to identify program elements such as variables, methods, and classes. Name analysis algorithms resolve names in order to establish references between definitions and uses of names. In this poster, we present the Spoofax Name Binding Language (NBL), a declarative meta-language for the specification of name binding and scope rules, which departs from the programmatic encodings of name binding provided by regular approaches. NBL aspires to become the universal language for name binding, which can be used next to BNF definitions in reference manuals, as well as serve the generation of implementations." links: doi: "https://doi.org/10.1145/2384716.2384748" "url": "https://doi.org/10.1145/2384716.2384748" tags: - "C++" - "Spoofax" researchr: "https://researchr.org/publication/KonatVKWV2012" cites: 0 citedby: 0 booktitle: "Companion to the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2012, Tucson, AR, USA, October 19 - 26, 2012" kind: "inproceedings" key: "KonatVKWV2012" - title: "The Spoofax language workbench: rules for declarative specification of languages and IDEs" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "https://doi.org/10.1145/1869459.1869497" abstract: "Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into a single environment. It uses concise, declarative specifications for languages and IDE services. In this paper we describe the architecture of Spoofax and introduce idioms for high-level specifications of language semantics using rewrite rules, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion. The implementation of these services is supported by language-parametric editor service classes that can be dynamically loaded by the Eclipse IDE, allowing new languages to be developed and used side-by-side in the same Eclipse environment." links: doi: "https://doi.org/10.1145/1869459.1869497" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/KatsV10" "acm dl": "https://doi.org/10.1145/1932682.1869497" tags: - "programming languages" - "model-to-model transformation" - "workbench" - "semantics" - "rule-based" - "Eclipse" - "meta programming" - "model editor" - "graph transformation" - "meta-model" - "transformation language" - "architecture" - "reuse" - "model-driven development" - "graph-rewriting" - "rules" - "C++" - "code completion" - "code generation" - "model transformation" - "programming" - "language workbench" - "Spoofax" - "Meta-Environment" - "rewriting" - "parsing" - "meta-objects" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/KatsV10" cites: 0 citedby: 2 pages: "444-463" booktitle: "OOPSLA" kind: "inproceedings" key: "KatsV10"