Skip to main content

Crate cure_java_ast

Crate cure_java_ast 

Source
Expand description

§cure-java-ast

Java AST(arena + NodeId)+ 编译单元/成员结构 + builder + cure_engine::Lang 实现。

覆盖反编译器产出的常见 Java:完整语句集(含 try/catch、switch、for-each、 lambda 等)、完整表达式集、类/接口/枚举成员。签名里的泛型/注解以原文字符串 保留(保真打印),方法体内才是可简化的 arena 节点。

零外部依赖(仅依赖 cure-engine),可单独作为“Java AST + 语义查询“基础库引用。

arena 不变量:children 永远先于父节点入 arena(index 递增)。

Structs§

ChildList
子节点容器:≤3 个孩子零堆分配(AST 绝大多数节点—— Binary/Assign=2、Member/MethodRef=1、VarDecl≤1、Literal=0…… 大语料 malloc 采样的剩余大头是每节点一次 Vec 堆分配); ≥4 溢出到堆。Block/Call 大参数列表溢出属预期路径。
CompilationUnit
编译单元。
Declarator
字段声明中的一个声明符(int a = 1, b[]; 里的 a、b)。
JavaAst
Java AST arena。只追加不回收,JavaId 永不失效。
JavaId
arena 句柄。
Node
NoopCandidate
同名同元数方法候选(no-op 调用消解用)。
Param
方法/构造器参数。
ParseError
解析错误(位置为 1-based 行/列)。
Sym
符号(intern 名字 id)。VarRef/Member/MethodRef 的名字字段—— 87% 重复率(实测 jdk-sources:4754 个名字节点仅 669 个唯一), String→Sym 后:构造去重、比较 u32、clone 零分配(copy_subtree/ clone_node 全线受益)。
TypeDecl
类型声明。

Enums§

BinOp
二元运算符(规范词汇表,语言负责映射)。
Effect
JType
Java 类型(第一阶段的最小集合;Ref 存类型名字符串,泛型参数并入字符串)。
Lit
字面量。
LitRef
字面量值的借用视图(语言 crate 从自己的负载映射)。
Member
类成员。
NodeData
节点负载:children 统一放在 Node::children,这里只放非节点数据。
NodeKind
NumVal
数值字面量的解析值(用于语义查询;原文见 Lit::NumRaw)。
TypeKind
UnOp
一元运算符。

Statics§

COLLECT_CALLS
PREPARE_CALLS
PREPARE_NODES

Functions§

unit_metrics
编译单元全部可执行体(方法/构造器/初始化块,含嵌套类型)的 结构指标总和。