手工打造编译器之语义分析2
2010-12-19 17:46
134 查看
写语义分析的时候思路是清晰的,因为你能清晰的知道语义分析是干什么的,知道它的内部实现是什么样的。而它的内部实现没有用到什么特殊的没有见过的算法。不像语法分析,一个语法分析的引擎就让人很是头疼,它是一个让人陌生的名词,它能根据你的语法描述就能生成一个有限自动机,然后根据这个有限自动机判断程序是否有语法错误,这个过程就是一个很神奇很困难的过程。当然啦,当你实现了它之后回头看,有一种在山顶上回头望的感觉,这种感觉也只有撸起袖子干了之后才知道。
扯了这么多语法分析,现在回过头来把但是写完。写语义分析的时候思路是清晰的,但是是很复杂的,一个语言有很多的条条框框。我的处理方法是,测试,大量的测试。测试的tiger程序有50个左右,测试了一个礼拜,花了20个小时左右(不是懒,我还上班呢)。写完然后感叹,微软写的vs net那不知道比tiger语言复杂多少倍,他们的软件卖个几十万一点也不少。以后用那些盗版的软件或者开源的软件也多些感恩吧,那些作者真不容易呀。
语义分析写完的一些心的是:1,new和delete重载可以当自动垃圾回收机制使用,不用考虑内存的释放,我在blog里面有详细的描述。2,对于特别短的字符串可以用string来实现,string默认的是一个15个字符的数组。就是说如果你的字符串大部分都是很小的,你可以考虑string类,就像是你声明一个数组一样,不影响空间不影响时间,同时它提供大量的函数,关键是不用手动释放呀。
扯了这么多语法分析,现在回过头来把但是写完。写语义分析的时候思路是清晰的,但是是很复杂的,一个语言有很多的条条框框。我的处理方法是,测试,大量的测试。测试的tiger程序有50个左右,测试了一个礼拜,花了20个小时左右(不是懒,我还上班呢)。写完然后感叹,微软写的vs net那不知道比tiger语言复杂多少倍,他们的软件卖个几十万一点也不少。以后用那些盗版的软件或者开源的软件也多些感恩吧,那些作者真不容易呀。
语义分析写完的一些心的是:1,new和delete重载可以当自动垃圾回收机制使用,不用考虑内存的释放,我在blog里面有详细的描述。2,对于特别短的字符串可以用string来实现,string默认的是一个15个字符的数组。就是说如果你的字符串大部分都是很小的,你可以考虑string类,就像是你声明一个数组一样,不影响空间不影响时间,同时它提供大量的函数,关键是不用手动释放呀。
相关文章推荐
- 手工打造编译器之语义分析1
- 手工打造编译器之词法分析1
- 手工打造编译器之词法分析2
- Tiny语言编译器之语义分析
- 扩展iQuery使其支持多种编程语言(三) – 兼编译器的语义分析简介
- 手工打造编译器之词法分析器3
- 编译器之语义分析
- 手工打造编译器之语法分析器1
- atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
- 自己动手开发编译器(十一)语义分析
- 手工打造编译器之语法分析器2
- atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
- 手工打造编译器之语法分析器3
- 编译器之语义分析
- 超越极限,手工打造C#编译器
- LCC编译器的源程序分析(66)DAG树分析例子
- 打造第二代测试框架TestDriven 2.0(六)—— 最新测试思路分析
- 病毒的手工排除与分析(更新完毕)
- 浅析机器学习的主题模型和语义分析
- 手动构造固定平台下语义编译器(LL(1)文法)