Package Exports
- langium
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (langium) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Langium
Langium is a language engineering tool with built-in support for the Language Server Protocol. It has a simple and direct integration with the VS Code extension API.
Getting Started
Langium offers a Yeoman generator to create a new language extension for VS Code. The only prerequisite for the following terminal commands is NodeJS version 14 or higher.
- Install Yeoman and the Langium extension generator.
npm install -g yo generator-langium- Run the generator and answer a few questions.
yo langium- Open the new folder in VS Code (replace
hello-worldwith the extension name you chose).
code hello-worldPress F5 to launch the extension in a new Extension Development Host window.
Open a folder, create a file with your chosen file name extension (
.hellois the default), and see that validation and completion (ctrl+space) works:
Follow the instructions in langium-quickstart.md (in your extension folder) to go further.
How Does it Work?
The core of Langium is a grammar declaration language in which you describe multiple aspects of your language:
- Tokens (keywords and terminal rules)
- Syntax (parser rules)
- Abstract syntax tree (AST)
The grammar declaration language of Langium is very similar to Xtext. Please follow the Xtext documentation to learn how to use this language.
Langium features a command line interface (langium-cli) that reads a grammar declaration and generates a parser, TypeScript type declarations for the AST and more.
Integration with the Language Server Protocol (LSP) is done with vscode-languageserver. You have full access to the LSP API in Langium, so you can register additional message handlers or extend the protocol in a breeze.
The main code of Langium consists of a set of services that are connected via dependency injection (DI). You can override the default functionality and add your own service classes by specifying a DI module.
Examples
The source repository of Langium includes examples that demonstrate different use cases.