随笔-341  评论-2670  文章-0  trackbacks-0
09 2008 档案
最小内核语言      摘要: 国庆7天容易无聊,于是我打算实现一下以前失败过的一种语言的特性:类型推导。于是顺便做一做惰性计算吧。于是我尝试设计了一门特性尽可能少的语言,并且强制让一个函数的返回值仅跟输入的参数有关。虽然这个特性不适合用来做IO,但是是有办法解决的,而且不需要修改语言就可以直接支持。

这门语言的定义及其简单,需要预先定义的部分也是很少的,于是我尝试实现了if、逻辑运算符以及itoa和atoi两个函数  阅读全文
posted @ 2008-09-28 07:14 陈梓瀚(vczh) 阅读(2185) | 评论 (4)  编辑
自定义数据结构的语法分析器成功!      摘要: 经过三个小时的努力,一个供调试用的模拟器终于做出来了。对于一份语法说明来讲,我们需要提供调试器,一直到调试完了才生成代码,这样比较容易找到问题。同时为了验证自己的那个设计,于是做了一个调试器出来。这个调试器使用了这篇文章里的数据结构文件以及文法文件,以及使用了这篇文章里开发的一个树到图的转换程序,成功得到结果!  阅读全文
posted @ 2008-09-14 07:22 陈梓瀚(vczh) 阅读(1886) | 评论 (1)  编辑
语法分析器定义接近完成!      摘要: 除了错误处理文件还没有定义好以外,现在语法定义跟语法树的数据结构定义以及分析器都完成了!有了这两个文件,我的工具就可以替你生成一个函数和一堆类,让你使用这个函数就可以将一份代码转换为一颗语法树啦。娃哈哈……

现在让我们来看一个例子  阅读全文
posted @ 2008-09-14 00:53 陈梓瀚(vczh) 阅读(1469) | 评论 (3)  编辑
数据结构定义 分析器完成
posted @ 2008-09-12 05:49 陈梓瀚(vczh) 阅读(1255) | 评论 (0)  编辑
将树型数据结构转换为图片并自动排版      摘要: 『啊,葱爆羊肉真是香啊。』一边回忆着这个令人感动的美食,一边心不在焉地写了个程序。这个小程序实现了一个很简单的功能,将一棵树转换成bmp图片并自动排版。  阅读全文
posted @ 2008-09-07 04:18 陈梓瀚(vczh) 阅读(2970) | 评论 (3)  编辑
项目实验2:动态生成编译器前端      摘要: 我们知道Yacc和Bison都是产生C++的代码作为编译器的前端的。但是有时候我们需要动态地产生一个编译器前端,极端一点讲,譬如“文法调试器”。调试器总不能动态生成.y文件,让yacc编译,让gcc再度编译,然后execute,最后将程序的输出结果读进来。这样就太麻烦了,于是我们需要重新写一个生成编译器前端的程序。  阅读全文
posted @ 2008-09-06 02:45 陈梓瀚(vczh) 阅读(2354) | 评论 (3)  编辑
项目实验1:将算法与数据结构分开      摘要: 现在的OOP都提倡将操作与数据结构结合在一起。为什么这里要提出将算法与数据结构分开呢?第一个原因是一个算法可能是用来处理一组数据结构的。第二个原因是算法并不属于操作。我们可以借鉴访问者模式来实现这个分离,但是这里有一个特别之处:我们要将访问者模式带给我们的那个接口实现得让我们用起来很漂亮。  阅读全文
posted @ 2008-09-02 04:43 陈梓瀚(vczh) 阅读(2679) | 评论 (10)  编辑