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