编译原理:语法树,短语,直接短语,句柄

1.已知文法:

S->a|^|(T)

T->T,S|S

分析句型(T,(^,a)),求全部的短语、直接短语和句柄。

 解析:根据题意,语法树如下图:

  

    全部短语:(T,(^,a))  T,(^,a)  (^,a)  ^,a  ^  a

    直接短语:^  a

    句柄:^

2.构造上下文无关文法,描述语言:

{anbn|n>=0}

{ambn|m>=n>=0}

 if语句

{(ab)n|n>=0}

{ambn|m,n>=1}

  if语句

解析:

    (1)G[S]:S -> aSb | ab | ε

 (2)G[S]:S -> aSb | a | ε

 (3)if语句 -> if<条件>then<语句> | if<条件>then<语句>else<语句>

   (4)G[S]:S -> aSb | aaSbb | ... | (ab)| ε

      由S产生任意多个相同数量的a和b

   (5)G[S]:S -> aS|Sb | a | ε

      由S产生任意多个a和任意多个b,a和b的个数都大于1个

3.如果if语句的方法:

stmt->if expr then stmt

     | if expr then stmt else stmt

     | other

其中other代表语言中其他语句。

a)证明该文法是具有二义性的。

b)构造一个等价的无二义性文法,使得else与前面最近的没有匹配的then匹配。

c)基于该文法构造一个语法制导翻译模式,将条件语句翻译改成堆栈机代码。

 

句子if E1 then if E2 then S1 else S2是否有两棵不同的语法树?说明了什么?

a)二义性证明

根据文法:我们发现 if E1 then if E2 then S1 else S2 有2棵语法树(2个推导方法)如下所示:

b)等价无二义性文法构造,使else说最近未匹配的then相匹配

 

 

 

 

 

转载于:https://www.cnblogs.com/zhif97/p/11551691.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值