Files
infocom-systems-design/node_modules/langium/README.md
2025-10-03 22:27:28 +03:00

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.