首页 > 国家标准(GB) > GB/T 7591-1987 程序设计语言Pascal
GB/T 7591-1987

基本信息

标准号: GB/T 7591-1987

中文名称:程序设计语言Pascal

标准类别:国家标准(GB)

标准状态:现行

发布日期:1987-03-02

实施日期:1987-01-02

出版语种:简体中文

下载格式:.rar.pdf

下载大小:2445733

标准分类号

标准ICS号:信息技术、办公机械设备>>35.060信息技术用语言

中标分类号:电子元器件与信息技术>>信息处理技术>>L74程序语言

关联标准

采标情况:=ISO 7185-1982

出版信息

页数:58页

标准价格:24.0 元

相关单位信息

首发日期:1987-03-27

复审日期:2004-10-14

起草单位:电子部32所

归口单位:全国信息技术标准化技术委员会

发布部门:国家标准局

主管部门:国家标准化管理委员会

标准简介

本标准通过规定处理程序和相符程序的要求来规定计算机程序设计语言Pascal的语法和语义,对处理程序和程序均定义了两级规程。 GB/T 7591-1987 程序设计语言Pascal GB/T7591-1987 标准下载解压密码:www.bzxz.net

标准图片预览






标准内容

1引言
中华人民共和国国家标准
程序设计语言Pascal
Programming language Pascal
UDC 621. 3. 06
GB 7591— 87
1.1本标准等效采用国际标准ISO7185—1982《计算机程序设计语言Pascal规格说明》。1.2本标准通过规定处理程序和相符程序的要求来规定计算机程序设计语言Pascal的语法和语义,对处理程序和程序均定义了两级规格1. 3本标准不规定:
程序及其数据的大小或复杂性,它们或者会超出指定数据处理系统的能力,或者会超出特定处理程序的能力,以及在超出相应限制时所要采取的动作;b.
能支持Pascal处理程序实现的数据处理系统的最低要求;微活程序分程序的方法,或对于变换和执行Pascal程序所处环境加以控制的命令集合!供数据处理系统用的变换 Pascal 程序的机制,报告差错或提出警告的方法;
出版供人阅读的程序的印删表示。2引用标准
GB 198880&信息处理交换用的七位编码字符集》。3定义
本标准采用下列定义。
:为使语概您解口,本标准有些术语在其首次出现时用黑体字印制。3.1差错
程序对本标准要求的违反,但允许处理程序不予查究。注:(I)若构造一个程序,对其是否违反本标准,需要了解该程序所读的有关数据资料或由实现所定义的特性的有关实现定义资料,凡适反要求的则归类为差错。处理程序以不需要有关瓷料就能报告这种要求的违区,但总有一些情况需要一个执行或模拟执行过程,成需要用有关资料的证明过程。无需有关资料就能验证的要求不归类为老错。
处理柔序应该指望尽可能多而全地找羔错,若查错给实现带来额外的负担,或实现达不到最高胚量,便允许实现略去查错:
3.2扩充
对本标推第6章的修止(除禁止使用一个或多个特殊的标识符拼写外),既不应使遵从本标准要小的任何程序成为无效(如5.2条所定,义的),也不应改变任何和实现有关的特性的状态和差错,3.3由实现所定义的(成分)
可以随处理程序而异,但对任何特定的处理程序前言,都要有定义。3.4和实现有关的(成分)
国家标难局1987-03-27批准
1987-12-01实施
GB 7591—87
可以随处理程序而异,但对任何特定的处理程序而言,不·定非定义不可。3.5处理程序
处理程序是·个系统或一种机制,它接受程序作为输人,使其作好执行的准备,利用数据技行如此定义的进程以产生结果。
注:处理程序可由下列部分组成:解释程序,编译程序和运行系统,或其它挑制,以及有关的宿主计算机及操作系统或能起同样作用的其它机制,例如,单独一个编译程序并不构成处理程序。4定义性的约定
本标准中用来规定语言构造的语法的元语言以巴科斯一瑙尔范式为基础为了便于描述和可用送代产生式代替递归产生式,对该范式的表示法作了一些修改,表1列出各种元符号的含义。语言构造的进一步规格说明用义字描述给出,在某些场合下用等价的程序片断给出。在第6章里作为需求标识衍定义的任何标识符,在程序片断里出现就表记相应的需求实体,这种程序片断在其它方面都受本标准有关要求的约束免费标准下载网bzxz
表丨元语言符号
元符号
元标识符
元标识符以汉文表示1)。
定义为
另一种定义为
定义结柬
x的0次或「次出现
x的0次或多欧出现
组合:不是x就所 y
终极符xyz
非婺极符
个产生式里串终极符和非终极符隐含了它们最终表示的正文并置,在第6.1条里,这种并罩属直接的,不应捕入任何字符。在本标推的其它部分中.并置与第6.1条的规则相一致。构成 Pascal 程序所需要的字衍,应是为构成在第 6,1条里定义的分隔符和记号所隐式要求的那些字符。
在表示终极符之间或非终极符之间关系附使用的词的(of)、中(in)、包含(containing)和最紧包含(closest-containing)具有下列含义:y的x(thexofay):指的是x直接出现在定义y的一个产生式中。y中的x(thexiay):y的x的同义语。包含x的y(aycontainingan x)指的是任何直接或间接导出x的y。最紧包含 × 的 y(the y closest-containing an x) :指的是包含 x 的y,但此y不包含另一个包含 x的 。在第6章里,为规定某些语法要求使用了这些语法约定,在某些语义规格说明的上下文中也使用这些约定。
采用说:
1)准 ISO 7185 中《元标识符尽以学册开始的字母和连字符的序列\:5规格
GB 7591—87
注:有两级规格,0级和1级,0级不包含可调节数组参数,1绒包含可调节数组参数。5.1处理程序
一个遵从本标准要求的处理程序应该是:。如果它遵从 0 级,则按第 6 章中定义的含义接受第 6 章中规定的全部语言特性,但 6. 6. 3. 6e、6. 6. 3. 7 和 6. 6. 3. 8 除外;b。如果它遵从1级,测按第6章中定义的含义接受第6章中规定的全部语言特性为实现第6章中规定的语言特性,不要求程序中包含替换或附加的语言元素;d.
附有一个文件,以定义所有由实现所定义的特性:e。对于程序中未被指明为差错的这种违反要能判定它是否违反本标准的要求,并能向该处理程序的用户报告判定结果。在处理程序未考察整个程序的情况下,当所考察的程序正文中未发现有违反时,要通知用户此判定是不完全的:f,至少按下列方法之一处理每个指明为差错的违反:(1),在文件附件中应陈述这种差错末予搬告:(2)在程序准备执行期间,处理程序应报告可能出现的差错:(3)在程序准备执行期间,处理翟序应报告所出现的差错;(4)在程序执行期间,处理程序应报告所出现的差错,并终止此程序的执行;如果指明为差错的违反是按5.1.f(1)的方法处理的,则成在文件附件的单独--节中给出引用这样处理的注释:
β文件附件应分别陈述第6章中禁止或米规定的,但为本处理程序接受的任何特性,这种扩充应称作为*对GB7591规定的Pascal的扩充”;h。能以类似于为处理差错而规定的方式处理任何这种扩充的任何使用;i.能以类似于为处理差错而规定的方式处现和实现有关的待性的任何使用。注,()第5.1条中使用“能这个字是为了允许实现供用户控制报告的开关。②当由于表格限制等原因前使编译异常终止时,象“末发现违反但查看不完全”这类不完全的判定将满足5.1。的要求。按搬类似的方法,对一个未全面查看过的程序,辨样执行或直接执行的处理程序也可报告为个不完全判定。
一个声称全部或部分遵从本标准要求的处理程序只能用下列术语来表达,规格声明或是由处理程序产生,并作为使用它的结果,或是包括在文件附件里。若处理程序在各方面都遵从本标准的要求,则规格声明为:
(本处理程序>遵从GB7591的(数>级要求。如果处理程序不是全部而是部分地遵从本标准要求,那么就不能用上而的声明,而代之以如下的规格声明:
(本处理程序)遵从 GB 759I 的(数)级要求,但有下列例外;(后接关于该处理程序未遵从本标准要求的一张套照表或一张完整清单)。在这两种声明中,正文(本处理程序)应换成一个用以标识该处理序的尤岐义的名字,正文(数》应换成适当的级数。
注:不完全遵从本标准求的处理程序,并不要求规格声明中给出它们不遵从的全部细节,只要抛要地引用文件附件就够厂。该文件附件含有张足够详尽地列出这些缺陷的完整清单,5.2程序
一个遵从本标准要求的程序应该:a.如果它避从0级,则仅仅使用第6章中规定的那些语言特性,低6.6.3.6e、6.6.3.7和6.6.3.8除外;
GB 7591—87
如果它遵从1级,购仅仅用第6章中规定的那些语言特性;不取决于对那些和实现有关的特性所作的任何特定解释。注,①一个遵从本标准要求的程序可以依融持定的由实现所定义的值或特性。②对合格程序和合格处理程序的要求面言,合格程序经过合格处理程序处理后,产生的结果并不要求总定相同的。随程序需产,它们可以相河也可以不间,用明这一点的一个简单程序是;Progranm x(output) pbegin wr(teln( maxint)end.6要求
6.1调法记号
注,第6.1条里给出的语法描述了由字符构献词法记号的规卿和这些记号的分隔,因而并不避守与本标准其余部分的语法相同的规则。
6. 1. 1 糖述
构道Pascal程序使用的词法记号分为特定符号、标识符、指示字,无正负号数,标号和字符串。在字符串(参看6.1.7)外任何地方出现的任何字母的表示(大小写字体差别等),就程序意义而言是无关紧要的。
学母\a\|\b\[\c\[\d\[\e\[\f”[\g\[\h\|\ji \ ji[\k\[\]'[\m\n\ [\a\[\p\]\q\[\r[\gn [\t\ ['u'[\y+ [\wh [\x*\ y [z'].
数字-\0\[\1\[\2\\3\[\4\[\5\[\6\[\7\|\g* ]\9\6. 1. 2 特定符号
特定符号是有特殊意义的记号,用来界限本语言的语法单位。特定符号=+[\—[ \[\[\=[n<\[\\[\[[\]\[\W,\[n +#[\+\[nA\n(\\yn\+ +nn[n=\W<=\}·—\{\\|字符号.
字符号-\and\|\array\|\begin\|\ case\ [\const\|\divw\ do\ [\ downto\ [\else\ [\end\ ['\ file' |\' fat'\ function\ \ go to\ \ ifn |\in'\|\ label'\ mad\ |*' nil'r [\ not\ |\oft ↓\ or' |\ packedw I' proceduren \ program\ |\record\ [\ repeat' [\ set\[\then'\\to\ |' type\ |\ untiiw I'var' ['while'r [\' with\.6. 1. 3 标识特
标识符可以任意长,标识符的每个字符对于标识符的区分而言都是有意义的。任何标识符的拼写都不能与任何字符号相同,指明为帮求的标识符有特定意义(参看 6.2.2.[0 和:6.10)。标识符一字母[字母|数宁]
例子:
readinteger
AltetHeatSetting
Inquire WorkstationTransformatianInquireWorkstationIdentificetion6. 1. 4指示字
GB 7591 87
指示字仅在过程说明或函数说明里出见,指示字 fnrw量rd 是唯一的需求指示字(参看 6. 6. 「 和6.6.2),指示字的拼写不能与任何字符号相同。指示学=字母(字母|数字)
注,件为种扩充,许多处现程序都携供指示字exernal,用米指明与该过程首部或函数首部对应的过程分程净或函数分程序是外部干程序分程序的,通常它们以一种输入给处理程序的形式或由处埋程序产牛的形式存放在程序库中。
6. 1. 5 数
一个无正负号整数是用十进记数法表记的一个整数类型值(参看6.4.2.2),一个无正负号实数是用十进记数法丧记的一个实数类型值(参看6.4.2.2),比例因子前面的字母意指乘以10的幂,尤正负号整数表记的值应在 0 到 maxint 的闭区间中(参看 6. 4. 2. 2 和 6. 7. 2. 2) 有正负导数一有正负号整数|有正负号实数有正负号实数一(正负号]无正负号实数有正负号整数一F负号1无正负号整数,无正负号数=无正负号整数1无止负号实数·正负号=\±\[\—\
无正负号实数=无正负号整数”,”小数部分[\e\比例因子-]无止负号整数\e\比例因了,无正负号整数一数字序列,
小数部分一数字序列
比例因子=有正负号整数
数字序列一数宁数字}。
例子,
87、35E+8
6. 1. 6 标号
标是数字序列,用它们字面的整数值来区分·并应在0到9999的闭区间中。标号=数字疗列,
6.1.7字符串
只包含一个串元素的字符申表记需求学符类型的一个值(参看6.1.2.2).包个一个以上串元紊的学符串表记串类型的--个值(参看 6. 4.3. 2),中类型的成分数目与字符串包含的中元素个数和同。每个串字符都表记需求字符类翌的一个由实现所定义的值,而且这种值不能山多丁…个的中元素表记。符串—\申元素{申元素}”\,串元素=撤映象|串字符。
撤号映象=#,#,
串符=由实现所定义的字符集中的一个字符,注:寸惯上把撤号映象看作是撤号字符的替代,撤号字符不能足一个串字符。例了:
Pascal
THIS IS A STRENG
6.1.8记号分隔符
GB 7591—87
若左花括号(不在字符串或注解内部出现,则如下构造:\{\任何不包含有花括号的字符和行分隔符序列\}\是·个注解。用空格代替注解不会改变程序的含义。
注解、空格(字符串中的空格除外)和相邻行的分隔都应看作是记号分符。在任何网个相邻的记号之间或程序正文的第一个记号之前都可出现零个或多个记号分隔符:任何由标识符、学符号、标号或尤正负号数组成的两个相邻记号之间应至少有一个分隔符,记号内部不应出现分隔符。6.1.9调法记号的替换
6.1.1到6.1.8中给出了词法记号和分隔符的表示,这种表示构成这些记号和分隔符的基准表示,其推表示用于程序交换。
为了便于在不支持基准表示的处理程序中使用Pascal.定义「下列替换,在字符集中有需求字符的所有处理程序既提供基准表示又提供替换表示,相应的记号或分隔符不了区分。记号的替换表示是:
基准记号-1)
替换记号
施以下列个或两个替代的所有注解形式应都是注解的替换形式:界限字符
替换的界限字符对
往:(i)注解可以(开始而以*)结束,或者以(*并始而以)结束,圆)若个注解中山现序列(*),则它等价于(并标志注解的结束,因为该替代仪适用于界限字符。③也可参看1.2t,
6.2分程序、作用域和激活
6.2.1分程序
一个最紧包含其中出现标号的标号说明部分的分程序应恰好最紧包含一个含有此标号的语。在分程序标号说明部分中,一个标号的出现应作为它在此分程序区域的定义点。分程序一标号说明部分
类型定义部分
过程与函数说明部分
常量定义部分
变量说明部分
语句部分,
标号说明部分-【\1abel\标号(\,\标号)\;\】,常量定义部分一【\const\常量定义\;\}常量定义\;\}].类型定义部分[\tye\类型定义\\类型定义\,\]变量说明部分=[\var\变基说明\,\{变量说明\,\过程与函数说明部分=((过程说明|函数说明)\,“)。语句部分规定分程序激活时所要执行的算法动作。语句部分一复合语句,
6. 2. 2作用域
来用说明
1)根据GB19B8—一80规定,本标准将原国际标准中的记号\半\改为A\,原国际标准对此改动是允许的。GB 7591-- 87
6.2.2.1程序分程序包含的每个标识符或每个标号应有一个定义点。6.2.2.2每个定义点应有一个区域和一个作用域,区域是程序正文的一部分,作用域是区域的一部分或全部。
6. 2. 2. 3 每个定义点的区域在别处定义(参看 6. 2. 1、6. 2. 2. 10、6, 3,6. 4. 1、6. 1. 2. 3,6. 4. 3. 3,6. 5.1,6. 5. 3. 3,6. 6. 1,6. 6. 2,6. 6. 3. 1.6. 8. 3. 10,6. 10) .6. 2.2.4每个定义点的作用域应是受第 6.2.2. 5和 6.2.2. 6项制约的相应区域(包插此区域所围的所有区域)。
6.2.2.5当个标认符或标号在区域A有定义点,且与它拼写相同的另一个标识符或标号在区域A所围的某个区域B有定义点,则区域A的定义点作用域应除去区域B和B所围的所有区域。6.2.2.6包围作用域应除去域命名符所指的域区分符的那个区域。6.2.2.7若个标识符或标号在某个区域有定义点,则另一个与它拼写相同的标识符或标号在此区域不应有定义点。
6.2.2.8在一个标识符或标号的定义点作用域内,与此定义点标识符或定义点标号拼写相同的标识符或标号,其每次出现都称为此定义点标识符或定义点标号的一次应用性出现,但要除去构减该标识符定义点或标号定义点的出现,这种出现称为定义性出现。在作用域外面的出现都不是它的应用性出现。法:在标识符或标号的定义点作用域内,不存在这样的标识符或标号的应用性出现,它不能与定义点的标识符或标号相区分,血H在包围此作用城的区域单有定义点,6.2.2.9在程序分程序中,标识符或标号的定义点应在它的所有应用性出现之前,但有一个例外,即在类型定义部分所包含的任何新指针类型里,其定义域类型的类型标识符叮以是一个应用性出现,此类型标识符在该类型定义部分里有定义点。6.2. 2.10表记需求带量、需求类型、需求过程与需求函数的标识符,使时就好象它们的定义点有一个包围该程序的区域(参着 6. 1. 3,6. 4. 1 和 6. 6. 4. 1)。注:需求标识符itpul 和 outpul不包括在内,这是因为它们表记变量的缘故,6.2.2.11一个标识符或标号,在定义点处表记什么,在所有的应用性出现处就表记什么。注:在语法定义里,标识符的应用性出现是受限定的,例如类型标识符,而构戒定义点时使用的标识符是不变限是的。
6.2.3激活
6.2.3.1过程标识符或函数标识符在某一分程序区域的过程与函数说明部分内有一个定义点,则称它们局部于该分程序。
6.2.3.2分程序的激活应包括:
对此分程序的语句部分而言,就是激活·个算法,算法完成后该激活就终结(也可参看白
6. 8.2. 4)3
b对语句中在此分程序标号说明部分里有定义点的每个标号而言,就是激活该语句的算法中的一个程序点;
c。,对在此分程序区域里有定义点的每个变量标识符而言,就是具有与此变量标识符相关联的类型的变量:
d.对局部丁此分程序的每个过程标识符而言,就是对应丁该过程标识符的过程分程序及其形式参数的过程:
e.对局部于此分程序的每个函数标识符而言,就是对应于该函数标识符的函数分程序与其相关联的结果类型及其形式参数的函数相关:f。若此分程序是一个面数分程序,其结果就具有相关联的结果类型。注,每次激活都有它自己的算法、程序点集含变量集合、过程集合和函数集合,每饮激活都与其它各次激活不同6.2.3.3一个过程或函数的激活应分别是其过程分程序或函数分程序的分程序的激活,该激活称作为内部于:
包含该过程或函数的激活;和
b。上述激活在其内部的所有激活。GB 7 5 9 1 — 87
注:分程序B的一次激活且能在包含B的分程序的微活的内部,因此一饮激活不能在同一分程序的另一次激的内部
在一次激活内,局部于此激活分程序的标号或变量标识符、或过程标识符或函数标识符的应用性出现,应分别表现该激活对应的程序点、变量、过程或函数,除此之外,在函数标识符所表记的函数激活内部,赋值语句中的函数标识符应表记此激活的结果。6.2.3.4在:·个激活的算法中所包含的,且指定分程序激活的过程语句或函数命名符称作为此分序激活的激活点。
6.2.3.5除作为程序参数列举的那些变量外,一次微活包含的所有变最和激活的任何结果,止激活开始时应是完全未定义的。算法,程序点,变量、过程和函数(若有的话)将直存在到激活终结为止。6. 3 常量定义
常量定义引人一个表记值的标识符,常量定义一标识符\三\常量
常量二[正负号](无正负号数|常量标识符)|字符串,常量标识符二标识符
在分程序常量定义部分的常量定义中,一个标识符的出现构成它在此分程序区域的定义点。常量定义中的常量不应包含此常量定义中该标识符的应用性出现。该标识符的每次应用性出现都应是一个常量标识符,且表记由此常最定义中常量所表记的值。在有正负号出现的常量中.常量标识符应被定义为表记个实数类型或整数类型的值。需求常量标识符在6.4.2.2和6.7.2.2中规定。6.4类型义
6.4.1概述
一个类型定义引入-个表记类型的标识符。类型是每个值和变量所具有的一种属性。每个新类型的出现应表记一个与任何其它新类型不同的类型,类型定义=标识符\二\类型表记符,类型表记符一类型标识符|新类型。新类型一新顺序类型|新构造类型|新指针类型.在分程序类型定义部分的类型定义中,一个标识符的出现构成它在此分程序区域的定义点。该标识符的每次应用性出现应是-个类型标识符,所表记的类型与此类型定义中类型表记符表记的类型相同,除了新指针类型的定义域类型里的应用性出现的情形外·在类型定义里类型表记符不应包含该标识符的应用性出现。
类型分为简单类型、构造类型和指针类型。需求类型标识符和相应的需求类型在6.4.2.2和6. 4. 3. 5 中规定。
简单类型标识符一类型标识符,构造类型标识符=类型标识符,
指针类型标识符一类型标识符。类型标识符标识符,
一个类型标识符根据它所表记的类型被看作是简单类型标识符、构造类型标识符或指针类型标识符。
6.4.2简单类型
6.4.2.1概述
简单类型应确定值的有序集合。每个顺序类型的值都有一个整数序号。顺序类型标识符表记一个顺序类型。
GB7591—87
简单类型=顺序类型|实数类型标识符顺序类型一新顺序类型1顺序类型标识符:新顺序类型=枚举类型子域类型
顺序类型标识符=类型标识符:
实数类型标识一类型标识符:
6.4.2.2需求简单类型
存在下列类型:
。整数类型
需求顺序类型标识符integer应表记整数类型,其值应是按6.1.5规定的有小负号整数表记的举体数的·个了集(也可参看6.7.2.2)。整数类型值的序号就是该值本身。b.实数类型
需求实数类型标识符ral应表记实数类型,其值应是符合6.1.5规定的出有正负号实数表记的实数的一个由实现所定义的了集。c.布尔类型
需求顺序类型标识符Boolean应表记布尔类型,其值应足由需求常量标识符 false和 true表记的真假值的收举,false是true的前启,d!talse和 true表记的真假值的序号分别为整数值0和1:d.宁符类型
需求顺序类型标记符thar应表记字符类型,其值应是由实现所定义的宁符集的枚举,有些可能没有图型衣示。宇符值的序号是由实现所定义的整型值,且其值通过把字符值映射到从零开始的相继非负整数值来确定,映射应保持次序不变。下列关系应成立:(1)表示数字0到9的字符值于集,数值上应是有序邻接的。(2)表示大写亨母A到2(若可用的话)的字符值子集应按字母顾序排列,但不·定是邻接的。(3)表示小写字母a到z(若可用的话)的符值子集应按字母顺序排列,但不一定是邻接的。(4)任何两个字符之间的顺序关系应与它们的序号之间的顺序关系相同。注:可用于带求简单类型的运算符在6.7.2中规定。6.4.2.3枚举类型
枚举类型应通过标识符的枚举来确定值的有序集合,其值用标识符裁记。这些值的顺序应由标识符枚举的次序确定,即若×在y的前面,则×小下y。枚举类型值的序号应通过把该类型的所有值映射到从零开始的相继非负整型值来确定,映射保持次序不变。枚举类型一\(\标识符表\)\标识符表一标识符(\,\标识符!出现在举类型的标识符表中的标识符应构成它作为常量标识符在最紧包含此枚举类型的分程序区域的定义点。
例子:
(rei+ yellow,green, blue,tartan)(lub,dlamond,hcart,spade)
(married,divarced.widowed,singlc)(scanning,found,notptesent)
(BusyInterruptEnahle,ParityError,OutorPaper,LineBreak)6.4.2.4子域类型
个产域类型应包括标识该子域的最小值和最大值。子域类型的第一个常量指明其最小值,它应小丁或等于由另一个常量指明的最大值,两个带量应具有尚一种顺疗类型,且顺序类型被指定为子成类型的宿主类型。
子域类型=常量\。,“常量,
例子;
red..green
6.4.3构造类型
6. 4. 3. 1概述
GB 7591
新构造类型根据它最紧包含的非紧缩构造类型应分为数组类型,记录类型、集合类型和文类型。构造类型值的成分应是个值。
构造类型=新构造类型|构造类塑标识符.新构造类型=\packed\]非紧缩构造类型。非紧缩构造类型一数组类型记录类型|集合炎型|文卷炎型,在新构造类型中,记号Dcked的出现应指示该类型用紧缩方式表示,指示为紧缩的构造类型应通知处理程序其值的数据存储应当节省,即使这样做会引起对该类型变量的运算或其分基的存取在时间或空阅上低效:
指示为紧缩的构造类型应只影响它的数据存储表示:即若一个成分本身是构造的,则仅当该成分的类型指示为紧缩时,此成分的数据存储表示才是紧缩的。注,类型是否指示为紧缔的将影响该类型实休的处弹方式,它们在6.4.3.2、6.4.5,6.6.3.3、6. 6.3.8、6.6.5.46. 7. 1 中规定。
6. 4. 3. 2数组类型
数组类型的构造应看作由其下标炎型规定的每个值到不同分量的一个映射,数组类型的每个减分类型应由其成分类型的类型表记符表记数组类型一”array\\[\下标类型(”,\下标类型\\\of\成分类型。下标类型一颠序类型。
成分类型一类型表记符。
array[1., 100Jof real
altay[BooleanJof colour
由两个或多个下标类型的序列所规定的数组类型是指明数组类型的一种缩写记法,它的下标类型和序列中的第个下标类型一样,它的成分类型为一个数组类型.该数组类型的下标类型为原先下标类型序列中去掉第·个下标类型后的部分,而成分类型与原先说明的相同。当Ⅱ仪当原先的数组类型指示为紧缩时,这样构造的成分类型大应指示为紧缩的、缩写形式和方的完整形式是等价的。注;下列两个例子,每·个都包舍表达数组类型的不间方式。例2
arrayrBooleanJof arrayC.-10jo arrayLsize]of real
atray[BooleanJof array l.,10,size,of rcalarray[Boolcan,1..10,sizeJof realarray(Boulean,1..10Jof atray[sizejof real例3.
packed arrayC1..10,1..8Jor Booleanpacked artay [1.. 1oJur packed array1..R]of Boolean
GB 7591—87
设1表记下标类型的一个值,设v[i表记数组类型按其构造对应于值1的:个成分值,m和n表记下标类型规定的最小值和最大值:k=(ord(n)-otd(m)十1)表记下标类型规定的值的个数:则该数组类型的值应为形如:
(V(m],-,v[n))
的互不相同的k元组。
注:只有数组类型的所有成分值均被定义,数组类的值才存在。若其成分类型有c个值,删数组类型值集合的基数为的k次蒂
任何指示为紧缩的数组类型,若其下标类型用最小值为1,最大值为大于1的于域类型表记,而其成分类型用字符类型表记,则此数组类型应称为串类型。学符串与申类型值之间的对应关系是通过按正文次序取得字符串的各个元素与按下标上升饮序取得串类型值的成分而建立的。
注:申类型的值具有另一些持征,充许把其值写至止文文差(参看6.9.3.6)并定义厂关系运算符关丁其值的用法(参看 6. 7. 2. 5)。
6. 4. 3. 3记录类型
记录类型的结构和值应是域表的结构和值。记录类型=\record域表\end\域表一【(固定部分{\\变体部分}变体部分)[\,\},固定部分=记录段{\;\记录段}.记录段一标识符表”;\类型表记衍变体部分一\case\变体选择符“of\变体[\;\变体].变体选择符一[标志域\\]标志类型标志域一标识符、
变体一情况常量表\,\\(\域表\)\标志类型一题序类型标识符
情况常量表一情况常量(\,\情况常量).情况常量=常量:
既不包含固定部分也不包含变体部分的域表应没有成分,它定义一个空值(null),并指示为空。在域表固定部分记录段的标识符表中,一个标识符的出现构成它作为域标识符在最紧包含此域表的记录类型区域的定义点,并使它与指示为记录类型和域表的一个域成分相关联,该域成分应具有出记录段的类型表记符所表记的类型。最紧包含变体部分的域表应有一个不同的成分,其值和结构应山变体部分定义。设Vi表记一个有m个成分的非空域表的第1个成分值,则域表的值应是形如:(V1,V2,*,Vm)
的互不相同的元组。
注,荐第1个成分的类型有F,个值,则城表的值巢合的基数应为(F1 *F2**Fm)。标志类型应表记由其顺序类型标识符所表记的类型。情况需量应表记其常量所表记的值。在变体部分的任一变体的情况常量表中,每个情况常量的类型与变体部分的变体选择符的标志类型甚相容的。一个类型要与给定的标志类型相容,其所有情况常量表记的值应不相同,且该值集合要等于标志类型所规定的值集合。规定变体的情况常表的情况常量所表记的值与其变体相对应。每个变体部分应与-个类型相联,该类型那是该变体部分的选择符类型。若变体部分的变体选择符包含一个标志域,或变体部分的每个变体的况常量表仅包含一个情况常量,则选择符类型由标志类型表记,并且变体部分的每个变体应相关联于选择符类型指定的那些值,该选择符类型由变体的情况常基表中的情况常量表记,否则,变体部分具有的选择符类型应是一个新顺序类型,使得对变体部分的每个变体而言确有该类型的一个值而没有其它的值,并且各个变体与该类型的各个值相关联。GB 7591— 87
每个变体部分应有一个称为变体部分的选择符的成分,它应具有变体部分的选择符类型。若变体部分的变体选择符包含一个标志域,则标志域中一个标识符的出现构成它作为一个域标识符在最紧包含该变体部分的记录类型区域的定义点,并应使域标识符相关联于变体部分的选择符。当且仅当选择符是与一个域标识符相关联吋,它才作为记录类型的一个域。变体部分的每个变体都应表记变体部分的一个不同成分,该成分应具有变体的域表的结构和值,且与相联于该变体的变体部分的选择符类型规定的那些值相联。变体部分选择符的值应使与其相联的变体和成分处于所谓的活动状态。变体部分的值应是互不相同的对偶(K,Xk),
其中K表记变体部分选择符的一个值,Xk是变体部分中活动变体的域表的一个值。注:①若选择符类型规定有n个值,R与第1个信相联的变体的域表有 TI个值,则该变体分值策合的基数为(T1十T2+Tn)。变体部分值的成分不会与该变体部分中任何不活动的变体相对应。②对记录变最变体部分的填的用法所加的限制在6,5,3.3.6.6.3.3和6.6.5.3中规定,例子,
record
year 1 0., 2000;
Inonth + 1. 12.
day:1..31
tecord
name,firsthame : string!
ago t 0.. 99.
casc imartied t Boolean of
true (Spougesneme : string)false t()
record
X+y+reat,
area + real;
case shape of
triangle t
(side t teal,inclination,anglel,angle2 I angle),rectangle :
(sidei,side2 t rcal;skcw : angle) :circle t
(diameter : real),
6.4.3.4集合类型
一个集合类型应确定其基类型的罪集构成的值案合。因而集合类型的每个值都应是一个集合,该巢合的成员应是基类型的单个值。集合类型\sett\ofu基类型。
基类型一序类型。
小提示:此标准内容仅展示完整标准里的部分截取内容,若需要完整标准请到上方自行免费下载完整标准文档。