杨洪波吧 关注:33贴子:258
  • 3回复贴,共1

X=A*(B+C)+D制导翻译过程

只看楼主收藏回复


(+,B,C,T1)
(*,A,T1,T2)
(+,T2,D,T3)
(=,T3,0,X)


IP属地:上海1楼2013-04-25 23:08回复
    A[I,J]:=B[J-I,A.........
    (*,I,20,T1)
    (+,J,T1,T1)
    (-,a,Ca,T2)
    (=,J,0,T)
    (+,T,1,T)
    (=,I,0,P1)
    (=,J,0,P2)
    (-,P1,P2,P1’)
    (=,I,0,T1)
    (=,J,0,T2)
    (+,T1,T2,T1’)
    (*,P1’,20,T3’)
    (+,T1’,T3’,T3’)
    (-,a,Ca,T’)
    (=[],T’[T3’],T3)
    (*,T,20,T)
    (+,T3,T,T)
    (=,I,0,T4)
    (+,T4,1,T4)
    (*,T,10,T5)
    (+,T4,T5,T5)
    (-,b,Cb,T6)
    (=[],T6[T5],0,T7)
    ([]=,T7,0,T2[T1])


    IP属地:上海2楼2013-04-25 23:09
    回复

      如下所示:
      当前句型(方框括起来部分为句柄)A/\(BV(CVD/\?F))用产生式Expr→iden归约,得
      (1)Expr.TC→(jnz,A,0,0);
      (2)Expr.FC→(j,0,0,0);
      当前句型Expr
      /\(BV(CVD/\?F))用产生式Expr^→Expr ’/\’归约,得
      (1)(jnz,A,0,3);
      (2)Expr^.FC→(j,0,0,0);
      当前句型Expr^
      (BV(CVD/\?F))用产生式Expr→iden归约,得
      (1)(jnz,A,0,0);
      (2)Expr^.FC→(j,0,0,0);
      (3)Expr.TC→(jnz,B,0,0);
      (4)Expr.FC→(j,0,0,0);
      最后
      当前句型Expr^
      (Expr),用产生式Expr→(Expr)归约,所得四元式序列不变
      当前句型Expr^Expr,用产生式Expr→Expr^ Expr归约,得
      (1)(jnz,A,0,3);
      (2)(j,0,0,0);
      (3)(jnz,A,0,0);
      (4)(j,0,0,5);
      (5)(jnz,C,0,3);
      (6)(j,0,0,7);
      (7)(jnz,D,0,9);
      (8)(j,0,0,2);
      (9)Expr.FC→(jnz,F,0,8);
      (10)Expr.TC→(j,0,0,5);


      IP属地:上海3楼2013-04-25 23:14
      回复

        3)假设所产生的四元式序列编号从1开始
        1.当前句型为while A<CùB>0 do if A=1 then C:=C+1 else while A<=D do A:=A+2用产生式W1→while归约,得
        (1)Wl.loop→
        2.当前句型为Wl A<CùB>0 do if A=1 then C:=C+1 else while A<=D do A:=A+2用产生式Expr→iden rop iden归约,得
        (1) Wl.loop→Expr.TC→(j<A,C,0);
        (2)Expr.FC→(j,0,0,0);
        3. 当前句型为Wl ExprùB>0 do if A=1 then C:=C+1 else while A<=D do A:=A+2用产生式Expr^→Expr’ ù’归约,得
        (1) Wl.loop→(j<A,C,3);
        (2)Expr^.FC→(j,0,0,0);
        最后得当前句型为WED Statement,用产生式Statement→WED Statement 归约,得
        (1) (j<A,C,3);
        (2)(j,0,0,0);
        (3)(j>,B.0,5)
        (4) Statement.CH→(j,0,0,2);
        (5)(j=,A,1,7)
        (6)(j,0,0,10)
        (7)(+.,C,1,T1)
        (8)(=,T1, ,C)
        (9)(j,0,0,1)
        (10)(j,A,D,12)
        (11).(j,0,0,1)
        (12)(+,A,2,T2)
        (13)(=,T2, ,A)
        (14)(j,0,0,10)
        (15)(j,0,0,1)
        (16)


        IP属地:上海4楼2013-04-25 23:15
        回复