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 crateTranslationUnit;
let source = "@fragment fn frag_main() -> @location(0) vec4f { return vec4(1); }";
let mut module = from_str.unwrap;
// modify the module as needed...
println!;