第二章 高级语言及语法描述
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)
学习总结:本章作为这门课的正式第一章,让我充分了解到了这门课程的困难程度,就算上课专心听讲也不一定能都理解。所以课前的预习是必要的。本章学习了高级语言的语法描述,重点是上下文无关文法,这一部分内容感觉比较陌生,就和刚接触计算机语言感觉差不多,不能完全理解它的作用和原理,希望后续的学习能慢慢深入。
(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)
学习总结:本章作为这门课的正式第一章,让我充分了解到了这门课程的困难程度,就算上课专心听讲也不一定能都理解。所以课前的预习是必要的。本章学习了高级语言的语法描述,重点是上下文无关文法,这一部分内容感觉比较陌生,就和刚接触计算机语言感觉差不多,不能完全理解它的作用和原理,希望后续的学习能慢慢深入。
相关文章推荐
- 第二章-高级语言与语法描述的内容总结
- 第二章 高级语言及其语法描述
- 编译原理-第二章-高级语言及其语法描述总结
- 第二章 高级语言及其语法描述
- 编译原理第二章-高级语言及其语法描述
- 编译原理第二章高级语言机器语法描述总结
- 编译原理-第二章-高级语言及其语法描述
- 高级语言及其语法描述
- 编译原理高级语言及其语法描述
- 学习:程序设计语言——编译原理(二、高级语言及其语法描述)
- 编译原理-高级语言及其语法描述作业总结
- 高级语言及其语法描述
- 编译原理高级语言及其语法描述
- 高级语言及其语法描述
- 高级语言及其语法描述
- 【编译原理】高级语言及其语法描述
- 编译原理学习笔记(二)——高级语言及其语法描述
- 第二章 JAVA语言基本语法————数据类型之间的转换
- 第二章 JAVA语言基本语法————运算符
- Java精炼语言语法描述