4 research outputs found
V1E: A Kernel for Domain-specific Textual Variability Modelling Languages
v1e is a language kernel for textual variability modelling built on top of the language-development system DjDSL. As a language kernel,v1e provides a minimal but extensible set of abstractions to implement families of domain-specific languages for textual variability modelling. v1e provides for a small and versatile abstract syntax to encode feature models using multiplicity constraints and canonical semantics. v1e offers built-in analysis support, such as configuration validation, by maintaining internal BDD representations. A derived language becomes realised as a collection of extensions dependent on the language kernel. v1e is designed to behighly extensible and embeddable, e.g., as a dynamic library or as aREPL shell. In this paper, we showcase a selected derived languageand the design decisions involved: a kernel implementation of TVL on top of v1e. We conclude the paper by pointing out current limitations (e.g., representing attributed variability models) and future directions (e.g., analysis support beyond BDD).Series: Technical Reports / Institute for Information Systems and New Medi
V1E: A Kernel for Domain-specific Textual Variability Modelling Languages
v1e is a language kernel for textual variability modelling built on top of the language-development system DjDSL. As a language kernel,v1e provides a minimal but extensible set of abstractions to implement families of domain-specific languages for textual variability modelling. v1e provides for a small and versatile abstract syntax to encode feature models using multiplicity constraints and canonical semantics. v1e offers built-in analysis support, such as configuration validation, by maintaining internal BDD representations. A derived language becomes realised as a collection of extensions dependent on the language kernel. v1e is designed to behighly extensible and embeddable, e.g., as a dynamic library or as aREPL shell. In this paper, we showcase a selected derived languageand the design decisions involved: a kernel implementation of TVL on top of v1e. We conclude the paper by pointing out current limitations (e.g., representing attributed variability models) and future directions (e.g., analysis support beyond BDD).Series: Technical Reports / Institute for Information Systems and New Medi
Covariant Conversions (CoCo): A Design Pattern for Type-Safe Modular Software Evolution in Object-Oriented Systems
Software evolution is an essential challenge for all software engineers, typically addressed solely using code versioning systems and language-specific code analysis tools. Most versioning systems view the evolution of a system as a directed acyclic graph of steps, with independent branches that could be merged. What these systems fail to provide is the ability to ensure stable APIs or that each subsequent evolution represents a cohesive extension yielding a valid system. Modular software evolution ensures that APIs remain stable, which is achieved by ensuring that only additional methods, fields, and data types are added, while treating existing modules through blackbox interfaces. Even with these restrictions, it must be possible to add new variations, fields, and methods without extensive duplication of prior module code. In contrast to most literature, our focus is on ensuring modular software evolution using mainstream object-oriented programming languages, instead of resorting to novel language extensions. We present a novel CoCo design pattern that supports type-safe covariantly overridden convert methods to transform earlier data type instances into their newest evolutionary representation to access operations that had been added later. CoCo supports both binary methods and producer methods. We validate and contrast our approach using a well-known compiler construction case study that other researchers have also investigated for modular evolution. Our resulting implementation relies on less boilerplate code, is completely type-safe, and allows clients to use normal object-oriented calling conventions. We also compare CoCo with existing approaches to the Expression Problem. We conclude by discussing how CoCo could change the direction of currently proposed Java language extensions to support closed-world assumptions about data types, as borrowed from functional programming
Recommended from our members
Using domain specific language and sequence to sequence models as a hybrid framework for a natural language interface to a database solution
This thesis was submitted for the award of Doctor of Philosophy and was awarded by Brunel University LondonThe aim of this project is to provide a new approach to solving the problem of
converting natural language into a language capable of querying a database or data
repository. This problem has been around for a while, in the 1970's the US Navy
developed a solution called LADDER and since then there have been an array of
solutions, approaches and tweaks that have kept the research community busy. The
introduction of electronic assistants into the smart phone in 2010 has given new
impetus to this problem.
With the increasingly pervasive nature of data and its ever expanding use to answer
questions within business science, medicine extracting data is becoming more important.
The idea behind this project is to make data more democratised by allowing access to it
without the need for specialist languages. The performance and reliability of converting
natural language into structured query language can be problematic in handling nuances
that are prevalent in natural language. Relational databases are not designed to understand
language nuance.
This project introduces the following components as part of a holistic approach to improving
the conversion of a natural language statement into a language capable of querying a data
repository.
â—Ź The idea proposed in this project combines the use of sequence to sequence models
in conjunction with the natural language part of speech technologies and domain
specific languages to convert natural language queries into SQL. The approach
being proposed by this chapter is to use natural language processing to perform an
initial shallow pass of the incoming query and then use Google's Tensor Flow to
refine the query with the use of a sequence to sequence model.
â—Ź This thesis is also proposing to use a Domain Specific Language (DSL) as part of the
conversion process. The use of the DSL has the potential to allow the natural
language query to be translated into more than just an SQL statement, but any query
language such as NoSQL or XQuery