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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值