ppt编译原理7章7

ppt编译原理7章7

ID:46526027

大小:199.50 KB

页数:12页

时间:2019-11-24

ppt编译原理7章7_第1页
ppt编译原理7章7_第2页
ppt编译原理7章7_第3页
ppt编译原理7章7_第4页
ppt编译原理7章7_第5页
资源描述:

《ppt编译原理7章7》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第七章语法制导的翻译7.1基本概念1.编译系统的两类翻译:非语法制导的翻译语法制导的翻译:以语法分析为主导的语义处理--在源程序的语法分析中嵌入语义处理。即,利用源程序的文法框架生成中间代码或目标代码。Tips:语义学:semanticslexemelexiconsemantic例(1)递归子程序法的代码生成(2)利用优先矩阵的语法分析直接生成目标代码(3)利用逆波兰算法进行语法、语义分析(1)语法分析-语义分析:直接生成目标代码优点:编译相对简单,时间效率高缺点:空间代价较高(2)语法分析--中间代码-

2、优化-目标代码7.2两种编译流程例如有如下表达式:a+b a+b*c (a+b)*c逆波兰表示ab+abc*+ab+c*可以看出后缀表示具备以下优点:(1)无括号,形式简单清楚;(2)运算符的顺序与表达式的运算次序相同;在具体处理过程中,可以从左到右检查表达式的各符号,遇到运算分量则保存,若遇到运算符,则取其前面的两个分量(双目运算)或一个分量(单目运算)进行处理。后缀表示法与前缀表示法及中缀表示法相比较,其共同的特点是:(1)运算符的个数不变;(2)运算量的次序和个数不变。在计算机处理过程中可以用一个栈

3、(硬件或软件栈)来计算它的值。一般的计算过程是:自左向右扫描后缀式,每逢遇到运算量就令其入栈;遇到K目运算符,则将它作用于栈顶的K个项,并用运算结果代替这K个项。实际计算时,每遇到一个K目运算符,与它有关的K个运算量已在栈顶,运行结果在原来的K个项从栈中移出后置于栈顶。例如:ab+c*的计值过程如下:1.a入栈;a2.b入栈;b3.将栈顶两项相加,移走栈顶的两个项,把和数E1置于栈顶E1E1=a+b4.c入栈.c5.将栈顶两项相乘,移走栈顶的两个项,把积E2置于栈顶;E2E2=E1*c二、其它语法成分的逆

4、波兰表示:1.赋值语句:<左部>:=<表达式>把‘:=’看成一个运算符号——赋值运算,它为一特殊的双目运算,则对应的逆波兰表示为:<左部><表达式的逆波兰表示>:=例:x:=100逆波兰表示为:x100:=x:=a*b+c/d逆波兰表示为:xab*cd/+:=在进行具体处理时,可以采用与表达式相似的方法,不同之处是进行运算时,栈中保存的是<左部>变量的地址,而不是它的直,最后的处理不是得到一个结果,而是进行赋值(将表达式的值送到指定的内存单元),所以,赋值工作完成后,应将栈顶两项(变量地址和表达式的值)退

5、栈。2.转向语句:goto<标号>它对应的逆波兰表示为:<标号>LJLabelJump含义为转向某标号处,LJ可看成单目运算符,<标号>是LJ的运算分量例:goto100;100LJgotoLoop;LoopLJ3.条件语句:在条件语句的逆波兰表示中,它是通过转向逆波兰式中的第几个符号去执行来实现,要转去的符号,用它的“序号”来表示:<序号>RJ<布尔表达式逆波兰式><序号>TJ<布尔表达式逆波兰式><序号>FJ无条件转向转向逆波兰式中的第<序号>个符号去执行,RJ为单目运算符号;布尔表达式值为真转序号处

6、执行;布尔表达式值为假转序号处执行;对于条件语句:if<布尔表达式>then<语句1>else<语句2>可用以下的逆波兰式表示:<布尔表达式>的逆波兰式 <序号1>FJ <语句1的逆波兰式> <序号2>RJ<序号1>:<语句2的逆波兰式><序号2>:……可以不分行书写而将它们写在一行中。<序号1>是指“<语句2>的逆波兰表示”中第一个单词的序号<序号1>是指条件语句的后继语句的逆波兰表示中第一个单词的序号例:有条件语句:ifa

7、FJ(6)xab+:=(11)RJ(13)xab-:=(18)1318或写成一行:ab<13FJxab+:=18RJxab-:=4.循环语句:我们以for循环为例进行说明:fori:=atobdos先将其展开成等价的条件语句:i:=a;10:ifi<=bthenbegin s;i:=i+1:goto10end然后用条件语句和转向语句的逆波兰表示,将它表示成逆波兰式。其它形式的循环语句,也是首先展开成等价的条件语句表示,然后表示成逆波兰式。例如:fori:=1to100dos:=s+i先将其展开:i:=1;

8、10:ifi<=100thenbegin s:=s+i;i:=i+1:goto10 end逆波兰式(1)i1:=(4)10:(6)i100<=(9)FJ(11)ssi+:=(16)ii1+:=(21)4RJ(23)(1)i1:=(4)i100<=(7)FJ(9)ssi+:=(14)ii1+:=(19)4RJ(21)2321写成一行:i1:=i100<=21FJssi+:=ii1+:=4RJ7.2四元式表示一、四元式的格式:(<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。