程序设计语言与编译
任课教师, 王晓斌
806教研室
主楼中 335
开场白
一, 引子
1,自我介绍
2,点名
3,题外话,
① 假期结束了,开学了 …,,
② 学与玩
③ 关于笔记
④ How to pass?
⑤ 我的初衷
二, 参考书
1,龚天富,李广星,高级程序设计语言概论
2,陈大旺等,程序设计语言编译原理
三, 关于教学
1,课程设置,
68学时 <程序设计语言与编译 >
+34学时 <编译实验 >
2,先修课程,<数据结构 >,<形式语言 >,
<PASCAL>或者 <C语言 >
3,教学安排
(参照目录讲学时安排,习题课及实验开始时间 )
4,答疑, 第六周起,双周四晚在 806
5,交作业, 原则上,第五周起,单周五课后
第一章 绪论
第一节 引言
1.程序设计语言的产生
人机通信、人机交流
2.程序设计语言的发展
机器语言 → 汇编语言 → 高级语言
(说明翻译,解释,汇编,编译等概念 )
3.高级语言的特点
① 直观, 自然, 易于理解
② 易读, 易写, 易于交流, 出版和存档
③ 一般都是独立于机器的,易于移植
4.本书的目标
① 介绍程序设计语言的设计和实现的最基本的
理论和技术 ;提高鉴赏和评估语言的能力
② 在了解语言的重要概念, 功能和限制的基础
上,以便具有选择, 设计和实现程序设计语言
的能力
第二节 语言的定义
?语法,用以构造程序及其成分的一组规则
的集合
?语义,用以规定语法正确的程序或其成分
的含义的一组规则的集合
一,语法
1.几个术语
① 字母表,语言允许使用字符的集合,其元素称
为字符
② 符号,由字符组成的有限串 ( 字符串 )
③ 字汇表,由符号组成的集合, 其元素称为字
④ 词法规则,规定什么样的字符串可以构成语言
的有效符号
⑤ 语法规则,确定一个符号序列是否为一个句子,
并提供句子的结构 ( 什么样的符号序列是合法的 )
2,生成的观点
① 一个简单英语句子的描述
I/Students study/run,
② 文法,语言的一个完整的语法描
述,记为 (N,T,P,S)
<句子 >→< 主语 ><谓语 >
<主语 >→I|Students
<谓语 >→study|run
③ 语言,所有句子的集合
④, 标识符, 和, 表达式, 的定义 (递归定
义 )
(注意递归的结束条件 )
标识符
<标识符 >→< 字母 >
<标识符 >→< 标识符 ><字母 >
<标识符 >→< 标识符 ><数字 >
<字母 >→A|B| … |X|Y|Z|a|b|… |x|y|z
<数字 >→ 0|1|2|3|4|5|6|7|8|9
表达式
<表达式 >→< 标识符 >
<表达式 >→(< 表达式 >)
<表达式 >→< 表达式 ><运算符 ><表达式 >
<运算符 >→+| -|*|/
3.识别的观点,
用语法图来定义给定的语言
① 语法图的构造
?N→ ?1|?2|… |?n 对 应 一 个 语 法 图
?终结符 x
?非终结符 N
?N→ ?1|?2|… |?n
X
N
??2
??n
??1
?b1 ?b2 ?bm
?g
?b
? ?→ b1|b2|…| bm
? ?→ ?b|g
② 识别原则,若一个终结符序列是合法的,
那么,必须从语法图的入口边通过语法图
而到达出口边,而且在通过的过程中,恰
恰能识别该终结符序列。
Ⅰ,终结符框
Ⅱ,非终结符框
Ⅲ,分支、回溯
参见图 1-6、图 1-7、图 1-8、图 1-9
③ 语言,语法图能识别的所有终结符序列的
集合。
标识符
表达式
运算符
表达式
( )
表达式 表达式
?字母
字母
?数字 标识符
?字母
?字母
?数字 表达式
表达式 ( )
表达式 + 表达式
-
*?
/
+
-
*?
/
运算符
图 1-6 图 1-7
图 1-8
图 1-9
4.语法描述的基本用途
① 表达语言设计者的意图和设计目标 ;
② 指导语言的设计者如何写一个正确
的程序;
③ 指导语言的实现者如何编写一个语
法检查程序来识别所有合法的程序 。
二,语义
例:大象吃花生
Elephants eat peanuts,
1.何谓语义?
定义语言合法句子的含义, 即句
子的作用和意义 。
2,GAM的结构
? 指令指针 +代码存储器 C +数据存储器 D
? 举例,若懂汉语,可以将任何外语以汉语
解释;亦即理解了汉语则理解了外语,
ip
代码存储器( C) 数据存储器( D)