tree-sitter-wdl

Tree-sitter grammar for WDL (Workflow Description Language).

Usage

See the Tree-sitter documentation for the list of available language bindings and basic usage information. To use the Rust binding, add the following to your Cargo.toml:

toml [dependencies] tree-sitter-wdl-1 = "0.1.0"

Design

This repository provides a single grammar that parses WDL versions 1.x (draft-* and development versions are not supported). The grammar is designed to be permissive and error-tolerant. A parser generated from this grammar will allow token combinations that are forbidden by the WDL specification or that are only allowed in certain WDL versions.

As Tree-sitter generates LR(1) parsers, only one token of look-ahead is available and thus syntax elements that require multiple tokens of look-ahead are difficult or impossible to write. For WDL, this means strings (including the contents of the command block) cannot be described by the grammar. Fortunately, Tree-sitter allows for external parsing of these syntax elements. The external parser for the WDL grammar is in scanner.cc and implements the API described in the Tree-sitter documentation.

Development