程序设计语言常用语法与翻译PPT讲稿.ppt
《程序设计语言常用语法与翻译PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《程序设计语言常用语法与翻译PPT讲稿.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计语言常用语程序设计语言常用语法与翻译法与翻译第1页,共44页,编辑于2022年,星期日 第四章第四章 程序设计语言常用的程序设计语言常用的 语法与翻译方法语法与翻译方法信息学院软件工程教研室信息学院软件工程教研室第2页,共44页,编辑于2022年,星期日4.1 逆波兰表示法逆波兰表示法n n逆波兰表示表达式逆波兰表示表达式 高级语言表示表达式高级语言表示表达式n n ab*a*bn n ab*c+a*b+cn n abcd/+*a*(b+c/d)n n ab*cd*+a*b+c*d信息学院软件工程教研室信息学院软件工程教研室第3页,共44页,编辑于2022年,星期日n n高级语言表达式
2、高级语言表达式高级语言表达式高级语言表达式E E的逆波兰表示法可这样定义:的逆波兰表示法可这样定义:的逆波兰表示法可这样定义:的逆波兰表示法可这样定义:n n(1)若)若E是高级语言中的一个变量或常数,则是高级语言中的一个变量或常数,则E的的逆波兰表示式仍是逆波兰表示式仍是E。n n(2)若高级语言中的表达式为)若高级语言中的表达式为E1 op E2,其中,其中,op是一个二元算符,是一个二元算符,E1、E2也是表达式,则逆波兰式也是表达式,则逆波兰式表示为表示为E1 E2 op,其中,其中,E1是是E1的逆波兰式,的逆波兰式,E2是是E2的逆波兰式。的逆波兰式。n n(3)若高级语言中的表达
3、式为()若高级语言中的表达式为(E),则逆波兰表),则逆波兰表示式为去掉括号的示式为去掉括号的E,E为为E的逆波兰表示式。的逆波兰表示式。信息学院软件工程教研室信息学院软件工程教研室第4页,共44页,编辑于2022年,星期日n n三地址代码是由下面一般形式的语句构成的序列。三地址代码是由下面一般形式的语句构成的序列。三地址代码是由下面一般形式的语句构成的序列。三地址代码是由下面一般形式的语句构成的序列。n n x:=y op z x:=y op zn n其中其中其中其中x x、y y、z z是变量名或编译时产生的临时变量名;是变量名或编译时产生的临时变量名;是变量名或编译时产生的临时变量名;是
4、变量名或编译时产生的临时变量名;y y、z z还可以是常数;还可以是常数;还可以是常数;还可以是常数;opop代表某种操作符。这种中间语言的代表某种操作符。这种中间语言的代表某种操作符。这种中间语言的代表某种操作符。这种中间语言的特点有两个。特点有两个。特点有两个。特点有两个。n n(1 1)非常接近汇编语言形式,包括汇编语言中最基本)非常接近汇编语言形式,包括汇编语言中最基本)非常接近汇编语言形式,包括汇编语言中最基本)非常接近汇编语言形式,包括汇编语言中最基本的操作。的操作。的操作。的操作。n n(2 2)每个语句中赋值号的右边只有一个操作符,使得)每个语句中赋值号的右边只有一个操作符,使
5、得)每个语句中赋值号的右边只有一个操作符,使得)每个语句中赋值号的右边只有一个操作符,使得句子意义最小且不可分。例如,源语言表达式句子意义最小且不可分。例如,源语言表达式句子意义最小且不可分。例如,源语言表达式句子意义最小且不可分。例如,源语言表达式x+y*zx+y*z可被翻译成如下的句子序列:可被翻译成如下的句子序列:可被翻译成如下的句子序列:可被翻译成如下的句子序列:n nT1:=y*zT1:=y*zn nT2:=x+T1T2:=x+T14.2 4.2 三地址代码三地址代码三地址代码三地址代码信息学院软件工程教研室信息学院软件工程教研室第5页,共44页,编辑于2022年,星期日n n三地址
6、代码的语句形式可分为两类:三地址代码的语句形式可分为两类:n n一类是带有各种运算操作的赋值语句一类是带有各种运算操作的赋值语句n n第二类是转移语句第二类是转移语句 n n三地址码语句可看成是一种中间代码的抽象三地址码语句可看成是一种中间代码的抽象形成,在编译程序中,三地址代码的具体实形成,在编译程序中,三地址代码的具体实现常以记录的形式表示,通常有现常以记录的形式表示,通常有3种表示方种表示方法:四元式、三元式、间接三元式法:四元式、三元式、间接三元式 信息学院软件工程教研室信息学院软件工程教研室第6页,共44页,编辑于2022年,星期日4.3 4.3 程序设计语言常用语法程序设计语言常用
7、语法程序设计语言常用语法程序设计语言常用语法n n4.3.1 表达式语法(算术)n n4.3.2 赋值语句n n4.3.3 if语句n n4.3.4 循环语句n n4.3.5 说明语句n n4.3.6 函数的定义与调用n n4.3.7 程序语句序列文法信息学院软件工程教研室信息学院软件工程教研室第7页,共44页,编辑于2022年,星期日4.3.1 4.3.1 表达式语法(算术)表达式语法(算术)表达式语法(算术)表达式语法(算术)n n根据算术表达式的定义,一般算术表达式记为根据算术表达式的定义,一般算术表达式记为根据算术表达式的定义,一般算术表达式记为根据算术表达式的定义,一般算术表达式记为
8、E E,其,其,其,其文法被定义为:文法被定义为:文法被定义为:文法被定义为:n nE EE E op op E E (op op 为双目操作符)为双目操作符)为双目操作符)为双目操作符)n nE Eop op E E (op op 为单目操作符)为单目操作符)为单目操作符)为单目操作符)n nE EDD|idid (DD为数字,为数字,为数字,为数字,idid为标识符号)为标识符号)为标识符号)为标识符号)n n这是一个无法直接使用的二义性文法,必须使用前述这是一个无法直接使用的二义性文法,必须使用前述这是一个无法直接使用的二义性文法,必须使用前述这是一个无法直接使用的二义性文法,必须使用前
9、述两种消除二义性文法的策略将文法中的二义性表达加两种消除二义性文法的策略将文法中的二义性表达加两种消除二义性文法的策略将文法中的二义性表达加两种消除二义性文法的策略将文法中的二义性表达加以限制或改写。以限制或改写。以限制或改写。以限制或改写。信息学院软件工程教研室信息学院软件工程教研室第8页,共44页,编辑于2022年,星期日n n对这种表达式保留文法的二义性也有好处。对这种表达式保留文法的二义性也有好处。不过在作语法分析时要规定算符间的优先关不过在作语法分析时要规定算符间的优先关系和结合顺序,这样才能确定语句的最终意系和结合顺序,这样才能确定语句的最终意义。这就是常用于表达式语法分析的算符优
10、义。这就是常用于表达式语法分析的算符优先分析法。先分析法。信息学院软件工程教研室信息学院软件工程教研室第9页,共44页,编辑于2022年,星期日n n无二义的表达式文法一般定义为:无二义的表达式文法一般定义为:n n n n无论采用哪一种文法形式,只要最终语句无论采用哪一种文法形式,只要最终语句的意义是确定、不含糊的,并且是统一的,的意义是确定、不含糊的,并且是统一的,那么同一个语句所对应的抽象语法树就是那么同一个语句所对应的抽象语法树就是相同的。相同的。信息学院软件工程教研室信息学院软件工程教研室第10页,共44页,编辑于2022年,星期日4.3.2 4.3.2 赋值语句赋值语句赋值语句赋值
11、语句n n赋值语句的文法最简单,定义为:n n n n其中,是一个名字,它表示各种类型的变量,包括下标变量(数组)。“=”是赋值号,E是表达式,赋值语句的语义是把赋值号右边表达式的值放到赋值号左边名字所指的地址中去。信息学院软件工程教研室信息学院软件工程教研室第11页,共44页,编辑于2022年,星期日n n对赋值语句文法定义的句子而言,相应的对赋值语句文法定义的句子而言,相应的抽象语法树如图所示。抽象语法树如图所示。信息学院软件工程教研室信息学院软件工程教研室第12页,共44页,编辑于2022年,星期日4.3.3 if4.3.3 if4.3.3 if4.3.3 if语句语句语句语句n nif
12、语句是控制语句的一种,它的文法被定义为:语句是控制语句的一种,它的文法被定义为:n n这个语法有两个候选式,这两个候选式的前这个语法有两个候选式,这两个候选式的前半部分是一样的,即:。也就是说,在一个半部分是一样的,即:。也就是说,在一个符号串之后可能紧跟一个或跟其他的符号串符号串之后可能紧跟一个或跟其他的符号串。由于可选的影响,这个文法有二义性的,。由于可选的影响,这个文法有二义性的,即所谓即所谓“悬挂问题悬挂问题”。信息学院软件工程教研室信息学院软件工程教研室第13页,共44页,编辑于2022年,星期日n n考虑以下符号串:n n其中,符号E1、E2、S1、S2都是由终结符组成的符号串。n
13、 n这个串有两个分析树该语法树把看作与其最近的同属一层 该语法树把看作与整句之首的同属一层 信息学院软件工程教研室信息学院软件工程教研室第14页,共44页,编辑于2022年,星期日n n改写的文法如下:改写的文法如下:n n这个文法用非终结符这个文法用非终结符这个文法用非终结符这个文法用非终结符MM单独定义可嵌套的单独定义可嵌套的单独定义可嵌套的单独定义可嵌套的ifelseifelse语句。它是无二义的,只是有些累赘,也不太容语句。它是无二义的,只是有些累赘,也不太容语句。它是无二义的,只是有些累赘,也不太容语句。它是无二义的,只是有些累赘,也不太容易理解。实际上,并不是所有的语句文法一定会易
14、理解。实际上,并不是所有的语句文法一定会易理解。实际上,并不是所有的语句文法一定会易理解。实际上,并不是所有的语句文法一定会存在悬挂,有些语言的设计就避免了这个问题。存在悬挂,有些语言的设计就避免了这个问题。存在悬挂,有些语言的设计就避免了这个问题。存在悬挂,有些语言的设计就避免了这个问题。如果所有的语句都有结尾,或其他类似符号结尾,如果所有的语句都有结尾,或其他类似符号结尾,如果所有的语句都有结尾,或其他类似符号结尾,如果所有的语句都有结尾,或其他类似符号结尾,就不存在这个问题了。就不存在这个问题了。就不存在这个问题了。就不存在这个问题了。信息学院软件工程教研室信息学院软件工程教研室第15页
15、,共44页,编辑于2022年,星期日n n语句又称分支语句。在语句又称分支语句。在C中,它的语义是根中,它的语义是根据表达式的值决定是否执行语句据表达式的值决定是否执行语句S或执行两或执行两个语句个语句S中的某一个。仔细分析一下语句的符中的某一个。仔细分析一下语句的符号串,真正有可执行意义的符号只有号串,真正有可执行意义的符号只有E和和S两两个非终结符,其他终结符只是标记符号串的个非终结符,其他终结符只是标记符号串的结构形式。因此,在建立抽象语法树的时候,结构形式。因此,在建立抽象语法树的时候,我们可以摆脱那些没有意义的符号。我们可以摆脱那些没有意义的符号。信息学院软件工程教研室信息学院软件工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 常用 语法 翻译 PPT 讲稿
限制150内