zoukankan      html  css  js  c++  java
  • 符号变换引擎(Symbol Transform Engine


        在写编译器的过程中。我意识到编译事实上是一种符号变换,比方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%的汇编,欢迎有兴趣的朋友參与进来。QQ交流群:34269848  
  • 相关阅读:
    小白的基金理财课
    Spring Security 入门原理及实战
    spring-data-rest的魔力 10分钟实现增删改查
    redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用
    Netty开发redis客户端,Netty发送redis命令,netty解析redis消息
    使用Netty实现HTTP服务器
    Netty实现心跳机制
    SpringMVC是怎么工作的,SpringMVC的工作原理
    Netty 学习系列
    Mybatis 源码学习系列
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6896197.html
Copyright © 2011-2022 走看看