資源簡(jiǎn)介
編譯技術(shù)第6次上機(jī)內(nèi)容
目的:充分理解并掌握中間代碼生成的相關(guān)方法,用C++程序?qū)崿F(xiàn)。
要求:
1.以S屬性的語(yǔ)法制導(dǎo)定義為基礎(chǔ),將下列產(chǎn)生式附上一定的語(yǔ)義規(guī)則。即在原來(lái)語(yǔ)法分析的基礎(chǔ)上插入相應(yīng)的語(yǔ)義動(dòng)作:將輸入串翻譯成三地址代碼序列。
E ? E1 + T
E ? T
T ? T1 * F
T ? F
F? (E)
F ? digit
F ? id
2.以詞法分析和語(yǔ)法分析部分的上機(jī)結(jié)果為基礎(chǔ),添加語(yǔ)義分析部分。即以LR文法為基礎(chǔ)。當(dāng)進(jìn)行產(chǎn)生式歸約時(shí)執(zhí)行對(duì)應(yīng)的語(yǔ)義動(dòng)作。
3.輸入:(-b+c*d)+c*d
輸出:
t1= -b
t2= c*d
t3=t1+t2
t4= c*d
t5=t3+t4
4. 若輸入有誤,如:a++b**c(d+e)
則應(yīng)提示:+后面缺少運(yùn)算對(duì)象,
*后面缺少運(yùn)算對(duì)象,
c后面缺少運(yùn)算符,
請(qǐng)重新輸入!
擴(kuò)展:
將三地址代碼優(yōu)化為DAG代碼
例如:
輸入: (-b+c*d)+c*d
輸出:
t1= -b
t2= c*d
t3=t1+t2
t5=t3+t2
代碼片段和文件信息
評(píng)論
共有 條評(píng)論