Security News
vlt Debuts New JavaScript Package Manager and Serverless Registry at NodeConf EU
vlt introduced its new package manager and a serverless registry this week, innovating in a space where npm has stagnated.
Langium is a tool for developing domain-specific languages (DSLs) and language servers. It provides a framework for creating custom languages with a focus on language design, parsing, and tooling support.
Language Definition
Langium allows you to define a custom language using a grammar syntax. This code sample demonstrates how to define a simple DSL with a model and elements using Langium's grammar services.
const { createLangiumGrammarServices } = require('langium');
const services = createLangiumGrammarServices();
const grammar = `grammar MyDSL
entry Model:
'model' name=ID '{'
(elements+=Element)*
'}';
Element:
'element' name=ID;`;
services.GrammarParser.parse(grammar);
Language Server
Langium can be used to create a language server that provides IDE features like auto-completion and error checking for your custom language. This code sample shows how to start a language server for a simple DSL.
const { startLanguageServer } = require('langium');
startLanguageServer({
grammar: `grammar MyDSL
entry Model:
'model' name=ID '{'
(elements+=Element)*
'}';
Element:
'element' name=ID;`,
port: 5000
});
ANTLR (Another Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It is similar to Langium in that it allows you to define grammars and generate parsers, but it is more focused on parsing and less on providing language server features.
PEG.js is a simple parser generator for JavaScript that produces fast parsers with excellent error reporting. It is similar to Langium in terms of grammar definition and parsing capabilities, but it does not provide built-in support for language servers or IDE features.
Lezer is a parser system for JavaScript that is designed to be small and fast. It is similar to Langium in that it allows you to define grammars and create parsers, but it is more lightweight and does not include language server capabilities.
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.
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.
npm install -g yo generator-langium
yo langium
hello-world
with the extension name you chose).code hello-world
Press F5 to launch the extension in a new Extension Development Host window.
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) to go further.
The core of Langium is a grammar declaration language in which you describe multiple aspects of your language:
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.
The source repository of Langium includes examples that demonstrate different use cases.
FAQs
A language engineering tool for the Language Server Protocol
We found that langium demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt introduced its new package manager and a serverless registry this week, innovating in a space where npm has stagnated.
Security News
Research
The Socket Research Team uncovered a malicious Python package typosquatting the popular 'fabric' SSH library, silently exfiltrating AWS credentials from unsuspecting developers.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.