GB T 7591-1987 程序设计语言Pascal.pdf

上传人:appealoxygen216 文档编号:167188 上传时间:2019-07-15 格式:PDF 页数:59 大小:3.69MB
下载 相关 举报
GB T 7591-1987 程序设计语言Pascal.pdf_第1页
第1页 / 共59页
GB T 7591-1987 程序设计语言Pascal.pdf_第2页
第2页 / 共59页
GB T 7591-1987 程序设计语言Pascal.pdf_第3页
第3页 / 共59页
GB T 7591-1987 程序设计语言Pascal.pdf_第4页
第4页 / 共59页
GB T 7591-1987 程序设计语言Pascal.pdf_第5页
第5页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、中华人民共和国国家标准程序设计语言发布实施国家标准局发布中华人民共和国国家标准程序设计语言国家标准局批准实施引言本标准等效采用国际标准计算机程序设计语言规格说明本标准通过规定处理程序和相符程序的要求来规定计算机程序设计语言的语法和语义对处理程序和程序均定义了两级规格本标准不规定程序及其数据的大小或复杂性它们或者会超出指定数据处理系统的能力或者会超出特定处理程序的能力以及在超出相应限制时所要采取的动作能支持处理程序实现的数据处理系统的最低要求激活程序分程序的方法或对于变换和执行程序所处环境加以控制的命令集合供数据处理系统用的变换程序的机制报告差错或提出警告的方法出版供人阅读的程序的印刷表示引用标

2、准信息处理交换用的七位编码字符集定义本标准采用下列定义注为使语言概念醒目本标准有些术语在其首次出现时用黑体字印刷差错程序对本标准要求的违反但允许处理程序不予查究注若构造一个程序对其是否违反本标准需要了解该程序所读的有关数据资料或由实现所定义的特性的有关实现定义资料凡违反要求的则归类为差错处理程序可以不需要有关资料就能报告这种要求的违反但总有一些情况需要一个执行或模拟执行过程或需要用有关资料的证明过程无需有关资料就能验证的要求不归类为差错处理程序应该指望尽可能多而全地查找差错若查错给实现带来额外的负担或实现达不到最高质量便允许实现略去查错扩充对本标准第章的修正除禁止使用一个或多个特殊的标识符拼写

3、外既不应使遵从本标准要求的任何程序成为无效如条所定义的也不应改变任何和实现有关的特性的状态和差错由实现所定义的成分可以随处理程序而异但对任何特定的处理程序而言都要有定义和实现有关的成分可以随处理程序而异但对任何特定的处理程序而言不一定非定义不可处理程序处理程序是一个系统或一种机制它接受程序作为输入使其作好执行的准备利用数据执行如此定义的进程以产生结果注处理程序可由下列部分组成解释程序编译程序和运行系统或其他机制以及有关的宿主计算机及操作系统或能起同样作用的其他机制例如单独一个编译程序并不构成处理程序定义性的约定本标准中用来规定语言构造的语法的元语言以巴科斯瑙尔范式为基础为了便于描述和可用迭代产

4、生式代替递归产生式对该范式的表示法作了一些修改表列出各种元符号的含义语言构造的进一步规格说明用文字描述给出在某些场合下用等价的程序片断给出在第章里作为需求标识符定义的任何标识符在程序片断里出现就表记相应的需求实体这种程序片断在其他方面都受本标准有关要求的约束表元语言符号元符号含义定义为另一种定义为或者定义结束的次或次出现的次或多次出现组合不是就是终极符元标识符非终极符元标识符以汉文表示一个产生式里一串终极符和非终极符隐含了它们最终表示的正文并置在第条里这种并置是直接的不应插入任何字符在本标准的其他部分中并置与第条的规则相一致构成程序所需要的字符应是为构成在第条里定义的分隔符和记号所隐式要求的那

5、些字符在表示终极符之间或非终极符之间关系时使用的词的中包含和最紧包含具有下列含义的指的是直接出现在定义的一个产生式中中的的的同义语包含的指的是任何直接或间接导出的最紧包含的指的是包含的但此不包含另一个包含的在第章里为规定某些语法要求使用了这些语法约定在某些语义规格说明的上下文中也使用这些约定采用说明在中元标识符是以字母开始的字母和连字符的序列规格注有两级规格级和级级不包含可调节数组参数级包含可调节数组参数处理程序一个遵从本标准要求的处理程序应该是如果它遵从级则按第章中定义的含义接受第章中规定的全部语言特性但和除外如果它遵从级则按第章中定义的含义接受第章中规定的全部语言特性为实现第章中规定的语言

6、特性不要求程序中包含替换或附加的语言元素附有一个文件以定义所有由实现所定义的特性对于程序中未被指明为差错的这种违反要能判定它是否违反本标准的要求并能向该处理程序的用户报告判定结果在处理程序未考察整个程序的情况下当所考察的程序正文中未发现有违反时要通知用户此判定是不完全的至少按下列方法之一处理每个指明为差错的违反在文件附件中应陈述这种差错未予报告在程序准备执行期间处理程序应报告可能出现的差错在程序准备执行期间处理程序应报告所出现的差错在程序执行期间处理程序应报告所出现的差错并终止此程序的执行如果指明为差错的违反是按的方法处理的则应在文件附件的单独一节中给出引用这样处理的注释文件附件应分别陈述第章

7、中禁止或未规定的但为本处理程序接受的任何特性这种扩充应称作为对规定的的扩充能以类似于为处理差错而规定的方式处理任何这种扩充的任何使用能以类似于为处理差错而规定的方式处理和实现有关的特性的任何使用注第条中使用能这个字是为了允许实现供用户控制报告的开关当由于表格限制等原因而使编译异常终止时象未发现违反但查看不完全这类不完全的判定将满足的要求按照类似的方法对一个未全面查看过的程序解释执行或直接执行的处理程序也可报告为一个不完全判定一个声称全部或部分遵从本标准要求的处理程序只能用下列术语来表达规格声明或是由处理程序产生并作为使用它的结果或是包括在文件附件里若处理程序在各方面都遵从本标准的要求则规格声明

8、为本处理程序遵从的数级要求如果处理程序不是全部而是部分地遵从本标准要求那么就不能用上面的声明而代之以如下的规格声明本处理程序遵从的数级要求但有下列例外后接关于该处理程序未遵从本标准要求的一张参照表或一张完整清单在这两种声明中正文本处理程序应换成一个用以标识该处理程序的无歧义的名字正文数应换成适当的级数注不完全遵从本标准要求的处理程序并不要求在规格声明中给出它们不遵从的全部细节只要扼要地引用文件附件就够了该文件附件含有一张足够详尽地列出这些缺陷的完整清单程序一个遵从本标准要求的程序应该是如果它遵从级则仅仅使用第章中规定的那些语言特性但和除外如果它遵从级则仅仅用第章中规定的那些语言特性不取决于对那

9、些和实现有关的特性所作的任何特定解释注一个遵从本标准要求的程序可以依赖特定的由实现所定义的值或特性对合格程序和合格处理程序的要求而言合格程序经过合格处理程序处理后产生的结果并不要求总是相同的随程序而言它们可以相同也可以不同阐明这一点的一个简单程序是要求词法记号注第条里给出的语法描述了由字符构成词法记号的规则和这些记号的分隔因而并不遵守与本标准其余部分的语法相同的规则概述构造程序使用的词法记号分为特定符号标识符指示字无正负号数标号和字符串在字符串参看外任何地方出现的任何字母的表示大小写字体差别等就程序意义而言是无关紧要的字母数字特定符号特定符号是有特殊意义的记号用来界限本语言的语法单位特定符号字

10、符号字符号标识符标识符可以任意长标识符的每个字符对于标识符的区分而言都是有意义的任何标识符的拼写都不能与任何字符号相同指明为需求的标识符有特定意义参看和标识符字母字母数字例子指示字指示字仅在过程说明或函数说明里出现指示字是唯一的需求指示字参看和指示字的拼写不能与任何字符号相同指示字字母字母数字注作为一种扩充许多处理程序都提供指示字用来指明与该过程首部或函数首部对应的过程分程序或函数分程序是外部于程序分程序的通常它们以一种输入给处理程序的形式或由处理程序产生的形式存放在程序库中数一个无正负号整数是用十进记数法表记的一个整数类型值参看一个无正负号实数是用十进记数法表记的一个实数类型值参看比例因子前

11、面的字母意指乘以的幂无正负号整数表记的值应在到的闭区间中参看和有正负号数有正负号整数有正负号实数有正负号实数正负号无正负号实数有正负号整数正负号无正负号整数无正负号数无正负号整数无正负号实数正负号无正负号实数无正负号整数小数部分比例因子无正负号整数比例因子无正负号整数数字序列小数部分数字序列比例因子有正负号整数数字序列数字数字例子标号标号是数字序列用它们字面的整数值来区分并应在到的闭区间中标号数字序列字符串只包含一个串元素的字符串表记需求字符类型的一个值参看包含一个以上串元素的字符串表记串类型的一个值参看串类型的成分数目与字符串包含的串元素个数相同每个串字符都表记需求字符类型的一个由实现所定义

12、的值而且这种值不能由多于一个的串元素表记字符串串元素串元素串元素撇号映象串字符撇号映象串字符由实现所定义的字符集中的一个字符注习惯上把撇号映象看作是撇号字符的替代撇号字符不能是一个串字符例子记号分隔符若左花括号不在字符串或注解内部出现则如下构造任何不包含有花括号的字符和行分隔符序列是一个注解用空格代替注解不会改变程序的含义注解空格字符串中的空格除外和相邻行的分隔都应看作是记号分隔符在任何两个相邻的记号之间或程序正文的第一个记号之前都可出现零个或多个记号分隔符任何由标识符字符号标号或无正负号数组成的两个相邻记号之间应至少有一个分隔符记号内部不应出现分隔符词法记号的替换到中给出了词法记号和分隔符的

13、表示这种表示构成这些记号和分隔符的基准表示基准表示用于程序交换为了便于在不支持基准表示的处理程序中使用定义了下列替换在字符集中有需求字符的所有处理程序既提供基准表示又提供替换表示相应的记号或分隔符不予区分记号的替换表示是基准记号替换记号施以下列一个或两个替代的所有注解形式应都是注解的替换形式界限字符替换的界限字符对注注解可以开始而以结束或者以开始而以结束若一个注解中出现序列则它等价于并标志注解的结束因为该替代仅适用于界限字符也可参看分程序作用域和激活分程序一个最紧包含其中出现标号的标号说明部分的分程序应恰好最紧包含一个含有此标号的语句在分程序标号说明部分中一个标号的出现应作为它在此分程序区域的

14、定义点分程序标号说明部分常量定义部分类型定义部分变量说明部分过程与函数说明部分语句部分标号说明部分标号标号常量定义部分常量定义常量定义类型定义部分类型定义类型定义变量说明部分变量说明变量说明过程与函数说明部分过程说明函数说明语句部分规定分程序激活时所要执行的算法动作语句部分复合语句作用域采用说明根据规定本标准将原国际标准中的记号改为原国际标准对此改动是允许的程序分程序包含的每个标识符或每个标号应有一个定义点每个定义点应有一个区域和一个作用域区域是程序正文的一部分作用域是区域的一部分或全部每个定义点的区域在别处定义参看每个定义点的作用域应是受第和项制约的相应区域包括此区域所围的所有区域当一个标识

15、符或标号在区域有定义点且与它拼写相同的另一个标识符或标号在区域所围的某个区域有定义点则区域的定义点作用域应除去区域和所围的所有区域包围作用域应除去域命名符所指的域区分符的那个区域若一个标识符或标号在某个区域有定义点则另一个与它拼写相同的标识符或标号在此区域不应有定义点在一个标识符或标号的定义点作用域内与此定义点标识符或定义点标号拼写相同的标识符或标号其每次出现都称为此定义点标识符或定义点标号的一次应用性出现但要除去构成该标识符定义点或标号定义点的出现这种出现称为定义性出现在作用域外面的出现都不是它的应用性出现注在标识符或标号的定义点作用域内不存在这样的标识符或标号的应用性出现它不能与定义点的标

16、识符或标号相区分而且在包围此作用域的区域里有定义点在程序分程序中标识符或标号的定义点应在它的所有应用性出现之前但有一个例外即在类型定义部分所包含的任何新指针类型里其定义域类型的类型标识符可以是一个应用性出现此类型标识符在该类型定义部分里有定义点表记需求常量需求类型需求过程与需求函数的标识符使用时就好像它们的定义点有一个包围该程序的区域参看和注需求标识符和不包括在内这是因为它们表记变量的缘故一个标识符或标号在定义点处表记什么在所有的应用性出现处就表记什么注在语法定义里标识符的应用性出现是受限定的例如类型标识符而构成定义点时使用的标识符是不受限定的激活过程标识符或函数标识符在某一分程序区域的过程与

17、函数说明部分内有一个定义点则称它们局部于该分程序分程序的激活应包括对此分程序的语句部分而言就是激活一个算法算法完成后该激活就终结也可参看对语句中在此分程序标号说明部分里有定义点的每个标号而言就是激活该语句的算法中的一个程序点对在此分程序区域里有定义点的每个变量标识符而言就是具有与此变量标识符相关联的类型的变量对局部于此分程序的每个过程标识符而言就是对应于该过程标识符的过程分程序及其形式参数的过程对局部于此分程序的每个函数标识符而言就是对应于该函数标识符的函数分程序与其相关联的结果类型及其形式参数的函数相关若此分程序是一个函数分程序其结果就具有相关联的结果类型注每次激活都有它自己的算法程序点集合

18、变量集合过程集合和函数集合每次激活都与其他各次激活不同一个过程或函数的激活应分别是其过程分程序或函数分程序的分程序的激活该激活称作为内部于包含该过程或函数的激活和上述激活在其内部的所有激活注分程序的一次激活只能在包含的分程序的激活的内部因此一次激活不能在同一分程序的同一次激活的内部在一次激活内局部于此激活分程序的标号或变量标识符或过程标识符或函数标识符的应用性出现应分别表现该激活对应的程序点变量过程或函数除此之外在函数标识符所表记的函数激活内部赋值语句中的函数标识符应表记此激活的结果在一个激活的算法中所包含的且指定分程序激活的过程语句或函数命名符称作为此分程序激活的激活点除作为程序参数列举的那

19、些变量外一次激活包含的所有变量和激活的任何结果在激活开始时应是完全未定义的算法程序点变量过程和函数若有的话将一直存在到激活终结为止常量定义常量定义引入一个表记值的标识符常量定义标识符常量常量正负号无正负号数常量标识符字符串常量标识符标识符在分程序常量定义部分的常量定义中一个标识符的出现构成它在此分程序区域的定义点常量定义中的常量不应包含此常量定义中该标识符的应用性出现该标识符的每次应用性出现都应是一个常量标识符且表记由此常量定义中常量所表记的值在有正负号出现的常量中常量标识符应被定义为表记一个实数类型或整数类型的值需求常量标识符在和中规定类型定义概述一个类型定义引入一个表记类型的标识符类型是每

20、个值和变量所具有的一种属性每个新类型的出现应表记一个与任何其他新类型不同的类型类型定义标识符类型表记符类型表记符类型标识符新类型新类型新顺序类型新构造类型新指针类型在分程序类型定义部分的类型定义中一个标识符的出现构成它在此分程序区域的定义点该标识符的每次应用性出现应是一个类型标识符所表记的类型与此类型定义中类型表记符表记的类型相同除了新指针类型的定义域类型里的应用性出现的情形外在类型定义里类型表记符不应包含该标识符的应用性出现类型分为简单类型构造类型和指针类型需求类型标识符和相应的需求类型在和中规定简单类型标识符类型标识符构造类型标识符类型标识符指针类型标识符类型标识符类型标识符标识符一个类型

21、标识符根据它所表记的类型被看作是简单类型标识符构造类型标识符或指针类型标识符简单类型概述简单类型应确定值的有序集合每个顺序类型的值都有一个整数序号顺序类型标识符表记一个顺序类型简单类型顺序类型实数类型标识符顺序类型新顺序类型顺序类型标识符新顺序类型枚举类型子域类型顺序类型标识符类型标识符实数类型标识符类型标识符需求简单类型存在下列类型整数类型需求顺序类型标识符应表记整数类型其值应是按规定的有正负号整数表记的全体数的一个子集也可参看整数类型值的序号就是该值本身实数类型需求实数类型标识符应表记实数类型其值应是符合规定的由有正负号实数表记的实数的一个由实现所定义的子集布尔类型需求顺序类型标识符应表记

22、布尔类型其值应是由需求常量标识符和表记的真假值的枚举是的前启由和表记的真假值的序号分别为整数值和字符类型需求顺序类型标记符应表记字符类型其值应是由实现所定义的字符集的枚举有些可能没有图型表示字符值的序号是由实现所定义的整型值且其值通过把字符值映射到从零开始的相继非负整数值来确定映射应保持次序不变下列关系应成立表示数字到的字符值子集数值上应是有序邻接的表示大写字母到若可用的话的字符值子集应按字母顺序排列但不一定是邻接的表示小写字母到若可用的话的字符值子集应按字母顺序排列但不一定是邻接的任何两个字符之间的顺序关系应与它们的序号之间的顺序关系相同注可用于需求简单类型的运算符在中规定枚举类型枚举类型应

23、通过标识符的枚举来确定值的有序集合其值用标识符表记这些值的顺序应由标识符枚举的次序确定即若在的前面则小于枚举类型值的序号应通过把该类型的所有值映射到从零开始的相继非负整型值来确定映射保持次序不变枚举类型标识符表标识符表标识符标识符出现在枚举类型的标识符表中的标识符应构成它作为常量标识符在最紧包含此枚举类型的分程序区域的定义点例子子域类型一个子域类型应包括标识该子域的最小值和最大值子域类型的第一个常量指明其最小值它应小于或等于由另一个常量指明的最大值两个常量应具有同一种顺序类型且顺序类型被指定为子域类型的宿主类型子域类型常量常量例子构造类型概述新构造类型根据它最紧包含的非紧缩构造类型应分为数组类

24、型记录类型集合类型和文卷类型构造类型值的成分应是一个值构造类型新构造类型构造类型标识符新构造类型非紧缩构造类型非紧缩构造类型数组类型记录类型集合类型文卷类型在新构造类型中记号的出现应指示该类型用紧缩方式表示指示为紧缩的构造类型应通知处理程序其值的数据存储应当节省即使这样做会引起对该类型变量的运算或其分量的存取在时间或空间上低效指示为紧缩的构造类型应只影响它的数据存储表示即若一个成分本身是构造的则仅当该成分的类型指示为紧缩时此成分的数据存储表示才是紧缩的注类型是否指示为紧缩的将影响该类型实体的处理方式它们在和中规定数组类型数组类型的构造应看作由其下标类型规定的每个值到不同分量的一个映射数组类型的

25、每个成分类型应由其成分类型的类型表记符表记数组类型下标类型下标类型成分类型下标类型顺序类型成分类型类型表记符例由两个或多个下标类型的序列所规定的数组类型是指明数组类型的一种缩写记法它的下标类型和序列中的第一个下标类型一样它的成分类型为一个数组类型该数组类型的下标类型为原先下标类型序列中去掉第一个下标类型后的部分而成分类型与原先说明的相同当且仅当原先的数组类型指示为紧缩时这样构造的成分类型才应指示为紧缩的缩写形式和它的完整形式是等价的注下列两个例子每一个都包含表达数组类型的不同方式例例设表记下标类型的一个值设表记数组类型按其构造对应于值的一个成分值和表记下标类型规定的最小值和最大值表记下标类型规

26、定的值的个数则该数组类型的值应为形如的互不相同的元组注只有数组类型的所有成分值均被定义数组类型的值才存在若其成分类型有个值则数组类型值集合的基数为的次幂任何指示为紧缩的数组类型若其下标类型用最小值为最大值为大于的子域类型表记而其成分类型用字符类型表记则此数组类型应称为串类型字符串与串类型值之间的对应关系是通过按正文次序取得字符串的各个元素与按下标上升次序取得串类型值的成分而建立的注串类型的值具有另一些特征即允许把其值写至正文文卷参看并定义了关系运算符关于其值的用法参看记录类型记录类型的结构和值应是域表的结构和值记录类型域表域表固定部分变体部分变体部分固定部分记录段记录段记录段标识符表类型表记符

27、变体部分变体选择符变体变体变体选择符标志域标志类型标志域标识符变体情况常量表域表标志类型顺序类型标识符情况常量表情况常量情况常量情况常量常量既不包含固定部分也不包含变体部分的域表应没有成分它定义一个空值并指示为空在域表固定部分记录段的标识符表中一个标识符的出现构成它作为域标识符在最紧包含此域表的记录类型区域的定义点并使它与指示为记录类型和域表的一个域成分相关联该域成分应具有由记录段的类型表记符所表记的类型最紧包含变体部分的域表应有一个不同的成分其值和结构应由变体部分定义设表记一个有个成分的非空域表的第个成分值则域表的值应是形如的互不相同的元组注若第个成分的类型有个值则域表的值集合的基数应为标志

28、类型应表记由其顺序类型标识符所表记的类型情况常量应表记其常量所表记的值在变体部分的任一变体的情况常量表中每个情况常量的类型与变体部分的变体选择符的标志类型是相容的一个类型要与给定的标志类型相容其所有情况常量表记的值应不相同且该值集合要等于标志类型所规定的值集合规定变体的情况常量表的情况常量所表记的值与其变体相对应每个变体部分应与一个类型相联该类型即是该变体部分的选择符类型若变体部分的变体选择符包含一个标志域或变体部分的每个变体的情况常量表仅包含一个情况常量则选择符类型由标志类型表记并且变体部分的每个变体应相关联于选择符类型指定的那些值该选择符类型由变体的情况常量表中的情况常量表记否则变体部分具

29、有的选择符类型应是一个新顺序类型使得对变体部分的每个变体而言确有该类型的一个值而没有其他的值并且各个变体与该类型的各个值相关联每个变体部分应有一个称为变体部分的选择符的成分它应具有变体部分的选择符类型若变体部分的变体选择符包含一个标志域则标志域中一个标识符的出现构成它作为一个域标识符在最紧包含该变体部分的记录类型区域的定义点并应使域标识符相关联于变体部分的选择符当且仅当选择符是与一个域标识符相关联时它才作为记录类型的一个域变体部分的每个变体都应表记变体部分的一个不同成分该成分应具有变体的域表的结构和值且与相联于该变体的变体部分的选择符类型规定的那些值相联变体部分选择符的值应使与其相联的变体和成

30、分处于所谓的活动状态变体部分的值应是互不相同的对偶其中表记变体部分选择符的一个值是变体部分中活动变体的域表的一个值注若选择符类型规定有个值且与第个值相联的变体的域表有个值则该变体部分值集合的基数为变体部分值的成分不会与该变体部分中任何不活动的变体相对应对记录变量变体部分的域的用法所加的限制在和中规定例子集合类型一个集合类型应确定其基类型的幂集构成的值集合因而集合类型的每个值都应是一个集合该集合的成员应是基类型的单个值集合类型基类型基类型顺序类型注在中规定了用于集合类型值的运算符例子注若一个集合类型的基类型有个值则值的集合的基数为的次幂对每个顺序类型存在一个用非紧缩正则的集合类型表示的非紧缩的集

31、合类型还存在一个用紧缩正则的集合类型表示的紧缩的集合类型若是子域类型则是的宿主类型否则就是的集合类型的每个值也是的非紧缩正则集合类型的一个值并且的紧缩集合类型的每个值也是的紧缩正则集合类型的一个值文卷类型注一个文卷类型描述所指定的成分类型值的序列描述时用到每个序列中的当前位置及一个指明该序列是正被检验还是正被生成的方式文卷类型成分类型若一个类型表记符表记文卷类型或者表记构造类型其中只要有一个成分类型表记符不允许作为文卷类型的成分类型则该类型表记符不允许作为文卷类型的成分类型例子一个文卷类型隐式地定义一个称为序列类型的类型该类型恰好具有称为序列的那些值它们由下列五条规则条款到条款定义注记法表示序

32、列和的并置序列例如的显示表示序列并置的显式表示选择符的显式表示以及序列相等的显式表示都不是语言的组成部分这些记法在下面用于定义文卷的值和的需求文卷运算是序列类型的一个值称作空序列空序列应没有成分设是所指定的成分类型的一个值而是序列类型的一个值则是类型的一个只由单个成分值组成的序列和也是类型的与不相同的序列设和中一样表记序列表记序列则记法表记即的第一个成分值表记即从中去掉第一个成分所得到的序列表记即的最后一个成分值设和都是类型的一个非空序列则当且仅当和均成立时才成立若或是空序列则当且仅当和均为空序列时才成立设均为类型的序列则和均成立一个文卷类型还应隐式地定义一个称为方式类型的类型它仅有称为检验和

33、生成的两个值注值和的显式记法不是语言的组成部分一个文卷类型由三个成分构成其中称为和的两个成分是隐式序列类型称为的第三个成分应是隐式方式类型设和每个都是序列类型的单一值且是方式类型的单一值则文卷类型的每个值都是形如的一个互不相同的三元组其中若的值为则为空序列当且仅当是空序列时文卷类型的值才为空注一个文卷类型的两个成分和可看作为表示单一序列和该序列的当前位置若非空则可看作为当前位置确定的当前成分否则当前位置即为文卷结束位置应存在一个用需求构造类型标识符表记的文卷类型表记的类型结构定义了一种其值称为行的附加序列类型行是一个序列其中是一个成分为字符类型的序列表示一个称为行结束的特殊成分值这个值和字符值

34、空格完全一样但除了需求函数参看和需求过程参看参看和参看用到的情况外若是一个行则除外不会有行结束的成分这一定义并未确定一个处理程序用作行结束成分若有的话的基本表示一个行序列或为空序列或为序列其中是一个行是一个行序列由表记的类型的每个值应满足下列两条规则之一若则应是一个行序列若则应是其中是一个行序列是一个成分为字符类型的序列注规则中可看作一个正被生成的部分行对非空情形尤其如此这种部分行不可在文卷检验时刻出现也不对应于因为若则即为空序列一个变量若具有用需求构造类型标识符表记的类型则称为正文文卷注所有可用于字符文卷类型变量的需求过程与需求函数均可用于正文文卷只可用于正文文卷的需求过程与需求函数均在和中

35、定义指针类型指针类型的值由单独的空值及一组标识值组成每个标识值都应标识一个不同的变量其类型为指针类型的定义域类型标识值的集合应是动态的那种变量和标识它们的值在程序执行时创建和撤消标识值和被它们标识的变量只能由需求过程创建参看注因为空值不是一个标识值所以它不标识一个变量记号表记所有指针类型中的空值指针类型新指针类型指针类型标识符新指针类型定义域类型定义域类型类型标识符注记号并不具有单独的类型但若可能的话为满足赋值相容性规则或运算相容性规则要求需假设为一个合适的指针类型类型相容若下列四条中任何一条成立则称类型和是相容的和是同一类型是的子域或是的子域或和都是同一宿主类型的子域和是基类型相容的两个集合

36、类型而且两者或是均指示为紧缩的或是均不指示为紧缩的和是成分个数相同的串类型赋值相容若下列五条中的任何一条成立则称类型的值与类型的值赋值相容和是同一类型且该类型允许作为文卷类型的成分类型是实数类型是整数类型和是相容的顺序类型且类型的值在类型规定的闭区间内和是相容的集合类型且类型的值的所有成员都在的基类型规定的闭区间内和是相容的串类型在任何使用赋值相容性规则的地方若和是相容的顺序类型且类型的值不在类型规定的闭区间内则为一个差错若和是相容的集合类型且类型的值的任一成员不在类型的基类型规定的闭区间内则为一个差错一个类型定义部分的例子注在上面的例子中和表记同一类型和表记的类型与和表记的类型是相容的但不同

37、一变量的说明与表记变量说明变量是一个可被赋值的实体参看变量说明的标识符表中每个标识符都应表记一个不同的变量它所具有的类型由变量说明的类型表记符表记变量说明标识符表类型表记符在分程序变量说明部分的变量说明的标识符表中一个标识符的出现构成它作为一个变量标识符在此分程序区域的定义点构造类型变量的结构应是构造类型的结构变量存取的用法应是在使用时对所表记的变量的存取根据变量是整体变量成分变量标识变量或缓冲区变量一个变量存取应分别表记一个已说明的变量一个变量的成分一个由指针值标识的变量参看或一个缓冲区变量变量存取整体变量成分变量标识变量缓冲区变量一个变量说明部分的例子注在本标准后面例子中出现的变量都假定已

38、照的规定说明过整体变量整体变量变量标识符变量标识符标识符成分变量概述变量的成分应是一个变量成分变量应表记变量的一个成分对变量的一个成分的引用或存取应分别构成对该变量的一次引用或存取变量成分的值若有的话应与变量值的成分若有的话相同成分变量下标变量域命名符下标变量具有数组类型变量的成分应用下标变量表记下标变量数组变量下标表达式下标表达式数组变量变量存取下标表达式表达式数组变量应是一种变量存取它表记具有数组类型的变量对于最紧包含单个下标表达式的下标变量而言下标表达式的值应与其数组类型的下标类型赋值相容下标变量表记的成分应是通过数组变量类型的映射与下标表达式值相对应的成分参看例若数组变量本身是一个下标

39、变量则可使用缩写在缩写形式中单个逗号应代替完整形式中出现的序列缩写形式和完整形式应是等价的下标变量的下标表达式的计算次序应是和实现有关的例注这两个例子表记同一个成分变量域命名符域命名符或应表记其记录变量的成分通过该记录变量具有的记录类型使此成分与其域区分符的域标识符相关联或应表记其域命名符标识符所表记的变量参看记录变量应是一种变量存取它表记具有记录类型的变量在域命名符中一个记录变量的出现构成与其所具有的记录类型的成分相关联的域标识符在该域命名符的域区分符区域的定义点域命名符记录变量域区分符域命名符标识符记录变量变量存取域区分符域标识符域标识符标识符例子对变体部分中变体成分的一次存取当该变体部分

40、的选择符不是一个域时应给变体选择符赋予与该变体相关联的选择符类型所规定的值就变体各个成分的每次引用或存取的整体性而言若变体不是活动的应为一个差错当一个变体变为不活动时其所有成分应变为完全未定义的注若一个变体部分的选择符是未定义的则该变体部分就没有活动的变体标识变量标识变量应表记它的指针变量的值所标识的变量若有的话参看和标识变量指针变量指针变量变量存取由需求过程创建的变量参看在该程序分程序激活终止之前或此变量变为不可存取之前参看需求过程总是可存取的注变量的可存取性还依赖于已赋予相应标识值的指针变量的存在性指针变量是一个变量存取它应表记具有指针类型的变量若一个标识变量的指针变量或是表记值或是未定义

41、的则为一个差错当对标识变量的引用存在时从其指针类型中去掉该标识变量的标识值应为一个差错参看例子缓冲区变量文卷变量应是一种变量存取它应表记具有文卷类型的变量缓冲区变量应表记一个与其文卷变量所表记的变量相关联的变量与正文文卷相关联的缓冲区变量应具有字符类型否则缓冲区变量应具有其文卷变量所具有的文卷类型的成分类型缓冲区变量文卷变量文卷变量变量存取例子当对缓冲区变量的引用存在时改变其文卷变量的值应是一个差错对缓冲区变量的一次引用或存取应分别构成对与其相关联的文卷变量的一次引用或存取过程与函数说明过程说明过程说明过程首部指示字过程标识过程分程序过程首部过程分程序过程首部标识符形式参数表过程标识过程标识符

42、过程标识符标识符过程分程序分程序在过程说明的过程首部中形式参数表的出现应把与该过程首部的标识符相联的过程分程序的形式参数若有的话定义为此形式参数表中的形式参数在过程说明的过程首部中标识符的出现构成它作为过程标识符在最紧包含此过程说明的分程序区域的定义点在最紧包含指示字的过程说明的过程首部中每个作为过程标识符定义点的标识符应在某过程说明的过程标识中确有它的一次应用性出现并且该应用性出现应被最紧包含此过程首部的过程与函数说明部分所最紧包含过程说明中过程分程序的出现使它与该过程说明的过程首部中的标识符或过程标识中的过程标识符相关联过程与函数说明部分的例子例注本例不是对级的结束例文卷缓冲区里包含有第一

43、个非空格字符文卷缓冲区里包含一个非数字符号当然若没有数字则为本过程试图用二分法求在区间中的零点设用满足且的合适值与调用此过程则在最后一个参数中回送结果调用时假设不变式成立重建不变式并缩小区间设值与和都不相同连同循环出口条件一起就可断定在一个小区间中包含一个零点把作为零点回送本过程在任意状态下取一个文卷并以数据添加到尾部为条件建立一个文卷如果该文卷的有关初始状态作了某些假设则只能是较简单的条件结束的体开始结束函数说明函数说明函数首部指示字函数标识函数分程序函数首部函数分程序函数首部标识符形式参数表结果类型函数标识函数标识符函数标识符标识符结果类型简单类型标识符指针类型标识符函数分程序分程序在函数

44、说明的函数首部中形式参数表的出现应把与该函数首部的标识符相联的函数分程序的形式参数若有的话定义为此形式参数表中的形式参数函数分程序至少应包含一个赋值语句使该赋值语句的函数标识符与该分程序相关联参看在函数说明的函数首部中标识符的出现构成它作为函数标识符在最紧包含此函数说明的分程序区域的定义点且使该函数标识符与结果类型所表记的结果的类型相关联在最紧包含指示字的函数说明的函数首部里每个作为函数标识符定义点的标识符应在某函数说明的函数标识中确有它的一次应用性出现并且该应用性出现应被最紧包含此函数首部的过程与函数说明部分所最紧包含在函数说明中函数分程序的出现使它与该函数说明的函数首部中的标识符或函数标识

45、中的函数标识符相联该函数分程序的分程序应与结果类型相关联此结果类型应分别与函数首部中的标识符及函数标识中的函数标识符相关联过程与函数说明部分的例子本函数用牛顿法计算的平方根是一个全程常量结束本函数求值的最大成分建立重建现在结束下列两个函数分析一个有括号的表达式并把它转换为一种内部形式它们被说明为因为它们是互相递归的即它们彼此调用看首部的说明看首部的说明应是一个闭括号参数概述值参数指明中的标识符表应是值参数表变量参数指明中的标识符表应是变量参数表形式参数表形式参数段形式参数段形式参数段值参数指明变量参数指明过程参数指明函数参数指明注在还有一条关于形式参数段的语法规则值参数指明标识符表类型标识符变

46、量参数指明标识符表类型标识符过程参数指明过程首部函数参数指明函数首部在过程首部的形式参数表区域里被定义为参数标识符的标识符应作为与此过程首部的标识符相关联的过程分程序若有的话的分程序的一个形式参数在函数首部的形式参数表区域里被定义为参数标识符的标识符应作为与此函数首部的标识符相关联的函数分程序若有的话的分程序的一个形式参数在值参数指明或变量参数指明的标识符表中一个标识符的出现构成它作为参数标识符在最紧包含它的形式参数表区域的定义点还构成它作为相关联的变量标识符在以它为形式参数的那个分程序若有的话区域的定义点在过程参数指明中过程首部的标识符的出现构成它作为参数标识符在最紧包含它的形式参数表区域的

47、定义点还构成它作为相关联的过程标识符在以它为形式参数的那个分程序若有的话区域的定义点在函数参数指明中函数首部的标识符的出现构成它作为参数标识符在最紧包含它的形式参数表区域的定义点还构成它作为相关联的函数标识符在以它为形式参数的那个分程序若有的话区域的定义点注若形式参数表被包含在过程参数指明或函数参数指明里则没有相应的过程分程序或函数分程序值参数形式参数和相关联的变量标识符均应表记同一个变量形式参数应具有值参数指明的类型标识符所表记的类型形式参数具有的类型应是文卷类型的成分类型所允许的类型实在参数参看和应是一个表达式其值与形式参数具有的类型赋值相容在分程序激活时表达式的当前值应被赋给形式参数所表

48、记的变量变量参数实在参数应是一个变量存取实在参数具有的类型应和变量参数指明的类型标识符所表记的类型相同形式参数也应具有同样的类型实在参数在分程序激活前被存取且这次存取应建立对该变量的引用从而为在整个分程序激活期间可存取它在整个激活期间相应的形式参数和与它相关联的变量标识符应表记所引用的那个变量实在变量参数不应表记变体部分选择符的域也不应表记其类型具有紧缩标志的变量成分过程参数实在参数参看和应是一个过程标识符它的定义点被程序分程序包含只要实在参数表记的过程或形式参数表记的过程有形式参数表则它们应有一致的形式参数表参看在整个分程序激活期间形式参数及其相关联的过程标识符应表记此实在参数函数参数实在参

49、数参看和应是一个函数标识符它的定义点被程序分程序包含实在参数表记的函数和形式参数表记的函数应有相同的结果类型且只要它们之一有形式参数表则它们应有一致的形式参数表参看在整个分程序激活期间形式参数及其相关联的函数标识符应表记此实在参数参数表一致性若两个形式参数表包含的形式参数段数目相同并且相应位置上的形式参数段相匹配则应认为两个形式参数表是一致的若下列陈述中有一条成立则应认为两个形式参数段相匹配两者同为值参数指明包含的参数数目相同且每个值参数指明中的类型标识符表记的类型也相同两者同为变量参数指明包含的参数数目相同且每个变量参数指明中的类型标识符表记的类型也相同两者同为过程参数指明且过程首部的形式参数表是一致的两者同为函数参数指明且函数首部的形式参数表是一致的函数首部的结果类型的类型标识符所表记的类型也相同两者或同为值可调节数组指明或同为变量可调节数组指明并且在两种可调节数组指明里包含的参数数目相同以及它们的可调节数组模式等价若下列四条全成立则两个可调节数组模式应是等价的每个可调节数组模式中都有单一下标类型指明每个下标类型指明中的顺序类型标识符均表记相同的类型或

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 标准规范 > 国家标准

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1