Name Trees: Uniform and Extensible Interactions Between Languages and Language Extensions
Storm is a system for creating extensible languages. It allows creating both language extensions and entirely new languages conveniently. This is useful to create domain-specific languages (DSLs) that make certain specific tasks easier to achieve, and to add new functionality to existing languages. This extensibility is provided partially by the extensible syntax provided by Storm, and partially by the name tree that represents the global namespace in the system. This paper focuses on the name tree, which is shared between all languages in the system and allows them to exchange information between each other seamlessly. The name tree is extensible, which makes it possible for languages to extend the representation in order to accommodate new concepts while retaining compatibility with existing languages.
This paper describes the name tree used in Storm and illustrates how it can be used to incorporate new concepts in a type-safe way. We do this by showing extensions to the imperative language Basic Storm that add support for type-safe SQL queries and type-safe algebraic effects. We also show how the name tree allows Basic Storm to interact in a type-safe way with a separate language that is used to define grammars and semantic actions. The name tree is also useful for run-time reflection, and we will show how the information in the name tree can be used to implement a visual debugger and other tools that help developers understand the behavior of the system.
This submission is aimed at being published as an academic paper if possible.
Filip Strömbäck received his PhD in computer science from Linköping University, Sweden in spring 2023. His research interests are in extensible programming languages along with their programming environments, program visualization, and computer science education.
Mon 11 MarDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:00 - 14:30 | |||
13:00 30mTalk | Name Trees: Uniform and Extensible Interactions Between Languages and Language Extensions PX/24 Filip Strömbäck Linköping University | ||
13:30 30mTalk | Multi-threaded OpenSmalltalk VM: Choosing a Strategy for Parallelization PX/24 Leon Matthes Hasso Plattner Institute, University of Potsdam, Marcel Taeumel University of Potsdam; Hasso Plattner Institute, Eliot Miranda Cadence Design Systems, Robert Hirschfeld University of Potsdam; Hasso Plattner Institute | ||
14:00 30mTalk | Autocorrection in Projectional Editors PX/24 |