ManyDSL: A Host for Many Languages
authors: Piotr Danilewski, Philipp Slusallek
Abstract
Domain-specific languages are becoming increasingly important. Almost every application touches multiple domains. But how to define, use, and combine multiple DSLs within the same application? The most common approach is to split the project along the domain boundaries into multiple pieces and files. Each file is then compiled separately. Alternatively, multiple languages can be embedded in a flexible host language: within the same syntax a new domain semantic is provided. In this paper we follow a less explored route of metamorphic languages. These languages are able to modify their own syntax and semantics on the fly, thus becoming a more flexible host for DSLs. Our language allows for dynamic creation of grammars and switching languages where needed. We achieve this through a novel concept of Syntax-Directed Execution. A language grammar includes semantic actions that are pieces of functional code executed immediately during parsing. By avoiding additional intermediate representation, connecting actions from different languages and domains is greatly simplified. Still, actions can generate highly specialized code though lambda encapsulation and Dynamic Staging.
#people #dsl #programminglanguages
https://scholar.google.ru/scholar?start=20&q=generative+llvm&hl=ru&as_sdt=0,5&as_ylo=2016
authors: Piotr Danilewski, Philipp Slusallek
Abstract
Domain-specific languages are becoming increasingly important. Almost every application touches multiple domains. But how to define, use, and combine multiple DSLs within the same application? The most common approach is to split the project along the domain boundaries into multiple pieces and files. Each file is then compiled separately. Alternatively, multiple languages can be embedded in a flexible host language: within the same syntax a new domain semantic is provided. In this paper we follow a less explored route of metamorphic languages. These languages are able to modify their own syntax and semantics on the fly, thus becoming a more flexible host for DSLs. Our language allows for dynamic creation of grammars and switching languages where needed. We achieve this through a novel concept of Syntax-Directed Execution. A language grammar includes semantic actions that are pieces of functional code executed immediately during parsing. By avoiding additional intermediate representation, connecting actions from different languages and domains is greatly simplified. Still, actions can generate highly specialized code though lambda encapsulation and Dynamic Staging.
#people #dsl #programminglanguages
https://scholar.google.ru/scholar?start=20&q=generative+llvm&hl=ru&as_sdt=0,5&as_ylo=2016
ManyDSL: хост для многих языков
авторы: Петр Данилевский, Филипп Слусаллек
абстрактный
Специфичные для домена языки становятся все более важными. Почти каждое приложение касается нескольких доменов. Но как определить, использовать и объединить несколько DSL в одном приложении? Наиболее распространенный подход - разделить проект по границам домена на несколько частей и файлов. Каждый файл затем компилируется отдельно. В качестве альтернативы, несколько языков могут быть встроены в гибкий основной язык: в одном и том же синтаксисе обеспечивается новая семантика домена. В этой статье мы следуем менее изученному маршруту метаморфических языков. Эти языки могут изменять свой собственный синтаксис и семантику на лету, таким образом становясь более гибким хостом для DSL. Наш язык позволяет динамически создавать грамматики и переключать языки там, где это необходимо. Мы достигаем этого благодаря новой концепции синтаксически-ориентированного выполнения. Языковая грамматика включает в себя семантические действия, которые представляют собой фрагменты функционального кода, выполняемые непосредственно во время синтаксического анализа. Избегая дополнительного промежуточного представления, связывание действий из разных языков и доменов значительно упрощается. Тем не менее, действия могут генерировать узкоспециализированный код посредством лямбда-инкапсуляции и динамического размещения.
#people #dsl #programminglanguages
https://scholar.google.ru/scholar?start=20&q=generative+llvm&hl=ru&as_sdt=0,5&as_ylo=2016
авторы: Петр Данилевский, Филипп Слусаллек
абстрактный
Специфичные для домена языки становятся все более важными. Почти каждое приложение касается нескольких доменов. Но как определить, использовать и объединить несколько DSL в одном приложении? Наиболее распространенный подход - разделить проект по границам домена на несколько частей и файлов. Каждый файл затем компилируется отдельно. В качестве альтернативы, несколько языков могут быть встроены в гибкий основной язык: в одном и том же синтаксисе обеспечивается новая семантика домена. В этой статье мы следуем менее изученному маршруту метаморфических языков. Эти языки могут изменять свой собственный синтаксис и семантику на лету, таким образом становясь более гибким хостом для DSL. Наш язык позволяет динамически создавать грамматики и переключать языки там, где это необходимо. Мы достигаем этого благодаря новой концепции синтаксически-ориентированного выполнения. Языковая грамматика включает в себя семантические действия, которые представляют собой фрагменты функционального кода, выполняемые непосредственно во время синтаксического анализа. Избегая дополнительного промежуточного представления, связывание действий из разных языков и доменов значительно упрощается. Тем не менее, действия могут генерировать узкоспециализированный код посредством лямбда-инкапсуляции и динамического размещения.
#people #dsl #programminglanguages
https://scholar.google.ru/scholar?start=20&q=generative+llvm&hl=ru&as_sdt=0,5&as_ylo=2016
У записи 2 лайков,
0 репостов,
380 просмотров.
0 репостов,
380 просмотров.
Эту запись оставил(а) на своей стене Наима Джошуа