编译原理

编译原理概述(第一次作业)

柔情痞子 提交于 2019-11-29 04:14:12
(1)编译程序和解释程序都是一个翻译程序。翻译程序是把一种语言所写的源程序翻译成与之等价的另一种语言的目标程序,汇编程序是把汇编语言程序翻译成机器语言程序,解释程序是把源程序作为输入并执行它,边解释边执行。它与编译程序的主要区别在于在解释程序执行的过程中不产生目标语言,而是按照源语言的定义解释执行源程序本身。 (2)主要分为6个主要阶段,分别是词法分析、语法分析、语义分析、中间代码生成、代码生化、目标代码生成。词法分析是把字符从左到右一个一个字符读入源程序,对构成源程序的字符流进行扫描和分解;语法分析是把词法分析基础上将单词分解成各类语法短语;语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息;中间代码生成是把源程序变成一种内部表示形式;代码优化是将产生的中间代码进行变换和改造。目的是为了使生成的目标代码更为高效,即省时间和省空间;目标代码生成是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 (3)编译程序是整体编译完了,再一次性执行;而解释程序是一边解释一边执行。而且解释程序执行的过程中不产生目标代码,而是按照源语言的定义解释执行源程序本身,而编译程序会产生目标代码。 (4)华为方舟编译器是华为专门为软件厂商开发的一款编译器,能够有效解决安卓程序“边解释边执行”的低效率问题。华为方舟编译器采用全程执行机器码高效运行程序,架构进一步得到优化

第一次作业:编译原理概述

随声附和 提交于 2019-11-29 04:14:09
---恢复内容开始--- 1.简述编译程序与翻译程序、汇编程序的联系与区别。 答:翻译程序是指把高级语言源程序翻译成机器语言源程序,它包含了两种:一种是编译程序,另一种是解释程序。 编译程序是指完成从源程序到目标程序的翻译工作,它是先将代码完整的编译后运行的程序。 汇编程序是将汇编语言源程序翻译成机器语言程序的语言翻译程序。 翻译程序是将“高级语言”翻译成“低级语言”,而汇编程序是将汇编语言翻译成机器语言。 2.编译过程包括哪几个主要阶段及每个阶段的主要功能。 答:编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成这6个阶段。 词法分析功能是对输入的高级语言源程序进行词法分析,对字符进行扫描和分解,把字符串形式分解为单词符号串形式。 语法分析是在词法分析的基础上将单词序列分解成各类语法短语,识别各类语法的层次关系,并将其生成为语法树的形式。 语义分析主要是审查源程序有无语义错误,为代码生成阶段收集类型信息。 中间代码生成在语法分析的基础上,对程序进行语义分析,产生出表达程序语义的内部表达形式(中间代码)。 中间代码优化是按照等价变换的原则,对语义分析器产生的中间代码序列进行等价变换,删除多余的操作。 目标代码生成的功能是指把优化后的中间代码变成机器指令代码,得到可在目标机器上执行的机器语言程序。 3.简述解释程序与编译程序的区别。 答

编译原理概述

橙三吉。 提交于 2019-11-29 04:12:41
1.编译程序与翻译程序、汇编程序的联系与区别。 编译就是把高级语言变成计算机可以识别的2进制语言, 是对整个写好的程序进行翻译。 最终形成目标文件 解释程序, 是一句一句翻译的, 最终不形成目标文件 汇编程序一般指编译生成与之等价的 机器语言 翻译程序就是一行行的执行,比如dos,你打个命令再按下回车, 所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写 的 源程序 作为输入,解释一句后就提交 计算机 执行一句,并不形成 目标程序 。就像外语翻译中的“口译”一样,说一句翻一句,不产生 全文 的翻译 文本 。这种工作方式非常适合于人通过 终端设备 与计算机 会话 ,如在终端上打一条 命令 或 语句 ,解释程序就立即将此语句解释成一条或几条 指令 并提交 硬件 立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些 小型机 的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。 2.编译过程包括哪几个主要阶段及每个阶段的主要功能。 第一阶段:词法分析 词法分析的任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字(begin、end、if、for、while),标识符、常数、运算符和界符(标点符号

编译原理概述

孤人 提交于 2019-11-29 04:12:33
(1)简述编译程序与翻译程序、汇编程序的联系与区别。 1.编译程序与翻译程序、汇编程序的联系 编译程序、翻译程序、汇编程序是3种语言处理程序。 2.编译程序与翻译程序、汇编程序的区别 汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序。 翻译程序(为高级服务)直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。 编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。编译程序与翻译程序最大的区别之一在于前者生成目标代码,而后者不生成。(2)编译过程包括哪几个主要阶段及每个阶段的主要功能。 1.词法分析:词法分析是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符的读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 2.语法分析:语法分析是编译过程的第二个阶段。语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语。 3.语义分析:语义分析椒审查源程序有无语义错误,为代码生成阶段收集类型信息。 4.中间代码生成:进行了上述胡语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或者中间代码。 5.代码优化:这是对前一阶段产生的中间代码进行交换或进行改造

编译原理 作业一

懵懂的女人 提交于 2019-11-29 04:12:21
1)简述编译程序与翻译程序、汇编程序的联系与区别。 翻译程序是指把高级语言源程序翻译成机器语言源程序的软件。 汇编程序是一个翻译程序,它把汇编语言程序翻译成机器语言程序。 编译程序也是一个翻译程序,编译程序是把源语言像C、FORTRAN或Pascal这样的高级语言翻译成目标语言是像汇编语言或机器语言那样的低级语言。 2)编译过程包括哪几个主要阶段及每个阶段的主要功能。 编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段。 每个阶段的主要功能: 词法分析的任务从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(一些场合下也称单词符号或符号)。 语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语。这种语法也称为语法单位,可表示成语法树。 语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。 中间代码是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式。 代码优化的任务是对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间。 目标代码生成的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 3)简述解释程序与编译程序的区别。 编译程序是整体编译完了再一次性执行。 解释程序是一边编译,一边执行

第一次作业:编译原理概述

随声附和 提交于 2019-11-29 04:12:12
1)简述编译程序与翻译程序、汇编程序的联系与区别。编译器将高级语言翻译成汇编语言,然后通过汇编程序将汇编语言翻译成机器语言。但是编译器只能将源语言编译成目标语言。编译程序是翻译程序之一,汇编程序是将汇编语言翻译成机器语言。2)编译过程包括哪几个主要阶段及每个阶段的主要功能。一般也可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位语义分析与中间代码产生:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。优化:优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。优化的主要方面有:公关子表达式的提取、循环优化、删除无用代码等等。目标代码生成:优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。优化的主要方面有:公关子表达式的提取、循环优化、删除无用代码等等。3)简述解释程序与编译程序的区别。编译程序:先整体编译在一次性执行,执行程序时只执行目标程序。解释程序:边解释边执行,不会生成目标程序。4)了解新开源的华为方舟编译器(https://www

编译原理概述第一次作业

随声附和 提交于 2019-11-29 04:12:11
1. 编译程序 是先完整编译后运行的程序,如C、C++等;解释程序是一句一句翻译且边翻译边执行的程序,如JavaScript、Python等。而翻译程序有两种:一种是 编译程序 ,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是 解释程序 ,它的执行过程是翻译一句执行一句,并且不会生成目标程序。 汇编程序 也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。 2.编译过程包括: 1.词法分析:从做到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 2.语法分析:在词法分析的基础上将单词序列分解成各类语法短语。 3.语义分析及中间代码生成:审查源程序有无语义错误,为代码生成阶段收集类型信息,然后有的编译程序将源程序变成一种内部表示形式。 4.代码优化:是对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间。 5.目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 3.简述解释程序与编译程序的区别: 编译程序是整体编译完了,再一次性执行。 而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本 。 4

第一次作业-编译原理概述

大兔子大兔子 提交于 2019-11-29 04:11:42
1)简述编译程序与翻译程序、汇编程序的联系与区别。 翻译程序是指这样一个程序,把一种语言所写的源程序翻译成与之等价的另一种语言的目标程序。 编译程序是一种翻译程序,把高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序。 解释程序也是一种翻译程序,它将源程序作为输入并执行它,边解释边执行。 2)编译过程包括哪几个主要阶段及每个阶段的主要功能。 编译过程为: 1.词法分析:词法分析的任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字(begin、end、if、for、while),标识符、常数、运算符和界符(标点符号、左右括号)。 2.语法分析:语法分析的任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如“短语”、“句子”、“程序段”和“程序”等。通过语法分析,确定整个输入串是否构成语法上正确的“程序”。语法分析所依循的是语言的语法规则。语法规则通常用上下文无关文法描述。词法分析是一种线性分析,而语法分析是一种层次结构分析。 3.语义分析及中间代码生成:这一阶段的任务是:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。这一阶段通常包含两个方面的工作。首先,对每种语法范畴进行语义i安插,例如,变量是否定义、类型是否正确等等。如果语义正确

程序员必读的30本书籍

血红的双手。 提交于 2019-11-28 16:53:59
1. 《代码大全》(第二版) 作者: [美]史蒂夫·迈克康奈尔 第2版的《代码大全》是著名IT畅销书作者史蒂夫·迈克康奈尔11年前的经典著作的全新演绎:第2版不是第一版的简单修订增补,而是完全进行了重写;增加了很多与时俱进的内容。这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。这本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论是什么背景的读者,阅读这本书都有助于在更短的时间内、更容易地写出更好的程序。 2. 《程序员修炼之道》 作者: Andrew Hunt /David Thomas 《程序员修炼之道》由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。 3. 《计算机程序的构造和解释》 作者: Harold

编译原理之词法分析器(三)

蹲街弑〆低调 提交于 2019-11-26 19:04:02
上篇用了另一种方式构造词法分析,总体来说实现的过程比较明确,但是我们可以看到,上篇的分析仅仅只进行了少量的单词分析,如果将C语言中的32个保留字还有其他的操作符以及界限符加进入,其构造的状态机会异常的庞大,所以接下来将简化其状态机,使用查询匹配的方式,很明显这种方式有很大的确定,在该系列博客第一篇谈到,但是对于C语言这样的来说,构造完全的状态机太费事了,所以这也是一种取舍的方式。 下面是简化版的状态机,注意:该状态机只能区分单词的种类,单词的ID是通过遍历比较匹配得到的。 下面由于时间关系暂时先写到这,后面会继续写。 来源: https://www.cnblogs.com/listenscience/p/11935380.html