15について

1.次のように構文文法G [E]です。 

-E→E + T | ET | T 

-T→T * F | T / F | F 

-F→P ^ F | P 

-P→(E)| 私 

  • 要件は、意味論的に記述された属性文法解析を構築要件

 

E-> E + T {E.place:=newtemp;emit(E.place,':=',E.place'+',T.place)}

E> ET {E.place:=newtemp;emit(E.place,':=',E.place'-',T.place)}

E-> T {} E.place:=T.place

T-> T * F {T.place:=newtemp;emit(T.place,':=',T.place'*',F.place)}

T-> T / F {} T.place:=newtemp;emit(T.place,':=',T.place'/',F.place

T-> F {} T.place:=F.place

F-> P ^ F {F.place:=newtemp;emit(F.place,':=',P.place'^',F.place)}

F-> P {F.place:=newtemp;emit(F.place,':=',P.place)}

P - >(E){} P.place:=E.place

P-> I {P.place:=i.place;P.code:= ''}

 

2.(オプション)第三の実験:構文、セマンティクス翻訳

要件:

  • オペレータの優先構文指向翻訳プロセスによって、上記の式の文法解析を達成するために。
  • 意味解析プログラムの設計上の第二の実験(演算子優先構文解析)が完了します。
  • 最終的な出力は、テストクォータニオン中間コード配列に相当します。

として

入力:+ B * C、出力

(*、B、C、T1)

(+、T1、T2)

入力:B *(C + B)* D、出力

(*、B、C、T1)

(*、B、D、T2)

(+、T1、T2、T3)

おすすめ

転載: www.cnblogs.com/226aa/p/12091463.html