第二章 高级语言及其语法描述
2.1 程序语言的定义
一个程序语言就是一个程序系统,如同自然语言一样,程序语言主要分为语法和语义两部分。一个程序语言的基本功能是描述数据和对数据的运算。
2.1.1 语法
语法是一种规则,可以生成一个合式的程序。一部分称为词法规则,另一部分称为语法规则(产生规则)。一个程序语言只能使用一个有限字符集作为字母表。
2.1.2 语义
一种程序语言定义完了词法、词法规则,还需要定义单词符号和语法单位的意义,即语义问题。语义指的是这样一组规则,使用它可以定义一个程序的意义。
2.2 高级语言的一般特性
2.2.1 高级语言的分类
(1)强制式语言:FORTRAN、C、Ada等
(2)应用式语言:LISP、ML
(3)基于规则的语言:Prolog
(4)面向对象语言:Java
2.2.3 数据类型与操作
一个数据类型通常包括以下三个要素:用于区别这种类型的数据对象的属性;这种类型的的护具对象可以具有的值;可以作用于这种类型的数据对象的操作。
(1)初等数据类型:数值数据、逻辑数据、字符数据、指针数据
(2)数据结构:数组、记录、字符串等
2.3 程序语言的语法描述
2.3.1 上下文无关文法
文法是描述语言的语法结构的形式结构,而上下文无关文法所定义的语法范畴是完全独立于这种范畴可能出现的环境的。一个上下文无关文法G包括四个组成部分:一组终结符号(VT),一组非终结符号(VN),一个开始符号(S),一组产生式(P)。
2.3.2 语义分析树与二义性
用一张图表示一个句型的推导。
课后习题
6(2)另文法G6为: N->D|ND,D->0|1|2|3|4|5|6|7|8|9 给出句子0127的最左推导和最右推导。
最右推导:N->ND->N7->ND7->N27->ND27->127->D127->0127
最左推导:N->ND->NDD->NDDD->DDDD->0DDD->01DD->012D->0127
给出下列语言的相应文法
(1) L1 = { a? b? ci | n>=0 ,i >=1}
G( S ) S->AC
A->aAb | ab
C->cC | ε
(2)L2 = { a? b? a?? b?? | n,m>=0 }
G( S ) S->AB
A->aAb | ε
B->aBb | ε
总结:第二章主要是讲了高级程序语言的结构和主要的共同特征,同时也介绍了程序语言的语法描述方法。同时高级语言使用开描述算法和实现计算机的计算的。还详细地讲了几种文法和相关的知识点。