BUAA 编译作业 练习2-3 2-4 2-5

练习2-3

  1. 对文法G3[<表达式>](见上题),列出句型<表达式>+<项>*<因子>的所有短语和简单短语。

         短语:<表达式>+<项>* <因子>, <表达式>+<项>, <项>*<因子>

         简单短语:<表达式>+<项>, <项>*<因子>

练习2-4

  1. 给定文法G[E]为

    E ::= RP | P

    P ::= (E) | i

    R ::= RP+ | RP* |P+ |P*

    (1) 证明 i+i*(i+i) 是文法G的句子。

    (2) 画出该句子的语法树。

    (1) E => RP => R(E) => R(RP) =R(Ri) => R(P+i) => R(i+i) => RP* (i+i) => Ri* (i+i) => P+i* (i+i) => i+i* (i+i)

    (2)

     

  2. 已知文法G[E]:

    E ::= ET+ | T

    T ::= TF * |F

    F ::= FP↑ | P

    P ::= (E) | i

    有句型 TF*PP↑+,问此句型的短语、简单短语和句柄是什么?

    短语:ET+、 EF+、 EFP↑+、 EPP↑+、TF+、 TFP↑+、 TPP↑+、TF* F+、 TF* FP↑+、 TF* PP↑+、T、 TF*、F、 FP↑、 P

    简单短语:ET+、T、 TF*、 F、 FP↑、 P

    句柄:TF*

6. 分别对 i+i*i 和 i+i+i 构造两颗语法树,从而证明下述文法G[<表达式>]是二义性的。

     <表达式> ::= i | (<表达式>) | <表达式><运算符><表达式>

      <运算符> ::= + | - | * | /

        i+i*i:

        i+i+i:

 

7. 证明下面的文法G[S]是二义的:

        S ::= iSeS | iS | i

        对于句子 iiiei,可构造出不同的语法树,故为二义的:

        

 

8. 有文法G[N]:

        N ::= SE | E E ::= 0 | 2 | 4 | 6 | 8 | 10

        S ::= SD | D D ::= 0 | 1 | 2 | ... | 9

        举例说明文法G[N]有二义性,此文法描述的语言是什么?试写另一文法G’,使L(G) = L(G') 且G‘ 是无二义性的。

        对于句子10,可构造出不同的语法树,故为二义的:

        

        描述的语言为正偶整数。

        G’[N]:

        N ::= SE | E E ::= 0 | 2 | 4 | 6 | 8

        S ::= SD | D D ::= 0 | 1 | 2 | ... | 9

练习2-4

  1. 设有一文法G[<目标>]:

    <目标> ::= V1

    V1 ::= V2 | V1iV2

    V2 ::= V3 | V2+V3 | iV3

    V3 ::= )V1* | (

    试分析句子 ( 、)(* 、i( 、(+( 、(+(i 以及 (+)(i*i( 。

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值