名字和引用环境 基本上只有两种方式将数据对象作为操作的操作数 直接传递: 某数据对象作为某处操作的计算结果可直接传递给另 操作作为操作数,如上面例中,2×Z作为加法的操作数。 这种对象无需命名,而是分配临时存储。 °通过命名数据对象引用: 数据对象在创建时可给定名字,名字可用来作为操作数。 数据对象也可作为另一有名数据对象的部件。通过名字 和选择操作指定。 直接传递用作表达式中的数据控制,但大多数数据控制涉及 名的使用和名的引用,名字的意义形成数据控制的中心问题
名字和引用环境 基本上只有两种方式将数据对象作为操作的操作数。 •直接传递: 某数据对象作为某处操作的计算结果可直接传递给另一 操作作为操作数,如上面例中,2×Z作为加法的操作数。 这种对象无需命名,而是分配临时存储。 •通过命名数据对象引用: 数据对象在创建时可给定名字,名字可用来作为操作数。 数据对象也可作为另一有名数据对象的部件。通过名字 和选择操作指定。 直接传递用作表达式中的数据控制,但大多数数据控制涉及 名的使用和名的引用,名字的意义形成数据控制的中心问题
可以命名的程序元素 、命名变量 2、形参名 3、子程序名 4、定义类型的名字 5、定义常量的名字 6、语句标号(语句的名字) 7、例外名 8、原操作名,如+,*,SORT 常量名,如17,3.25 这里,1~3是我们考虑的重点。4~9的大多数名引用在翻译 时确定,虽然也有特例,但无新观念引入, 上述名字均是简单名字,也可以有复合名字,如A[3]
•可以命名的程序元素 1、命名变量 2、形参名 3、子程序名 4、定义类型的名字 5、定义常量的名字 6、语句标号(语句的名字) 7、例外名 8、原操作名,如+, * ,SORT 9、常量名,如17,3.25 这里,1~3是我们考虑的重点。4 ~9的大多数名引用在翻译 时确定,虽然也有特例,但无新观念引入。 上述名字均是简单名字,也可以有复合名字,如A[3]
关联和引用环境 数据控制涉及标识符(简单变量)到特殊数据对象和子程序 的绑定 这种绑定称为关联,表示为一个对(标识符、数据/子程 序) 在大多数语言的程序扫行中,我们观察到 1、在子程序执行的开始点完成的关联有: 声明的变量名→特定数据对象 调用的子程序名→特定的子程序定义 2、当子程序执行时,它调用引用操作来确定和标识符关 联的特定对象或子程序,如: A: =B+FN(C) 需要4个引用操作,对应A、B、C和FN
•关联和引用环境 数据控制涉及标识符(简单变量)到特殊数据对象和子程序 的绑定. 这种绑定称为关联,表示为一个对(标识符、数据/子程 序)。 在大多数语言的程序扫行中,我们观察到: 1、在子程序执行的开始点完成的关联有: 声明的变量名→特定数据对象 调用的子程序名→特定的子程序定义。 2、当子程序执行时,它调用引用操作来确定和标识符关 联的特定对象或子程序,如: A:=B+FN(C) 需要4个引用操作,对应A、B、C和FN
3、当调用一新子程序,将为该子程序创建一关联集合, 涉及局部标识符。 4、子程序执行中,调用引用操作确定每个标识符的关联, 有的引用指向子程序中所创建的,有的可以是主程序中 创建的。 5、子程序返回控制权,则其关联被消除。 6、当主程序得回控制权,执行继续进行 这种“创建—使用—一消除”模式,涉及一些主要概念 引用环境 引用环境—标识符关联的集合,用于执行中的引用 子程序的引用环境在执行中通常是不变的
3、当调用一新子程序,将为该子程序创建一关联集合, 涉及局部标识符。 4、子程序执行中,调用引用操作确定每个标识符的关联, 有的引用指向子程序中所创建的,有的可以是主程序中 创建的。 5、子程序返回控制权,则其关联被消除。 6、当主程序得回控制权,执行继续进行。 这种“创建—使用—消除”模式,涉及一些主要概念。 •引用环境 引用环境——标识符关联的集合,用于执行中的引用。 子程序的引用环境在执行中通常是不变的
引用环境可包含如下分量: l、局部引用环境(或局部环境) 子程序进入时创建,涉及形参、局部变量、局部定义 子程序 2、非局部引用环境 用于某子程序中,但不是在该子程序进入时创建 3、全局引用环境 在主程序开始开始时创建,可为所有子程序使用 4、预定义引用环境 有的标识符有预定义引用,直接在语言定义中指定。 任何程序或子程序可直接使用
引用环境可包含如下分量: 1、局部引用环境(或局部环境) 子程序进入时创建,涉及形参、局部变量、局部定义 子程序。 2、非局部引用环境。 用于某子程序中,但不是在该子程序进入时创建。 3、全局引用环境 在主程序开始开始时创建,可为所有子程序使用。 4、预定义引用环境 有的标识符有预定义引用,直接在语言定义中指定。 任何程序或子程序可直接使用