-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
方舟编译器中文化的相关话题 #166
Comments
根据统计, 当前开放的代码行数在十万之内,排除 |
中文重命名
|
开始对mir_nodes.h中的节点类进行汉化. 各操作语义参考IR设计文档. |
在进一步进行标识符中文化之前, 打算先提取所有标识符并进行统计, 以预估工作量和细化计划. 项目源码在
下面是初步设想的提取结果, 每个源码文件(包括.h, .cpp, .def等等)对应一个提取文件. 以较短的 注释1-14行为注释, 可直接提取全文. 最好标记为注释, 比如这样(方便二次处理)), 具体格式待定, 请多提意见建议:
include部分15-17行为include部分, 提取文件路径部分:
源码主体将C++关键字过滤(namespace, const, bool, if, return等等), 仅留下标识符, 最好也过滤C++标准库部分(
继续改进的可能(格式需相应修改):
|
这个汉化项目本身的目标有几种可能. 一是作为汉化源码的实战; 二是作为新创中文编程语言的基础. 由于将源代码的标识符汉化将会大大降低参与贡献的门槛, 一个比较可能的定位是作为方舟编译器官方代码库的一个参与门槛更低的镜像. 潜在的参与开发者是国内对编译器技术有兴趣, 但又出于某些原因暂时无法参与到主库开发中的开发者. 在非技术优势方面, 想得到一点, 就是作为一些不便向华为贡献代码的开发者, 也许更方便向此库贡献代码. 在此定位下, 意味着要在官方库之外维护一个分支, 而且本分支最好保持功能上与主库的同步. 也就是说, 可以增加功能(比如对中文关键字的支持), 但不可以减少或影响主库的功能. 这点能够保持多久是个未知数, 当然也和项目能够积累的人气有关. 个人来说, 打算短期内着重在汉化方舟源代码本身, 并小结出一套比较实用的汉化源码流程及工具. 现在一个比较大的不定因素是方舟本身的开源程度, 以及测试集的覆盖程度. 当前没有任何自动测试用例, 已在官网提问题. 在这种条件下, 只能倚靠手工测试来确保源码汉化后的功能保持不变. |
在初步统计下, 在9492个标识符中, 下面是前X个占总出现次数的比例(比如前71个占总出现次数的10%). 更全表(wiki渲染时间过长导致只能贴部分)在此:
虽然标识符提取和统计过程尚有改进空间, 但应该差距不会太大. 接下去打算从高频标识符开始汉化. 原本打算按照驼峰/下划线分词后再进行统计, 但考虑到分词后的结果对汉化的指导性尚不明显, 决定暂缓. 在一周内, 对前10%的标识符(70个左右)进行汉化, 并进行总结(包括是否/如何对标识符统计进行改进). |
在尝试汉化MapleLogger为"日志"时, 发现编译错误, 推测时由于 想到之前的
观察 这对源码标识符翻译会带来不小的麻烦. 另一方面, 也可以促使首先理清不同目录间的接口依赖关系. 重点在maple_driver, maple_ipa, maple_ir, maple_me, mpl2mpl这几个. 根据此文及后续系列的分析, 基本确定首先从 |
尝试用批量替换+字典的方式对源码标识符进行自动翻译. 字典来源于之前的手动提交. 由于基本没有任何语法分析, 仅用简单的字符串替换+少量注释/字符串识别处理. 阶段小结如下. 处理的结果与之前的手动修改比较. 生成的diff大约30k, 大约60多处不同. 相对修改的上千处代码来说, 比例很小. 存在的几种问题
此处由于字符串中带有
其他多数情况下, mplOptions和options都被翻译成"选项", 并无冲突. 但这种情况下, 需要区别. 问题分析2可通过只当某些标识符在注释/字符串中出现时翻译来规避. 自动修改的优点相比手工修改, 减少了不少低级错误(已在主库修正). 比如手工替换时未注意大小写, 以及未对整体标识符进行替换等等. 结论
|
将楼上小结整理在尝试自动批量翻译方舟编译器源码中的标识符. 暂时搁置, 希望找到合适的分析器. |
欢迎加入“方舟编译器中文化”qq群(313105842)。讨论内容大概包括:
以及开发上述过程中的辅助工具。在此过程中,尽可能多与官方代码库互动。
各种平台下对方舟编译器源码编译的结果在此
The text was updated successfully, but these errors were encountered: