根据文法画出语法树_词法分析 | 分析树和二义性文法

本文探讨了在编译器前端中语法分析器的作用,通过实例展示了如何根据文法构造分析树,并解释了分析树的特点。文章还提到了二义性文法可能导致的解析歧义问题,以及解决此类问题的文法重写方法。
摘要由CSDN通过智能技术生成

我们已经在之前了解了语法分析器在编译器前端的地位和它的作用。

S -> N V N 
N -> s
   | t
   | g
   | w
V -> e
   | d

对于上面的文法 G ,我使用推导可以得到:

S -> N V N

-> N d N

-> s d N

-> s d w

我们可以将这个推导过程化成树状图的形式:

2203a1e0eb0ba126eb52f107c5196589.png

这棵树就是(语法)分析树。

分析树

  • 推导可以表达成树状结构
    • 和推导所用的顺序无关(最左、最右、其它)
  • 特点:
    • 树中的每个内部节点代表非终结符
    • 每个叶子节点代表终结符
    • 每一步推导代表如何从双亲节点生成它的直接孩子节点。

表达式的例子

E -> num
   | id
   | E + E
   | E * E

根据这个文法推导出句子 3 + 4 * 5 的过程如下:

第一种方法是先计算加法后计算乘法࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值