SuperAPI AI 工具集

trieste-dev

通用与其它

查看项目

更新于 10-16 00:32

技能介绍

用途:在 rego-cpp 中规划并实现基于 Trieste 的编译器 pass、AST 变换与语言特性,适用于新增或修改 file-to-rego、rego-to-bundle 管线中的 pass、实现新 Rego 语法(新 token、语法规则)、修改良构性(WF)定义、调试 pass 失败或 WF 违规,以及需要跨解析器、pass、内建函数与 VM 协调的多步特性。

核心概念:Trieste 是多 pass 项重写系统。Pass 是 PassDef,接收符合输入 WF 的 AST 并重写为符合输出 WF 的 AST;除非指定 dir::once,pass 会反复运行至不动点。WF 是合法 AST 形状的结构规范,各 pass 声明其输出 WF,定义以 | 增量扩展。规则形式为 Pattern >> Effect。rego-cpp 用 Reader 解析、Rewriter 变换,并可用 WF 生成随机 AST 做生成式测试。

使用方式:先阅读相关 WF 定义(src/file_to_rego.cc、src/rego_to_bundle.cc、include/rego/rego.hh 的 wf 与 wf_bundle、src/internal.hh 的 wf_bundle_input),用 ./build/tools/rego eval --dump_passes .copilot/pass-debug/ -p <pass_name> '<query>' 转储 AST,或用 --wf 检查良构性。非平凡特性先做多视角分析(OPA 参考实现、AST 管线影响、WF 链、测试策略),再按管线阶段排序实现,一次只改一个 pass,先写 YAML 测试用例。验证命令包括 ./build/tests/rego_test -wf tests/regocpp.yaml、ctest --test-dir build -R "rego_test_regocpp|rego_test_bugs|rego_test_cts|rego_test_cpp_api"、ctest --test-dir build -R rego_test_opa --output-on-failure、./build/tools/rego test -f -c 1000,以及 ASan 构建 cmake --preset asan-clang && ninja -C build-asan && ctest --test-dir build-asan。

限制与常见错误:不先读 WF 定义、未逐 pass 测试、直接比较 child->type() 而非用 unwrap()、忘记错误规则、遍历方向错误、规则顺序不当、缺少 dir::once 导致不收敛、新增 Term 分支时未审计 dependency_graph.cc、resolver.cc、virtual_machine.cc 等类型分派点。新增复合节点应复用标准 Group → Literal → Expr 管线,避免平行路径。具体收费、平台与效果资料暂未提供。