上一个|向上|下一步|后退|福沃德
总有机碳--/--.--/--.--.--|索引|搜索|语法|帮助


8.3可见度

(1)
下面给出的可见性规则决定了哪些声明是在程序中的每个位置都是可见的和直接可见的。可见性规则适用于显式声明和隐式声明。
静态语义
(2)
声明定义为在名称所在的位置直接可见只包含标识符或运算符symbol就足以表示声明;也就是说,没有selectedcomponent符号或特殊上下文(如前面的=>在命名的关联中)对于表示宣言。声明定义为在任何直接位置可见可见,以及在某些名称(例如selectedcomponent)可以表示声明的其他位置。
(3)
语法类别direct_name用于指示上下文需要直接可见。使用了语法类别selector_name指示可见性而非直接可见性所在的上下文必修的。
(4)
有两种直接可见性:即时可见性和使用可视性。如果声明是直接可见,因为该位置在其直接范围内。一个如果声明由于useclause而直接可见,则声明是use-visible(见8.4)。这两个条件都适用。
(5)
声明可以隐藏,既可以直接隐藏,也可以全部隐藏可见性,在其范围的某些部分内。隐藏的地方可见性,它根本不可见(既不使用direct_name也不使用选择器名称)。在不可见的地方,只有直接可见丢失;使用selector_name仍然可以实现可见性。
(6)
如果两个或多个声明都具有相同的值,则重载它们定义名称时,有一个地方可以直接看到它们。
(7)
可调用实体的声明(包括枚举文字)是可过载的,这意味着允许它们过载。
(8)
如果两个声明具有相同的定义名称,并且,如果两者都是重载的,那么它们的配置文件是类型一致的。一个内在的声明隐藏了任何外部同形异义词,使其不可见。
(9)
通常不允许两个同形异义词同时出现在同一个词中声明性区域,除非其中一个覆盖另一个(参见下面的合法性规则)。声明覆盖紧邻在在以下情况下使用相同的声明区域:
(10)
(11)
(12)
(13)
(14)
声明在其范围内是可见的,除非对所有人隐藏可见性,如下所示:
(15)
(16)
(17)
(18)
(19)
(20)
(21)
带有defining_identifier或defining_perator_symbol的声明是在其直接范围内立即可见(因此直接可见)除非隐藏在直接可见的位置,如下所示:
(22)
(23)
名称解析规则
(24)
direct_name应解析为表示直接可见的声明其定义名称与direct_name相同。选择器名称应解析为表示其定义名称与相同的可见声明选择器名称。
(25)
这些关于可见性和直接可见性的规则不适用于context_clause、parent_unit_name或出现在位置的杂注编译单元。有关这些上下文,请参阅规则10.1.6中,``环境级别可见性规则“”。
合法性规则
(26)
如果出现同形图,则显式声明是非法的直接位于同一声明区域内,该区域在该位置可见声明,并且不会被显式宣言。类似地,如果子单元的context_clause是非法的提到(在withclause中)某个库单元,并且有一个同义词在相应存根位置可见的库单元,以及同形异义词和提到的库单元都立即声明在同一声明区域内。这些规则也适用于调度在通用单元实例的可见部分声明的操作。然而,它们不适用于实例中的其他可重载声明;这样的声明在实例中可能有符合类型的概要文件,很长一段时间因为泛型中的相应声明不符合类型。

(27)
(28)
(29)


上一个|向上|下一步|后退|福沃德
总有机碳--/--.--/--.--.--|索引|搜索|语法|帮助

Ada WWW主页--通过电子邮件将评论、补充、更正、抱怨、荣誉等发送至:

马格努斯·坎佩--M.Kempe@ieee.org
版权声明
最后生成的页面:95-03-12