The "Language Server Protocol" (LSP) is a "don't call us, we'll call you" plugin mechanism for arbitrary programming language support for IDEs such as VScode. The protocol clearly separates the "what" (syntax, static semantics, dynamic semantics, refactorings) from the "how" (scheduling asynchronous jobs, interprocess communication, caching, (de)serialization, visualization, UI interactions, editors) in IDE construction.
In this talk, we demonstrate how to construct an LSP server for your own language, be it a programming language or a domain-specific language. We use the Rascal meta-programming language, which allows us to express programming language syntax and semanticson the abstraction level of the language, without even thinking about lower-level implementation details. Such a language prototype canbe wired directly into a "parametric" LSP (one that works for all languages made in Rascal). In other words, only the "what" is left,and the "how" has been completely automated.
Rascal, LSP, and VScode are a potent combination for designing and deploying your own languages, but when we add Gitpod to the mix,the languages really come alive immediately. We demonstrate a Logo-like programming language designed for high school students, one they can extend and adapt themselves, to run directly in the browser with some nice visual effects.