GB T 9542-1988 程序设计语言PL 1.pdf
《GB T 9542-1988 程序设计语言PL 1.pdf》由会员分享,可在线阅读,更多相关《GB T 9542-1988 程序设计语言PL 1.pdf(394页珍藏版)》请在麦多课文档分享上搜索。
1、中华人民共和国国家标准程序设计语言发布实施中华人民共和国电子工业部发布中华人民共和国国家标准程序设计语言中华人民共和国电子工业部批准实施本标准等同采用国际标准程序设计语言范围和概貌范围本标准定义计算机程序设计语言它将作为具有权威性的参考文件而不是简单的入门介绍定义通过规定一个翻译和解释程序的概念机器来完成条简要介绍了语言中所包含的语句和数据类型本标准的结构与使用方法以及定义语言的方法条描述本标准中的概念机器与实际实现之间的关系条给出了所用到的表示法的详细说明从条开始包括第章至第章是定义的主体定义的非形式化指南提要一个程序由一组书写成一系列语句的过程组成在程序翻译过程中可以使用构件并入其他来源的
2、正文的所有语句类型分组综述如下分组的原则是便于了解整个语言的概貌并与本标准的组织有关结构类过程语句入口语句开始语句执行语句结束语句申述类申述语句默契语句格式语句流程控制类调用语句返回语句如果语句转向语句空语句停止语句异常处理语句变状态语句置状态语句中断处理存储类分配语句释放语句赋值语句输入输出类打开语句关闭语句取语句送语句流式输入输出读语句写语句定位语句重写语句删除语句记录型输入输出下列类型的数据可用名字来申述数据可以是单值的也可以是数组或结构形式的聚集算术型字符型或形象二进位型区域型入口型文卷型格式型标号型位移型指针型值可通过使用一组专门的运算符和内部函数及用户定义的过程书写的表达式来计算大
3、部分内部函数既适用于单值又适用于聚集值用户定义的过程也可运算和返回聚集值或单值数据本定义的形式概念机器是一个处理器它具有一组施加于存放在其存储器内信息的操作以算法形式规定的这些操作可以看作是一单个算法即实现整个翻译和解释处理的定义程序算法的组成部分存储器内的信息均以树结构的形式存放定义算法操作如下表示外部过程即不被任何其他过程所包含的过程的符号序列先由一个翻译器处理处理过程包括系统地分析变换和证实每一个外部过程分析首先使用称为具体语法的文法来产生以树结构表示的外部过程的具体形式具体形式又被变换为抽象形式抽象形式是一棵满足抽象语法的树抽象语法设计得更便于解释然后对抽象形式作进一步的证实接着由解释
4、器进行程序在应用于给定初始数据集时的语义处理数据集是机器存储器的一部分是满足机器状态语法的树正是数据集的改变序列构成了所定义的语义除翻译和解释所有按定义有效的程序外机器还检测有无对于与翻译和解释过程中所执行的算法中的词汇必须或必须不不得有关条文的违反将这种违反称为非标准标准与某个具体实现之间的关系在条中描述定义方法的轮廓如下把抽象机看成下列形式也是有帮助的翻译器和解释器均可在该抽象机上运行从机外来的输入出现在翻译器和解释器的初始化阶段在解释过程中数据集可以改变然而抽象机未定义任何输出因为按照本定义的意图数据集被作为机器存储器的一部分即在需要时是联机的章条结构一览表第章所叙述的操作用于驱动翻译器
5、和解释器翻译器的全部操作包含在第章中使用第章和第章所述的语法解释器的操作由第章至第章中的全部操作组成在第章所述的初始化后有关的操作将根据须解释的语句类型分别在第章中叙述所有上述章节在需要时均将使用第章所述的操作每章的条款按逻辑组织可参考目录以了解章节结构的概貌推荐读者先完整地阅读并仔细理解第章随后可以系统地阅读整个标准也可以利用对整体结构的了解和合理地使用索引在本标准中查找针对某一专门问题的答案在此对每一章都举一个本标准可解答的样本问题为例子以解释后一种用法第章包含具体语法的定义具体语法由以具体树形式描述构件有效形式的规则组成它允许某些构件在语法上认为正确但无实际意义从这个意义上说具体语法是容
6、错的问题语句是否正确答案首先应检查语句有无语法错误查取语句的索引项可知它属于中级语法研究规则和揭示格式逗号分隔的输入目标表执行规格需外加一对括号以避免本例中固有的二义性取决于要把最后一个输入值赋于或正确的格式应为或第章包含抽象语法的定义抽象语法描述的许多部分与具体语法中的对应部分类似抽象语法中的名字选择也与具体语法中的相应名字相似以尽可能使两个语法之间的关系更为明显问题读语句的键去向选择是否可以指定以某变量的子串为键答案关于键去向选择的具体语法只规定必须指定引用然而抽象语法说明了在翻译器处理完全部申述后的程序形式并可将每个引用与适当的申述结合使差别更为细微有关键去向选择的规则中包含目标引用标量
7、与字符规则说明这允许一个伪变量引用例如子串伪变量加括号的限制标量与字符表示它必须是一个字符值的单个目标不得为数组或结构使用索引检索翻译器和解释器未发现进一步的限制因而答案是可以但该子串必须是字符型的标量第章定义了翻译器翻译器将每一个独立的程序部分外部过程从所提交的字符串形式翻译为树形式并添加到程序树中这个处理过程包括对每一外部过程使用具体语法进行分析获得一棵具体树插入遗漏的任选项以将该具体树的属性集补完整然后将该具体树转换为抽象树最后证实整个程序一旦构造完成抽象树不再修改问题语句中隐含哪一个文卷答案初看起来这似乎是有关送语句的一个语义问题然而抽象语法表明在送文卷中必须出现一个文卷选择这意味着若
8、在具体形式中缺省了该文卷选择则只要语句是有效的翻译器将补上一个文卷选择事实上在对输入进行语法分析后翻译器立即以各种方式将具体过程补完整其中方式之一就是在送语句中插入的等价物补全任选项操作中的步骤见第条必须由翻译器早期进行处理的原因是若本例中的语句不在一个已有的对的申述的作用域内它将导致一个对名字的按上下文的申述为了正确解决引用问题必须在执行前将所有申述补完整第章包含机器状态语法的定义机器状态树的初始化和解释处理的开始问题程序中执行的第一个过程是否可以带有从外界传递来的变元答案关于执行的初始化参考第和第条在解释阶段操作步骤条中从定义外获取一个入口值它指示程序中将被激活的第一个过程条文中的限制词不
9、得说明本标准对一个其入口点是由含参数名表的入口值所指示的程序并未规定任何意义见条中对必须的定义另外在解释操作的步骤条中用于激活第一个过程的是仅含一个入口值而不是一个已建立的变元表的求值后的入口引用见第条的产生式规则因此对第一个过程传递变元将是超出本标准所定义的语言范围的一种扩展第章描述了影响程序中分程序由引导的语句组和语句控制流程的解释操作正常的控制流由执行分程序中一系列可执行的程序段构成第六章也定义了调用参数和变元的匹配结果的返回和由中断引起的异常控制流程问题是否允许改变未执行过异常处理语句的条件答案这是一个有关中断处理的语义问题条的执行变状态语句操作在当前已建立的异常处理程序单位表中有合适
10、的成员时删除该成员否则按正常顺序将控制传递给下一语句由于执行异常处理语句仅在这类表中添加已建立的异常处理程序单位显然执行变状态语句与是否执行过添加动作无关答案是允许且对中断处理机制无影响第章定义了存储区的使用包括存储区的分配释放和初始化变量与命名常量的引用还定义了赋值语句聚集赋值和伪变量问题语句是否能在分配时使的五个元素均置为零答案存储区的分配与初始化在第章处理条的初始化数组操作在当时重复迭代步骤由于本例中等于见步骤的初值是且在步骤中增故只进行一次迭代因此上述语句只将第一个元素初始化为零第章处理外部媒体与内部存储区间的数据传输包括文卷的打开和关闭流式和记录型传输以及可应用于输入输出操作的中断问
11、题语句序列是否有效答案尽管大部分申述结构在抽象语法中是明显的且由翻译器检验但文卷属性例外有可能直到执行打开文卷操作时文卷属性仍不完整因此在执行阶段也还需要检查文卷属性组合的有效性条的打开操作表明打印在步骤中隐含流式且同时为流式与记录型会导致打开文卷操作失败因此若执行打开语句打开文卷时会导致标志文卷未定义状态见条中执行单项打开要求操作的步骤第章描述表达式求值表达式求值过程中可能出现的数据类型转换和的内部函数问题能否将结构与数组相加答案第章的表达式求值从考虑聚集型操作数的一般处理开始条的相容性定义引导我们查阅情况得到答案数组的一个元素必须与给定结构相容再次应用相容性检验得出结论如数组的一个元素是标
12、量情况或相容的结构情况和进一步递归则可以相加元语言导论在进入条更严格的定义之前先非形式化地讨论一下元语言的主要特色树的概念定义涉及三类不同的树具体语法分析树抽象正文树和机器状态树而使用了统一的树概念本标准中的树是每一结点均加标号例如过程的有向图任一结点的子树均是有序的尽管次序在许多情况下并无意义但有些场合需要例如在具体语法分析和表中都用到次序在设计时经权衡认为采用简单的统一形式比将有次序与无次序的情况明显地加以区别更具优点而且每一结点均隐含地有一个唯一的名字需要时可用它来表记该结点树的副本具有与正本相同的有序结构和标号但使用新的唯一名指示其结点两棵树除结点的唯一名外均相同则称为等价唯一名也相同
13、的等价树称为同一结点的显式标号可以是语法上的分类名也可以是某种其他类型的值例如整数或指示符即与某个结点隐式相关的唯一名的副本因此一个单值可作为仅有一个以该值为标号的根结点的退化树处理元语言中引用的数据对象均统一地作为树处理关于树的有关术语的定义从由一个结点称为根结点和一个有可能是空的该结点所直接所含的树的有序集合所组成的树着手若树直接包含在树中或直接包含在由所包含的某棵树中则称包含在中或为所包含当且仅当包含在中且不为所包含的根结点等于或的根结点的任何树所包含时称简单包含在中或简单包含例如若称一个表达式简单包含在表示程序中某个语句的树中指的是完全的表达式树而不是在以表达式为根的树中某个低层次的也
14、以表达式为根的子表达式由于简单包含是常用的概念使用任何形式的不含动词包含或名词成分的所有格短语时均隐含简单包含例如若具有含一个表达式意为根结点标号为表达式的树的表达式或它的表达式等上述术语使得对树可执行三类基本操作即检测树是否存在或其子树的类型选择其中的子树以及构造或修改树然而若用下列文字叙述构造根结点有两棵直接子树其中第一棵子树是它有直接子树和第二棵子树是这里是某棵树的名字意味着在构造新树时要复制的一个副本是相当费事的因此可以缩写为缩排有助于阅读大型树结构但不是必要的所构造的树的结尾部分的分号可用圆点代替语法从考虑特定的树开始到各类树我们将遇到由以稍加扩展的巴科斯诺尔范式表示的产生式规则所构
15、成的文法对这些规则的解释是它们描述了由文法所描述的各类树的结构仅当按传统的语法使用这些规则时树的终极结点的序列才获得特别的重要意义即终极结点的序列是代表了该语言中表达方式的字符序列我们以构造符合下列形式规则的树为例来作说明表元语言中的语法规则十分类似于用它所定义的语言中的语句即元语言规则本身也有语法结构必须得到证实和正确的解释在此先不给出元语言的形式文法仅如实描述规则是如何解释的以避免循环或回归定义上述规则指定任何标号为的结点必须具有如规则右边所描述形式的子树共有三类元语言运算符连接在规则中以并列表示置换和选择连接的优先级最高选择的优先级最低带括号的表达式作为单操作数处理按规则构造树的第一阶段
16、是将语法表达式划分为由最低优先级的号分隔的子表达式并选择这些子表达式中的一个假设不管只有的子表达式第二步按运算符划分另一个子表达式并使用置换使这些划分的顺序逆转得到表方括号表示其中的内容可以省略在此我们采取省略其内容的做法花括号内的语法表达式必须按刚才所描述的方法解释选择其中的表则可得到下述树表用黑体字表示它总是标识所讨论的文法中的终极结点即它不出现在任何产生式的左边按照习惯表表示它包含一个或多个类型为的直接子树接着我们可对每一子树分别应用的规则当树的每一终极结点都是终极符类型或产生空子树集的类型时树的构造工作完成算法概念抽象机的操作由算法定义可类比为支持计算机操作码的逻辑或微码这些操作检测或
17、改变机器状态即抽象机的内存机器状态中包含直接或间接影响语义的全部信息包括某种形式的程序本身元括号和用在机器状态结点的定义中属于抽象程序文法的结点除外后者用和标识便于读者区别一个机器操作由一系列步骤或编号从至的一组互斥情况定义步骤或情况内还可包含编号为至的步骤或情况以此类推每一步骤或情况都使用元语言中的各种非形式化的语句类型规定所要执行的动作每一种情况都以应用该情况时所必须满足的谓词引导例是程序起始操作的定义在此作为一个实例例中第一段给读者一些指导真正的定义部分从操作开始程序起始本操作在每一个分程序被激活时执行以建立局部于该分程序的自动类和已定义类变量若申述中指定了初始化则初始化自动类变量在程序
18、起始阶段求值的任何表达式例如范围表达式或初值说明中的表达式均不允许引用该分程序中其他局部自动类或已定义类变量寻找目录项操作在发现一个在具有起始旗标的分程序中申述的引用时将施加限制仅当程序起始操作处于活动状态时才出现起始旗标操作程序起始步骤在当前连接部分附加起始旗标步骤对当前分程序中包含自动类或已定义类的每一个申述执行步骤步骤令表示直接包含在中的标识符令表示直接包含在的变量中的数据描述执行求值数据描述以便分配以获得一个求值后的数据描述情况包含自动类步骤执行分配操作得到一个世代步骤在当前自动类目录项表中添加一个自动类目录项步骤若包含初值说明则执行初始化世代操作情况包含已定义类在当前已定义类目录项表
19、中添加一个已定义类目录项步骤删除当前连接部分的起始旗标步骤用语句控制操作表推进执行的操作替换当前的语句控制例程序起始操作步骤是一个附加动作其含义是将一棵树作为子树复制到另一棵树中按照后者类型的语法规则前者可合法出现的位置修饰词当前的已用定义所用的特殊机器状态作了精确的定义所谓光前连接部分是指直接包含在对应于当前所要执行的分程序的分程序状态中的连接部分步骤使用词对每一个指明要迭代适用于第一种形式的执行动作即执行同一操作一次或多次逗号后引入的名字例如是一个局部于该操作的变量其值假定是是紧先于的树的一个指示符以后用到时除非已用类似于初始定义的方法重新定义了例如在本例中对每一个的下一次迭代时即出现重新
20、定义的情况或用词令重新定义了均对作逆引用即它表示由指示的树令语句是这类局部变量定义的一种更明显的语法步骤中包含了一个实例若包含自动类情况中的谓词得到满足将依次执行步骤至第二种形式的执行动作用于调用例如为子程序或函数的另一个操作出现在步骤中在本例中是一个函数引用该函数获得一个结果值然后对该值赋予一个名字作为参数传递给该操作其定义将命名一个对应的参数参数传递是传地址即将参数的指示符作参数值传递以后用到时对该值作逆引用其行为类似于局部变量步骤中的添加动作在表的末尾添加一棵树步骤举例说明了含有子程序调用的如果语句步骤和包含其他两类要用到的树操作删除和替换当用一棵树替换另一棵树时原有的树被删除用于替换的
21、树的一个副本的根置于原先树的根位置副本的根结点与被删树的根具有相同的隐含名在置动作的语法形式中允许将一个值赋予一个变量例如置为真但这仅是使用常用的变量名隐式逆引用来进行替换的一种替代形式其含义是用真替换由指示符值所指示的树在此未作解释的其他语句类型有转向不要滥用未到最后一步完成就终止一个操作以及从函数返回一个值也终止操作值的返回也是传地址因而若结果是在函数中构造的树则必须复制给调用者调用者获得该副本的指示符局部于某个操作的值在操作终止时删除通过上述介绍我们已有了对元语言可进行机器处理的直觉下面将进一步说明可将元语言机器化的理由步骤提供了线索步骤中构造了一棵树置于机器状态中在机器状态的操作表中只
22、有一个称为活动的且附有一个可执行操作的概念处理器特别是机器具有一个当前分程序状态该状态有一个语句控制在语句控制中可将解释当前分程序中的语句的元语言动作机器化可将操作表设想为一个下推堆栈每一个操作都将有一棵子树对该子树尚未作形式定义但子树中包含下列信息操作名含有肖前值的参数表和局部变量表在执行该操作时所构造或从所调用的子程序中复制回的全部树在那一个步骤或那一种情况下执行其算法的指示在对每一迭代中已进行的迭代次数等等当一次执行调用另一个操作时该操作被压入堆栈并成为活动操作当一个操作终止时其整棵树包括局部值都被删除该操作弹出堆栈栈顶的操作成为活动的并从被挂起的位置恢复其算法的执行回到本条开始时的类比
23、元语言处理就象一个抽象处理机该机每一机器周期执行一批微码操作每次都使用操作被调用时的局部存储器并具有先进的堆栈能力本标准与实现间的关系概念机的输入是表示外部过程的一个或多个符号表一个入口值和一个数据集表它们的组合称为一次程序运行对某个特定的实现的标准定义还需不一定使用本标准的风格定义在条中所列出的由实现所定义的设施以及在实现的操作环境中程序运行的元素符号表入口值和数据集表的表示法才完整有了这些信息概念机才能对程序运行给出一个或多个解释本标准的主要目的是定义解释有效程序运行的语义这些语义完全由机器状态的数据集的变化序列组成一种实现可自由地选择任何方法获得这些变化序列操作和机器状态中的其他部分是本
24、标准定义语义所用的机制不一定要在实现中直接反映当且仅当某个实现符合下列概念解释之一才称该实现符合本标准若概念解释拒绝一个程序运行在必须测试中失败或永不终止翻译阶段则实现无论作任何解释都符合标准特别地某一个实现拒绝程序运行的地点可与本标准不同甚至根本不拒绝程序运行否则若实现的解释跟概念解释获得同样的数据集变化序列则符合标准若实现的解释仅在条中所指定的解释的灵活性所允许的部分与和规定的不同则也符合标准注意的规定隐含了实现可提供超出本标准所定义的语言的扩展但扩展后的实现对不用这些扩展的程序的解释仍须符合标准解释的灵活性术语任选地的以任意次序的使用使概念机的操作定义具有为高效实现所需的大部分灵活性然而
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GB 9542 1988 程序设计语言 PL
