Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C2PyBridge

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.UCRT

使用

c2py translate hello.c                 # 生成 hello.py
c2py verify hello.c --cases 200        # 翻译 + 随机对拍验证
c2py report hello.c -o report.html     # 生成教学对照报告

支持范围(阶段 1 MVP)

支持:基本类型(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 增强 + 打包分发

License

MIT(待定)

About

C ↔ Python 语义等价翻译工具(教学优先·轻量迁移)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages