0909编译原理理解和解释

编译

  1、利用编译程序从源语言编写的源程序产生目标程序的过程。

  2、用编译程序产生目标程序的动作。

所以我们应先多加了解多种程序设计语言。

 

  编译程序是高级语言的支撑基础,是计算机系统中重要的系统软件之一。编译程序的功能是把高级语言源程序翻译成等价的第几语言目标程序。

  编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析语法分析;语义检查和中间代码生成代码优化目标代码生成。主要是进行词法分析语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。

  源程序是有一些基本符号构成的,我们在运行这个程序时 ,先编译,若某处有错误,就报错,无错误就运行。编译 程序在编译时,先将程序中的单词一个个分离出来,登记 在一个表中,这叫词法分析,然后检查语句格式,叫做语 法分析。然后检查类型是否一致,计算表达是的值叫语义分析。

  怎么学编译原理呢?

  一.百度上有这样一条回答:离散数学-》数据结构-》操作系统-》汇编原理-》编译原理,从这几个科目入手,学好学扎实,因为编译原理涉及的知识比较广。

  二.当然也有笔者回答出了一条路线:1.先利用ANTLR之类的编译器生成工具,做一个小程序(如上面提到的HTML文件转化成纯文本文件的程序),所需知识只是正则表达式的基本知识和生成工具本身的使用方法(可以看联机帮助和网上教程(tutorial)来掌握). 这样做的好处是:   1)可以体会到编译原理的实用性,提高学习兴趣   2)入门容易,消除编译原理学习的畏难情绪.   3)获得词法分析器和语法分析器的感性认识,有利于加深对理论的理解.   4)获得编译器自动生成工具(compiler compiler)的使用经验,提高解决实际问题的能力.(实际工作很多都不是手编而是利用工具的)   2.象ANTLR之类的工具是开源(open source)的,可研究其源码,以便必要时自己手编分析程序.   3.回过头来看编译原理教材. 这时大概会发现,很多理论很容易懂,剩下的只有上面说的几个难点,多看几遍,重点突破.   4.结合教材所附源码,进一步加深对教材的理解   这里顺便提一下,有的编译原理的教材,对于输入子系统不单立一章来讲,有的甚至完全忽略,笔者认为, 输入子系统相对于词法分析器和语法分析器来说当然简单地多,但也是两者的基础,故有必要看源码来理解.在这方面,ANTLR的实现机制和Lex是不同的(当然和java与c的差异有关),可对照着看.

  

  现在,刚刚接触编译原理这一科目,还没学如何写一个编译器,所以,也是有点迷茫,有点空。我自己的思路差不多如下:首先,我们要确定自己要写一个什么语言的编译器,例如写一个C语言的编译器,那么,我们应该熟悉C语言的语法规则,先看懂源程序的词法,并判断源程序是否错误。接着,根据词法,去理解源程序中的语句,以及函数的功能,从而简化代码,减少计算机计算压力,接着把源程序的代码,一一编译成机器能看懂的机器语言也就是二进制语言,存放在某文档中。最后,将该文档内容导入运行程序,执行,输出结果,即编译完成。

  毫无科学依据的胡言乱语,估计老师忍不住要笑了吧。

时间: 2024-10-19 04:06:32

0909编译原理理解和解释的相关文章

0909 编译原理个人理解

1.编译原理学什么? 我们可以从中学习到语言及文法的基本知识.词法分析.语法分析.语义分析及中间代码生成.符号表组织.运行时的存储组织与分配.代码优化及目标代码生成等,学习编译器的原理和制作方式. 2.为什么学编译原理? 学习一样技术,不但要知其然,还要知其所以然,这样才能应对技术的不断更新,才能不被技术的发展所淘汰.编译原理就是这样一门课程,它教给我们的不只是编译器构造的基本原理和流程,同时,还教给我们如何严谨地去思考.编写程序,也就是说,它教给我们的还有一种思考问题的方法,即逻辑. 3.怎么

0909 编译原理的理解

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 个人觉得学习编译原理可以使我更好的了解代码的世界.学习了编译原理我就想医生靠解剖尸体从而了解人的身体构造一样,我可以了解机器的世界.这就是应该去学习编译原理的理由. 我觉得从这几个方面去学习编译原理是比较好的. 首先是教材的学习,然后是去看这个编译世界所推崇的三书,<龙书>,<虎书>,<鲸书&g

0909编译原理

1.编译原理学什么? “编译原理”是一门研究设计和构造编译程序原理和方法的课程,是计算机各专业的一门重要专业基础课. 2.为什么学编译原理? 通过学习该课程,掌握编译的基本理论.常用的编译技术,了解编译过程及编译系统结构和机理,更好的理解程序. 3.怎么学编译原理? 实践中学习,当然,需要掌握一些基本知识,通过在课堂中认真听课,运用已有的编程基础多加实践. 4.思考:在没有学习本书理论之前,如果让你写一个编译器,你是什么思路? 之前了解过编译器的原理就是将高级语言翻译成机器语言,但是如何写一个编

0909编译原理作业

1.学习编译原理既掌握编译理论和方法方面的基本知识,而且也获得设计.实现.分析和移植编译程序方面的初步能力.知道程序编译器是怎么编译的,学好了以后可以开发编译器.学会使自己写的程序更优,提高程序的效率.告诉我们编译器是怎么在内存中为程序的函数(包括变量)分配空间的等等. 2.编译原理是计算机专业设置的一门重要的专业课程.虽然只有少数人从事编译方面的工作,但是这门课在理论.技术.方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力.编译原理是计算机科学与技术中一个非常成熟的分支,非

0909 编译原理的学习

在21世纪的信息快速发展时代,计算机的技术已经渗入到生活当中.因此,我们需要学习更多的计算机的专业知识.『编译原理』这门课程是一门设计和构造编译程序原理和方法的课程,是计算机各专业的一门重要专业基础课.这门课程旨在介绍编译程序构造的一般原理和基本方法.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 编译原理是计算机专业设置的一门重要的专业课程.虽然只有少数人从事编译方面的工作,但是这门课在理论.技术.方法上都对学生提供了系统而有效的训练,有

0909 编译原理

1.编译原理学什么? 编译原理是计算机专业的一门重要专业课.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 2.为什么学编译原理? 编译原理是计算机专业设置的一门重要的专业课程.编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂.我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了. 3.怎么学编译原理? 1)提高学习

0909 编译原理 第1次上机

1.编译原理学什么? 答:把用高级编写的源程序翻译成等价的机器语言或者汇编语言. 2.为什么学编译原理? 答:计算机不能够直接接受和执行用高级语言编写的程序,需要通过一个翻译程序将它翻译成等价的机器语言程序才能执行. 3.怎么学编译原理? 答:对现代编译器的结构.词法分析和语法分析实现,代码生成等进行融会贯通,掌握书上内容. 4.思考:在没有学习本书理论之前,如果让你写一个编译器,你是什么思路? 答:对源程序语言与目标程序语言,掌握其语法,语意.要注意,语言与语言之间的差异.例如c++与c,c+

0909 编译原理第1次上机作业

1.答:编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂.我们学习编译原理这门课程讲的就是比较专注解决一种算法的问题. 2.答:学习编译原理可以更好地去追寻程序设计语言的本质,从编译原理的学习中所获得的东西,所思考的东西足以让我终生获益. 3.答:1.端正认识:2.反复看书:3.结合源码来看:4.删繁就简,避重就轻. 4.思考:如果要写一个C语言的编译器,我会把C语言的语法汇总起来,再做一个解释器,再和机器语言进行对比转化.

0909 编译原理第一次上机作业

1.编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 2.这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容.编译原理这门课程讲的就是比较专注解决一种的算法了. 3.认真听课,多动手编程.总结经验,巩固知识. 4.(1)对源语言和目标语言认真分析(2)设计编译