15 个版本

0.6.0 2024年8月19日
0.5.3 2024年7月23日
0.5.2 2023年11月13日
0.5.1 2023年4月27日
0.1.3 2021年4月16日

984解析器实现

Download history 11/week @ 2024-05-01 22/week @ 2024-05-08 23/week @ 2024-05-15 19/week @ 2024-05-22 22/week @ 2024-05-29 55/week @ 2024-06-05 34/week @ 2024-06-12 17/week @ 2024-06-19 17/week @ 2024-06-26 41/week @ 2024-07-03 25/week @ 2024-07-10 101/week @ 2024-07-17 119/week @ 2024-07-24 35/week @ 2024-07-31 24/week @ 2024-08-07 139/week @ 2024-08-14

每月396 次下载
5 包(4 个直接)中使用

BSD-3-Clause

695KB
17K SLoC

glsl-lang

Crates.io docs.rs

glsl-lang 是一个实现 GLSL 4.x 语言的 LALR 解析器的包,部分支持预处理器指令。其 AST 和功能模仿了 Dimitri Sabadie 的 glsl

有关更多详细比较元素,请参阅 主页

示例

解析 GLSL

use glsl_lang::{ast, parse::DefaultParse};

// Some GLSL source to parse
let source = r#"void main() {
    gl_FragColor = vec4(1., 0.5, 0.25, 1.);
}"#;

// Try parsing the source
let ast = ast::TranslationUnit::parse(source);
assert!(ast.is_ok());

包功能

此包具有以下功能

  • parser-expr:生成解析 GLSL 表达式的解析器代码
  • parser-statement:生成解析 GLSL 语句的解析器代码

默认情况下,这些功能均未启用,因为它们会显著增加编译时间。作为替代方案,您可以使用 Parsable 特性,它将语法规则包装在合适的源代码中,并将结果与 AST 匹配以提取我们感兴趣的部分。

// parse::Parse is not implemented for ast::Expr with the default features
use glsl_lang::{ast, parse::Parsable};

let source = "a = b ? 1.0 : 0.0";

// Parse with Parsable::parse
let ast = ast::Expr::parse(source);
assert!(ast.is_ok());

作者

Alixinne [email protected]

许可证

BSD-3-Clause

依赖项

~2.3–9.5MB
~83K SLoC