第七章 语义分析和中间代码的产生

语义分析涉及类型检查、一致性验证等,确保语法结构有意义。它生成中间代码,如波兰表示、逆波兰表示、抽象语法树和三元式。三元式在计算时依赖顺序,通常用于表示计算过程,但不直接用于优化。间接三元式通过指示器表按顺序列出三元式的位置。此外,介绍了从抽象语法树到三元式的转换和四元式在表示赋值语句中的应用。
摘要由CSDN通过智能技术生成

       

语义分析包括确定类型,类型检查,识别含义,控制流检查,一致性检查和相关名字检查以及其他功能。他的任务是检查语法的正确结构是否有意义并在语义正确的基础上生成一种中间代码和目标代码。其中语法的制导翻译包括自底向上的语法制导翻译和自顶向下的语法制导翻译。而他生成的中间语言形式包括1.波兰表示(前缀式,运算符在前)和逆波兰表示(后缀式,运算符在后),2.图表示法即抽象语法树形式其结构使中序遍历时为正常的运算式,前序遍历时为波兰表示,后序遍历时为逆波兰表示。 

3.三元式()对于一目运算符,我们可以规定只用ARG1,而多目运算符可以用若干条相继的三元式来表示。) 3.1间接三元式()在三元式的基础上附加一张指示器表─间接码表,按运算的先后顺序列出有关三元式在三元式表中的位置。这种表示方法称为间接三元式)。4.四元式(比三元式加了一个RESULT Ti其中Ti是临时变量)

 树的表示中  产生式            语义动作

  (1)E→E1 op E2  {E.val:=NODE(op,E1.val,E2.val)}其中NODE是建立一棵新树,以OP为根,以E1.val,E2.val为左右枝。返回指向树根的指针
  (2)E→(E1)      {E.val:=E1.val}
  (3)E→-E1       {E.val:=UNARY(@E1.val)}UNARY与NODE相似,只不过是单枝。

  (4)E→i         {E.val:=LEAF(i)} LEAF建立以i.LEXCAL为标志的叶结,回送的是结点i的地址。

3. 三元式

对于一目运算符,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值