問題 1 : 次の問に答えよ. 1. 次に挙げるものの役割を,それぞれ説明しなさい. 記号表,中間表現,静的リンク,スタックポインタ 2. 浮動小数点を表す正規表現を示しなさい.浮動小数点は,0.5E11 のよ うに,E の前に実数,後ろに整数を記述する(両者とも先頭に − を付 けることができる).また,実数は,小数点の前後の 0 が省略できるが, 小数点だけでは,実数ではないことに気を付けよ. 問題 2 : 次の文法について答えよ. 0 1 2 3 S E E E → → → → E E E E $ +E *E ^E 4 E 5 E 6 E → (E) → -E → num 1. この文法は,曖昧性を含んでいる.次の性質を満たすように変形し,曖 昧性を解消せよ.適宜,新しい非終端記号を用意すること. • +,* は,左結合の 2 項演算子である.^ は,右結合の 2 項演算子で ある.-は,右結合の単項演算子である. • 演算子の強さは,- > ^ > * > + である. 2. 変形した文法から,左再帰を除去せよ. 3. Yacc は,演算子に結合規則を指定することによって,上記のような曖 昧な文法でも扱える.演算子の結合規則を,1 のように指定したとする と,次のトークン列を,Yacc で構文解析した際に生じるシフトと還元 を順に全て示せ.また,そのときの各スタックの様子も図示しなさい. num + num * num * - - num ^ num ^ num + num 注 シフトが生じるときは「∼(トークン)をシフト」,還元が生じると きは「∼(生成規則)で還元」とし,状態は考慮しなくてよい. 問題 3 : 次の文法について答えよ. 0 S 1 P 2 P → P $ → d → T EP 3 E 4 E → → c 5 T 6 T → → E a 1. 各非終端記号の,nullable,FIRST,FOLLOW を求めなさい. 2. LR(0) の遷移図を示しなさい. 3. SLR 構文解析表を示しなさい.
© Copyright 2024 ExpyDoc