版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
屬性文法課堂練習(xí)題2、寫出下面文法的屬性文法:Number→DigitNumber1Number→DigitDigit→0|1|2|3|4|5|6|7|8|9|1、寫出下面文法的屬性文法:Number→Number1
DigitNumber→DigitDigit→0|1|2|3|4|5|6|7|8|9|屬性文法課堂練習(xí)題2、寫出下面文法的屬性文法:1、寫出下面文11、寫出下面文法的屬性文法:Number→Number1
DigitNumber→DigitDigit→0|1|2|3|4|5|6|7|8|9|文法規(guī)則語義規(guī)則Number→Number1DigitNumber.val=Number1.val*10+Digit.valNumber→DigitNumber.val=Digit.valDigit
→0Digit.val=0…………Digit
→9Digit.val=91、寫出下面文法的屬性文法:文法規(guī)則語義規(guī)則Number→22、寫出下面文法的屬性文法:Number→DigitNumber1Number→DigitDigit→0|1|2|3|4|5|6|7|8|9|文法規(guī)則語義規(guī)則Number→DigitNumber1Number.mul=Number1.mul*10Number.val=Digit.val*Number.mul+Number1.valNumber→DigitNumber.mul=1Number.val=Digit.valDigit
→0Digit.val=0…………Digit
→9Digit.val=92、寫出下面文法的屬性文法:文法規(guī)則語義規(guī)則Number→33、給出下列文法中S產(chǎn)生的二進(jìn)制數(shù)值的語義規(guī)則,并用堆棧說明該語義的實(shí)現(xiàn)過程,例如輸入1101.011時(shí),S.val=13.375:S->L.L|LL->LB|BB->0|13、給出下列文法中S產(chǎn)生的二進(jìn)制數(shù)值的語義規(guī)則,并用堆棧說明4{B.Val:=0}B->0{B.Val:=1}B->1{L.val:=B.val;L.length=1}L->B{L.val:=L.val*2+B.valL.length=L.length+1}L->LB{S.val:=L.val}S->L{S.val:=L1.val+L2.val/2^L2.length}S->L1.L2語義規(guī)則產(chǎn)生式{B.Val:=0}B->0{B.Val:=513_._1_1L.L1L.Val:=L.val*2+B.val(L.ength=2)13_._1L.L1B.Val:=113_._0_1L.LB113_._0_1L.L11L.Val:=B.val(L.length=1)13_._0L.L11B.Val:=113_._0L.B1113_._0L.01113_.L.011L.Val:=L.val*2+B.val(L.length=4)13L.011B.Val:=16_1LB.0116_1L1.011L.val:=L.val*2+B.val(L.length=3)6L1.011B.val:=03_0LB1.0113_0L01.011L.val:=L.val*2+B.val(L.length=2)3L01.011B.val:=11_1LB01.0111_1L101.011L.val:=B.val(L.length=1)1L101.011B.val:=11B101.01111101.011--1101.011使用的語義規(guī)則valstate輸入13_._1_1L.L1L.Val:=L.val*2+6S.Val:=L1.val+L2.val/2^L2.length13.375SL.Val:=L.val*2+B.val(L.ength=3)13_._3L.LB.Val:=113_._1_1L.LB13_._1_1L.L1使用的語義規(guī)則valstate輸入S.Val:=L1.val+L2.val/2^L271101.011的分析樹1B.val=1L1.val=11B.Val=1L1.val=30B.Val=0L1.val=60B.Val=0L2.val=01B.Val=1L2.val=11B.Val=1L2.val=3.S=13.3751B.Val=1L1.val=131101.011的分析樹1B.val=1L1.val84、十進(jìn)制浮點(diǎn)數(shù)的文法修改如下: dnum→num.snum num→num1digit|digit snum→digitsnum1|digit digit→0|1|2|3|4|5|6|7|8|9(注意:整數(shù)、小數(shù)分別用左、右遞歸文法)4、十進(jìn)制浮點(diǎn)數(shù)的文法修改如下:(注意:整數(shù)、小數(shù)分別用左、9文法規(guī)則語義規(guī)則dnum→num.snumdnum.val=num.val+snum.valnum→num1
digitnum.val=num1.val*10+digit.valnum→digitnum.val=digit.valsnum→digitsnum1snum.val=(snum1.val+digit.val)/10snum→digitsnum.val=digit.val/10digit→0digit.val=0…………digit→9digit.val=9文法規(guī)則語義規(guī)則dnum→num.snumdnum.v105、下面文法給出是Pascal說明的文法,寫出變量類型的一個(gè)屬性文法。 decl->var-list:type var-list->var-list,id|id type->int|float5、下面文法給出是Pascal說明的文法,寫出變量類型的一個(gè)11文法規(guī)則語義規(guī)則decl→var-list:type{var-list.dtype=type.dtype}var-list1→var-list2,idvar-list→idtype→integer{type.dtype=integer}type→real{type.dtype=real}{var-list2.in=var-list1.dtype}{var-list2.dtype=var-list2.inid.in=var-list1.dtype}{id.in=var-list.dtype}{var-list2.dtype=var-list1.dtypeid.dtype=var-list1.dtype}{id.dtype=var-list.dtype}文法規(guī)則語義規(guī)則decl→var-list:type{va126、對(duì)于輸入的表達(dá)式(4*7+1)*2,根據(jù)下表的語法制導(dǎo)定義建立一棵帶注釋的分析樹。
val:表示非終結(jié)符的整數(shù)值,綜合屬性,lexval是單詞digit的屬性 語法制導(dǎo)定義
產(chǎn)生式
語義規(guī)則
LE
print(E.val)EE1+TE.val:=E1.val+T.valET
E.val:=T.valTT1*FT.val:=T1.val*F.valTF
T.val:=F.valF(E)F.val:=E.valFdigit
F.val:=digit.lexval
6、對(duì)于輸入的表達(dá)式(4*7+1)*2,根據(jù)下表的語法制導(dǎo)定13屬性文法課堂練習(xí)課件147、請(qǐng)按語法制導(dǎo)的定義,將后綴表達(dá)式翻譯成中綴表達(dá)式。注意,不允許出現(xiàn)冗余括號(hào),后續(xù)表達(dá)式的文法如下:
E->EE+E->EE*E->id7、請(qǐng)按語法制導(dǎo)的定義,將后綴表達(dá)式翻譯成中綴表達(dá)式。注意,15語法制導(dǎo)定義
產(chǎn)生式
語義規(guī)則
S->EprintE.codeE->E1E2+E.code=E1.code||'+'||E2.code;E.op='+'E->E1E2*IFE1.op='+'ANDE2.op='+'THENE.code="("||E1.code||')'||'*'||'('||E2.code||')';ELSEIFE1.op='+'THENE.code="("||E1.code||')'||'*'||E2.code;ELSEIFE2.op='+'THENE.code=E1.code||'*'||'('||E2.code||')';ELSEE.code=E1.code||'*'||E2.code||;E一>idE.code:=id.lexeme;語法制導(dǎo)定義產(chǎn)生式語義規(guī)則S->EprintE.c168、假設(shè)變量的說明是由下列文法生成的:DiLL,iL|:TTinteger|real1)建立一個(gè)語法制導(dǎo)定義,把每一個(gè)標(biāo)志符的類型加在符號(hào)表中2)為1)構(gòu)造一個(gè)預(yù)翻譯程序
8、假設(shè)變量的說明是由下列文法生成的:171)type為綜合屬性,代表類型屬性,
函數(shù)addtype實(shí)現(xiàn)向符號(hào)表中i對(duì)應(yīng)項(xiàng)填類型信息。
語法制導(dǎo)定義
產(chǎn)生式
語義動(dòng)作
DiL
D.Type:=L.Typeaddtype(i.entry,D.type)L,iL1L.Type:=L1.Typeaddtype(i.entry,L.type)L:T
L.type:=T.typeTinteger
T.type:=integerTreal
T.type:=real1)type為綜合屬性,代表類型屬性,產(chǎn)生式語義動(dòng)作D18b)采用遞歸下降分析法編寫預(yù)翻譯程序: ProcedureD; begin iflookahead=idthenbeginmatch(id);D.type=L;addtype(id.entry,D.type)endelseerror endFunctionL:DataType;beginiflookahead=’,’thenbeginmatch(‘,’);iflookahead=idthenbeginmatch(id);L.Type=L;addtype(id.entry,L.type);return(L.type)endelseerrorendelseiflookahead=’:’thenbeginmatch(‘:’);L.Type=T;return(L.Type)endelseerrorend
FunctionT:DataType;beginiflookahead=integerthenbeginmatch(integer);return(integer)endelseiflookahead=realthenbeginmatch(real);return(real)endelseerrorend
b)采用遞歸下降分析法編寫預(yù)翻譯程序:elseifl199、下面文法產(chǎn)生的表達(dá)式是對(duì)整型和實(shí)型常數(shù)應(yīng)用算符+形成的。當(dāng)兩個(gè)整數(shù)相加時(shí),結(jié)果為整數(shù),否則為實(shí)數(shù)。ETRR+TR|εTnum.num|numa)給出語法制導(dǎo)定義確定每個(gè)子表達(dá)式的類型。b)把表達(dá)式翻譯成前綴形式,并且決定類型。試用一元運(yùn)算符inttoreal把整型值轉(zhuǎn)換為相等的實(shí)型值,以使得前綴表達(dá)式中兩個(gè)運(yùn)算對(duì)象是同類型的。
9、下面文法產(chǎn)生的表達(dá)式是對(duì)整型和實(shí)型常數(shù)應(yīng)用算符+形成的。20a)設(shè)type是綜合屬性,代表各非終結(jié)符的“類型”屬性
設(shè)in是繼承屬性,
翻譯方案
產(chǎn)生式
語義規(guī)則
ET
R{R.in:=T.type}{E.Type:=R.s}R+T
R1
{IF(R.in=integer)and(T.type=integer)THENR1.in:=integerELSER1.in:=real}{R.s:=R1.s}Rε
{R.s:=R.in}Tnum.num
T.type:=realTnum
T.type:=integera)設(shè)type是綜合屬性,代表各非終結(jié)符的“類型”屬性產(chǎn)生21b)設(shè)屬性s和i用于傳遞屬性type,屬性t和j用于傳遞屬性val。
翻譯方案
產(chǎn)生式
語義規(guī)則
ET
R{R.i:=T.type}{R.j:=T.val}{E.Type:=R.s}{E.val:=R.t}R+T
R1{IF(R.i=integer)and(T.type=integer)THENBEGINR1.i:=integerPrint(‘+’,R.j,T.val)R1.j:=R.j+T.valENDELSEBEGINR1.i:=realIFR.i=integerTHENBeginR.i:=realR.j:=inttoreal(R.j)EndIFT.type=integerTHENBeginT.type:=realT.val:=inttoreal(T.val)EndPrint(‘+’,R..j,T.val)R1.j:=R.j+T.valEND}{R.s:=R1.s}{R.t:=R1.t}Rε
{R.s:=R.i}{R.t:=R.j}Tnum.num
{T.type:=real}{T.val:=num.num.lexval}Tnum
{T.type:=integer}{T.val:=num.lexval}b)設(shè)屬性s和i用于傳遞屬性type,屬性t和j用于傳遞屬22屬性文法課堂練習(xí)題2、寫出下面文法的屬性文法:Number→DigitNumber1Number→DigitDigit→0|1|2|3|4|5|6|7|8|9|1、寫出下面文法的屬性文法:Number→Number1
DigitNumber→DigitDigit→0|1|2|3|4|5|6|7|8|9|屬性文法課堂練習(xí)題2、寫出下面文法的屬性文法:1、寫出下面文231、寫出下面文法的屬性文法:Number→Number1
DigitNumber→DigitDigit→0|1|2|3|4|5|6|7|8|9|文法規(guī)則語義規(guī)則Number→Number1DigitNumber.val=Number1.val*10+Digit.valNumber→DigitNumber.val=Digit.valDigit
→0Digit.val=0…………Digit
→9Digit.val=91、寫出下面文法的屬性文法:文法規(guī)則語義規(guī)則Number→242、寫出下面文法的屬性文法:Number→DigitNumber1Number→DigitDigit→0|1|2|3|4|5|6|7|8|9|文法規(guī)則語義規(guī)則Number→DigitNumber1Number.mul=Number1.mul*10Number.val=Digit.val*Number.mul+Number1.valNumber→DigitNumber.mul=1Number.val=Digit.valDigit
→0Digit.val=0…………Digit
→9Digit.val=92、寫出下面文法的屬性文法:文法規(guī)則語義規(guī)則Number→253、給出下列文法中S產(chǎn)生的二進(jìn)制數(shù)值的語義規(guī)則,并用堆棧說明該語義的實(shí)現(xiàn)過程,例如輸入1101.011時(shí),S.val=13.375:S->L.L|LL->LB|BB->0|13、給出下列文法中S產(chǎn)生的二進(jìn)制數(shù)值的語義規(guī)則,并用堆棧說明26{B.Val:=0}B->0{B.Val:=1}B->1{L.val:=B.val;L.length=1}L->B{L.val:=L.val*2+B.valL.length=L.length+1}L->LB{S.val:=L.val}S->L{S.val:=L1.val+L2.val/2^L2.length}S->L1.L2語義規(guī)則產(chǎn)生式{B.Val:=0}B->0{B.Val:=2713_._1_1L.L1L.Val:=L.val*2+B.val(L.ength=2)13_._1L.L1B.Val:=113_._0_1L.LB113_._0_1L.L11L.Val:=B.val(L.length=1)13_._0L.L11B.Val:=113_._0L.B1113_._0L.01113_.L.011L.Val:=L.val*2+B.val(L.length=4)13L.011B.Val:=16_1LB.0116_1L1.011L.val:=L.val*2+B.val(L.length=3)6L1.011B.val:=03_0LB1.0113_0L01.011L.val:=L.val*2+B.val(L.length=2)3L01.011B.val:=11_1LB01.0111_1L101.011L.val:=B.val(L.length=1)1L101.011B.val:=11B101.01111101.011--1101.011使用的語義規(guī)則valstate輸入13_._1_1L.L1L.Val:=L.val*2+28S.Val:=L1.val+L2.val/2^L2.length13.375SL.Val:=L.val*2+B.val(L.ength=3)13_._3L.LB.Val:=113_._1_1L.LB13_._1_1L.L1使用的語義規(guī)則valstate輸入S.Val:=L1.val+L2.val/2^L2291101.011的分析樹1B.val=1L1.val=11B.Val=1L1.val=30B.Val=0L1.val=60B.Val=0L2.val=01B.Val=1L2.val=11B.Val=1L2.val=3.S=13.3751B.Val=1L1.val=131101.011的分析樹1B.val=1L1.val304、十進(jìn)制浮點(diǎn)數(shù)的文法修改如下: dnum→num.snum num→num1digit|digit snum→digitsnum1|digit digit→0|1|2|3|4|5|6|7|8|9(注意:整數(shù)、小數(shù)分別用左、右遞歸文法)4、十進(jìn)制浮點(diǎn)數(shù)的文法修改如下:(注意:整數(shù)、小數(shù)分別用左、31文法規(guī)則語義規(guī)則dnum→num.snumdnum.val=num.val+snum.valnum→num1
digitnum.val=num1.val*10+digit.valnum→digitnum.val=digit.valsnum→digitsnum1snum.val=(snum1.val+digit.val)/10snum→digitsnum.val=digit.val/10digit→0digit.val=0…………digit→9digit.val=9文法規(guī)則語義規(guī)則dnum→num.snumdnum.v325、下面文法給出是Pascal說明的文法,寫出變量類型的一個(gè)屬性文法。 decl->var-list:type var-list->var-list,id|id type->int|float5、下面文法給出是Pascal說明的文法,寫出變量類型的一個(gè)33文法規(guī)則語義規(guī)則decl→var-list:type{var-list.dtype=type.dtype}var-list1→var-list2,idvar-list→idtype→integer{type.dtype=integer}type→real{type.dtype=real}{var-list2.in=var-list1.dtype}{var-list2.dtype=var-list2.inid.in=var-list1.dtype}{id.in=var-list.dtype}{var-list2.dtype=var-list1.dtypeid.dtype=var-list1.dtype}{id.dtype=var-list.dtype}文法規(guī)則語義規(guī)則decl→var-list:type{va346、對(duì)于輸入的表達(dá)式(4*7+1)*2,根據(jù)下表的語法制導(dǎo)定義建立一棵帶注釋的分析樹。
val:表示非終結(jié)符的整數(shù)值,綜合屬性,lexval是單詞digit的屬性 語法制導(dǎo)定義
產(chǎn)生式
語義規(guī)則
LE
print(E.val)EE1+TE.val:=E1.val+T.valET
E.val:=T.valTT1*FT.val:=T1.val*F.valTF
T.val:=F.valF(E)F.val:=E.valFdigit
F.val:=digit.lexval
6、對(duì)于輸入的表達(dá)式(4*7+1)*2,根據(jù)下表的語法制導(dǎo)定35屬性文法課堂練習(xí)課件367、請(qǐng)按語法制導(dǎo)的定義,將后綴表達(dá)式翻譯成中綴表達(dá)式。注意,不允許出現(xiàn)冗余括號(hào),后續(xù)表達(dá)式的文法如下:
E->EE+E->EE*E->id7、請(qǐng)按語法制導(dǎo)的定義,將后綴表達(dá)式翻譯成中綴表達(dá)式。注意,37語法制導(dǎo)定義
產(chǎn)生式
語義規(guī)則
S->EprintE.codeE->E1E2+E.code=E1.code||'+'||E2.code;E.op='+'E->E1E2*IFE1.op='+'ANDE2.op='+'THENE.code="("||E1.code||')'||'*'||'('||E2.code||')';ELSEIFE1.op='+'THENE.code="("||E1.code||')'||'*'||E2.code;ELSEIFE2.op='+'THENE.code=E1.code||'*'||'('||E2.code||')';ELSEE.code=E1.code||'*'||E2.code||;E一>idE.code:=id.lexeme;語法制導(dǎo)定義產(chǎn)生式語義規(guī)則S->EprintE.c388、假設(shè)變量的說明是由下列文法生成的:DiLL,iL|:TTinteger|real1)建立一個(gè)語法制導(dǎo)定義,把每一個(gè)標(biāo)志符的類型加在符號(hào)表中2)為1)構(gòu)造一個(gè)預(yù)翻譯程序
8、假設(shè)變量的說明是由下列文法生成的:391)type為綜合屬性,代表類型屬性,
函數(shù)addtype實(shí)現(xiàn)向符號(hào)表中i對(duì)應(yīng)項(xiàng)填類型信息。
語法制導(dǎo)定義
產(chǎn)生式
語義動(dòng)作
DiL
D.Type:=L.Typeaddtype(i.entry,D.type)L,iL1L.Type:=L1.Typeaddtype(i.entry,L.type)L:T
L.type:=T.typeTinteger
T.type:=integerTreal
T.type:=real1)type為綜合屬性,代表類型屬性,產(chǎn)生式語義動(dòng)作D40b)采用遞歸下降分析法編寫預(yù)翻譯程序: ProcedureD; begin iflookahead=idthenbeginmatch(id);D.type=L;addtype(id.entry,D.type)endelseerror endFunctionL:DataType;beginiflookahead=’,’thenbeginmatch(‘,’);iflookahead=idthenbeginmatch(id);L.Type=L;addtype(id.entry,L.type);return(L.type)endelseerrorendelseiflookahead=’:’thenbeginmatch(‘:’);L.Type=T;return(L.Type)endelseerrorend
FunctionT:DataType;beginiflookahead=integerthenbeginmatch(integer);return(integer)endelseiflookahead=realthenbeginmatch(real);return(real)endelseerrorend
b)采用遞歸下降分析法編寫預(yù)翻譯程序:elseifl41
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 理解重點(diǎn)詞句的含義課件
- 醫(yī)患關(guān)系的心理機(jī)制
- 理想本領(lǐng)擔(dān)當(dāng)課件
- 理想勵(lì)志課件
- 班級(jí)論壇課件教學(xué)
- 醫(yī)患關(guān)系典型案例分享會(huì)
- 機(jī)械專碩就業(yè)方向
- 醫(yī)患關(guān)系維護(hù)的關(guān)鍵措施
- 銷售面試通關(guān)秘籍
- 新醫(yī)改下的醫(yī)患關(guān)系改善
- 遼寧省沈陽市皇姑區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期英語期末試卷
- 2026年度安全教育培訓(xùn)計(jì)劃培訓(xùn)記錄(1-12個(gè)月附每月內(nèi)容模板)
- 廣東省深圳市寶安區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期1月期末考試數(shù)學(xué)試題
- 2023電氣裝置安裝工程盤、柜及二次回路接線施工及驗(yàn)收規(guī)范
- 大量不保留灌腸
- 2025年江蘇省安全員C2本考試題庫(kù)+解析及答案
- 物業(yè)經(jīng)理競(jìng)聘管理思路
- 臨床營(yíng)養(yǎng)管理制度匯編
- 購(gòu)銷合同電子模板下載(3篇)
- 防洪評(píng)價(jià)進(jìn)度安排方案(3篇)
- 胃腸減壓技術(shù)操作并發(fā)癥
評(píng)論
0/150
提交評(píng)論