免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1095 | 回复: 0
打印 上一主题 下一主题

[C++] 符号变换引擎(Symbol Transform Engine - STE) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-09 15:28 |只看该作者 |倒序浏览
    在写编译器的过程中,我意识到编译其实是一种符号变换,比如C语言编译成机器码,其实是C源码文件中的符号变换成EXE的16进制符号,这和中文翻译成英语的语言翻译器没什么区别。
    每个程序员都有自己喜欢的编程语言和编码风格,所以世界上就出现了大量的编程语言,各种编程语言之间相互通信并不那么简单,C语言是个例外,所以C语言适合做接口。
    那么能不能写一个通用的引擎充当各种语言的中间翻译层呢?这就是符号变换引擎(Symbol Transform Engine - STE),下面是它的整体设计:



    这东西有什么用?它可以将C++翻译为JS,也可以将JS翻译成lua,又或者将C++翻译成C,等等。如果仅仅有这么点用途那它还只是一个编程语言翻译器,更为神奇的是它可以做二进制翻译,比如将一个后缀为WAV的波形文件音量降低50%,将一篇英语小说翻译成中文小说,或者给一个JPG文件打上水印,等等无数的用途。
    一个正则表达式高手可能会告诉你他可以用正则实现波形文件音量降低50%,但这极为困难,并且代码很难看懂,符号变换引擎却不同,它内置模式匹配和一大堆高级语言语法,它的模式匹配不仅仅是正则的字符匹配,还有单词匹配,宏匹配,所以可以很轻松完成这个任务。王垠说Scheme的模式匹配是很强大的功能,但Lisp的模式匹配仅限于S表达式,这就限制了它的应用范围。
    STE开源引擎已经立项,第一期计划支持50%的C++语法、90%的JS语法、10%的python语法、80%的汇编,欢迎有兴趣的朋友参与进来。
    (STE的想法来源于另一个开源项目RPP,所以前期会从RPP拷贝一些代码,结构作一些调整)

https://github.com/roundsheep/ste
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP