给大家谈谈编译原理

王朝other·作者佚名  2006-01-09
窄屏简体版  字體:   |    |    |  超大  

首先声明,我不是编译原理领域的高手,我充其量也需只比菜鸟强一点点。

写这篇文章的原因并非我想显耀自己-------再次声明:我不是高手,只是因为不知什么时候我在那个论坛发表了一些关于这方面的言论,并留下了自己的qq号码,于是有一大堆好事者过来询问。这本来是我的荣幸,但从网友的问题中我看到的仍然是空话和废话----与编译原理的中心并不相关,因此,我发现我应该站出来,把我做的事情讲清楚,也算是对这些热心的人的一种负责任的回报。

首先还是要说一些非话的:所谓的编译器就是对使用某种规则编出来的程序进行翻译,一般而言,特定的语言都必须有特定的编译器,没有什么可以兼容的说法,大家熟悉C语言的编译器,如TurboC。这些规则就纯粹是人为的啦,也正因此,诞生了我们所熟悉的大量的各种各样的高级语言,如Pascal、C、C++、Algol~~~~因此所谓的编译器也就是一堆程序,他们检查你是否按照规则来了,以及充分了解你的要求,并把结果返回给你。因此,编译器要做的事情其实很简单:首先检查语言规则(包括词法规则和语法规则),然后做语义分析,余下的就由计算机里的硬件去执行运算指令了(当然这种说法并不恰当)。

这里还应该讲一讲词法分析和语法分析以及语义分析的大概情况,由于时间关系,我以后再补齐,请见谅。

我这里主要说的是我所作的事情,这也是我的毕业设计:为一个类似C语言的小语言Tiny-C做翻译。词法规则和语法规则都是我自己定的————要求充分接近C语言。本来是雄心壮志,想把他做的完美,一方面由于实力——只能止步于语法分析,一方面由于时间——使得该分析器未能如愿工作。我使用的是自下而上的LR(1)分析法,因此花了我不少的时间和精力啊;为此我写了上10页的项目集,最终得到75个状态,最要命的是画出分析表——一张75×41的表格。其实难度不大,量多了一些而已。

不好意思,我今天只能说到这里了,我会议后把这个补充完整,如果你有什么我可以帮忙的,请E-mail至lgdpeter@163.com,或QQ:23172461

感谢你的阅读!

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航