51 lines
2.5 KiB
Markdown
51 lines
2.5 KiB
Markdown
# Langium
|
|
|
|
Langium is a language engineering tool with built-in support for the [Language Server Protocol](https://microsoft.github.io/language-server-protocol/). It has a simple and direct integration with the [VS Code extension API](https://code.visualstudio.com/api/language-extensions/overview).
|
|
|
|
More information: 🌍 https://langium.org
|
|
|
|
## Getting Started
|
|
|
|
Langium offers a [Yeoman](https://yeoman.io) generator to create a new language extension for VS Code. The only prerequisite for the following terminal commands is [NodeJS](https://nodejs.org/) version 16 or higher.
|
|
|
|
1. Install Yeoman and the Langium extension generator.
|
|
```
|
|
npm install -g yo generator-langium
|
|
```
|
|
|
|
2. Run the generator and answer a few questions.
|
|
```
|
|
yo langium
|
|
```
|
|
|
|
3. Open the new folder in VS Code (replace `hello-world` with the extension name you chose).
|
|
```
|
|
code hello-world
|
|
```
|
|
|
|
4. Press **F5** to launch the extension in a new Extension Development Host window.
|
|
|
|
5. Open a folder, create a file with your chosen file name extension (`.hello` is the default), and see that validation and completion (ctrl+space) works:
|
|
|
|
Follow the instructions in `langium-quickstart.md` (in your extension folder) and the [documentation on the website](https://langium.org/docs/) 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)
|
|
|
|
Please follow the [Langium documentation](https://langium.org/docs/grammar-language/) to learn how to use this language.
|
|
|
|
Langium features a command line interface ([langium-cli](https://www.npmjs.com/package/langium-cli)) that reads a grammar declaration and generates TypeScript type declarations for the AST and more.
|
|
|
|
Integration with the Language Server Protocol (LSP) is done with [vscode-languageserver](https://www.npmjs.com/package/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](https://github.com/eclipse-langium/langium/tree/main/examples) that demonstrate different use cases.
|