语法制导和中间代码生成.pptxVIP

  • 1
  • 0
  • 约6.54千字
  • 约 80页
  • 2022-10-27 发布于上海
  • 举报
会计学;目标程序;3;4;5;6;7;属性文法的形式定义 一个属性文法是一个三元组,A=(G, V, F) G是一个上下文无关文法; V是属性的有穷集; F是关于属性的断言的有穷集。 说明: 每个属性与文法符号相联,N.t表示文法符号N的属性t。属性值又称语义值。存储属性值的变量又称语义变量。 每个断言与文法的某个产生式相联,写在{ }内。属性的断言又称语义规则,它所描述的工作可以包括属性计算、静态语义检查、符号表的操作、代码生成等,有时写成函数或过程段。;9;10;11;例 简单算术表达式求值的属性???法 L→E { Print(E.val) } E→E1+T { E.val :=E1.val +T.val } E→T { E.val :=T.val } T→T1*F { T.val :=T1.val * F.val } T→F { T.val :=F.val } F→(E) { F.val :=E.val } F→digit { F.val :=digit.lexval }?;例 描述变量类型说明的属性文法 D→TL { L.in:=T.type } T→int { T.type:=int } T→real { T.type:=real } L→L1,id { L1.in:=L.in; addtype( id.entry,L.in )} L→id { addtype( id.entry,L.in )} ;14;例 简单算术表达式求值的属性文法 E→E1+T { E.val :=E1.val +T.val } E→T { E.val :=T.val } T→T1*digit { T.val :=T1.val * digit.lexval } T→digit { T.val :=digit.lexval }?;语法制导翻译的实现途径 以自下而上( LR分析)的语法制导翻译来说明 将LR分析器能力扩大,增加在归约后调用语义规则的功能 增加语义栈,语义值放到与符号栈同步操作的语义栈中,多项语义值可设多个语义栈 ,栈结构为:;例 简单算术表达式求值的属性文法 L →E {print(E.val)} E→E1+T { E.val :=E1.val +T.val } E→T { E.val :=T.val } T→T1*digit { T.val :=T1.val * digit.lexval } T→digit { T.val :=digit.lexval }?;步骤;19;20;后缀式的计算机处理 后缀式的最大优点是易于计算机处理 处理过程: 从左到右扫描后缀式,每碰到运算对象就推进栈;碰到运算符就从栈顶弹出相应目数的运算对象施加运算,并把结果推进栈。最后的结果留在栈顶。? ;逆波兰表示法的扩充 逆波兰表示法很容易扩充到表达式以外的范围 例如:;23;24;25;26;四元式的另一种表示 有时为了更直观,把四元式写成简单赋值形式或更易理解的形式;28;29;1.属性和语义规则中用到的变量、过程和函数 属性: 用id.name表示单词id的名字。 用E.place表示存放E值的变量名在符号表的入口地址或临时变量编码。 变量、函数和过程: 用nextstat变量给出在输出序列中下一个四元式的序号 用lookup(id.name)函数审查id.name是否出现在符号表中,是则返回id的入口地址,否则返回nil。 用emit过程向输出序列输出一个四元式,emit每调用一次,nextstat的值增加1 用newtemp函数生成临时变量,每次调用生成一个新的临时变量,如t1, t2 , …… 用error过程进行错误处理。 ;S→id:=E { p:=lookup ( id.name ) ; if p≠nil then emit (:=, E.place , - , p ) else error };E→-E1 { E.place:=newtemp ; emit ( @ , E1.place , - , E.place ) };例 翻译赋值语句A:=B+C ;表达式中可能出现不同类型的变量和常量 语义审查包括: 每个使用性标识符是否都有声明? 运算符的分量类型是否相容? 若不接受不同类型的运算对象混合运算,则应指出错误; 若接受混合运算则要进行类型转换处理。 例 :假定表达式可以有混合运算,id可以是整型和实型,且当两个不同类型的id进行运算时先把整型id转换成实型,再进行运算。 用E.type表示E的类型信息,其值为int或real。 用 +i , *i 表示整型运算,用 +r , *r 表示实型运算。 用一目算符 itr 表示将整型量转换成实型量

文档评论(0)

1亿VIP精品文档

相关文档