langium-cli
v3.2.0
Published
CLI for Langium - the language engineering tool
Downloads
23,506
Readme
Langium CLI
This package provides a command line interface for Langium.
Usage: langium [options] [command]
Options:
-V
,--version
— output the version number-h
,--help
— display help for command
Commands:
generate [options]
— generate code for a Langium grammarhelp [command]
— display help for command
Generating Language Infrastructure
The main purpose of this tool is to generate the infrastructure for a language from its grammar declaration file. This command requires a configuration file langium-config.json
.
Usage: langium generate [options]
Options:
-f
,--file <file>
— the configuration file or package.json setting up the generator-w
,--watch
— enables watch mode-h
,--help
— display help for command
Configuration
The configuration for the generate
command is written into a file named langium-config.json
. Alternatively, it can be embedded in the package.json
using a property langium
.
Schema:
{
// Name of the language project
projectName: string
// Array of language configurations
languages: {
// The identifier of your language as used in vscode
id: string
// Path to the grammar file
grammar: string
// File extensions with leading `.`
fileExtensions: string[]
// Enable case-insensitive keywords parsing
caseInsensitive: boolean
// Enable generating a TextMate syntax highlighting file
textMate: {
// Output path to syntax highlighting file (json)
out: string
}
// Enable generating a monarch syntax highlighting file
monarch: {
// Output path to syntax highlighting file (js)
out: string
}
// Enable generating a prism syntax highlighting file
prism: {
// Output path to syntax highlighting file (js)
out: string
}
// Enable generating railroad syntax diagram
railroad: {
// Output path to syntax diagrams
out: string
// Whether to print diagrams all into a single html file or in separate svg files (optional)
mode: 'html' | 'svg'
}
// Configure the chevrotain parser for a single language
chevrotainParserConfig: IParserConfig
}[]
// Main output directory for TypeScript code
out: string
// Set the file extension for generated local imports (e.g. ".js")
importExtension: string
// Configure the chevrotain parser for all languages
chevrotainParserConfig: IParserConfig
}
Example:
{
"projectName": "DomainModel",
"languages": [{
"id": "domain-model",
"grammar": "src/language-server/domain-model.langium",
"fileExtensions": [".dmodel"],
"textMate": {
"out": "syntaxes/domain-model.tmLanguage.json"
},
"railroad": {
"out": "docs/syntax-diagram.html"
}
}],
"out": "src/language-server/generated",
"chevrotainParserConfig": {
"recoveryEnabled": true,
"nodeLocationTracking": "full",
"maxLookahead": 3
}
}