Vlad A. Vergu
Delft University of Technology
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Vlad A. Vergu.
software language engineering | 2013
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.
Computer Languages, Systems & Structures | 2015
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.
sigplan symposium on new ideas new paradigms and reflections on programming and software | 2014
Eelco Visser; Guido Wachsmuth; Andrew Tolmach; Pierre Neron; Vlad A. Vergu; Augusto Passalaqua; Gabriël D. P. Konat
The realization of a language design requires multiple artifacts that redundantly encode the same information. This entails significant effort for language implementors, and often results in late detection of errors in language definitions. In this paper we present a proof-of-concept language designers workbench that supports generation of IDEs, interpreters, and verification infrastructure from a single source. This constitutes a first milestone on the way to a system that fully automates language implementation and verification.
software language engineering | 2013
Guido Wachsmuth; Gabriël D. P. Konat; Vlad A. Vergu; Danny M. Groenewegen; Eelco Visser
This paper is a pre-print of: Guido H. Wachsmuth, Gabriel D.P. Konat, Vlad A. Vergu, Danny M. Groenewegen, Eelco Visser. A Language Independent Task Engine for Incremental Name and Type Analysis. In: Martin Erwig, Richard F. Paige, Eric Van Wyk, editors, Software Language Engineering, Sixth International Conference, SLE 2013, Indianapolis, USA, October, 2013, Revised Selected Papers. Lecture Notes in Computer Science 8225, Springer Verlag 2013. Doi: 10.1007/978-3-319-02654-1_15 DEs depend on incremental name and type analysis for responsive feedback for large projects. In this paper, we present a language-independent approach for incremental name and type analysis. Analysis consists of two phases. The first phase analyzes lexical scopes and binding instances and creates deferred analysis tasks. A task captures a single name resolution or type analysis step. Tasks might depend on other tasks and are evaluated in the second phase. Incrementality is supported on file and task level. When a file changes, only this file is recollected and only those tasks are reevaluated, which are affected by the changes in the collected data. The analysis does neither re-parse nor re-traverse unchanged files, even if they are affected by changes in other files. We implemented the approach as part of the Spoofax Language Workbench and evaluated it for the WebDSL web programming language.
rewriting techniques and applications | 2015
Vlad A. Vergu; Pierre Neron; Eelco Visser
The formal definition the semantics of a programming language and its implementation are typically separately defined, with the risk of divergence such that properties of the formal semantics are not properties of the implementation. In this paper, we present DynSem, a domain-specific language for the specification of the dynamic semantics of programming languages that aims at supporting both formal reasoning and efficient interpretation. DynSem supports the specification of the operational semantics of a language by means of statically typed conditional term reduction rules. DynSem supports concise specification of reduction rules by providing implicit build and match coercions based on reduction arrows and implicit term constructors. DynSem supports modular specification by adopting implicit propagation of semantic components from I-MSOS, which allows omitting propagation of components such as environments and stores from rules that do not affect those. DynSem supports the declaration of native operators for delegation of aspects of the semantics to an external definition or implementation. DynSem supports the definition of auxiliary meta-functions, which can be expressed using regular reduction rules and are subject to semantic component propagation. DynSem specifications are executable through automatic generation of a Java-based AST interpreter.
Proceedings of the 13th international conference on Modularity | 2014
Sebastian Erdweg; Vlad A. Vergu; Mira Mezini; Eelco Visser
A key problem in metaprogramming and specifically in generative programming is to guarantee that generated code is well-formed with respect to the context-free and context-sensitive constraints of the target language. We propose typesmart constructors as a dynamic approach to enforcing the well-formedness of generated code. A typesmart constructor is a function that is used in place of a regular constructor to create values, but it may reject the creation of values if the given data violates some language-specific constraint. While typesmart constructors can be implemented individually, we demonstrate how to derive them automatically from a grammar, so that the grammar remains the sole specification of a languages syntax and is not duplicated. We have integrated support for typesmart constructors into the run-time system of Stratego to enforce usage of typesmart constructors implicitly whenever a regular constructor is called. We evaluate the applicability, performance, and usefulness of typesmart constructors for syntactic constraints in a compiler for MiniJava developed with Spoofax and in various language extensions of Java and Haskell implemented with SugarJ and SugarHaskell.
acm conference on systems programming languages and applications software for humanity | 2012
Gabriël D. P. Konat; Vlad A. Vergu; Lennart C. L. Kats; Guido Wachsmuth; Eelco Visser
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.
Proceedings of the 15th International Conference on Managed Languages & Runtimes | 2018
Vlad A. Vergu; Eelco Visser
DynSem is a domain-specific language for concise specification of the dynamic semantics of programming languages, aimed at rapid experimentation and evolution of language designs. DynSem specifications can be executed to interpret programs in the language under development. To enable fast turnaround during language development, we have developed a meta-interpreter for DynSem specifications, which requires minimal processing of the specification. In addition to fast development time, we also aim to achieve fast run times for interpreted programs. In this paper we present the design of a meta-interpreter for DynSem and report on experiments with JIT compiling the application of the meta-interpreter on the Graal VM. By interpreting specifications directly, we have minimal compilation overhead. By specializing pattern matches, maintaining call-site dispatch chains and using native control-flow constructs we gain significant run-time performance. We evaluate the performance of the meta-interpreter when applied to the Tiger language specification running a set of common benchmark programs. Specialization enables the Graal VM to JIT compile the meta-interpreter giving speedups of up to factor 15 over running on the standard Oracle Java VM.
Proceedings of the companion publication of the 13th international conference on Modularity | 2014
Sebastian Erdweg; Vlad A. Vergu; Mira Mezini; Eelco Visser
Program generators and transformations are hard to implement correctly, because the implementation needs to generically describe how to construct programs, for example, using templates or rewrite rules. We apply dynamic analysis to program generators in order to support developers in finding bugs and identifying the source of the bug. Our analysis focuses on syntactic language constraints and checks that generated programs are syntactically well-formed. To retain a languages grammar as the unique specification of the languages syntax, we devised mechanisms to derive the analysis from the grammar. Moreover, we designed a run-time system to support the modular activation/deactivation of the analysis, so that generators do not require adaption. We have implemented the analysis for the Stratego term-rewriting language and applied it in case studies based on Spoofax and SugarJ.
Archive | 2013
Sebastian Erdweg; Tijs van der Storm; Markus Völter; Meinte Boersma; Remi Bosman; William R. Cook; Albert Gerritsen; Steven Kelly; Pedro J. Molina; Risto Pohjonen; Riccardo Solmi; Vlad A. Vergu; Eelco Visser; Kevin van der Vlist; Guido Wachsmuth; Jimi van der Woning; Delphino Consultancy