- 博客(9)
- 资源 (11)
- 收藏
- 关注
原创 开发自己的编程语言(九)—— 生成EXE文件
本章介绍将Snail脚本编译成EXE文件的原型框架,其主要原理是利用Reflection.Emit逐一转换Snail的每条语句。之所以称为原型框架,是因为目前版本只支持:将一个变量赋值为整数,然后将这个整数变量输出。a = 1001print(a)利用上面的两条语句生成一个exe文件,同时将结果输出,得到的exe文件大小只有2k。实现了这个原型之后,其他内容的实现就是时间和体力的问题了
2014-01-20 17:59:34 3819
原创 Snail的编程感悟
一个又一个版本的更新,CSDN和我一起见证着Snail Language的长大。从2013年到2014年,从未停止过编写代码的步伐,从未停止过为它添加新功能的想法。写Snail的目的何其简单,只是为了学习语言的意义;写Snail的过程何其快乐,来自从无到有功能的喷发。 我的职业不是做编译器(做编译器的也没有我业余)。Snail Language并没有涉及到编译器的后端(也就是中间语言以
2014-01-17 19:34:29 1708
原创 开发自己的编程语言(七)—— 字典数(相关联数组)
在Snail Language 0.17中,我将原先的线性数组改成了相关联数组,它的本质就是Hash Table,采用C#的Dictionary类型来实现。相关联数组的使用方法:a = [100, name:"haz", language:"snail", year:2014, version:0.17, 3.14:"浮点数测试"]数组内的元素可以以单个Value,或者Key : Valu
2014-01-15 18:08:10 1777
原创 开发自己的编程语言(六)—— First-Class Value
从0.16版本开始,Snail Language语言将函数作为First-Class Value。First-Class Value指的是:函数名和变量名之间没有区别,它们可以相互赋值。要注意的是,print既是函数名又是关键字,所以print可以作为右值,但是不能作为左值。现在一个变量可以表示为:整数、浮点数、字符串、数组、函数。由于是所有的变量都是动态类型,所以赋值时不需要在意当前的类型。
2014-01-14 18:42:43 4275
原创 开发自己的编程语言(五)—— CIL中间代码的生成
在编译原理中,最难的步骤应该是代码的优化。只有通过不停的优化代码才能得到更好的性能,而性能又是商业编译器的重要指标。这一切就注定了码优化是一个没有止境的过程。但是对于不争早夕的初级语言来说,这一步骤就显得可有可无,因为有足够的时间让我去等待一个结果的出现。就像我花了很长很长的时间去等待斐波那契第30个结果的出现,而一个经过优化的编译器能在很短的时间内完成计算。除了代码的优化,中间语言的生成好像
2014-01-13 15:36:38 2963
原创 开发自己的编程语言(四)
Snail Language经过一段时间的完善,目前的0.143版本已经具备了简单编程语言应有的功能。Snail Language的最终目标:成为一款.NET语言,即它的中间语言为CIL。下面用代码片段讲解语言的功能,==>为输出结果。操作符目前只正确支持:+, -, *, /, %, +=, -=, *=, /=, %= , =, ==, >= , 其他操作符也支持,但是
2014-01-10 17:08:35 2364 4
原创 开发自己的编程语言(三)
Snail Language 0.134版本新增了对内置域函数的支持。如,str = “12345”; str.length()返回的值就是str的长度5。域函数的地位和普通函数是一样的,在对类型string求值时将内置域函数放入全局函数列表中。length函数就将str当做默认参数,返回str的长度。求值以后将域函数从函数列表移除。伪代码如下:string类型:class Strin
2014-01-05 13:21:16 1964
原创 开发自己的编程语言(二)
目前的版本为0.12,相比较0.1版本,添加了如下功能:1)字符串类型2)字符串和整数n相乘,得到重复n次的字符串组合3)print可以输出多个参数,比如:print("hello", "&", "world"); ==> hello&world4)实现了if else选择语句
2014-01-02 13:57:26 1707
Snail Language 0.180
2014-01-17
Snail Language 0.171
2014-01-15
Snail Language 0.160
2014-01-14
Snail Language 0.15
2014-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人