当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

清华大学:《编译原理》课程教学资源_第二章 PL/0编译程序

资源类别:文库,文档格式:PPT,文档页数:117,文件大小:957.5KB,团购合买
第2章PL/0编译程序 本章目的:以PL/0编译程序为实例,学习编译程序实现的基本步骤和相关技术 1PL/0编译程序的结构 2PL/0编译程序的分析工作(词法,语法和语义)实现 3PL/0编译程序的错误处理方法 4目标代码生成和类 pcode代码解释器
点击下载完整版文档(PPT)

第2章PL/0编译程序 本章目的:以PL/0编译程序为实例,学习编译程序实现的基本 步骤和相关技术 1PL0编译程序的结构 2PL/0编译程序的分析工作(词法,语法和语义)实现 3PL/0编译程序的错误处理方法 4目标代码生成和类 pcode代码解释器

第2章 PL/0编译程序 本章目的:以PL/0编译程序为实例,学习编译程序实现的基本 步骤和相关技术 1 PL/0编译程序的结构 2 PL/0编译程序的分析工作(词法,语法和语义)实现 3 PL/0编译程序的错误处理方法 4 目标代码生成和类pcode代码解释器

1.PL/0编译程序的结构 PL/0语言程序 PL/0编译程序一类p-code代码 源语言(PL/0 PL/O 类p-code 目标语言(类p-code) basal/O 实现语言( pascal/c)

1. PL/0编译程序的结构 PL/0 语言程序 PL/0编译程序 类 p-code 代码 源语言(PL/0) 目标语言(类 p-code) 实现语言(pascal/C) PL/0 类 p-code pascal/C

PL/0编译系统的结构框架 PL/0源程序 PL/0编译程序 类p-code代码 类p-code解释程序 输入数据 输出数据

PL/0编译程序 类 p-code解释程序 类 p-code代码 PL/0源程序 输入数据 输出数据 PL/0编译系统的结构框架

PL/0语言 PL/0语言: PASCAL语言的子集 PL/0程序示例 PL/0的语法描述图 PL/0语言的EBN表示

PL/0语言 PL/0语言:PASCAL语言的子集 PL/0程序示例 PL/0的语法描述图 PL/0语言的EBNF表示

PL/0程序示例 CONST A=10;(*常量说明部分*) VARB,C;(*变量说明部分*) PROCEDURE P;(*过程说明部分*) VARD;(*P的局部变量说明部分*) PROCEDURE Q;(*P的局部过程说明部分*) VAR X BEGIN READ (X) D:=X WHILE X#O Q过程体 DO CALL P END BEGIN WRITE D) CALL Q p过程体 END BEGIN CALL P 主程序体 END

PL/0程序示例 CONST A=10; (* 常量说明部分 *) VAR B,C; (* 变量说明部分 *) PROCEDURE P; (* 过程说明部分 *) VAR D;(* P的局部变量说明部分 *) PROCEDURE Q; (* P的局部过程说明部分 *) VAR X; BEGIN READ(X); D:=X; WHILE X#0 DO CALL P; END; BEGIN WRITE(D); CALL Q; END; BEGIN CALL P; END. Q过程体 p过程体 主程序体

输入圆柱的半径和高,计算一些面积、体积等 var r, h, len, a1, a2, volumn; begin read (o; read (hi len:=2*3*r; a1:=3*r a2 : =a1+ a1+ len*h; volumn: a1* hi write(len; write a1) write (a2) write(volumn end

输入圆柱的半径和高,计算一些面积、体积等 var r, h, len, a1, a2, volumn; begin read(r); read(h); len := 2 * 3 * r; a1 := 3 * r * r; a2 := a1 + a1 + len * h; volumn := a1 * h; write(len); write(a1); write(a2); write(volumn); end

计算最大公约数 o var n,n,『qH o beqir read(mh ●{计算m和n的最大公约数 read(n {为了方便,规定m>=n procedure gcap ●ifm< n then ● begin begin while ro do r:=mi begin m:=hi q:= m/n n:=r ri=m"hi en d n:=『 begin end r:=1 ent call gcd write() ent d ●end

计算最大公约数 ⚫ var m, n, r, q; ⚫ { 计算m和n的最大公约数} ⚫ procedure gcd; ⚫ begin ⚫ while r#0 do ⚫ begin ⚫ q := m / n; ⚫ r := m - q * n; ⚫ m := n; ⚫ n := r; ⚫ end ⚫ end; ⚫ begin ⚫ read(m); ⚫ read(n); ⚫ { 为了方便,规定m >= n } ⚫ if m < n then ⚫ begin ⚫ r := m; ⚫ m := n; ⚫ n := r; ⚫ end; ⚫ begin ⚫ r:=1; ⚫ call gcd; ⚫ write(m); ⚫ end; ⚫ end

p/o程序一递规调用 var ni procedure rec; begin if n #o then begin write(n) n:=n-1; call reci end end begin read (n) call reci end

pl/0程序--递规调用 var n; procedure rec; begin if n # 0 then begin write(n); n := n - 1; call rec; end; end; begin read(n); call rec; end

计算sm=1+2!+ ■■ n从控制台读入 o begin {读入n} o var nr m fact su read(o: sum {递规计算fact=m!} while>o do procedure factorial; begin begin m:=n; if m >o then fact: 1, begin fact fact x m; call factorial 1 sum ' sum fact call factorial: n:=n-1 end end ●end {输出n!} write( sum) ●end

计算 sum = 1! + 2 ! + ... + n!, n从控制台读入 ⚫ var n, m, fact, sum; ⚫ { 递规计算 fact = m! } ⚫ procedure factorial; ⚫ begin ⚫ if m > 0 then ⚫ begin ⚫ fact := fact * m; ⚫ m := m - 1; ⚫ call factorial; ⚫ end; ⚫ end; ⚫ begin ⚫ { 读入n } ⚫ read(n); ⚫ sum := 0; ⚫ while n > 0 do ⚫ begin ⚫ m := n; ⚫ fact := 1; ⚫ call factorial; ⚫ sum := sum + fact; ⚫ n := n - 1; ⚫ end; ⚫ { 输出n !} ⚫ write(sum); ⚫ end

语法图 程序一分程序 内的文字表示语法成分(短语) 或()内的文字表示单词符号

程序 分程序 . 内的文字表示语法成分(短语) 或 内的文字表示单词符号 程序 . 内的文字表示语法成分(短语) 语法图

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共117页,可试读30页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有