静态文本中 运行时动作及为实现其动作的准备 (与运行时数据对象的表示有关) 过程定义 过程名 执行过程体 过程体 控制数据对象的分配,为执行 过程体使用 源文本中同样的名字 目标程序中不同的数据空间 因为一个过程可以是递归的, 这时同一个名字在不同的时间 可能代表不同的存储单元
静态文本中 运行时动作及为实现其动作的准备 (与运行时数据对象的表示有关) 过程定义 过程名 执行过程体 过程体 控制数据对象的分配,为执行 过程体使用 源文本中同样的名字 目标程序中不同的数据空间 因为一个过程可以是递归的, 这时同一个名字在不同的时间 可能代表不同的存储单元
决定运行管理复杂程度的因素—源语言本身 1.允许的数据类型的多少 2.语言中允许的数据项是∫静态确定 动态确定 3.程序结构决定名字的作用域的规则和结构 段结构 B.过程定义不嵌套,只允许过程递归调用 C.分程序结构 分程序嵌套 过程定义嵌套 4存储类别的多少「 Global Static oca dynamic
决定运行管理复杂程度的因素——源语言本身 1. 允许的数据类型的多少 2.语言中允许的数据项是 静态确定 动态确定 3.程序结构 决定名字的作用域的规则和结构 A.段结构 B.过程定义不嵌套,只允许过程递归调用 C.分程序结构 分程序嵌套 过程定义嵌套 4存储类别的多少 Global Static Local dynamic
术语 静态:如果一个名字的性质通过说明语句 或隐或显规则而定义,则称这种性质是 “静态”确定的。 动态:如果名字的性质只有在程序运行时 才能知道,则称这种性质为“动态”确定 的
术语 • 静态:如果一个名字的性质通过说明语句 或隐或显规则而定义,则称这种性质是 “静态”确定的。 • 动态:如果名字的性质只有在程序运行时 才能知道,则称这种性质为“动态”确定 的
B procedure A(m, n integer) begin real z; array bm:n; begin end end
• 例 procedure A(m,n:integer); • begin real z; • array B[m:n]; • begin • · • · • · • end; • end;
声明的作用域「词法作用域 动态作用域 B: (1) program dynamic(i, 0); (2)var r: real (3)procedure show; (4) begin write(r: 5: 3 ) end; (5)procedrue small; (6 var r: real; begin r:=0.125; show end; eg (9)r:=0.25; (10) show; small; write/n; (1) show; small; write/n; (2)end
声明的作用域 词法作用域 动态作用域 例:(1)program dynamic(i,0); (2) var r:real (3) procedure show; (4) begin write(r:5:3) end; (5) procedrue small; (6) var r:real; (7) begin r:=0.125; show end; (8) begin (9) r:=0.25; (10) show; small; write/n; (11) show; small; write/n; (12) end