責任編集: (inoue@ist.osaka-u.ac.jp)


解答例

言語処理工学中間試験

			2004年11月26日

ノート、教科書持ち込みなし。

問題1は、解答用紙の1枚目、2は、2、3枚目、3は4枚目に書く事。そ
れ以外の部分に書いても得点にしない。

1 T図を用いて以下の作業の様子を表せ。

(1) Cで書かれたプログラムfをX86計算機で稼働するCコンパイラでコンパイ
    ルしてX86計算機のオブジェクトを生成する。

   F              F
   C   C -> X86  X86
         X86

(2) 皆さんが演習で行なっているPascalコンパイラの作成過程と、それを用い
    てPascalプログラムGのX86 計算機のオブジェクトへの変換。ただしCASL
    プログラムは、X86計算機のオブジェクトへのX86計算機で動くCASLコンパ
    イラがあるものとする。

  PAS -> CASL        PAS ->  CASL
      C    C  -> X86     X86
              X86

   G                G                 G
  PAS  PAS -> CASL CASL  CASL -> X86 X86
          X86                X86


2 次の拡張文法Gにたいして、各非終端記号のFollow集合と構文解析表を求
めよ。

文法G
        (0) E'-> E
        (1) E -> E + T
	(2) E -> T
        (3) T -> ( E )
	(4) T -> i

また、i+ (i+i) の構文解析の過程および得られた構文木を示せ。

  [0] E' ->  .E
      E	 ->  .E+T
      E	 ->  .T
      T	 ->  .(E)
      T  ->  .i

  [1]  [0]/E
      E' ->  E.
      E	 ->  E.+T

  [2]  [0]/T  [3]/T
      E -> T.

  [3]  [0]/(  [3]/(  [5]/(
      T -> (.E)
      E -> .E +T
      E -> .T
      T -> .(E)
      T -> .i

  [4]  [0]/i  [3]/i  [5]/i
      T -> i.

  [5]  [1]/+  [6]/+
      E -> E+.T
      T -> .(E)
      T ->.i

  [6]  [3]/E
      T -> (E.)
      E -> E.+T

  [7]  [5]/T
      E -> E+T.

  [8]   [6]/)
      T  -> (E).


Follow(E') = {$}
Follow(E) = {), +, $}
Follow(T) = {), +, $}

Automaton

     E'    E     T     +     (     )    i
0          1     2           3          4
1                      5
2
3          6     2           3          4
4
5                7           3          4
6                      5           8
7
8


Table

    +     (     )     i     $     E     T 
0         S3          S4          1     2     
1   S5                      A
2   R2          R2          R2 
3         S3          S4          6     2
4   R4          R4          R4
5         S3          S4                7          
6   S5          S8                       
7   R1          R1          R1
8   R3          R3          R3


3 減法 -、 除法 / 、冪乗 ↑、括弧 ( )、そして数 i を含む式Eを生成する
文法Gが以下のように定められている。

	[G]

	E → E - E | E / E |  E ↑ E | ( E ) | i

(1) 常識的な演算の優先順位を持った構文解析結果を得るための、順位関係表を以
下のように作成した。番号の部分に順位の記号 <<、 >>、 ==、 空白( エラー)、
受理のいずれかを入れよ。

                  i, -, /, ↑, (, ), $

              i,     >> >> >>     >> >>
	      -, <<  1  2  3   4  5  >>
	      /, <<  >> >> <<  << >> >>
	      ↑,<<  >> >> <<  << >> >>
	      (, <<  << << 6   7  8
	      ),     >>  >> >>    >> >>
	       $ <<  <<  << << <<   受理


                  i, -, /, ↑, (, ), $

              i,     >> >> >>     >> >>
	      -, <<  >> << <<  << >> >>
	      /, <<  >> >> <<  << >> >>
	      ↑,<<  >> >> <<  << >> >>
	      (, <<  << << <<  << ==
	      ),     >>  >> >>    >> >>
	       $ <<  <<  << << <<   受理

(2) 前述2の文法Gと順位関係表を用いて

       i ↑( i / i )

を演算子順位構文解析法で解析する様子の概略を示せ。


   解答略

以上