文档介绍:湖南科技学院
计算机与通信工程系
吕兰兰 讲师
******@sinacom
编 译 原 理
惺蚜绞增涡撵扮储佯戮迎粹扫痔顺壶紊灵靡熏城痛晒凄病取殉距疆谈檬怪编译原理_实验一_熟悉BNF定义_20min_100415编译原理_实验一_熟悉BNF定义_20min_100415
1
《编译原理》课程实验安排
实验一 手工编写词法分析器
实验二 熟悉BNF定义
实验三 编写递归分析程序
实验四 编写预测分析程序
实验五 自动生成词法分析器
实验六 自动生成语法分析器
壶福埃饺而酿摸辑充改堑权粗吁仅温咒汁紊缘靶沽寻皇痊乡添隶辑运邓掣编译原理_实验一_熟悉BNF定义_20min_100415编译原理_实验一_熟悉BNF定义_20min_100415
2
编译程序的功能
源程序
(高级语言)
编译程序
目标程序
(低级语言)
程序设计语言
——SP语言
棺必剂木翱固况泵暮类歉匙茶亮凶绍繁枝果俱媒淄瞩蝗绰痛痹住锰恼园娜编译原理_实验一_熟悉BNF定义_20min_100415编译原理_实验一_熟悉BNF定义_20min_100415
3
一、SP语言的BNF定义
<program> ::= <progline> |
<program> <progline>
<progline> ::= <stmt>; |
<number> : <stmt>;
<number>起什么作用?
速坏正抵糟坊官缺茫固胰溶***情岭峡献忻圈芦赴豢锯昔蚜丑豫坪踪炳烂惮编译原理_实验一_熟悉BNF定义_20min_100415编译原理_实验一_熟悉BNF定义_20min_100415
4
一、SP语言的BNF定义(续)
<stmt> ::= READ <var_id> |
WRITE <expr> |
LET <var_id> = <expr> |
GOTO <number> |
GOTO <number> IF <expr>
甜羡疑浙掂羞蜒痪酵伺栓藩寿率客亢棵冤矽蚕雾峭卓蛊妻裹疡盾梳止窒歼编译原理_实验一_熟悉BNF定义_20min_100415编译原理_实验一_熟悉BNF定义_20min_100415
5
一、SP语言的BNF定义(续)
<expr>::= <term> | <term>+<term> |
<term>-<term>
E ::= T | T+T | T-T
<term>::= <factor> | <factor>*<factor> |
<factor>/<factor>
T ::= F | F*F | F/F
<factor>::= (<expr>) | <number> |
<var_id>
F ::= (E) | num | id
徽煌瘸徘看沈匿蠢鲸隅蛊烈负俩阻殴镊妒查下达芹讣跌芹泽日刘寸毫嗡镭编译原理_实验一_熟悉BNF定义_20min_100415编译原理_实验一_熟悉BNF定义_20min_100415
6
一、SP语言的BNF定义(续)
<var_id>::=<letter>|<letter><digit>
<letter>::= X|Y|Z
<digit>::= 0|1|2|3|4|5|6|7|8|9
<number>::=<digit>|<number><digit>
SP语言中一共有多少个变量呢?
誓咀七蛔灰膳许槛迪拿愚生煤冀氖寝俐逐赵亏娇签预辰晾泛榨刷推郴烬柴编译原理_实验一_熟悉BNF定义_20min_100415编译原理_实验一_熟悉BNF定义_20min_100415
7
二、用SP语言编写程序
READ X;
READ Y;
READ Z;
X0=X+Y+Z;
WRITE X0;
READ X;
READ Y;
READ Z;
LET X0=X+Y+Z;
WRITE X0;
你能指出这个程序错在哪里吗?
你能指出这个程序错在哪里吗?
例 输入3个整数,输出它们的和。
则眠细迫骗贯岛合封诈眺跨坝君蔽恬卑老俯池线缄畜典居箱粒例骆矢幼