C ↔ Python 语义等价翻译工具(教学优先 · 轻量迁移)
把 C 教学代码翻译成可读的 Python,并通过差分对拍验证"零误差"。
- 翻译:C → Python(teach 模式,可读性优先)
- 对拍验证:随机用例双端运行逐字节比对,通过率即质量指标
- 教学报告:并排对照 HTML(点击 C 行高亮对应 Python 行)
- 零依赖解析:pycparser + 迷你预处理器(include/宏),Windows 开箱即用
- 诚实拒绝:不支持构造显式报错(带教学化解释),绝不静默错译
pip install -e .对拍验证需要 C 编译器(自动检测 gcc → cl):
winget install --id BrechtSanders.WinLibs.POSIX.UCRTc2py translate hello.c # 生成 hello.py
c2py verify hello.c --cases 200 # 翻译 + 随机对拍验证
c2py report hello.c -o report.html # 生成教学对照报告支持:基本类型(int/float/double/char)、数组、结构体、指针参数(数组场景)、 if/for/while/do-while/break/continue/三目、函数/递归、全局变量、 printf/scanf(%d %f %s %c)、常用数学库函数。
不支持(显式拒绝并给出教学建议):switch/goto/static/位域/内联汇编/函数指针/ 逗号表达式/sizeof/指针算术(数组元素以外)。
C 源码 → 迷你预处理器 → pycparser AST → CIR(C 语义中间表示)→ Python 生成器
↘ 差分对拍验证器(随机用例双端比对)
- CIR 以 C 语义为唯一参照系(类型宽度/符号性/求值顺序)
- teach 模式:可读性优先(L1 功能等价);strict 模式(L2 语义等价)规划中
- 验证不通过 = 翻译失败(拒绝交付,绝不静默)
python -m pytest tests/ -v # 194 测试(含 30 例语料对拍)- 阶段 1:C→Python + 对拍验证 + 教学报告(30 语料全过)
- 阶段 2:strict 模式(整数回绕/结构体布局模拟)
- 阶段 3:Python→C 反向
- 阶段 4:LLM 增强 + 打包分发
MIT(待定)