编译原理论文

时间:2024.5.13

编译原理心得体会

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法,在计算机本科教学中占有十分重要的地位。

该课程理论性与实践性都很强,我们在学习 是普遍感到内容非常抽象,不易理解,内容多且繁琐,难以完整、全面地掌握编译原理的有关知识,更不用说灵活运用编译原理知识从事相关设计或应用于其他领域。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对我们提供了系统而有效的训练,有利于提高软件人员的素质和能力。

在我们学习编译原理以前,都认为编译原理只能应用在写程序语言的编译器上,觉得用处不大,学习兴趣不高。而在后来的学习中,我们逐渐认识到计算机专业的学生,除了要会编写程序语言之外,还应该了解它是如何被计算机所识别,这才是真正并且透彻地学习软件。另外,编译器中每一个模块的编写,都能对我们的编程能力的提高有很大帮助。在今后若从事软件工程,这门课程也能够对编写程序有所帮助。

为了能够系统掌握这门专业课,我们把编译原理分为以下几个模块:①语言和文法;②词法分析;③语法分析;④语义分析和中间代码生成;⑤代码优化和目标代码生成。

在学习的开始,我们需要掌握什么是编译,编译分为哪些阶段,编译程序和解释程序的区别等等。在做好了这些方面的准备后,开始了系统的学习。

语言和文法部分的知识包括文法基本概念及文法的二义性。基本概念有文法定义、推导、句型、句子等等。二义性文法是通过画语法树的方法来证明。

词法分析中的重点是有穷自动机DFA的生成以及DFA和正规式与正规文法的关系。还要熟练掌握NFA转换为DFA的方法及DFA的化简。

语法分析包括自上而下和自下而上分析。自上而下分析着重掌握LL(1)文法,自下而上分析重点掌握算符优先文法和LR(0)、SLR(1)文法。

语义分析重点是其功能,中间代码生成和语法制导翻译定义与方法。 最后,优化分为局部优化和循环优化,重点理解一些关键词,如基本块、流图等,要学会自己画出程序流图。用DAG图进行局部优化是重点。

在学习文法时,对文法的组成,用法都较为明了,而在真正做题时却感到十分吃力。例如给出了一个语言,要求写出它的上下文无关文法,就感到十分棘手,所以今后在这方面要加大练习量,以熟练掌握。

而在之后的词法分析和语法分析中,我感到在看基本原理时十分困难,通常要长时间钻研才能够有所了解,而一旦掌握了基本原理,做题时就感到十分顺畅了。例如,在刚接触到LR(0)文法时,我用了大量的时间去学习它的原理,掌握之后,在列LR(0)分析表和写分析过程时,只要思路清晰,就会比较顺畅,而且不会犯错。

下面是我认为的比较有效的学习编译原理的步骤:

1.先利用ANTLR之类的编译器生成工具,做一个小程序(如上面提到的HTML文件转化成纯文本文件的程序),所需知识只是正则表达式的基本知识和生成工具本身的使用方法(可以看联机帮助和网上教程(tutorial)来掌握). 这样做的好处是:

1)可以体会到编译原理的实用性,提高学习兴趣

2)入门容易,消除编译原理学习的畏难情绪.

3)获得词法分析器和语法分析器的感性认识,有利于加深对理论的理解.

4)获得编译器自动生成工具(compiler compiler)的使用经验,提高解决实际问题的能力.(实际工作很多都不是手编而是利用工具的)

2.象ANTLR之类的工具是开源(open source)的,可研究其源码,以便必要时自己手编分析程序.

3.回过头来看编译原理教材. 这时大概会发现,很多理论很容易懂,剩下的只有上面说的几个难点,多看几遍,重点突破.

4.结合教材所附源码,进一步加深对教材的理解。

以上就是我对这门课的心得体会。


第二篇:编译原理课程论文


编译原理课程论文

09计本(3)班 0904013028 周幼新

一、编译原理概述

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。

编译器将源程序编写的程序作为输入,从而产生用目标语言编写的等价程序输出。通常地,源程序为高级语言,如C或C + +,而目标语言则是目标机器的目标代码 (有时也称作机器代码),也就是写在计算机机器指令中的用于运行的代码。这一过程可以表示为:源程序→编译器 →目标程序。

二、编译原理的发展历程

20世纪40年代,由于冯·诺伊曼在存储程序在计算机方面的应用,编写一串代码或程序保存在计算机中供计算机执行是十分方便的。起初这些程序都是用机器语言编写的指令(只有0和1的程序),但编写这样的代码十分费时、困难和乏味,从而产生用符号语言(汇编语言)编写的程序代替了。

在汇编语言中,都是以符号形式给出指令和存储地址的。汇编程序将用汇编语言的符号代码和存储地址翻译成与机器语言相对应的数字代码。汇编语言大大提高了编程的速度和准确度。尤其在要求程序有极快的速度和极高的简洁程度时更为重要。

汇编语言也有许多缺点:编写起来也不容易(比机器语言好多了),阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写。所以编程技术的下一个重要目的就是以一个更类似于数学定义或自然语言的简洁形式来编写程序,编写后的程序与任何机器都无关。

Noam Chomsky通过对自然语言结构的研究,发现并最终使得编译器结构异常简单,甚至还带有了一些自动化。Chosmky的研究根据语言文法(指定其结构的规则)的难易程度以及识别它们所需的算法来为语言分类。与乔姆斯基分类结构一样,包括了文法的4个层次:0型文法、1型文法、2型文法和3型文法,

且其中的每一个都是其前者的特例。其中2型文法(上下文无关文法)被证明是程序设计语言中最有用的,今天它已代表着程序设计语言结构的标准方式。

现在编译器设计主要考虑到两点:1、编译器能够识别更为复杂的算法的应用程序,用于推断或简化程序中的信息;这使得它与更为复杂的程序设计语言的发展结合在一起。2、编译器越来越成为基于窗口的交互开发环境的一部分,它包括了编辑器、链接程序、调试程序以及项目管理程序。

三、编译器的分析

编译器分析的对象是前端生成并传递过来的中间代码,优化型编译器常常用好几种层次的中间代码来表示程序,高层的中间代码,接近输入的源代码的格式,与输入语言相关,包含更多的全局性的信息,和源代码的结构;中层的中间代码与输入语言无关,低层的中间代码与机器语言类似。不同的分析,优化发生在最适合的那一层中间代码上。常见的编译分析有函数调用树,控制流程图,以及在此基础上的 变量定义-使用,使用-定义链,变量别名分析,指针分析,数据依赖分析等等。上述的程序分析结果是编译器优化和程序变形的前提条件。常见的优化和变新有:函数内嵌,无用代码删除,标准化循环结构,循环体展开,循环体合并,分裂,数组填充等等。 优化和变形的目标是减少代码的长度,提高内存,缓存的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码变成并行运算,多线程的代码。机器代码的生成是优化变型后的中间代码转换成机器指令的过程。编译器主要采用生成汇编代码的策略,而不直接生成二进制的目标代码。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何选择合适的机器指令,如何合并几句代码成一句等等。

四、编译器的工作原理

编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标

文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

五、编译器的工作方法

首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候需要把多个文件产生的目标文件进行链接,产生最后的代码。这一过程称为交叉链接。

编译器,包括了代码编译器(compiler),目标文件链接器(linker),库文件管理工具,编译驱动工具,ANSI c/c++标准的头文件和库文件,扩展的头文件和库文件,集成开发环境等等与编译相关的工具,所有这些工具的集合,就组成了广义上的编译器。

linker的功能是将目标文件进行装配,将浮动的地址变为确定的地址,这个工作是通过修改目标文件的重定位项来实现的。link这一阶段处理的输入是目标文件,其输出是可执行文件,或动态库。

任何一个编译器都会提供库文件和与之对应的头文件,C/C++编译器一般都提供ANSI C/C++的库和相应的头文件。广义的编译过程,实际上是由编译和链接两个基本步骤组成的。在编译器里,有一些默认的规定,我们需要了解。在编译器中,bin目录用于存放compiler、linker等工具,include目录用于存放头文件,lib目录用存放库文件,大多数的编译器的目录就是按这个来组织的。

六、学习总结

《编译原理》这门课程是计算机专业一门重要的专业基础课,在专业课程内起着承上启下的作用。通过本学期老师全面的讲授,使我认识到学习编译原理的重要性,通过对本书的学习我了解到很多编译程序的知识,编译程序是现代计算机系统的基本组成部分之一,而且多数计算机系统都配有不止一个高级语言的编译程序,对有些高级语言甚至配置了几个不同性能的编译程序。使用计算机的人都知道,除了编译程序外,还需要一些其他的程序才能生成一个可在计算机上执行的目标程序。此外,本课程的工程性、实践性和技术性比较强,还强调培养学

生的动手动脑能力、开拓与创新意识、实验技能,这些要求更多的是通过作业和实验等环节来完成的,要求我们有意识地主动加强这些方面的锻炼。

七、参考文献:

张素琴,蒋维社,戴桂兰,编译原理第二版,清华大学出版社,2005

更多相关推荐:
论文范本-理论探讨型

国家职业资格全国统一鉴定企业人力资源管理人员论文(国家职业资格二级)论文题目:国有企业绩效管理系统的现状与对策研究姓名:身份证号:准考证号:所在省市:所在单位:国有企业绩效管理系统的现状与对策研究摘要:国有企业…

理论性或论说类论文范文

本论文范文摘自20xx年4月第一版高等教育出版社与经济日报出版社出版的高等学校毕业设计论文指导手册外语卷第137163页根据本院论文规范进行了修改在此对该书主编及论文原作者表示感谢理论性或论说类论文范文Refl...

往年毕业论文范文(理论)

本科生毕业论文设计题目姓名学院专业班级学号指导教师WTO框架下食品出口食品安全问题研究陈怀杰财经学院国际经济与贸易20xx级班1448100301颜海明职称讲师200年月日安徽科技学院教务处制摘要1关键词1引言...

理论教育教学论文范文

理论教育教学论文范文教育论文题目拟定写作步骤和技巧教科研能力是现代教师必备的基本素质之一撰写教育论文既是教师教科研能力的一种具体的展示又是不断提升教科研能力的一种有效的途径和方法然而不可忽视的现实状况是部分中青...

本科毕业论文范文会计理论结构的探讨

湖南人文科技学院毕业论文设计毕业论文题目关于会计理论结构的探讨目录中文摘要及关键词2前言3一构建我国财务会计概念框架的设想4一我国财务会计理论要素及准则41我国的会计理论要素52财务会计概念框架与企业会计准则5...

行政管理论文范文

广播电视大学毕业论文姓名方爱旋学号1044001453794教育层次大专专业行政管理目录内容摘要及关键词2一我国政府人力资源发展趋势3二我国政府人力资源管理中心的问题41有些政府部门沿袭了一些传统保守思想2人才...

大学生军事理论课程论文范文

大学生军事理论课程论文范文随着高新技术的迅猛发展和在军事上的广泛应用不仅对军队的武器装备作战理论编制体制产生巨大的影响而且对军事人才提出了新的要求作为构成战争基本要素的人武器装备及人与武器的组合方式都与科学技术...

线性代数在专业的应用及举例论文范文

华北水利水电学院线性代数在专业的应用及举例课程名称线性代数专业班级成员组成联系方式20xx年11月9日星期五线性代数在专业的应用及举例摘要线性代数作为高等院校各专业一门重要的数学基础课程它不但广泛应用于微分方程...

财务管理本科毕业论文范文1[1]

湖北民族学院经济与管理学院本科毕业论文题目预警模式探讨姓名黄佩欣学号061040334班级0610403专业指导老师谭宗宪20xx年5月15日诚信声明本人所提交的毕业论文是本人在指导老师的指导下独立进行研究所取...

华师现代企业管理毕业论文范文

学生毕业论文专业准考证号码指导老师生姓名论文题目学生联系电话论现代企业的员工激励目录目录I摘要II关键词II一激励理论综述1一管理学激励理论1二经济学激励理论2二企业员工激励现状及启示3一员工激励现状3二员工激...

学术理论性文章的写法

学术理论性文章的写法人文科学和社会科学的研究有三大类1基础理论研究这类研究不考虑现实的直接的具体应用目标它的有用性就体现在人对人类社会自然和人自身的认识和把握上目的是揭示事物的基本原理或规律获知有关的新知识2应...

高考议论性文章写作结构——七段式模式

高考议论性文章写作结构七段式模式第一段引题语言简洁有文采70字以内3巧设问发人深思开篇设计疑问造成悬念往往能吊人胃口激发读者探知的兴趣如梁山智有吴用道有公孙武更是好汉如云英雄如雨却以宋江为首蜀国谋赖孔明勇让开头...

理论性论文(13篇)