langium-cli

3.0.1 • Public • Published

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 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:

{
    // 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
    }
}

Dependencies (7)

Dev Dependencies (1)

Package Sidebar

Install

npm i langium-cli

Homepage

langium.org

Weekly Downloads

2,021

Version

3.0.1

License

MIT

Unpacked Size

242 kB

Total Files

70

Last publish

Collaborators

  • spoenemann
  • typefox-team
  • sailingfox
  • msujew