计算机编译原理课件4_第1页
计算机编译原理课件4_第2页
计算机编译原理课件4_第3页
计算机编译原理课件4_第4页
计算机编译原理课件4_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章程序语言的设计第2章和第3章分别讨论了程序设计语言的数据类型和控制结构,分别描述程序的数据结构和算法。本章介绍语言的设计方法。1第4章程序语言的设计第2章和第3章分别讨论了程序设计语言的1语言的定义语言=语法+语义语法:用以构造程序及其成分(语法单位)的规则的集合。语义:用以规定语法正确的语法单位的含义的规则的集合。21语言的定义语言=语法+语义21.1语法1.1.1几个术语(1)字母表语言允许使用字符的集合,其元素称为字符(2)符号由字符组成的有限串(字符串)(3)字汇表由符号组成的集合,其元素称为字31.1语法1.1.1几个术语3(4)词法规则规定什么样的字符序列可以构成语言的有效符号(单词符号)(5)语法规则确定一个符号序列是否为一个句子,并提供句子的结构(什么样的符号序列是合法的)4(4)词法规则4语言的定义语言的定义可以从生成(文法)和识别(语法图)的观点进行。5语言的定义语言的定义可以从生成(文法)和识别(语法图)的观点1.1.2生成的观点用文法来定义语言(1)一个简单英语句子的描述I/Studentsstudy/run61.1.2生成的观点用文法来定义语言6(2)文法<句子>→<主语><谓语><主语>→I|Students<谓语>→study|run7(2)文法7(3)语言根据文法规则生成的所有句子的集合,称为语言。8(3)语言8标识符的文法<标识符>→<字母><标识符>→<标识符><字母><标识符>→<标识符><数字><字母>→A|…|Z|a|…|z<数字>→0|…|99标识符的文法<标识符>→<字母>9表达式的文法<表达式>→<标识符><表达式>→(<表达式>)<表达式>→<表达式><运算符><表达式><运算符>→+|-|*|/10表达式的文法<表达式>→<标识符>101.1.3识别的观点用语法图来定义的语言(1)语法图的构造终结符x对应一个语法图非终结符N对应一个语法图xN111.1.3识别的观点用语法图来定义的语言xN11N→1|2|…|n对应一个语法图2n112N→1|2|…|n对应一个语法图2n112→12…m对应一个语法图b1b2bm13→12…m对应一个语法图b1b2bm13→|对应一个语法图gb14→|对应一个语法图gb14(2)识别原则若一个终结符序列是合法的,那么,必须从语法图的入口边通过语法图而到达出口边,而且在通过的过程中,恰恰能识别该终结符序列。15(2)识别原则15(3)语言语法图能识别的所有终结符序列的集合,称为语言。16(3)语言16标识符的语法图字母字母数字17标识符的语法图字母字母数字17表达式的语法图标识符表达式运算符()表达式表达式18表达式的语法图标识符表达式运算符()表达式表达式18语法描述方法等价文法和语法图是语言语法的等价表示。文法从产生的观点来定义语言,更通用、更准确地给出语言的语法结构。语法图以识别的观点定义语言,更直观、更清晰地给出语言的语法结构。采用生成的方法还是采用识别的方法来定义语言,由语言的设计者确定。19语法描述方法等价文法和语法图是语言语法的等价表示。191.1.4语法描述的用途(1)表达语言设计者的意图和设计目标(2)指导语言的使用者编写正确的程序(3)指导语言的实现者编写语法检查程序来识别所有语法单位201.1.4语法描述的用途(1)表达语言设计者的意图和设计1.2语义语义:定义语言合法句子的含义(即句子的作用和意义)的规则组合。文法和语法图已成为语法描述的典型工具,但语义描述至今尚无人们普遍接受的典型描述工具。许多语言仍采用自然语言描述语义。211.2语义语义:定义语言合法句子的含义(即句子的作用和意义本章的语言设计,采用自然语言来描述语义。(下篇的)语言实现涉及到的语义,将以操作语义学的方法来描述。即以一个抽象机的行为来描述语言的各个结构的作用和意义。22本章的语言设计,采用自然语言来描述语义。22抽象机GAM的组成由存储器,控制器,处理器,指令指针ip组成。存储器分为代码区和数据区。23抽象机GAM的组成由存储器,控制器,处理器,指令指针ip组成抽象机GAM的模型ip代码存储器(C)数据存储器(D)24抽象机GAM的模型ip代码存储器(C)数据存储器(D)24抽象机GAM的结构代码区(代码存储器),存放程序指令,代码存储器的内容不允许被修改。数据区(数据存储器),存放必要的信息和程序中的数据。25抽象机GAM的结构代码区(代码存储器),存放程序指令,代码存ip的内容是代码区存储单元的地址,该单元的内容是一条指令。C[i]和D[i]表示相应存储区第i个单元。ip:=ip+4表示指针指向下一条指令,假定每条指令占4个存储单元(字节)。26ip的内容是代码区存储单元的地址,该单元的内容是一条指令。GAM一旦启动,由专门的装入程序将一个要运行的程序装入代码存储器,并置ip指向该程序的第一条指令。然后依次完成下述工作:27GAM一旦启动,由专门的装入程序将一个要运行的程序装入代码存(1)执行ip所指向的指令。(2)修改ip的内容。若所执行的指令未修改ip,则ip+4,使之指向下一条指令。(3)若ip指向特殊的STOP指令,则终止执行,否则转回执行(1)。28(1)执行ip所指向的指令。28假设GAM对各种程序设计语言所常用的运算符,如:+,-,*,/,>,<,>=等,都有相应的指令与之对应。以GAM的操作行为来定义语言的语义,是基于已经“理解”GAM的语义。因此,一旦用GAM的操作行为来定义语言结构的作用时,就知道了语言的意义。29假设GAM对各种程序设计语言所常用的运算符,如:+,-,2文法2.1文法的定义文法是描述语言语法结构的形式规则。通用,准确,易于理解,描述能力强302文法2.1文法的定义302.1.1文法的形式定义G=(VT,VN,S,P)VT为终结符的非空有限集;VN为非终结符的非空有限集;S是文法的开始符号,S∈VN;P为产生式的非空有限集。312.1.1文法的形式定义G=(VT,VN,S,P)产生式是一个有序偶对(,),记为:→和是由终结符、非终结符组成的符号串,但至少应含有一个非终结符。即:

V*VNV*

V*32产生式是一个有序偶对(,),记为:32产生式的简化→1→2…

→n简化为:→1|2|…|n33产生式的简化→133文法的表示描述文法,直接给出产生式集合即可。例如,算术表达式文法G(E)E→E+T|TT→T*F|FF→(E)|i34文法的表示描述文法,直接给出产生式集合即可。342.1.2文法的分类(1)无限制文法(0型文法)产生式为→,V*VNV*,V*(2)上下文有关文法(1型文法)产生式为A→,AVN,、V*,V+

352.1.2文法的分类(1)无限制文法(0型文法)35(3)上下文无关文法(2型文法)产生式为A→,AVN,V*(4)正则文法(3型文法)产生式为A→或A→B,VT*,BVN36(3)上下文无关文法(2型文法)362.2文法产生的语言2.2.1推导与归约(1)直接推导:wα

即由产生式右边替换产生式左边(2)推导:α1

*αn、α1

+αn

372.2文法产生的语言2.2.1推导与归约37E→E+E│E*E│(E)│ii+i*i的最左推导过程EE+Ei+Ei+E*Ei+i*Ei+i*i38E→E+E│E*E│(E)│iEE+Ei+E最右推导(规范推导)EE+EE+E*E

E+E*iE+i*ii+i*i39最右推导(规范推导)EE+EE+E*E39EE*EE*iE+E*iE+i*ii+i*i40EE*EE*i402.2.2句型和句子文法G=(VT,VN,S,P)S*α若αV*,则α为文法G的一个句型若αVT*,则α是一个句子412.2.2句型和句子文法G=(VT,VN,S,P)41句型与句子的关系只含终结符的句型就是一个句子。一个句子是句型。一个句型不一定是句子。42句型与句子的关系只含终结符的句型就是一个句子。422.2.3文法产生的语言文法G=(VT,VN,S,P)产生的所有句子的集合,称为由文法G产生的语言,记为L(G),即L(G)={α│S+α且αVT*

}432.2.3文法产生的语言文法G=(VT,VN,S,P)43文法实例1文法G1:E→E+T|TT→T*F|FF→(E)|i语言L(G1)表示由符号i、+、*、(、)构成的表达式。44文法实例1文法G1:44文法实例2文法G2:S→aS|aPP→bP|bQQ→cQ|c语言L(G2)={aibjck|i,j,k1}45文法实例2文法G2:45文法实例3文法G3:S→aSPQ│abQQP→PQbP→bbbQ→bccQ→cc46文法实例3文法G3:46S…ai-1S(PQ)i-1ai-1abQ(PQ)i-1aibPi-1Qi…aibiQi…aibicQi-1…aibici语言L(G3)={aibici|i1}47S…ai-1S(PQ)i-147说明1)文法的重要特性用有限规则描述无穷的语言。2)文法的等价对两个文法G和G’,如果L(G)=L(G’),则称文法G和文法G’等价。48说明1)文法的重要特性482.2.4推导树(语法树)(1)推导树是一棵有序的标记树每个结点的标记是文法G的非终结符或终结符;标记为A的内部结点从左到右有子结点X1,X2,…,Xn,则A→X1…Xn是一个产生式;492.2.4推导树(语法树)(1)推导树是一棵有序的标记树对于文法E→E+E│E*E│(E)│i句子i+i*i的推导树为:50对于文法50E(E)EE*EE+iiiE(E)EE+EEiii*51E(E)EE*EE+iiiE(E)EE+EEiii*51(2)推导树的边缘推导树所有叶结点从左到右的连接。(3)文法的二义性一个句子有两棵不同的推导树。52(2)推导树的边缘524.3语言的设计设计的依据:面向的问题和面向的机器设计内容(语法):表达式、语句、程序单元、程序描述方式:语法——文法、语义——自然语言534.3语言的设计设计的依据:534.3.1表达式的设计逻辑表达式关系表达式算术表达式544.3.1表达式的设计逻辑表达式54(1)逻辑表达式<逻辑表达式>→<布尔常量>|<布尔变量>|<关系表达式>|<逻辑表达式>|<逻辑表达式><逻辑表达式>|<逻辑表达式><逻辑表达式>

55(1)逻辑表达式<逻辑表达式>→55<布尔常量>→true|false<布尔变量>→<标识符>、、的优先顺序由低到高56<布尔常量>→true|false56(2)关系表达式<关系表达式>→<算术表达式><关系运算符><算术表达式><关系运算符>→<|<=|>|>=|=|<>关系运算符没有优先顺序、没有重载57(2)关系表达式<关系表达式>→57(3)算术表达式<算术表达式>→ <常量>|<变量>|(<算术表达式>) |<算术表达式><算术运算符><算术表达式>

58(3)算术表达式<算术表达式>→58算术运算符有优先顺序、允许重载算术运算符服从左结合(上述描述具有二义性)59算术运算符有优先顺序、允许重载59没有二义性的描述<算术表达式>→<算术表达式>+<项>|<算术表达式>-<项>|<项><项>→<项>*<因子>|<项>/<因子>|<因子><因子>→(<算术表达式>)|<常量>|<变量>60没有二义性的描述<算术表达式>→<算术表达式>+<项>6<变量>→<标识符><常量>→<各种常量>61<变量>→<标识符>614.3.2语句的设计说明语句执行语句624.3.2语句的设计说明语句62(1)说明语句<说明语句>→<常量说明> |<类型说明> |<变量说明>63(1)说明语句<说明语句>→<常量说明>63<常量说明>→const<标识符>=<常量><类型说明>→type<类型名>=<用户定义类型><变量说明>→var<变量表>:<类型><变量表>→<变量>|<变量表>,<变量>64<常量说明>→const<标识符>=<常量>64<类型>→int|real|char|boolean|<类型名><变量>→<标识符><类型名>→<标识符>65<类型>→int|real|char|boo(2)执行语句<执行语句>→<赋值语句>|<控制语句> |<复合语句>|<I/O输出语句><赋值语句>→<变量>:=<表达式><控制语句>→<顺序>|<选择>|<重复>针对面向的问题选择一个方案

66(2)执行语句<执行语句>→<赋值语句>|<控制语<复合语句>→begin<语句表>end<语句表>→<执行语句>|<执行语句表>;<执行语句><I/O输出语句>→read(<变量>)|write(<变量>)67<复合语句>→begin<语句表>end674.3.3程序单元的设计<程序单元>→<程序单元关键字><程序单元名>(<形参表>);<程序单元体><程序单元关键字>→procedure|function|…<程序单元名>→<标识符><形参表>→<形参>|<形参表>;<形参>684.3.3程序单元的设计<程序单元>→68形参可以没有;如果有,可以是变量、数组、过程等,必须说明类型及与实参的绑定方式。69形参可以没有;69<程序单元体>→begin<说明部分>;<执行部分>end<说明部分>→<说明语句表><说明语句表>→<说明语句>|<说明语句表>;<说明语句>70<程序单元体>→begin<说明部分>;70<执行部分>→<执行语句表><执行语句表>→<执行语句>|<执行语句表>;<执行语句>71<执行部分>→<执行语句表>71<分程序>→begin<说明部分>;<执行部分>end<说明部分>→<变量说明表>;<数组说明表>;<过程说明表>;<分程序表>72<分程序>→begin<说明部分>;72<变量说明表>→<变量说明>|<变量说明表>;<变量说明><数组说明表>→<数组说明>|<数组说明表>;<数组说明>73<变量说明表>→<变量说明>73<过程说明表>→<过程说明>|<过程说明表>;<过程说明><分程序表>→<分程序>|<分程序表>;<分程序>74<过程说明表>→<过程说明>744.3.4程序的设计<程序>→<分程序>754.3.4程序的设计<程序>→<分程序>754.3.5一些设计准则(1)可写性语言提供一些机制来方便地表达设计方法以帮助完成程序设计,使得程序员可以把注意力集中在理解问题和求解问题上。764.3.5一些设计准则(1)可写性76(2)可读性抽象、注解;影响可修改性和可维护性。(3)可靠性软件系统正常工作的能力。数据抽象、信息隐蔽、异常处理机制有利于提高可靠性。77(2)可读性77第4章程序语言的设计第2章和第3章分别讨论了程序设计语言的数据类型和控制结构,分别描述程序的数据结构和算法。本章介绍语言的设计方法。78第4章程序语言的设计第2章和第3章分别讨论了程序设计语言的1语言的定义语言=语法+语义语法:用以构造程序及其成分(语法单位)的规则的集合。语义:用以规定语法正确的语法单位的含义的规则的集合。791语言的定义语言=语法+语义21.1语法1.1.1几个术语(1)字母表语言允许使用字符的集合,其元素称为字符(2)符号由字符组成的有限串(字符串)(3)字汇表由符号组成的集合,其元素称为字801.1语法1.1.1几个术语3(4)词法规则规定什么样的字符序列可以构成语言的有效符号(单词符号)(5)语法规则确定一个符号序列是否为一个句子,并提供句子的结构(什么样的符号序列是合法的)81(4)词法规则4语言的定义语言的定义可以从生成(文法)和识别(语法图)的观点进行。82语言的定义语言的定义可以从生成(文法)和识别(语法图)的观点1.1.2生成的观点用文法来定义语言(1)一个简单英语句子的描述I/Studentsstudy/run831.1.2生成的观点用文法来定义语言6(2)文法<句子>→<主语><谓语><主语>→I|Students<谓语>→study|run84(2)文法7(3)语言根据文法规则生成的所有句子的集合,称为语言。85(3)语言8标识符的文法<标识符>→<字母><标识符>→<标识符><字母><标识符>→<标识符><数字><字母>→A|…|Z|a|…|z<数字>→0|…|986标识符的文法<标识符>→<字母>9表达式的文法<表达式>→<标识符><表达式>→(<表达式>)<表达式>→<表达式><运算符><表达式><运算符>→+|-|*|/87表达式的文法<表达式>→<标识符>101.1.3识别的观点用语法图来定义的语言(1)语法图的构造终结符x对应一个语法图非终结符N对应一个语法图xN881.1.3识别的观点用语法图来定义的语言xN11N→1|2|…|n对应一个语法图2n189N→1|2|…|n对应一个语法图2n112→12…m对应一个语法图b1b2bm90→12…m对应一个语法图b1b2bm13→|对应一个语法图gb91→|对应一个语法图gb14(2)识别原则若一个终结符序列是合法的,那么,必须从语法图的入口边通过语法图而到达出口边,而且在通过的过程中,恰恰能识别该终结符序列。92(2)识别原则15(3)语言语法图能识别的所有终结符序列的集合,称为语言。93(3)语言16标识符的语法图字母字母数字94标识符的语法图字母字母数字17表达式的语法图标识符表达式运算符()表达式表达式95表达式的语法图标识符表达式运算符()表达式表达式18语法描述方法等价文法和语法图是语言语法的等价表示。文法从产生的观点来定义语言,更通用、更准确地给出语言的语法结构。语法图以识别的观点定义语言,更直观、更清晰地给出语言的语法结构。采用生成的方法还是采用识别的方法来定义语言,由语言的设计者确定。96语法描述方法等价文法和语法图是语言语法的等价表示。191.1.4语法描述的用途(1)表达语言设计者的意图和设计目标(2)指导语言的使用者编写正确的程序(3)指导语言的实现者编写语法检查程序来识别所有语法单位971.1.4语法描述的用途(1)表达语言设计者的意图和设计1.2语义语义:定义语言合法句子的含义(即句子的作用和意义)的规则组合。文法和语法图已成为语法描述的典型工具,但语义描述至今尚无人们普遍接受的典型描述工具。许多语言仍采用自然语言描述语义。981.2语义语义:定义语言合法句子的含义(即句子的作用和意义本章的语言设计,采用自然语言来描述语义。(下篇的)语言实现涉及到的语义,将以操作语义学的方法来描述。即以一个抽象机的行为来描述语言的各个结构的作用和意义。99本章的语言设计,采用自然语言来描述语义。22抽象机GAM的组成由存储器,控制器,处理器,指令指针ip组成。存储器分为代码区和数据区。100抽象机GAM的组成由存储器,控制器,处理器,指令指针ip组成抽象机GAM的模型ip代码存储器(C)数据存储器(D)101抽象机GAM的模型ip代码存储器(C)数据存储器(D)24抽象机GAM的结构代码区(代码存储器),存放程序指令,代码存储器的内容不允许被修改。数据区(数据存储器),存放必要的信息和程序中的数据。102抽象机GAM的结构代码区(代码存储器),存放程序指令,代码存ip的内容是代码区存储单元的地址,该单元的内容是一条指令。C[i]和D[i]表示相应存储区第i个单元。ip:=ip+4表示指针指向下一条指令,假定每条指令占4个存储单元(字节)。103ip的内容是代码区存储单元的地址,该单元的内容是一条指令。GAM一旦启动,由专门的装入程序将一个要运行的程序装入代码存储器,并置ip指向该程序的第一条指令。然后依次完成下述工作:104GAM一旦启动,由专门的装入程序将一个要运行的程序装入代码存(1)执行ip所指向的指令。(2)修改ip的内容。若所执行的指令未修改ip,则ip+4,使之指向下一条指令。(3)若ip指向特殊的STOP指令,则终止执行,否则转回执行(1)。105(1)执行ip所指向的指令。28假设GAM对各种程序设计语言所常用的运算符,如:+,-,*,/,>,<,>=等,都有相应的指令与之对应。以GAM的操作行为来定义语言的语义,是基于已经“理解”GAM的语义。因此,一旦用GAM的操作行为来定义语言结构的作用时,就知道了语言的意义。106假设GAM对各种程序设计语言所常用的运算符,如:+,-,2文法2.1文法的定义文法是描述语言语法结构的形式规则。通用,准确,易于理解,描述能力强1072文法2.1文法的定义302.1.1文法的形式定义G=(VT,VN,S,P)VT为终结符的非空有限集;VN为非终结符的非空有限集;S是文法的开始符号,S∈VN;P为产生式的非空有限集。1082.1.1文法的形式定义G=(VT,VN,S,P)产生式是一个有序偶对(,),记为:→和是由终结符、非终结符组成的符号串,但至少应含有一个非终结符。即:

V*VNV*

V*109产生式是一个有序偶对(,),记为:32产生式的简化→1→2…

→n简化为:→1|2|…|n110产生式的简化→133文法的表示描述文法,直接给出产生式集合即可。例如,算术表达式文法G(E)E→E+T|TT→T*F|FF→(E)|i111文法的表示描述文法,直接给出产生式集合即可。342.1.2文法的分类(1)无限制文法(0型文法)产生式为→,V*VNV*,V*(2)上下文有关文法(1型文法)产生式为A→,AVN,、V*,V+

1122.1.2文法的分类(1)无限制文法(0型文法)35(3)上下文无关文法(2型文法)产生式为A→,AVN,V*(4)正则文法(3型文法)产生式为A→或A→B,VT*,BVN113(3)上下文无关文法(2型文法)362.2文法产生的语言2.2.1推导与归约(1)直接推导:wα

即由产生式右边替换产生式左边(2)推导:α1

*αn、α1

+αn

1142.2文法产生的语言2.2.1推导与归约37E→E+E│E*E│(E)│ii+i*i的最左推导过程EE+Ei+Ei+E*Ei+i*Ei+i*i115E→E+E│E*E│(E)│iEE+Ei+E最右推导(规范推导)EE+EE+E*E

E+E*iE+i*ii+i*i116最右推导(规范推导)EE+EE+E*E39EE*EE*iE+E*iE+i*ii+i*i117EE*EE*i402.2.2句型和句子文法G=(VT,VN,S,P)S*α若αV*,则α为文法G的一个句型若αVT*,则α是一个句子1182.2.2句型和句子文法G=(VT,VN,S,P)41句型与句子的关系只含终结符的句型就是一个句子。一个句子是句型。一个句型不一定是句子。119句型与句子的关系只含终结符的句型就是一个句子。422.2.3文法产生的语言文法G=(VT,VN,S,P)产生的所有句子的集合,称为由文法G产生的语言,记为L(G),即L(G)={α│S+α且αVT*

}1202.2.3文法产生的语言文法G=(VT,VN,S,P)43文法实例1文法G1:E→E+T|TT→T*F|FF→(E)|i语言L(G1)表示由符号i、+、*、(、)构成的表达式。121文法实例1文法G1:44文法实例2文法G2:S→aS|aPP→bP|bQQ→cQ|c语言L(G2)={aibjck|i,j,k1}122文法实例2文法G2:45文法实例3文法G3:S→aSPQ│abQQP→PQbP→bbbQ→bccQ→cc123文法实例3文法G3:46S…ai-1S(PQ)i-1ai-1abQ(PQ)i-1aibPi-1Qi…aibiQi…aibicQi-1…aibici语言L(G3)={aibici|i1}124S…ai-1S(PQ)i-147说明1)文法的重要特性用有限规则描述无穷的语言。2)文法的等价对两个文法G和G’,如果L(G)=L(G’),则称文法G和文法G’等价。125说明1)文法的重要特性482.2.4推导树(语法树)(1)推导树是一棵有序的标记树每个结点的标记是文法G的非终结符或终结符;标记为A的内部结点从左到右有子结点X1,X2,…,Xn,则A→X1…Xn是一个产生式;1262.2.4推导树(语法树)(1)推导树是一棵有序的标记树对于文法E→E+E│E*E│(E)│i句子i+i*i的推导树为:127对于文法50E(E)EE*EE+iiiE(E)EE+EEiii*128E(E)EE*EE+iiiE(E)EE+EEiii*51(2)推导树的边缘推导树所有叶结点从左到右的连接。(3)文法的二义性一个句子有两棵不同的推导树。129(2)推导树的边缘524.3语言的设计设计的依据:面向的问题和面向的机器设计内容(语法):表达式、语句、程序单元、程序描述方式:语法——文法、语义——自然语言1304.3语言的设计设计的依据:534.3.1表达式的设计逻辑表达式关系表达式算术表达式1314.3.1表达式的设计逻辑表达式54(1)逻辑表达式<逻辑表达式>→<布尔常量>|<布尔变量>|<关系表达式>|<逻辑表达式>|<逻辑表达式><逻辑表达式>|<逻辑表达式><逻辑表达式>

132(1)逻辑表达式<逻辑表达式>→55<布尔常量>→true|false<布尔变量>→<标识符>、、的优先顺序由低到高133<布尔常量>→true|false56(2)关系表达式<关系表达式>→<算术表达式><关系运算符><算术表达式><关系运算符>→<|<=|>|>=|=|<>关系运算符没有优先顺序、没有重载134(2)关系表达式<关系表达式>→57(3)算术表达式<算术表达式>→ <常量>|<变量>|(<算术表达式>) |<算术表达式><算术运算符><算术表达式>

135(3)算术表达式<算术表达式>→58算术运算符有优先顺序、允许重载算术运算符服从左结合(上述描述具有二义性)136算术运算符有优先顺序、允许重载59没有二义性的描述<算术表达式>→<算术表达式>+<项>|<算术表达式>-<项>|<项><项>→<项>*<因子>|<项>/<因子>|<因子><因子>→(<算术表达式>)|<常量>|<变量>137没有二义性的描述<算术表达式>→<算术表达式>+<项>6<变量>→<标识符><常量>→<各种常量>138<变量>→<标识符>614.3.2语句的设计说明语句执行语句1394.3.2语句的设计说明语句62(1)说明语句<说明语句>→<常量说明> |<类型说明> |<变量说明>140(1)说明语句<说明语句>→<常量说明>63<常量说明>→const<标识符>=<常量><类型说明>→type<类型名>=<用户定义类型><变量说明>→var<变量表>:<类型><变量表>→<变量>|<变量表>,<变量>141<常量说明>→const<标识符>=<常量>64<类型>→int|real|char|boolean|<类型名><变量>→<标识符><类型名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论