高级语言及其语法描述

一.主要内容

一.定义

1、程序语言主要是由语法和语义两个方面定义。

2、任何语言程序都可以看作是一定字符集(称为字母表)上的一字符串(有限序列)。

3、单词符号是语言中具有独立意义的最基本结构。一般包括:各类型的常数,标识符,记本子,算符和界符等。

4、词法规则是指单词符号的形成规则。

5、语言的语法规则规定了如何从单词符号形成更大的结构(语法单位),换言之,语法规则是语法单位的形成规则。语法单位一般包括:表达式,语句,分程序,函数,过程和程序。

6、语言的语法规则和词法规则定义了程序的形式结构。

7、语言的语义是指这样的一组规则:使用它可以定义一个程序的意义。

8、大多数编译程序采用的基于属性文法的语义制导翻译方法。

9、程序设计语言:建立在有限字母集上的一个符号系统。

10、一个程序语言的基本功能是描述数据和对数据的运算。程序从本质上来说是描述一定数据的处理过程。

二.

高级语言基本特征

1.编译时是否需要类型检查:静态类型语言(c,c++,java)、动态类型语言(Python, Ruby,PHP)。

2.类型检查强弱:弱类型语言(C,C++,VB)、强类型语言(JAVA, C#)。

3.程序设计语言的一般特性:程序结构、数据类型与操作、语句、控制结构。

4.程序结构:支持过程的嵌套定义(Pascal)、不支持过程的嵌套定义(c/c++/java)。

5.数据类型·;基本数据类型(int,char,float,double)、构造数据类型(指针,静态数组,动态数组)、自定义数据类型(栈,队列,字符串,结构体)。

6.一个数据类型通常包括以下三种要素:a.用于区别这种类型的数据对象的属性、b.这种类型的数据对象可以具有的值、c.可以作用于这种类型数据对象的操作。

7.表达式:

表达式的形式(前缀,中缀,后缀)、表达式中的运算符(算数,关系,逻辑;优先级,结合性)、运算符的代数性质(交换律,结合律等等)。

组成:操作数和操作符组成。

常见的算术表示形式:前缀式: +a*bc、中缀式:a+b*c、后缀式:abc*+

语句:说明性语句、执行性语句(赋值语句、控制语句、输入/输出语句)

三.语法

1、设是一个有穷字母表,它的每个元素称为一个符号。上的一个符号串是指由中的符号所构成的一个有穷序列不包含任何符号的序列称为空字,记为ε。用*表示∑上的所有符号串的全体,包括εφ表示不含任何元素的空集

2、集合V自身的n次(连接)积记为:Vⁿ=VV...V;规定Vº={ε}。令V*=Vº∪V¹∪V²...Vⁿ,称为V的闭包

记V﹢=VV*,称为V的正则闭包。

3、上下文无关文法G

(1)、G定义:它所定义的语法范畴(语法单位)是完全独立于这种范畴可能出现的环境的。

(2)、G包括四个组成部分:一组终结符号(VT),一组非终结符号(VN),一个开始符号(S),一组产生式(P)。

VT:一般用小写字母阿拉伯数字表示,非空有限集

VN:一般用大写字母表示,非空有限集 VN∩VT=φ

S:非终结符号

P:产生式集合(有限),形式:P—>a,P∈VN,a∈(VT∪VN)*。S必须在某个产生式的左部出现一次

(3)、假定G是一个文法,S是它的开始符号。如果S=>a,则称a是一个句型仅含终结符的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为L(G)。

L(G)={ a | S=+>a&a∈VT* }。

二.应用

6、(1) L ( G6 ) 是0到9 组成的数字串.

(2)最左推导: N =>ND =>NDD =>NDDD =>DDDD =>0DDD =>01DD=>012D=>0127 

N =>ND =>DD =>3D=>34

 N =>ND =>NDD =>DDD =>5DD =>56D =>568

最右推导: N =>ND =>N7=>ND7=> N27=> ND27=> N127=> D127=>0127

N =>ND =>N4=>D4=> 34

N =>ND =>N8=>ND8=> N68=>D68=>568

7. G( S ) S->J | AJ     J->1 |3| 5| 7| 9     O->2 |4 |6 |8 | J     T->0 | O     A->AT | O

8.

                      i + i + i                                          i + i * i    

         高级语言及其语法描述                   高级语言及其语法描述

三.总结

编译原理已经上了好几节课了,是一门很难的课,这章节主要学了程序的语言及其定义,高级语言的一般特性,程序语言的语法描述,每个知识点都很难理解,对于我而言还是需要下功夫去学的,在今后的学习过程中要多下功夫,多学习。