软件编译技术课程总结.pdfVIP

  • 0
  • 0
  • 约5.19千字
  • 约 6页
  • 2026-02-14 发布于河南
  • 举报

软件编译技术课程总结

软件编译技术论文

学号:姓名:班级:

摘要

软件编译技术是计算机及相关专业的一门重要专业课程,在计算

机科学中有很重要的地位和作用,已被国内外高校列为计算机专业的

主要课程。它主要介绍了高级程序设计语言编译程序构造的一般原理、

基本设计方法、主要实现技术和一些自动构造工具。通过该课程的学

习,对提高我们计算机软件素质,使我们真正认识计算机信息处理实

质并综合运用所学的软件设计技术来分析问题等具有很大作用。

课程理论性与实践性都很强,我们在学习是普遍感到内容非常抽

象,不易理解,内容多且繁琐,难以完整、全面地掌握软件编译技术

的有关知识,更不用说灵活运用软件编译技术知识从事相关设计或应

用于其他领域。虽然只有少数人从事编译方面的工作,但是这门课在

理论、技术、方法上都对我们提供了系统而有效的训练,有利于提高

软件人员的素质和能力。

在我们学习软件编译技术以前,都认为软件编译技术只能应用在

写程序语言的编译器上,觉得用处不大,学习兴趣不高。而在后来的学习

中,我们逐渐认识到计算机专业的我们,除了要会编写程序语言之外,

还应该了解它是如何被计算机所识别,这才是真正并且透彻地学习软

件。另外,编译器中每一个模块的编写,都能对我们的编程能力的提

高有很大帮助。在今后若从事软件工程,这门课程也能够对编写程序

有所帮助。

关键字:(1)语言和文法;(2)词法分析;(3)语法分析;

(4)语义分析和中间代码生成;(5)代码优化和目标代码生成;

一、语言和文法

语言和文法部分的知识包括文法基本概念及文法的二义性。基本

概念有文法定义、推导、句型、句子等等。二义性文法是通过画语法

树的方法来证明。

二、词法分析

词法分析相对来说比较简单。可能是词法分析程序本身实现起来

很简单吧,很多没有学过软件编译技术的人也同样可以写出各种各样

的词法分析程序。不过软件编译技术在讲解词法分析的时候,重点把

正则表达式和自动机原理加了进来,然后以一种十分标准的方式来讲

解词法分析程序的产生。这样的做法道理很明显,就是要让词法分析

从程序上升到理论的地步。

三、语法分析

等学到词法分析和语法分析时候,会出现这样的疑问:“词法分

析和语法分析到底有什么?”就从编译器的角度来讲,编译器需要把

程序员写的源程序转换成一种方便处理的数据结构(抽象语法树或语

法树),那么这个转换的过程就是通过词法分析和语法分析的。其实词

法分析并非一开始就被列入编译器的必备部分,只是我们为了简化语

法分析的过程,就把词法分析这种繁琐的工作单独提取出来,就成了

现在的词法分析部分。

除了编译器部分,在其它地方,词法分析和语法分析也是有用的。

比如我们在DOS,Unix,Linux下输入命令的时候,程序如何分析输入的

命令形式,这也是简单的应用。总之,这两部分的工作就是把不“规

则”的文本信息转换成一种比较好分析好处理的数据结构。那么为什

么软件编译技术的教程都最终把要分析的源分析转换成“树”这种数

据结构呢?数据结构中有Stack,Line,List…这么多数据结构,各自都

有各自的特点。但是Tree这种结构有很强的递归性,也就是说我们可

以把Tree的任何结点Node提取出来后,它依旧是一颗完整的Tree。

这一点符合我们现在软件编译技术分析的形式语言,比如我们在函数

里面使用函树,循环中使用循环,条件中使用条件等等,那么就可以

很直观地表示在Tree这种数据结构上。同样,我们在执行形式语言的

程序的时候也是如此的递归性。

在软件编译技术后面的代码生成的部分,就会介绍一种堆栈式的

中间代码,我们可以根据分析出来的抽象语法树,很容易,很机械地

运用递归遍历抽象语法树就可以生成这种指令代码。而这种代码其实

也被广泛运用在其它的解释型语言中。像现在流行的Java,.NET,其底

层的字节码bytecode,可以说就是这中基于堆栈的指令代码的。

关于语义分析,语法制导翻译,类型检查等等部分,其实都是一

种完善前面得到的抽象语法树的过程。比如说,我们写C语言程序的

时候,都知道,如果把一个浮点数直接赋值给一个整数,就会出现类

型不匹配,那么C语言的编译器是怎么知道的呢?就是通过这一步的

类型检查。像C++语言这中支持多态函数的语言,这部分要处理的问

题就更多更复杂了。大部软件编译技

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档