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