手工打造编译器之语义分析2

来源:互联网 发布:可发说说的软件 编辑:程序博客网 时间:2024/05/21 10:52

写语义分析的时候思路是清晰的,因为你能清晰的知道语义分析是干什么的,知道它的内部实现是什么样的。而它的内部实现没有用到什么特殊的没有见过的算法。不像语法分析,一个语法分析的引擎就让人很是头疼,它是一个让人陌生的名词,它能根据你的语法描述就能生成一个有限自动机,然后根据这个有限自动机判断程序是否有语法错误,这个过程就是一个很神奇很困难的过程。当然啦,当你实现了它之后回头看,有一种在山顶上回头望的感觉,这种感觉也只有撸起袖子干了之后才知道。

扯了这么多语法分析,现在回过头来把但是写完。写语义分析的时候思路是清晰的,但是是很复杂的,一个语言有很多的条条框框。我的处理方法是,测试,大量的测试。测试的tiger程序有50个左右,测试了一个礼拜,花了20个小时左右(不是懒,我还上班呢)。写完然后感叹,微软写的vs net那不知道比tiger语言复杂多少倍,他们的软件卖个几十万一点也不少。以后用那些盗版的软件或者开源的软件也多些感恩吧,那些作者真不容易呀。

语义分析写完的一些心的是:1,new和delete重载可以当自动垃圾回收机制使用,不用考虑内存的释放,我在blog里面有详细的描述。2,对于特别短的字符串可以用string来实现,string默认的是一个15个字符的数组。就是说如果你的字符串大部分都是很小的,你可以考虑string类,就像是你声明一个数组一样,不影响空间不影响时间,同时它提供大量的函数,关键是不用手动释放呀。

原创粉丝点击