资源描述:
《程序设计语言的刻划》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章程序设计语言的刻划程序设计语言需要有语言文本来精确地规定其功能、源程序的表示、语义和其限制,以及语用、语境等其他信息。语言文本是实现者(厂商和开发人员)和使用者(编程人员)之间的界面。不同程序设计语言文本的描写方法有相当大的差别。2.1程序设计语言的文本刻划程序设计语言文本的共同点:(1)语言文本的标准化;国际标准(ISO)、国家标准(GB)、军用标准(T)、部颁布标准、企业标准等。程序设计语言的标准属于指导性标准,而不是强制性标准。在当前的形势下不走标准的路是难以实现工业化发展的。2.1程序设计语言的文本刻划(2
2、)语言文本的格式和叙述相对刻板和严格,各个文本本身有较为统一的书写风格。(3)各个语法单位均有语法、语义等描述。语法表示:BNF及其变形语义部分:对语法的解释、语法元素的限制、语义的说明、语用和语境等,一般采用自然语言。2.1程序设计语言的文本刻划2.1程序设计语言的文本刻划语言文本的兼容更新,需要保持风格的一致,包括语法语义部分的风格的一致。有的语言一个文本仅允许为全集,有的允许以积木式组成若干合法的子集。例如:Ada语言只允许为全集;COBOL语言允许有多级子集,且其组合情况最为复杂。P27表2.12.2.1源程序程
3、序设计语言比自然语言简单但比形式语言复杂,形式语言是程序设计语言的理论基础。在程序设计语言中,句子即为正确的源程序。正确:语法正确、语义合理、而语用、语境有适当解释。2.2程序设计语言和形式语言语法正确的源程序:它可以由相应语法规则集产生的。如果语法是无歧义的,则语法正确的源程序有且仅有一棵语法树与之对应。这里的语法是有序的,即所有的结点有先后次序,其树叶的有序排列(从左到右)即为源程序。语法正确的源程序,其语义未必正确如,某个名字未经说明,却在语句或表达式中出现。2.2程序设计语言和形式语言2.2.2程序设计语言的语法
4、形式描述方法一、BNF形式BNF形式方法或其变种是使用最好最广的语法描述方法。是一种元语言。元语言连接词:::=(定义为)
5、(或)[],{},{}+,{}*,2.2程序设计语言和形式语言元语言变量:<汉字串1><汉字串1>为语法单位“汉字串2”<汉字串1>“汉字串2”为语义限制词,用于限定或说明<汉字串1>。2.2程序设计语言和形式语言元语言构成规则:规则=df元语言变量::=语法项语法项=df语法因子
6、语法因子语法项语法因子=df元语言变量
7、
8、元语言变量语法因子“元语言变量”的值是对象语言中的非终结符号。在定义式的右端
9、,“元语言变量”的值既可以是非终结符号也可以是终结符号。2.2程序设计语言和形式语言[A]:表示A可以出现也可以不出现,但均符合语法,出现与否将可能影响其语义。{A}:表示A出现一次。{A}+:表示{A}重复1次到无限多次{}*:表示{A}重复0次到无限多次表示{A}重复n次到m次2.2程序设计语言和形式语言例如,Ada语言中的有关异常处理结构的定义如下;handled_sequence_of_statements::=sequence_of_statements[exceptionexception_handler{e
10、xception_handler}]exception_handler::=when[choice_parameter_specification:]exception_choice{
11、exception_choice}=>sequence_of_statementschoice_parameter_specification::=defining_identifierexception_choice::=exception_name
12、others2.2程序设计语言和形式语言exceptionwhenE1=>…..处理程
13、序1whenE2=>…..处理程序2whenothers=>…..默认的处理程序2.2程序设计语言和形式语言二、抽像语法设有下列BNF表示的语法(设其中W为语句,B为条件,I为变量,E为表达式)W::=I:=E(用于定义赋值语句)W::=ifBthenWelseW(用于定义条件语句)W::=whileBdoW(用于定义当语句)W::=W;W(用于定义顺序语句)2.2程序设计语言和形式语言上述语句可以用下列形式表示:Assignment(I,E)If(B,W1,W2)While(B,W)Block(W1,W2)2.2程序设
14、计语言和形式语言三、属性文法属性文AG是一个五元组。AG=(D,V,S,A,P)其中D是属性集合。(D1,D2……f1,f2…)是一个代数结构,具有属性域D1,D2…及部分函数f1,f2…。这些函数是在这些域的笛卡尔积上的操作。V=VnUVt,其中Vn是非终结符号,Vt是终结符号2.2程序设计语言和形式语言S是开始符