wgsl-parse

Crates.iowgsl-parse
lib.rswgsl-parse
version0.2.0
created_at2024-08-20 22:53:58.866081+00
updated_at2025-07-28 09:27:47.668033+00
descriptionParse a wgsl source file to a syntax tree
homepage
repositoryhttps://github.com/wgsl-tooling-wg/wesl-rs
max_upload_size
id1345850
size230,487
Mathis Brossier (k2d222)

documentation

https://docs.rs/wgsl-parse

README

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

Other Features

name description
naga_ext enable all Naga/WGPU extensions (experimental)
serde derive Serialize and Deserialize for syntax tree nodes
tokrepr derive TokRepr for syntax tree nodes

Parsing and Stringification

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

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

# use wgsl_parse::syntax::TranslationUnit;
# use std::str::FromStr;
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}");
Commit count: 432

cargo fmt