C2Rust 编程语言转译器开源项目

我要开发同款
匿名用户2019年08月04日
323阅读

技术信息

开源地址
https://gitee.com/mirrors/C2Rust
授权协议
BSD

作品详情

C2Rust工具能够将大多数C模块翻译成语义上等价的rust代码。这些模块将单独编译,以生成兼容的对象文件。支持C99标准。在我们的工具翻译C源代码之前,使用clag对其进行分析和类型检查。

帮助您将符合C99的代码迁移到Rust。它提供:

CtoRust翻译器Rust代码重构工具对照新的Rust代码并交叉检查C代码执行情况的工具

架构图如下:

转换示例:

C语言源码:

voidisertio_sort(itcost,it*costp){for(iti=1;i<;i++){itcosttmp=p[i];itj=i;while(j>0&&p[j-1]>tmp){p[j]=p[j-1];j--;}p[j]=tmp;}}

转换后的Rust代码:

#![allow(dead_code,mutable_trasmutes,o_camel_case_types,o_sake_case,o_upper_case_globals,uused_mut)]#![feature(libc)]extercratelibc;#[o_magle]pubusafeexter"C"fisertio_sort(:libc::c_it,p:*mutlibc::c_it){letmuti:libc::c_it=1i32;whilei<{lettmp:libc::c_it=*p.offset(iasisize);letmutj:libc::c_it=i;whilej>0i32&&*p.offset((j-1i32)asisize)>tmp{*p.offset(jasisize)=*p.offset((j-1i32)asisize);j-=1}*p.offset(jasisize)=tmp;i+=1};}

 

功能介绍

C2Rust工具能够将大多数C模块翻译成语义上等价的rust代码。这些模块将单独编译,以生成兼容的对象文件。支持C99标准。 在我们的工具翻译C源代码之前,使用clang对其进行分析和类型检查。...

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论