Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Sebastian Erdweg is active.

Publication


Featured researches published by Sebastian Erdweg.


conference on object-oriented programming systems, languages, and applications | 2011

Variability-aware parsing in the presence of lexical macros and conditional compilation

Christian Kästner; Paolo G. Giarrusso; Tillmann Rendel; Sebastian Erdweg; Klaus Ostermann; Thorsten Berger

In many projects, lexical preprocessors are used to manage different variants of the project (using conditional compilation) and to define compile-time code transformations (using macros). Unfortunately, while being a simple way to implement variability, conditional compilation and lexical macros hinder automatic analysis, even though such analysis is urgently needed to combat variability-induced complexity. To analyze code with its variability, we need to parse it without preprocessing it. However, current parsing solutions use unsound heuristics, support only a subset of the language, or suffer from exponential explosion. As part of the TypeChef project, we contribute a novel variability-aware parser that can parse almost all unpreprocessed code without heuristics in practicable time. Beyond the obvious task of detecting syntax errors, our parser paves the road for further analysis, such as variability-aware type checking. We implement variability-aware parsers for Java and GNU C and demonstrate practicability by parsing the product line MobileMedia and the entire X86 architecture of the Linux kernel with 6065 variable features.


conference on object-oriented programming systems, languages, and applications | 2011

SugarJ: library-based syntactic language extensibility

Sebastian Erdweg; Tillmann Rendel; Christian Kästner; Klaus Ostermann

Existing approaches to extend a programming language with syntactic sugar often leave a bitter taste, because they cannot be used with the same ease as the main extension mechanism of the programming language - libraries. Sugar libraries are a novel approach for syntactically extending a programming language within the language. A sugar library is like an ordinary library, but can, in addition, export syntactic sugar for using the library. Sugar libraries maintain the composability and scoping properties of ordinary libraries and are hence particularly well-suited for embedding a multitude of domain-specific languages into a host language. They also inherit self-applicability from libraries, which means that sugar libraries can provide syntactic extensions for the definition of other sugar libraries. To demonstrate the expressiveness and applicability of sugar libraries, we have developed SugarJ, a language on top of Java, SDF and Stratego, which supports syntactic extensibility. SugarJ employs a novel incremental parsing technique, which allows changing the syntax within a source file. We demonstrate SugarJ by five language extensions, including embeddings of XML and closures in Java, all available as sugar libraries. We illustrate the utility of self-applicability by embedding XML Schema, a metalanguage to define XML languages.


software language engineering | 2013

The State of the Art in Language Workbenches. Conclusions from the Language Workbench Challenge

Sebastian Erdweg; Tijs van der Storm; Markus Völter; Meinte Boersma; Remi Bosman; William R. Cook; Albert Gerritsen; Angelo Hulshout; Steven Kelly; Alex Loh; Gabriël D. P. Konat; Pedro J. Molina; Martin Palatnik; Risto Pohjonen; Eugen Schindler; Klemens Schindler; Riccardo Solmi; Vlad A. Vergu; Eelco Visser; Kevin van der Vlist; Guido Wachsmuth; Jimi van der Woning

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.


language descriptions tools and applications | 2012

Language composition untangled

Sebastian Erdweg; Paolo G. Giarrusso; Tillmann Rendel

In language-oriented programming and modeling, software developers are largely concerned with the definition of domain-specific languages (DSLs) and their composition. While various implementation techniques and frameworks exist for defining DSLs, language composition has not obtained enough attention and is not well-enough understood. In particular, there is a lack of precise terminology for describing observations about language composition in theory and in existing language-development systems. To clarify the issue, we specify five forms of language composition: language extension, language restriction, language unification, self-extension, and extension composition. We illustrate this classification by various examples and apply it to discuss the performance of different language-development systems with respect to language composition. We hope that the terminology provided by our classification will enable more precise communication on language composition.


conference on object-oriented programming systems, languages, and applications | 2012

A variability-aware module system

Christian Kästner; Klaus Ostermann; Sebastian Erdweg

Module systems enable a divide and conquer strategy to software development. To implement compile-time variability in software product lines, modules can be composed in different combinations. However, this way, variability dictates a dominant decomposition. As an alternative, we introduce a variability-aware module system that supports compile-time variability inside a module and its interface. So, each module can be considered a product line that can be type checked in isolation. Variability can crosscut multiple modules. The module system breaks with the antimodular tradition of a global variability model in product-line development and provides a path toward software ecosystems and product lines of product lines developed in an open fashion. We discuss the design and implementation of such a module system on a core calculus and provide an implementation for C as part of the TypeChef project. Our implementation supports variability inside modules from #ifdef preprocessor directives and variable linking at the composition level. With our implementation, we type check all configurations of all modules of the open source product line Busybox with 811~compile-time options, perform linker check of all configurations, and report found type and linker errors -- without resorting to a brute-force strategy.


Computer Languages, Systems & Structures | 2015

Evaluating and comparing language workbenches

Sebastian Erdweg; Tijs van der Storm; Markus Völter; Laurence Tratt; Remi Bosman; William R. Cook; Albert Gerritsen; Angelo Hulshout; Steven Kelly; Alex Loh; Gabriël D. P. Konat; Pedro J. Molina; Martin Palatnik; Risto Pohjonen; Eugen Schindler; Klemens Schindler; Riccardo Solmi; Vlad A. Vergu; Eelco Visser; Kevin van der Vlist; Guido Wachsmuth; Jimi van der Woning

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. HighlightsWe describe the challenges posed by the 4 Language Workbench Challenges run so far.We establish a feature model that captures the design space of language workbenches.We classify 10 language workbenches according to our feature model.We present empirical data on 10 implementations of a questionnaire DSL.We propose benchmark problems to be used in future Language Workbench Challenges.


software product lines | 2011

Abstract Features in Feature Modeling

Thomas Thüm; Christian Kästner; Sebastian Erdweg; Norbert Siegmund

A software product line is a set of program variants, typically generated from a common code base. Feature models describe variability in product lines by documenting features and their valid combinations. In product-line engineering, we need to reason about variability and program variants for many different tasks. For example, given a feature model, we might want to determine the number of all valid feature combinations or compute specific feature combinations for testing. However, we found that contemporary reasoning approaches can only reason about feature combinations, not about program variants, because they do not take abstract features into account. Abstract features are features used to structure a feature model that, however, do not have any impact at implementation level. Using existing feature-model reasoning mechanisms for program variants leads to incorrect results. Hence, although abstract features represent domain decisions that do not affect the generation of a program variant. We raise awareness of the problem of abstract features for different kinds of analyses on feature models. We argue that, in order to reason about program variants, abstract features should be made explicit in feature models. We present a technique based on propositional formulas that enables to reason about program variants rather than feature combinations. In practice, our technique can save effort that is caused by considering the same program variant multiple times, for example, in product-line testing.


feature oriented software development | 2012

Toward variability-aware testing

Christian Kästner; Alexander von Rhein; Sebastian Erdweg; Jonas Pusch; Sven Apel; Tillmann Rendel; Klaus Ostermann

We investigate how to execute a unit test for all products of a product line without generating each product in isolation in a brute-force fashion. Learning from variability-aware analyses, we (a) design and implement a variability-aware interpreter and, alternatively, (b) reencode variability of the product line to simulate the test cases with a model checker. The interpreter internally reasons about variability, executing paths not affected by variability only once for the whole product line. The model checker achieves similar results by reusing powerful off-the-shelf analyses. We experimented with a prototype implementation for each strategy. We compare both strategies and discuss trade-offs and future directions. In the long run, we aim at finding an efficient testing approach that can be applied to entire product lines with millions of products.


generative programming and component engineering | 2011

Growing a language environment with editor libraries

Sebastian Erdweg; Lennart C. L. Kats; Tillmann Rendel; Christian Kästner; Klaus Ostermann; Eelco Visser

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.


international conference on functional programming | 2013

Modular and automated type-soundness verification for language extensions

Florian Lorenzen; Sebastian Erdweg

Language extensions introduce high-level programming constructs that protect programmers from low-level details and repetitive tasks. For such an abstraction barrier to be sustainable, it is important that no errors are reported in terms of generated code. A typical strategy is to check the original user code prior to translation into a low-level encoding, applying the assumption that the translation does not introduce new errors. Unfortunately, such assumption is untenable in general, but in particular in the context of extensible programming languages, such as Racket or SugarJ, that allow regular programmers to define language extensions. In this paper, we present a formalism for building and automatically verifying the type-soundness of syntactic language extensions. To build a type-sound language extension with our formalism, a developer declares an extended syntax, type rules for the extended syntax, and translation rules into the (possibly further extended) base language. Our formalism then validates that the user-defined type rules are sufficient to guarantee that the code generated by the translation rules cannot contain any type errors. This effectively ensures that an initial type check prior to translation precludes type errors in generated code. We have implemented a core system in PLT Redex and we have developed a syntactically extensible variant of System Fw that we extend with let notation, monadic do blocks, and algebraic data types. Our formalism verifies the soundness of each extension automatically.

Collaboration


Dive into the Sebastian Erdweg's collaboration.

Top Co-Authors

Avatar

Mira Mezini

Technische Universität Darmstadt

View shared research outputs
Top Co-Authors

Avatar

Eelco Visser

Delft University of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Oliver Bračevac

Technische Universität Darmstadt

View shared research outputs
Top Co-Authors

Avatar

Vlad A. Vergu

Delft University of Technology

View shared research outputs
Top Co-Authors

Avatar

Sylvia Grewe

Technische Universität Darmstadt

View shared research outputs
Top Co-Authors

Avatar

Gabriël D. P. Konat

Delft University of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge