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 在 解析器实现 中
每月396 次下载
在 5 个 包(4 个直接)中使用
695KB
17K SLoC
glsl-lang
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