自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

语言观止

Hello Snail Language

  • 博客(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中调用C#函数

自己开发的脚本语言Snail Language 可以调用C#的函数了。

2014-01-17 11:52:03 1576

原创 开发自己的编程语言(七)—— 字典数(相关联数组)

在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 V0.19

通过Emit,实现了从Snail脚本到exe转换的框架原型。 测试代码: a = 12321 print(a)

2014-01-20

Snail Language V0.18.01

1)更新了版本号的格式 2)支持C#的静态域:如,a = Math.PI

2014-01-17

Snail Language 0.180

初步支持在Snail中调用C#函数。测试例子: Math.Pow(10, 8) MessageBox.Show("Hello Snail Language!")

2014-01-17

Snail Language 0.171

实现了foreach来遍历数组: foreach(key, value in array) { ... } 或者 foreach(key in array) { ... }

2014-01-15

Snail Language 0.170

Snail Language 0.17,实现了相关联数组,替代原先的线性数组。

2014-01-15

Snail Language 0.160

Snail Language 0.16实现了: 1)First-Class Value的函数类型。 2)__FUNCTION__存储当前函数的字符串名称。用途:debug时候可以打印函数log 3)在一个函数return之前,调用一个预先指定的函数。用途:希望在一个函数返回时做一些处理,通过使用Action,可以不用在每个return前增加代码。

2014-01-14

Snail Language 0.15

实现了从Snail Language到CIL转换的几个简单例子。 if(1 < 2) { print(1) } else if (2 < 3) { print(3) } else { print(4) }

2014-01-13

Snail Language IDE 0.143

Snail Language是一款个人开发的语言语言,目标是成为一款.NET语言。目前版本为0.143,计划于0.5版本开源。

2014-01-10

Snail Language

Snail Language是一门toy编程语言,实现了简单的语法,目前的版本为0.1。

2013-12-31

C言语实现lua数组

《Programming in Lua third edition》的第29章工程源码

2013-11-18

lua-5.2.2的VS2012工程

在VS2012中建立lua-5.2.2的工程,可以直接build。

2013-11-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除