Matches in SemOpenAlex for { <https://semopenalex.org/work/W2285384785> ?p ?o ?g. }
- W2285384785 abstract "In the recent years, there is an increasing interest for new programming languages that are special for certain problem domains – so-called domain-specific languages. A domain-specific language (DSL) provides a syntax and semantics for a particular class of problems. When writing code in a DSL, its concrete syntax enables higher end-user productivity because the syntax is closer to the problem domain than the syntax of a general-purpose language (GPL). However, implementing a new programming language is expensive, because language developers need to design and develop a new syntax and semantics. Because of these high initial costs, stakeholders desist from implementing a new DSL from scratch. To lower the initial costs of developing a DSL, there is the idea to embed a language into an existing language. The existing language—often a general-purpose language—acts as a host language for the guest language that is embedded into the host as a library. Such an embedded language reuses the general-purpose features of the host language. Consequently, this reduces the development costs of the embedded language by reusing these features and by reusing the existing host language infrastructure, i.e., its development tools, parser, compiler, and/or virtual machine. Furthermore, new language features can be incrementally added to the embedded language by “simply” extending its library. Indeed, there is a comparative study that shows that embedding requires significant lower investments to implement a new language compared to traditional non-embedded approaches.However, existing language embedding approaches have several important limitations w.r.t. the features that are usually supported by non-embedded approaches. First and foremost, most embedding approaches and host languages lack support for designing a concrete syntax for an embedded language. Second, current approaches do not allow embedding special language semantics that the embedded language needs but that conflict the host semantics. Third, there is no support for embedding multiple languages that have interactions in their syntax and semantics. The lack of support for these features in current embedding approaches mostly stem from their restrictions to adapt constructs in embedded languages and host languages.To address these limitations, this thesis proposes the reflective embedding architecture that embeds languages into reflective host languages. A reflective language is a special programming language with support for reflection that enables programs to reason about their structure and behavior. Specifically, there is support for introspection that allows analyzing programs, and support for intercession that allows transforming programs. Using reflection helps overcoming current limitations of language embedding, since it enables evolution of embedded languages by analyzing and transforming their libraries.The reflective embedding architecture itself defines a process how to embed a language’s syntax and semantics as a set of artifacts. Every language is an encapsulated component that has a set of well-defined interfaces. The classes of the embedding implement these interfaces to define the details of the execution semantics for that language component. In addition, the architecture enables embedding of language compositions, scoping strategies, domain-specific analyses and transformations. What is special in the architecture is that every language component implicitly has a meta level. When necessary, the language developers can use this meta level to evolve embeddings, which enables a number of benefits.First, in contrast to other embedded approaches, the reflective embedding architecture enables support for concrete syntax for embedded languages without high initial syntax costs. For an embedded language, developers can annotate its library with meta data for rewriting DSL programs in concrete syntax into a corresponding executable form. By using a special technique for agile grammar specification, called island grammars, developers only need to specify those parts of the embedded language’s grammar that deviate from the grammar of the host language. Island grammars help significantly reducing the initial syntax costs, while supporting the full class of context-free grammars.Second, the meta level enables support for composition of languages with interactions in their syntax and semantics. On the one hand, the architecture provides special language combiners that analyze and compose the syntax of all embedded languages in a composition. On the other hand, there are language combiners that transform embedded languages so that they can interact at well-defined points in their evaluation logic. By allowing interacting compositions, the architecture enables embedding special language abstractions that facilitate end user programmers to implement more modular programs.Third, the meta level enables embedding languages that interact with their host languages. The meta level uses reflective features to interact with the evaluation of host language constructs in order to change the host’s semantics. Only when the host semantics can be changed, developers can embed sophisticated DSLs.To review the reflective embedding architecture, this thesis conducts a qualitative and quantitative evaluation of the proposed concepts. First, to qualitatively evaluate the concepts of this thesis, the evaluation reviews the support of the reflective embedding architecture for supporting a set of desirable properties and compares its support to related work. Second, to quantitatively evaluate the concepts, the evaluation compares to embedded and non-embedded approaches using benchmarks. The results show that the architecture’s flexibility only comes with moderately increased runtime costs." @default.
- W2285384785 created "2016-06-24" @default.
- W2285384785 creator A5070272451 @default.
- W2285384785 date "2011-11-29" @default.
- W2285384785 modified "2023-09-26" @default.
- W2285384785 title "Reflective Embedding of Domain-Specific Languages" @default.
- W2285384785 cites W142284515 @default.
- W2285384785 cites W1480157704 @default.
- W2285384785 cites W1485665416 @default.
- W2285384785 cites W1487005365 @default.
- W2285384785 cites W1490781270 @default.
- W2285384785 cites W1490855506 @default.
- W2285384785 cites W1495071437 @default.
- W2285384785 cites W1498739950 @default.
- W2285384785 cites W1499274542 @default.
- W2285384785 cites W1500250067 @default.
- W2285384785 cites W1505012818 @default.
- W2285384785 cites W1505842519 @default.
- W2285384785 cites W1505866493 @default.
- W2285384785 cites W1512221544 @default.
- W2285384785 cites W1517055698 @default.
- W2285384785 cites W151797637 @default.
- W2285384785 cites W1523112259 @default.
- W2285384785 cites W1524613989 @default.
- W2285384785 cites W1527793496 @default.
- W2285384785 cites W1528415032 @default.
- W2285384785 cites W1536900254 @default.
- W2285384785 cites W1539723268 @default.
- W2285384785 cites W1554230175 @default.
- W2285384785 cites W1554977156 @default.
- W2285384785 cites W1556513858 @default.
- W2285384785 cites W1560802117 @default.
- W2285384785 cites W1560964942 @default.
- W2285384785 cites W1564121721 @default.
- W2285384785 cites W1567927032 @default.
- W2285384785 cites W1591471358 @default.
- W2285384785 cites W1598263475 @default.
- W2285384785 cites W1600872613 @default.
- W2285384785 cites W1607942576 @default.
- W2285384785 cites W1610570299 @default.
- W2285384785 cites W1649645444 @default.
- W2285384785 cites W1673568926 @default.
- W2285384785 cites W1693442237 @default.
- W2285384785 cites W1721219911 @default.
- W2285384785 cites W1731558674 @default.
- W2285384785 cites W1740526726 @default.
- W2285384785 cites W174389993 @default.
- W2285384785 cites W1749568426 @default.
- W2285384785 cites W1759840776 @default.
- W2285384785 cites W1781522597 @default.
- W2285384785 cites W1804899404 @default.
- W2285384785 cites W1812582761 @default.
- W2285384785 cites W1839902311 @default.
- W2285384785 cites W1850047186 @default.
- W2285384785 cites W1851327982 @default.
- W2285384785 cites W187507574 @default.
- W2285384785 cites W1938881678 @default.
- W2285384785 cites W1964071625 @default.
- W2285384785 cites W1965418329 @default.
- W2285384785 cites W1965664509 @default.
- W2285384785 cites W1966789365 @default.
- W2285384785 cites W1967081032 @default.
- W2285384785 cites W1969857501 @default.
- W2285384785 cites W1970462831 @default.
- W2285384785 cites W1971661342 @default.
- W2285384785 cites W1971860760 @default.
- W2285384785 cites W1972055106 @default.
- W2285384785 cites W1972328015 @default.
- W2285384785 cites W1973817937 @default.
- W2285384785 cites W1976218147 @default.
- W2285384785 cites W1977431221 @default.
- W2285384785 cites W1977710006 @default.
- W2285384785 cites W1979522147 @default.
- W2285384785 cites W1982534263 @default.
- W2285384785 cites W1986511474 @default.
- W2285384785 cites W1988412861 @default.
- W2285384785 cites W1995674161 @default.
- W2285384785 cites W1996404651 @default.
- W2285384785 cites W2000090290 @default.
- W2285384785 cites W2002568360 @default.
- W2285384785 cites W2004176798 @default.
- W2285384785 cites W2007920703 @default.
- W2285384785 cites W2009464583 @default.
- W2285384785 cites W2013399578 @default.
- W2285384785 cites W2014019774 @default.
- W2285384785 cites W2014021676 @default.
- W2285384785 cites W2014596857 @default.
- W2285384785 cites W2014881790 @default.
- W2285384785 cites W2017711643 @default.
- W2285384785 cites W2018045485 @default.
- W2285384785 cites W2020782492 @default.
- W2285384785 cites W2022744394 @default.
- W2285384785 cites W2024177683 @default.
- W2285384785 cites W2026049208 @default.
- W2285384785 cites W2026098209 @default.
- W2285384785 cites W2026667713 @default.
- W2285384785 cites W2029414465 @default.
- W2285384785 cites W2030098725 @default.
- W2285384785 cites W2031334538 @default.
- W2285384785 cites W2037941060 @default.