資源簡介
目的:充分理解語義分析的方法及相關(guān)語義計算的執(zhí)行時機(jī)。
要求:
1.以S屬性的語法制導(dǎo)定義為基礎(chǔ),將下表的語義規(guī)則嵌套在語法分析的過程中,即實(shí)現(xiàn)語法制導(dǎo)的翻譯過程。
產(chǎn) 生 式 語 義 規(guī) 則
L ? E n print (E.val)
E ? E1 + T E.val := E1 .val + T.val
E ? T E.val := T.val
T ? T1 * F T.val := T1.val * F.val
T ? F T.val := F.val
F? (E) F.val := E.val
F ? digit F.val := digit.lexval
2.以詞法分析和語法分析部分的上機(jī)結(jié)果為基礎(chǔ),添加語義分析部分。即以LR文法為基礎(chǔ)。當(dāng)進(jìn)行產(chǎn)生式歸約時執(zhí)行對應(yīng)的語義動作。
3.輸入:
5+3+8*2
輸出:24
4. 若輸入有誤,如:3++2
則應(yīng)提示:重新輸入!
5. 由于輸入串是具體的數(shù)值,因此應(yīng)調(diào)用相應(yīng)的詞法分析的功能。
擴(kuò)展:
1. 對浮點(diǎn)數(shù)和科學(xué)計數(shù)法的表示也能完成上述的操作。
2. 增加減法和除法(也可繼續(xù)擴(kuò)展其他運(yùn)算)對應(yīng)的產(chǎn)生式,并能計算其語義結(jié)果。
3. 在郵箱中第五次上機(jī)的文件夾中有兩個壓縮包,用遞歸下降法實(shí)現(xiàn)的程序在壓縮包“recursion_calculator.rar”中,用非遞歸的預(yù)測分析方法實(shí)現(xiàn)的程序在壓縮包“predict_calculator.rar”中。可以任選其一作為基礎(chǔ)進(jìn)行改進(jìn),增加減法和除法的操作,寫出改進(jìn)后的文法,輸出表達(dá)式的結(jié)果。
代碼片段和文件信息
評論
共有 條評論