编译原理第二章高级语言及其语法描述内容总结

一.内容总结

1.      语法的三个基本概念:

字母表:一个有限的字符集。(空字指的是不包含任何符号的序列,注意区别其与空集的不同)。

单词符号:是语言中具有独立意义的最基本结构。

语法单位:由单词符号构成的更大的结构(一般包括:表达式,语句,分程序(语句块),函数(有返回值),程序)。

2.      

 

 

语法:一组规则,用这组规则可以产生形式上正确的程序。

 

3.程序高级语言的分类

3.1程序设计范型:强制式语言(过程式语言。c)

应用式语言(函数式语言。lisp)

基于规则的语言(prolog,yacc)

面向对象的语言(java):封装继承多态

多态性:操作符或子程序名能够根据参数和结果的数据类型,引用某些函数定义中的任意一个。

3.2编译时是否需要类型检查:静态类型语言(c,c++,java)

动态类型语言(Python,Ruby,PHP)

 

3.3类型检查强弱:弱类型语言(C,C++,VB)

强类型语言(JAVA, C#)

4.程序设计语言的一般特性:程序结构

数据类型与操作

语句

控制结构

 5.文法(重点)

5.1与文法有关的概念:

字母表,符号串,前缀后缀,空字,符号串的连接,方幂,符号串集合的和,符号串集合的连接,闭包等,详见课本25-26页。

5.2.上下文无关文法:

特点:独立性

缺点:不能用来描述自然语言

   形式上定义一个上下文无关文法G是一个四元式(V,V,S,P)

是一个非空有限集,它的每一个元素称为终结符号;

是一个非空有限集,它的每一个元素称为非终结符号,V∩V=f;

S是一个非终结符号,称为开始符号;

P是一个产生式(有限)集合,每个产生式形式是A→a ,其中,P∈VN,a(V∪V

开始符号S至少必须在某一产生式的左部出现一次。

  5.3推导(具体推导的应用会在课后习题中给出)

最左(最右)推导:在推导的任何一步αÞβ,其中α、β是句型,都是对α中的最左(右)非终结符进行替换

构造文法的的过程(课后例题)

5.4语法分析树与二义性

 

语法分析树:简称语法树。用来表示推导过程。

文法的二义性:如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。(不等于语义的二义性)

二.知识运用(课后习题)

6.


8

9


三.学习感悟

      这门课最大的特点就是结构性和逻辑性。编译原理解释的是高级程序语言的形成原理和构造过程,与大一大二所学习的语言对比:高级语言教我们学习如何编程,编译原理则是叫我们构造,解释一门语言。前两周的学习分析了高级语言的组成,介绍了语句定义和分析方法。语法语义是语言规则,字母表单词符号属于语法范畴,语法单位属于语义范畴。语法描述讲语法的形式描述问题,这一单元的最重要方法的是语法分析树和上下文无关文法。
      上下文无关文法,语法是描述语言的语法结构的形式规则。针对语法进行分析使用语法分析树,要注意语法分析树后代产生顺序并不影响其表达。因此对同一个语句,都可以通过文法使用最左或是最右推导得到。
希望在门课最后的阶段,能够写出一个简单的编译器。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值