您的位置:首页 > 其它

手工打造编译器之语法分析器3

2010-11-28 11:17 134 查看
没想到写了快两个月的东西讲起来就是轻飘飘的两页。大概每天写了两个小时,代码我大概统计下有3000行到4000行之间。

复杂的地方在计算first,follow集合;LR分析引擎;文法这几部分。没写完一部分我都做了充分的测试,这些都是最终一气呵成,很少修改以前代码的原因。语法分析结束我也做了很多的测试,结果很满意,没想到根据LR分析引擎,绕到状态里面又绕出来到语法分析树上。状态比较抽象,而到语法分析树就清晰了。估计yacc之类的也做了类似的工作。一想到和yacc,甚至vc编译器,GNU编译器做类似的工作就感到很有成就感。

文法做了很多的修改,这部分我没有掌握,不知道文法的本质是什么样的,不知道什么样的文法是不产生冲突的。每改一点文法都要用LR分析引擎配上实际的tiger语言测试才知道。用这种笨办法才把文法设计出来,还加了我的一些特殊处理,如没有负数,不能处理-4等,我的要求是这些特殊处理不影响语言的特性,我给你了另一个替代方法。如负数可以用函数实现,要用负数的地方用neg(4)表示-4。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: