第二章 高级语言及语法描述

1、语法三个基本概念:

    (1)字母表

    (2)单词符号

    (3)语法单位

2、语法、语义、文法区别:

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

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

文法:文法是描述语言的语法结构的形式规则(即语法规则)。

3、高级语言的分类

(1)按程序设计范型分为:

强制式语言(过程式语言。c)
应用式语言(函数式语言。lisp)
基于规则的语言(prolog,yacc)

面向对象的语言(java)

(2)按编译时是否需要类型检查分为:

静态类型语言(c,c++,java)

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

(3)按类型检查强弱分为:

弱类型语言(C,C++,VB)

强类型语言(JAVA, C#)

4、程序设计语言的一般特性:

(1)程序结构
(2)数据类型与操作
(3)语句

(4)控制结构

5、上下文无关文法组成部分:终结符号、非终结符号、开始符号、产生式。

用大写字母代表非终结符,小写字母代表终结符,用α、γ、β等代表由终结符和非终结符组成的符号串。

第六题

G6:

N→D|ND

D→0|1|2|3|4|5|6|7|8|9

则L(G6)是终结符产生的一个符号串,即数字0~9组成的符号串。

0127最左推导:N→ND→NDD→NDDD→DDDD→0DDD→01DD→012D→0127

0127最右推导:N→ND→NDD→NDDD→DDDD→DDD7→DD27→D127→0127

第七题

写一个文法,使其语言是奇数集,且每个奇数不以0开头。

G(7):

A→1|3|5|7|9

B→2|4|6|8|A

D→0|B

E→A|FA

F→B|BD

6、语法树的二义性:

E→E+E|E*E|(E)|i, 关于(i*i+i)的推导

推导一:E→(E) →(E*E) →(i*E) →(i*E+E)→(i*i+E) →(i*i+i)


推导二:E→(E)→(E+E)→(E*E+E)→(i*E+E)→(i*i+E)→(i*i+i)


学习总结:本章作为这门课的正式第一章,让我充分了解到了这门课程的困难程度,就算上课专心听讲也不一定能都理解。所以课前的预习是必要的。本章学习了高级语言的语法描述,重点是上下文无关文法,这一部分内容感觉比较陌生,就和刚接触计算机语言感觉差不多,不能完全理解它的作用和原理,希望后续的学习能慢慢深入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值