您的位置:首页 > 网页编程 > linux >
编译技术原理
时间:2013-11-18 23:46来源:未知 作者:66php 点击:
/**谷歌广告**/

    理解编译器的工作原理,对于深入理解编译器设计技术中各种技术的内涵很有好处。本节将通过一个简单的例子,说明编译器的主要工作原理。编译器和语言的规格说明  在我们学习C语言的时候,手边通常都会放一本C语言的参考手册。查阅手册中的C语言文法规定,可以帮助我们判断自己的C语言程序是否存在格式错误(如是否少写了一个括号)和某些内容方面的错误(如变量是否重复定义)。同理,既然编译器需要能够判断程序的合法性,那么实际上在编译器内部也应当有一个关于被处理程序所用语言的“参考手册”,只不过这个“参考手册”是用程序来记录和查阅的罢了。那么,对于编译器来说,需要什么样的“语言参考手册”呢?  
    我们熟悉的C语言参考手册通常是一本厚厚的书。然而,编译器设计者们不可能让编译器去“读书”。因此,只有两种方式可以让编译器记住和理解C语言的语法规则。  
    第一种方式是由编译器设计者首先阅读厚厚的C语言手册(自然语言),然后根据手册中的规定编写编译器的代码。这些编译器代码负责执行对诸如语句结构是否完整、变量定义是否唯一等规则的判断。由于自然语言的描述通常不够精确,通常很难保障根据同一本C语言手册写出来的两个C语言编译器真的具有相同的功能。  
    第二种方式是用某种特定的数学模型来描述语言的语法规则。然后,程序员既可以根据精确的数学模型设计出功能统一的编译器,也可以考虑利用自动代码生成的方法直接将描述语言定义规则的数学模型转换成编译器的实现代码。从编译器设计技术的现状看,还不能把语言定义的所有内容都精确地用数学模型表示出来并方便地转换为代码实现。

    0%
    (0)
    0%
    (0)
    最新评论
    选择评论类型:
    验证码:点击我更换图片
    本站推荐
    /**谷歌广告**/
    关于我们 | 网站地图 | rss地图 | 广告服务 | vip源码 | 联系我们
    Powered by 66php Copyright 2011-2013
    苏ICP备11045037号