wgsl-parse 0.1.0

Parse a wgsl source file to a syntax tree
Documentation

wgsl-parse

A parser and syntax tree for WGSL files, written directly from the specification with lalrpop.

It supports WESL language extensions guarded by feature flags.

WESL Features

name description WESL Specification
wesl enable all WESL extensions below
imports import statements and inline qualified paths complete
attributes extra attributes locations on statements complete
condcomp @if attributes complete
generics @type attributes experimental

Parsing and Stringification

[TranslationUnit][syntax::TranslationUnit] implements [FromStr][std::str::FromStr]. Other syntax nodes also implement FromStr: GlobalDirective, GlobalDeclaration, Statement and Expression.

The syntax tree elements implement [Display][std::fmt::Display]. The display is always pretty-printed.

# use crate::syntax::TranslationUnit;
let source = "@fragment fn frag_main() -> @location(0) vec4f { return vec4(1); }";
let mut module = TranslationUnit::from_str(source).unwrap();
// modify the module as needed...
println!("{module}");