随笔-341  评论-2670  文章-0  trackbacks-0
 
     摘要: 以前为了开发KFP,特别学习了一下lambda calculus(也就是我的博客的标题啦)。lanbda calculus是一门神奇的语言,在计算机出现之前就已经被搞出来了。这门语言只有三种语法,然后可以用这个语法来构造整数(!!!)、布尔型和很多递归数据结构等。

内含代码  阅读全文
posted @ 2009-05-11 04:30 陈梓瀚(vczh) 阅读(5385) | 评论 (7)编辑 收藏
     摘要: 符号表的结构的复杂度跟语言的语义规则的复杂度有关。对于C#来说,每一个符号都附带了一大堆信息,譬如位置啦,所在的namespace啦,类型啦什么的。对于JavaScript来说,符号表几乎是不需要的,因为东西都动态了,编译时几乎不检查内容。语义分析的输出是符号表,代码生成的输入是符号表和语法树。因此语法树除了放语法相关的内容,语义相关的内容最好放到符号表里面(譬如说表达式的类型啦,语句的scope结果啦)。  阅读全文
posted @ 2009-05-10 18:48 陈梓瀚(vczh) 阅读(7198) | 评论 (1)编辑 收藏
     摘要: 这篇转载的文章主要讲了为什么写非工作的代码的时候,要时不时刁难自己。

内详。  阅读全文
posted @ 2009-05-09 06:55 陈梓瀚(vczh) 阅读(3187) | 评论 (0)编辑 收藏
     摘要: 整整写了一天,终于基本写完了CMinus的语义分析的代码,只剩下一个检查struct是否可以计算出长度的问题(环引用造成的)。下面贴出语义分析的结果,从结果中可以看出符号表的结构以及构造方法:  阅读全文
posted @ 2009-05-06 08:13 陈梓瀚(vczh) 阅读(3004) | 评论 (4)编辑 收藏
     摘要: 今天写了一些CMinus程序供语法分析器分析,然后程序从语法树重新生成格式化后的代码,两边比较检查优先级什么的是否正确处理。下面是CMinus写的冒泡排序、菲薄纳气数列、链表操作函数以及其他程序:  阅读全文
posted @ 2009-05-04 19:44 陈梓瀚(vczh) 阅读(1963) | 评论 (1)编辑 收藏
     摘要: 在实验了CMinus语法分析器的错误处理之后发现一个问题,Combinator Parser返回的错误是最上级的错误,而不是最底层的错误。因此修改了语法分析器的一部分代码:  阅读全文
posted @ 2009-05-04 02:35 陈梓瀚(vczh) 阅读(1808) | 评论 (1)编辑 收藏
     摘要: 这一次的语法分析器,我使用Vczh Combinator Parser,按照文法的定义,将字符串转换成了语法树。Vczh Combinator Parser构造较大规模的编译器的时候还是较为吃力,主要原因出在Visual C++竟然限制一个类型全名不能超过某个长度T_T……下面是代码:  阅读全文
posted @ 2009-05-03 19:25 陈梓瀚(vczh) 阅读(2832) | 评论 (11)编辑 收藏
     摘要: 今天照着C Minus的语法(略有修改)设计出了C Minus的语法树。语法树的设计尽量让生成语法树的代码易于编写。每一个结构的意义十分明确,而且结构与结构之间不需要有相互联系。下面是语法树的代码:  阅读全文
posted @ 2009-04-24 00:58 陈梓瀚(vczh) 阅读(3049) | 评论 (5)编辑 收藏
     摘要: 把中间指令都搞定了之后,得开始做一门JIT的脚本引擎了。但是这门脚本引擎不是用来写的,而是用来给更高级的语言编译的。这是什么意思呢?虽然我现在写了个语法分析器,提供了语法树,但是我的目的是让我以后设计的更高级的语言可以编译成这门相对底层的语言,而不是直接编译成中间指令。这样很多事情都会好做很多。

这一门语言主要模仿C,提供指针、结构、数组、基本类型和函数指针。还有extern函数做外部链接用。因为编译成机器码,所以可以直接把一个函数指针丢进我的脚本引擎,就可以这么用了。而且我的脚本里面的函数也可以直接作为一个函数指针提供出来。复合类型组要勇于跟C++交互。在C++与脚本里面声明同样的struct,不需要做额外工作,就可以互相使用了。
  阅读全文
posted @ 2009-04-18 00:17 陈梓瀚(vczh) 阅读(3141) | 评论 (7)编辑 收藏
     摘要:
FPU写起来还真是囧啊,下面20个函数实现到想死……
Sin,Cos,Tan,Cot,Sec,Csc,ASin,ACos,ATan,ACot,ASec,ACsc,Sqrt,Exp,Ln,Abs,Round,Trunc,Ceil,Floor
下面是这20个函数的汇编代码,其中Exp更是登峰造极……  阅读全文
posted @ 2009-04-16 05:39 陈梓瀚(vczh) 阅读(4863) | 评论 (3)编辑 收藏
仅列出标题
共35页: First 16 17 18 19 20 21 22 23 24 Last