langium-cli
Version:
CLI for Langium - the language engineering tool
102 lines (89 loc) • 3.37 kB
Markdown
# Langium CLI
This package provides a command line interface for [Langium](https://langium.org/).
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 grammar
* `help [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:
```typescript
{
// 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:
```json
{
"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
}
}
```