2 个不稳定版本
0.1.0 | 2023年1月5日 |
---|---|
0.0.1 | 2022年9月28日 |
#365 in 渲染
695KB
19K SLoC
glast
glast 是一个用于解析和操作 glsl abstract syntax trees 的 crate,以及更多。
⚠ 这个 crate 仍在积极开发中。
这个 crate 的目标是可以对 OpenGL 着色语言进行解析和分析。这包括将源字符串解析成 AST,生成文件格式化和语法高亮信息,以及执行诸如名称解析和类型检查等分析。
与其他类似的 crate 和库不同,glast 被设计成 100% 符合规范。这意味着它正确地处理了诸如宏展开和条件编译等复杂的特性,即使在某些极其罕见的情况下。
glast 也是为 IDE 设计的,这意味着它优雅地处理语法错误,并具有出色的错误恢复策略以产生“尽力而为”的结果。它还产生语法和语义诊断,以及用于语法高亮的信息。
当前状态
词法分析器
功能 | 状态 |
---|---|
标记解析 | ✔ |
指令解析 | ✔ |
处理行续字符 | ✔ |
动态切换 GLSL 版本语法 | ✔ |
100% 符合规范的行为 | ✔ [1] |
[1]: 几乎不会触发的微小差异。请参阅 问题#4。
解析器
功能 | 状态 |
---|---|
GLSL 语言结构的解析 | ✔ |
解析所有 GLSL 版本 | ⚠ [2] |
正确展开宏 | ✔ |
处理条件编译 | ✔ |
产生语法错误和相关的语义诊断 | ✔ |
产生语法高亮信息 | ✔ |
产生文件格式化信息 | ❌ |
访问者 API | ❌ |
100% 符合规范的行为 | ⚠ [3] |
[2]: 目前仅支持 GLSL 450 和 460。
[3]: 测试不足,无法高度确信。
分析器
❌ 尚未开始工作。
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE。