# Arachne：MoonBit 正则行为契约与兼容性测试工具

## 基本信息

- **项目名称：**Arachne：MoonBit 正则行为契约与兼容性测试工具
- **参赛者：**韦安良　 **联系方式：**199****5340
- **参赛方向：**新项目方向
- **项目方向：**MoonBit 工具库 / 开发者工具　 **项目类型：**非移植项目
- **仓库：**[github.com/wallll-wal6/arachne](https://github.com/wallll-wal6/arachne)

## 项目简介

Arachne 把正则表达式的模式、输入和预期结果写成可重复运行的行为契约，用于比较不同 MoonBit 正则后端在编译、匹配文本、跨度和捕获值上的差异，帮助开发者评估依赖升级或替换带来的兼容性变化。

## 核心实现与使用方式

- 契约层复用已编译模式，执行匹配与非匹配、整段跨度及捕获组检查，并输出稳定文本报告和 JSON v1 报告。
- 本期新增 MoonBit 原生 ASCII 子集参考引擎：递归下降解析构建语法树，编译为 Thompson NFA，以去重状态集执行匹配，作为第三个可检查、可对照的后端。
- 参考引擎支持字面量、`.`、锚点、字符类与常用字符类转义、分组、选择及 `*` / `+` / `?`；采用最左起点、同一起点最长匹配。它不支持捕获、回引用、环视和完整 Unicode；模式及输入长度受限，不能替代通用正则库。
- 通过适配器对照自有参考引擎、`moonbitlang/regexp` 与 `walkzzz/re-mbt`。例如可检查回引用在不同后端上的编译差异，或用 Emoji 前缀用例验证 `StringView` UTF-16 跨度换算。有限夹具不代表所有模式等价。

## 进展、验证与分工

九月版本已有契约执行、双后端适配、文本报告、跨度检查和示例。本期扩展 JSON v1 报告、确定性序列化与迁移夹具，并新增自有参考 NFA 核心；当前测试套件包含 39 项测试。本地 `moonc 0.10.15` 下检查、测试、构建和示例复现均通过；[GitHub CI](https://github.com/wallll-wal6/arachne/actions/workflows/ci.yml) 在 default、JS、native 目标的检查、测试、构建和示例验证均通过。

项目由我一人负责，项目目标、语法范围和实现取舍由我确定并复核。AI（Codex）辅助部分解析器、NFA、测试和文档工作；AI 输出经我检查后采用，自动化测试不替代人工判断。源码采用 Apache-2.0；第三方依赖与数据许可见仓库说明。
