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.