您的位置:首页 > 其它

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

2018-03-19 23:10 190 查看
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)

学习总结:本章作为这门课的正式第一章,让我充分了解到了这门课程的困难程度,就算上课专心听讲也不一定能都理解。所以课前的预习是必要的。本章学习了高级语言的语法描述,重点是上下文无关文法,这一部分内容感觉比较陌生,就和刚接触计算机语言感觉差不多,不能完全理解它的作用和原理,希望后续的学习能慢慢深入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: