一个简单的语法制导翻译器课件

上传人:陈** 文档编号:251868683 上传时间:2024-11-10 格式:PPTX 页数:48 大小:271.75KB
返回 下载 相关 举报
一个简单的语法制导翻译器课件_第1页
第1页 / 共48页
一个简单的语法制导翻译器课件_第2页
第2页 / 共48页
一个简单的语法制导翻译器课件_第3页
第3页 / 共48页
点击查看更多>>
资源描述
单击编辑母版标题样式,#,/34,第,3,4,次课 一个简单的语法制导翻译器,2.32.5,中缀表达式转后缀表达式,本次课主要内容都是基于如何将中缀表达式转换为后缀表达式,9 5+2-95-2+,2.3,语法制导翻译的定义,第二章 一个简单的语法制导翻译器,语法制导翻译:对语法树进行,语义分析,例如:将中缀表达式转化成为后缀,9 -5 +2 9 5 2+,?,list,list,list,digit,9,digit,digit,-,5,+,2,第二章 一个简单的语法制导翻译器,语法制导翻译:对语法树进行,语义分析,语法制导定义,语法制导翻译方案,第二章 一个简单的语法制导翻译器,语法制导翻译,语法制导定义,(syntax-directed definition),每个文法符号和一个属性集合相关联,例树中,”.t”,是属性,每个产生式和一组语义规则相关联,expr.t,=95-2+,expr.t,=95-,expr.t,=9,term.t,=9,9,term.t,=5,5,-,+,term.t,=2,2,产生式,语义规则,expr,expr,1,+,term,expr.t,=,expr,1,.t,|,term.t,|+,expr,expr,1,-,term,expr.t,=,expr,1,.t,|,term.t,|-,expr,term,expr.t,=,term.t,term,0,term.t,=0,term,1,term.t,=1,term,9,term.t,=9,例子:,9-5+2,第二章 一个简单的语法制导翻译器,语法制导翻译,属性,综合属性,如果某个属性在语法分析树节点,N,上的值由,N,的子节点和,N,本身的属性值确定,则该属性为综合属性,继承属性,如果某个属性由语法分析树中该节点本身、父节点以及兄弟节点上的属性值决定,则该属性为继承属性,第二章 一个简单的语法制导翻译器,后缀表达式(,postfix notation,):,E,如何,E,是一个变量或常量,则,E,的后缀是本身,如果,E,是一个形如,E,1,op,E,2,的表达式,,op,是二目运算符,那么,E,的后缀表示是:,E,1,E,2,op,,这里,E,1,和,E,2,分别是,E,1,和,E,2,的后缀表示,如果,E,是一个形如(,E,1,)的表达式,则,E,的后缀表示就是,E,1,的后缀表示,第二章 一个简单的语法制导翻译器,语法制导翻译,语法制导定义,(syntax-directed definition),每个文法符号和一个属性集合相关联,例树中,”.t”,是属性,每个产生式和一组语义规则相关联,expr.t,=95-2+,expr.t,=95-,expr.t,=9,term.t,=9,9,term.t,=5,5,-,+,term.t,=2,2,产生式,语义规则,expr,expr,1,+,term,expr.t,=,expr,1,.t,|,term.t,|+,expr,expr,1,-,term,expr.t,=,expr,1,.t,|,term.t,|-,expr,term,expr.t,=,term.t,term,0,term.t,=0,term,1,term.t,=1,term,9,term.t,=9,后缀表达式,第二章 一个简单的语法制导翻译器,语法制导翻译,语法制导定义,(syntax-directed definition),每个文法符号和一个属性集合相关联,例树中,”.t”,是属性,每个产生式和一组语义规则相关联,expr.t,=95-2+,expr.t,=95-,expr.t,=9,term.t,=9,9,term.t,=5,5,-,+,term.t,=2,2,产生式,语义规则,expr,expr,1,+,term,expr.t,=,expr,1,.t,|,term.t,|+,expr,expr,1,-,term,expr.t,=,expr,1,.t,|,term.t,|-,expr,term,expr.t,=,term.t,term,0,term.t,=0,term,1,term.t,=1,term,9,term.t,=9,简单语法制导定义,第二章 一个简单的语法制导翻译器,语法制导翻译,语法制导定义,(syntax-directed definition),深度优先遍历,procedure,visit,(node,N,),for(,从左到右遍历,N,的每个子节点,C,),visit,(,C,);,按照节点,N,上的语义规则求值,;,expr.t,=95-2+,expr.t,=95-,expr.t,=9,term.t,=9,9,term.t,=5,5,-,+,term.t,=2,2,产生式,语义规则,expr,expr,1,+,term,expr.t,=,expr,1,.t,|,term.t,|+,expr,expr,1,-,term,expr.t,=,expr,1,.t,|,term.t,|-,expr,term,expr.t,=,term.t,term,0,term.t,=0,term,1,term.t,=1,term,9,term.t,=9,第二章 一个简单的语法制导翻译器,语法制导翻译:对语法树进行语义分析,语法制导定义,语法制导翻译方案,将程序片段附加到一个文法的各个产生式上的表示法,rest,+,term,print(+),rest,1,第二章 一个简单的语法制导翻译器,语法制导翻译:对语法树进行,语义分析,语法制导定义,语法制导翻译方案,将程序片段附加到一个文法的各个产生式上的表示法,被嵌入到产生式体中的程序片段成为语义动作(,semantic action,)。语义动作用花括号括起来。,rest,+,term,print(+),rest,1,rest,+,term,print(+),rest,1,第二章 一个简单的语法制导翻译器,语法制导翻译:对语法树进行,语义分析,语法制导定义,语法制导翻译方案,将程序片段附加到一个文法的各个产生式上的表示法,如何,E,是一个变量或常量,则,E,的后缀是本身,如果,E,是一个形如,E,1,op,E,2,的表达式,,op,是二目运算符,那么,E,的后缀表示是:,E,1,E,2,op,,这里,E,1,和,E,2,分别是,E,1,和,E,2,的后缀表示,如果,E,是一个形如(,E,1,)的表达式,则,E,的后缀表示就是,E1,的后缀表示,(9 5)+2 9 5 2 +,?,9 5 2 +-3,*,第二章 一个简单的语法制导翻译器,语法制导翻译:对语法树进行,语义分析,语法制导定义,语法制导,翻译方案,expr,expr,+,term,print(+),expr,-,term,print(-),term,9,print(9),5,print(5),2,print(2),翻译方案,expr,expr,1,+,term,print(+),expr,expr,1,term,print(-),expr,term,term,0,print(0),term,1,print(1),term,9,print(9),总结,语法制导的定义,后缀表达式,语法制导的翻译方案,2.4,语法分析,第二章 一个简单的语法制导翻译器,语法分析,决定如何使用一个文法生成一个终结符号串的过程,给定输入:,终结符号串:,9,5,+,2,文法:,list,list,+,digit,list,list,-,digit,list,digit,digit,0|1|2|3|4|5|6|7|8|9,输出:?,第二章 一个简单的语法制导翻译器,语法分析,决定如何使用一个文法生成一个终结符号串的过程,给定输入:,终结符号串:,9,5,+,2,文法:,list,list,+,digit,list,list,-,digit,list,digit,digit,0|1|2|3|4|5|6|7|8|9,输出:?,list,list,list,digit,9,digit,digit,-,5,+,2,第二章 一个简单的语法制导翻译器,语法分析,决定如何使用一个文法生成一个终结符号串的过程,上下文无关文法,通常,Parsing,的时间复杂度是,O,(,n,3,),对于程序设计语言,时间复杂度是,O,(,n,),自顶向下方法,自底向上方法,第二章 一个简单的语法制导翻译器,语法分析,自顶向下分析方法,例:给定文法:,stmt,expr,|,if,(,expr,),stmt,|,for,(,optexpr,;,optexpr,;,optexpr,),stmt,|,other,optexpr,|,expr,第二章 一个简单的语法制导翻译器,语法分析,自顶向下分析方法,stmt,expr,|,if,(,expr,),stmt,|,for,(,optexpr,;,optexpr,;,optexpr,),stmt,|,other,optexpr,|,expr,输入是:,for(;expr;expr)other,第二章 一个简单的语法制导翻译器,语法分析,自顶向下分析方法,stmt,expr,;,|,if,(,expr,),stmt,|,for,(,optexpr,;,optexpr,;,optexpr,),stmt,|,other,optexpr,|,expr,输入是:,for(;expr;expr)other,stmt,for,(,optexpr,;,optexpr,;,optexpr,),stmt,expr,expr,other,语法,分析树,stmt,输入,for,(,;,exp,r,;,exp,r,),other,语法,分析树,stmt,输入,for,(,;,exp,r,;,exp,r,),other,stmt,for,(,optexpr,;,optexpr,;,optexpr,),stmt,语法,分析树,输入,for,(,;,exp,r,;,exp,r,),other,stmt,语法,分析树,stmt,输入,for,(,;,exp,r,;,exp,r,),other,stmt,for,(,optexpr,;,optexpr,;,optexpr,),stmt,语法,分析树,输入,for,(,;,exp,r,;,exp,r,),other,stmt,for,(,optexpr,;,optexpr,;,optexpr,),stmt,语法,分析树,输入,for,(,;,exp,r,;,exp,r,),other,第二章 一个简单的语法制导翻译器,语法分析,自顶向下分析方法,一般来说,为一个非终结符号选择产生式是一个“尝试并犯错”的过程,回溯,预测语法分析法:不需要回溯,要求设计的文法满足:当考虑到一个输入符号(终结符)的时候,只有一种非终结符可以生成这个输入符号,是确定性的。,FIRST,集合,令,是一个文法符号(终结符号或非终结符号)串,,FIRST(),是由,生成的一个或多个终结符号串的第一个符号的集合。,如果,是,或者可以生成,,那么,也在,FIRST(),中,第二章 一个简单的语法制导翻译器,语法分析,自顶向下分析方法,一般来说,为一个非终结符号选择产生式是一个“尝试并犯错”的过程,回溯,预测语法分析法:不需要回溯,要求设计的文法满足:当考虑到一个输入符号(终结符)的时候,只有一种非终结符可以生成这个输入符号,是确定性的。,有两个产生式,A ,和,A,,预测分析法要求,FIRST(),和,FIRST(),不相交,如果输入符号在,FIRST(),中,就用,A ,,如果输入符号在,FIRST(),中,就用,A ,第二章 一个简单的语法制导翻译器,语法分析,自顶向下分析方法,预测分析法,stmt,expr ;,|,if,(,expr,),stmt,|,for,(,optexpr,;,optexpr,;,optexpr,),stmt,|,other,optexpr,|,expr,FIRST(,stmt,)=,expr,if,for,other,FIR
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!