Skip to main content

Crate cure_engine

Crate cure_engine 

Source
Expand description

§cure-engine

语言无关的代码语义简化引擎。核心抽象:

  • Lang:语言适配层(结构 + 语义查询 + 构造);
  • Effect:副作用格,语义保守性的基石;
  • Edit / Rule:改写事务(提案 → 成本校验 → 原子应用);
  • simplify:fixed-point pass runner,成本单调下降保证收敛;
  • rules: 只依赖 Lang 的通用规则集(布尔、自赋值、常量条件、局部传播等)。

语言 crate(如 cure-java-ast)实现 Lang 并注册规则;本 crate 零外部依赖。

Re-exports§

pub use analysis::subtree_metrics;
pub use analysis::TreeMetrics;
pub use effect::Effect;
pub use kind::BinOp;
pub use kind::LitRef;
pub use kind::NodeKind;
pub use kind::UnOp;
pub use lang::Lang;
pub use lang::ReassocOutcome;
pub use pass::simplify;
pub use pass::Config;
pub use pass::Report;
pub use pass::fold_root;
pub use rule::Edit;
pub use rule::Rule;
pub use rule::RewriteCtx;

Modules§

analysis
通用轻量分析:局部变量读/写集合(只依赖 Lang 规范词汇表)。
cost
成本模型:默认节点权重表。
effect
副作用格(effect lattice)。
kind
规范节点种类表:引擎共享规则所依赖的最小结构词汇表。
lang
Lang trait:语言适配层。引擎的一切通用逻辑只通过它访问语言 AST。
pass
Pass runner:fixed-point 循环 + 成本门槛 + 编辑账本。
pattern
最小 Pattern DSL:静态可构造的树形模式 + 绑定。
rule
规则 trait 与编辑描述。
rules
引擎内置通用规则:只依赖 Lang 抽象,任何语言 crate 均可复用。
walk
迭代式遍历(显式栈,避免深树递归爆栈),并收集父指针表。

Macros§

pat
静态声明一个 Pat 常量,如: pat!(IF_RET_TF, Kind(If, [Bind("cond"), Kind(Return, [LitBool(true)])…]))。