符号变换引擎(Symbol Transform Engine - STE)

在写编译器的过程中,我意识到编译其实是一种符号变换,比如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

时间: 2024-11-09 10:08:16

符号变换引擎(Symbol Transform Engine - STE)的相关文章

基本3D变换之World Transform, View Transform and Projection Transform

作者:i_dovelemon 来源:CSDN 日期:2014 / 9 / 28 主题:World Transform, View Transform , Projection Transform 引言 在3D图形学中,基本几何变换是一个非常重要的操作.可以说,整个3D图形能够有效的显示,就是由于几个非常重要的基础3D变换贡献的.在前面的文章中,向大家承诺了,要详细的讲解在3D图形学中的三个基本的坐标变换.今天,就来像大家讲述,DirectX是如何进行变换. 变换的目的 在我们讲解具体的变换工作之

虚幻引擎(Unreal Engine)4.13 版正式发布

开发商Epic Games正式发布了最新的4.13版虚幻引擎(Unreal Engine),增加了许多渲染功能和新特性(基础教程qkxue.net):模型贴花(Mesh Decals),渲染目标蓝图绘制.GPU变形目标处理.折射改进.高质量优化的材质噪点处理.阴影映射缓存等相信各大游戏开发厂商对开发工具的新版本早 已迫不及待要上手了. 新 版本的Unreal Engine对在4.12版中引入的完全非线性的实时过场和动画工具Sequencer进行了重大功能更新:支持Sequencer工作流动态录制

《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅲ

3.1.3 用例举例 在学习它的实现之前我们还是应该先看看如何使用它.相应的我们这里考察两个用例:一个用来跟踪算法在小规模输入下的行为测试用例和一个来寻找更高效的实现的性能测试用例. 3.1.3.1 行为测试用例 为了在小规模的的输入下跟踪算法的行为,我们用一下测试用例测试我们对符号表的所有实现.这段代码会从标准输入接受多个字符串,构造一张符号表来将i 和第i 个字符串相关联,然后打印符号表.我们假设所有的字符串都只有一个字母.一般我们会使用”S E A R C H E X A M P L E”

符号渲染篇——Symbol

Symbol 是对 Graphic 对象进行符号样式设置的接口,所有符号样式类都实现了 Symbol 接口. 1.PictureMarkerSymbolPictureMarkerSymbol 是对于点或多点要素的 Graphic 对象进行样式设置的类,PictureMarkerSymbol 主要通过图片的 url 或 Drawable 等方式来设置图片符号,对于 PictureMarkerSymbol 还可以设置图片符号的旋转角度和位置偏移,具体用法如下: //创建图片样式符合PictureMa

《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅳ

3.1.4 无序链表中的顺序查找 符号表中使用的数据结构的一个简单选择是链表,每个结点存储一个键值对,如以下代码所示.get()的实现即为遍历链表,用equals()方法比较需被查找的键和每个节点中的键.如果匹配成功我们就返回null.put()的实现也是遍历链表,用equals()方法比较需被查找的键.如果匹配成功我们就用第二个参数指定的值更新和改键现关联的值,否则我们就用给定的键值对创建一个新的节点并将其插入到链表的开头.这种方法也被称为顺序查找:在查找中我们一个一个地顺序遍历符号表中的所有

让"世界最速开发"成为可能!承担【生化危机7】开发任务的卡普空新引擎【RE ENGINE】

前言:最近在读游戏引擎架构,然后读到了这篇去年的文章,深有感触,书中提到的很多东西在这里都有呈现,于是翻译一下,做个记录. 原文载于:https://cgworld.jp/feature/201702-cgw222T2-bio.html 2017年1月26日发售的生化7.用来开发这个游戏的是卡普空社内研发的引擎[RE ENGINE].融入浓厚的卡普空游戏哲学的最先进的本引擎,待我们来详细了解. ※本文从 月刊「CGWORLD + digital video」vol. 222(2017年2月号)转

《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅰ

3.1符号表 符号表最主要的目的就是将一个键和一个值联系起来.用例能够将一个键值对插入符号表并希望在之后能够从符号表的所有键值对中按照键值姐找到对应的值.要实现符号表,我们首先要定义其背后的数据结构,并指明创建并操作这种数据结构以实现插入.查找操作所需要的算法. 查找在大多数应用程序中都至关重要,许多编程环境也因此将符号表实现为高级的抽象数据结构,包括Java——我们会在3.5节中讨论Java的符号表实现.下标给出的例子是在一些典型的应用场景中可能出项的键和值.我们马上会看到一些参考性的用例.3

(2015大作业)茹何优雅的手写正则表达式引擎(regular expression engine

貌似刚开学的时候装了个逼,和老师立了个flag说我要写个正则表达式引擎,然后学期末估计老师早就忘了这茬了,在历时3个月的懒癌发作下,终于在这学期末deadline的时候花了一个下午加晚上在没有网的房间写完了它,于是便有了这篇blog,本来想正儿八紧写篇论文,说不定毕业设计可以直接丢一篇这个走人,但第一觉得一个晚上写好的东西太low了,第二自己实在不适合写那种正经的论文,于是还是写从高中开始的一贯的乱七八糟体好了. 主要写自己写的时候遇到的一些瓶颈,例如茹何储存一个图,茹何遍历一个图,茹何表示一个

介绍css 的3D 变换(3D transform)

https://desandro.github.io/3dtransforms/docs/card-flip.html --------------------------------------------------------------------------------------------------- Card Flip We now have all the tools to start making 3D objects. Let's get started with the