编译器-语法制导翻译STD

本文介绍了经典表达式语法及其在编译器中的应用,讲解了如何通过语法制导翻译构建抽象语法树(AST)。讨论了Yacc和Bison这两个解析器生成器的工作原理,它们如何生成编译器的前端部分,并解释了在LR(1)文法中执行reduce操作生成AST的过程。同时,文章提到了不同操作的成本计算在优化编译器性能中的作用。
摘要由CSDN通过智能技术生成

Classic Expression Grammar :
0.Goal → Expr

1.Assign → ident = Expr;        //making Assign node
2.Expr → Expr + Term        //making plus node

3.             | Expr - Term        //making minus node

4.             | Term

5.Term → Term * Factor        //making Mult node

6.             | Term / Factor        //making div node

7.             | Factor

8.Factor → ident        //making ident node

9.                | num        //making num node

10.                | ( Expr )

x = a * 3 + b ;

parsing tree

 AST目的生成代码 所以本质上就是在parsing tree上剔除了多余的信息 但保留了原有的token信息和结构
AST:

load a 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值