编译原理第二章学习总结

编译原理第二章学习总结

编译原理是一门独立于其他学科之外的理论性科目,第二章的知识内容首先交代语言程序是一定字符集上的一字符串。如今多数的程序语言可以通过上下文无关文法来作为有效工具描述程序语言的语法规则。

一.知识梳理

/首先是程序语言的定义:任何语言实现的基础是语言的定义。程序语言主要由语法和语义两方面定义。语法分为词法规则和语法规则,而语义是指一门语言除去词法语义规则外还要定义它的单词符号和语法单位的意义。

 

/其次是高级语言的分类,高级语言分为四种:

①强制性语言:也称过程式语言 特点是命令驱动,面向语句

②应用式语言:更注重程序所表示的功能

③基于规则的语言

④面向对象语言:主要特征是支持封装性、继承性和多态性

 

/程序结构:FORTRAN   Pascal  Ada  Java

 

/数据类型与操作:

数据类型通常包括三要素:①用于区别这种类型的数据对象的属性  ②此类型数据对象可以具有的值   ③可作用于这种类型的数据对象的操作

分类为  ——初等数据类型 常见的初等数据类型:数值数据、逻辑数据、字符数据、指针类型

——数据结构 常见的定义方式:数组、记录、字符串、表格、栈和队列

——抽象数据类型 包括:数据对象的一个集合、作用于这些数据对象的抽象运算的集合、这种类型对象的封装

 

/语句与控制结构

控制结构定义了语句在其中的执行次序,语言所提供的控制结构的集合对可读和可维护的软件编写有很大的影响。

①表达式:一个表达式由运算量和算符组成

②语句:不同程序语言含不同形式和功能的各种语句

 

/程序语言的语法描述

①上下文无关文法:文法是描述语言的语法结构的形式规则。这些规则必须是准确的、易于理解的、有相当强的描述能力足以描述各种不同的结构。上下文无关文法所定义的语法范畴是完全独立于这种范畴可能出现的环境的,包括四个组成部分:一组终结符号,一组非终结符号,一个开始符号以及一组产生式。

 

/语法分析树 可以用一张图来表示一个句型的推导

语法树的根结由开始符号所标记。随着推导的展开,当某个非终结符被他的某个候选式所替换时,这个非终结符的相应结就产生出下一代新结,候选式中自左至右的每个符号对应一个新结,并用这些符号标记其相应的新结。

*在一棵语法树生长过程中的任何时刻,所有那些没有后代的端末结自左至右排列起来就是一个句型。

 

/二义性

如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。也就是说若一个文发中存在某个句子有两个不同的最左(最右)推导,则这个文法是二义的。

 

    

二.课后练习与知识运用

★第四题中按第一小问的题目要求来看,在按优先级为+ * ↑同时优先采用左结合的要求来做,便解为1+1*22*12 = 2*22*1 2 = 442 = 162 = 256  ②问中采用优先顺序为↑+ * 的顺序同时采用右结合,则解为 原式=1+1*22*1 = 1+1*4*1 = 2*4*1 = 2*4 = 8

★第六题中由题意得文法G6可表示出所有自然数 ②中0127 34 568的最左推导依次为

NNDNDDNDDDDDDD0DDD01DD012D0127

NNDDD3D34

NNDNDDDDD5DD56D568

最右推导依次为

NNDN7ND7N27ND27N127D1270127

NNDN4D434

NNDN8ND8N68D68568

★第七题中 由题目可产生思路为从各奇数的位数入手进行推导,则首先设立所有奇数共有的尾数J

J1|3|5|7|9  O2|4|6|8   AJ|O  BBA|J  CJ|BJ

★第八题中主要注意最左推导与最右推导的区别

i+i*i的最左推导由 EE+TT+TF+Ti+Ti+T*Fi+F*Fi+i*F

i+i*i的最右推导由 EE+TE+T*FE+T*iE+F*iE+i*iT+i*iF+i*ii+i*i

★第九题中的文法二义需要从寻找具有不同最左或最右推导句子的思路来解答

★第十题中主要涉及非终结符的替换

 

三.学习感悟

在学习完编译原理第二章的内容后,了解到第二章的大题内容是对知识要点的解释以及不同概念的介绍与分类,理论性的知识内容还是较多的,很多内容都很抽象,以至于有的知识还有些难以熟练的理解运用;同时也觉得老师要求我们通过博客来记录学习内容的方式也是不错的,能够有效督促我们复习知识,强化对知识点的记忆,并通过习题的练习来得到知识点的实践与巩固。由于步入大三下学期后,每个人要学习的其他东西开始占用大部分时间,无论是考公、考研、还是就业,都容易让我们在忙于这些个人事务上而忽略了对学校所开设课程的学习。所以当在为自己梦想努力的同时,也不能忘记要走好脚下的每一步,提高课堂效率,改进学习方法,由于我对于很多知识的掌握还不够牢固,所以需要更多的复习加练习。

你可能感兴趣的:(编译原理第二章学习总结)