版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第7章語法制導(dǎo)的語義計算語義處理及形式語義概述7.1屬性文法7.2語法制導(dǎo)的語義計算7.3語法分析與語義計算的自動生成工具yacc語義處理及形式語義概述語言的語義和編譯的語義處理靜態(tài)語義:語法規(guī)則的良形式條件靜態(tài)語義檢查:審查靜態(tài)語義動態(tài)語義:程序單元執(zhí)行的操作動態(tài)語義處理:生成中間(目標)代碼編譯的語義處理方式由語法分析子程序直接調(diào)用相應(yīng)的語義子程序進行語義處理;先生成語法樹或此結(jié)構(gòu)的某種表示,再進行語義處理。編譯的語義處理方法直接生成目標代碼;采用中間代碼:邏輯上簡單明確,與機器相關(guān)的實現(xiàn)細節(jié)置于代碼生成階段處理,易于優(yōu)化。語義處理概述高級程序設(shè)計語言的語義:
靜態(tài)語義
是對程序約束的描述,這些約束無法通過抽象語法規(guī)則來妥善地描述,實質(zhì)上就是語法規(guī)則的良形式條件,它可以分為類型規(guī)則和作用域/可見性規(guī)則兩大類
動態(tài)語義程序單位描述的計算編譯程序的語義處理工作
靜態(tài)語義審查解釋執(zhí)行動態(tài)語義
靜態(tài)語義審查
(1)類型檢查。根據(jù)類型相容性要求,驗證程序中執(zhí)行的每個操作是否遵守語言的類型系統(tǒng)的過程,編譯程序必須報告不符合類型系統(tǒng)的信息。(2)控制流檢查??刂屏髡Z句必須使控制轉(zhuǎn)移到合法的地方。例如,在C語言中break語句使控制跳離包括該語句的最小while、for或switch語句。如果不存在包括它的這樣的語句,則就報錯。(3)一致性檢查。在很多場合要求對象只能被定義一次。例如Pascal語言規(guī)定同一標識符在一個分程序中只能被說明一次,同一case語句的標號不能相同,枚舉類型的元素不能重復(fù)出現(xiàn)等等。(4)上下文相關(guān)性檢查。比如,變量名字必須先聲明后引用;而有時,同一名字必須出現(xiàn)兩次或多次,例如,Ada語言程序中,循環(huán)或程序塊可以有一個名字,出現(xiàn)在這些結(jié)構(gòu)的開頭和結(jié)尾,編譯程序必須檢查這兩個地方用的名字是相同的。(5)名字的作用域分析。靜態(tài)語義分析的環(huán)境符號表為語義分析提供類型、作用域等信息。為代碼生成提供類型、作用域、存儲類別、存儲(相對)位置等信息。解釋執(zhí)行動態(tài)語義:生成代碼:中間代碼或目標代碼
語義處理的描述屬性文法:附帶語義規(guī)則的文法。語法制導(dǎo)的翻譯:在語法分析的同時,執(zhí)行語義子程序。檢查靜態(tài)語義翻譯(生成)中間(目標)代碼例子P→D;ED→D;D|id:TT→char|integer|array[num]ofT|↑TE→literal|num|id|EmodE|E[E]|E↑P代表程序;D代表說明;E代表表達式。如程序語句:
key:integer;String:char;keymod1999語言本身提供兩種基本類型:char和integer。除此之外還有缺省的基本類型type_error和void。假定所有數(shù)組下標都從1開始。確定標識符類型的語義描述(1)P→D;E(2)D→D;D(3)D→id:T{addtype(id.Entry,T.type)}(4)T→char{T.Type:=char}(5)T→integer{T.Type:=integer}(6)T→↑T1{T.Type:=pointer(T1.type)}(7)T→array[num]ofT1
{T.Type:=array(num.Val,T1.type)}類型檢查的語義描述S→id:=E{ifid.Type=E.TypethenS.Type:=voidelseS.Type:=type_error}S→ifEthenS1{ifE.type=booleanthenS.Type:=S1.typeelseS.type:=type_error}S→whileEdoS1{ifE.type=booleanthenS.type:=S1.TypeelseS.type:=type_error}語義處理的實現(xiàn)工具Yacc(Bison)對語法制導(dǎo)翻譯的支持;Yacc(Bison)對語義值的支持 通過$偽變量訪問文法符號的語義值。Yacc(Bison)對語義動作的支持 在語法規(guī)則的動作中調(diào)用語義子程序:計算語義值,診斷語義錯誤,生成中間代碼等。Variable:TypeT_Identifier {$$=CreateVariableDeclaration(&@1,$1,$2);};Type:T_Int{$$=Type::intType;};語義形式化—語義模型文法模型---屬性文法命令式或操作式模型---操作語義學(xué)應(yīng)用式模型---指稱語義學(xué)公理式模型---公理語義學(xué)規(guī)格說明模型---代數(shù)數(shù)據(jù)類型屬性文法表達式文法
E—>T+T|TorT
T—>n|bET1+T2
{if(T1.type=int)AND(T2.type=T1.type)thenE.type=int}E
T1orT2
{if(T1.type=bool)AND(T2.type=T1.type)thenE.type:=bool}Tn{T.type:=int}Tb{T.type:=bool}
操作語義描述一段程序的含義是通過執(zhí)行該段程序所改變的計算機(無論是真實計算機還是虛擬計算機)狀態(tài)來反映的。計算機里所有的寄存器的值和存儲單元的值視為計算機的狀態(tài)。For(expr1;expr2;expr3){expr1;
...
Loop:ifexpr2=0gotoout}
…
expr3;
gotoloopout:...公理語義公理語義的概念是隨著程序正確性的證明而發(fā)展的。當正確性證明能構(gòu)造時表明程序執(zhí)行它的規(guī)格說明所描述的計算。在一個證明中,每一個語句之前之后都有一個邏輯表達式對程序的變量進行約束,以此說明這個語句的含義。斷言{P}S{Q}稱為S關(guān)于(P,Q)的正確性斷言。
{x>3}x=x-3{x>0},(x>5)(x>3),{x>0}{x>0}------------------------------------------------------------------------{x>5}x=x-3{x>0}
While循環(huán)
(IandB)S{I}------------------------------------------------------------------------{I}whileBdoSend{Iand(notB)}I是循環(huán)不變式。
if--then--else {BandP}S1{Q},{(notB)andP}S2{Q}------------------------------------------------------------------------{P}ifBthenS1
elseS2{Q}指稱語義指稱語義的基本概念是給每一段程序?qū)嶓w定義一個數(shù)學(xué)意義上的對象,和一個從實體向數(shù)學(xué)意義上的對象的映射的函數(shù)。語義函數(shù):將短語映射到它的指稱。
特點:不但對整個程序賦予含義而且對程序設(shè)計語言的每一個語法成分短語(表達式,命令,聲明…)都給予含義。每一個語法成分(短語)的含義是以它的構(gòu)成成分的含義的術(shù)語來定義的。即語義結(jié)構(gòu)平行于語法結(jié)構(gòu)。
例如:
二進制數(shù)語言
110或10101語法實體
指稱(十進制數(shù))
6或21語義實體
二進制數(shù)文法
Numeral::=0
::=1
::=Numeral0
::=Numeral1
自然數(shù)
Natrual={0,1,2,3,…}
語義函數(shù)
Valuation:NumeralNaturalValuation[101]表示把Valution施用于101Valuation[N]表示把Valution施用于N定義:Valuation(用四個方程)因為有四個形式numeralValuation[0]0Valuation[1]1Valuation[N0]2Valution[N]Valuation[N1]2Valution[N]+1
例子:
Valuation[110]=2Valuation[11]=2(2Valuation[1]+1)=2(21+1)=6規(guī)格說明模型-代數(shù)數(shù)據(jù)類型描述實現(xiàn)一個程序的各種函數(shù)間的關(guān)系。如果證明一個實現(xiàn)服從任何兩個函數(shù)間的這種關(guān)系,則可以聲明這個實現(xiàn)是此規(guī)格說明的正確實現(xiàn)。7.1屬性文法屬性文法A(attributegrammar)是一個三元組:A=(G,V,F),其中
G:是一個上下文無關(guān)文法;
V:有窮的屬性集,每個屬性與文法的一終結(jié)符或非終結(jié)符相連;
F:關(guān)于屬性的屬性斷言或謂詞集.每個斷言與一個產(chǎn)生式相聯(lián).而此斷言只引用該產(chǎn)生式左端或右端的終結(jié)符或非終結(jié)符相聯(lián)的屬性.屬性文法:允許為每個終結(jié)符和非終結(jié)符配備一些屬性,并將描述這些屬性的語義規(guī)則附加在相應(yīng)的文法規(guī)則中.它既能描述程序設(shè)計語言的語法,又為其語義描述提供了手段.屬性文法由D.E.Knuth于1968年引進.后來才被用于編譯程序的設(shè)計.屬性有不同的類型,可以象變量一樣地被賦值.賦值規(guī)則附加于語法規(guī)則之上.賦值與語法分析同時進行,賦值過程就是語義處理過程.在推導(dǎo)語法樹的時候,諸屬性的值被計算并通過賦值規(guī)則層層傳遞.有的從語法規(guī)則左邊向右邊傳,有的從右邊向左邊傳.語法推導(dǎo)樹最后完成時,就得到開始符號的屬性值,也就是整個程序的語義.屬性文法中的語義規(guī)則(動作)和產(chǎn)生式相聯(lián)系的方式有兩種:語法制導(dǎo)的定義和翻譯模式(TranslationSchemes)。語法制導(dǎo)的定義是較抽象的翻譯,隱蔽了一些實現(xiàn)細節(jié);而翻譯方案描述了一些實現(xiàn)細節(jié),主要指名了語義規(guī)則的計算次序。例如:定義表達式的文法如下:
EE+E
E(E)
En
給出定義表達式值的屬性文法。為文法符號E引進屬性符號val,用E.val表示E的值,屬性計算規(guī)則以賦值語句的形式給出,附在每個產(chǎn)生式后,并用大括號括起來。為了明確E的不同出現(xiàn)位置,用上角標區(qū)別。終結(jié)符n的值是詞法分析程序提供的,這里用n.lex表示。屬性文法如下:
EE1+E2{E.val:=E1.val+E2.val}E(E1){E.val:=E1.val}En{E.val:=n.lex}屬性文法的主要思想有兩點:
首先,對于每個文法符號引進相關(guān)的屬性符號;其次,對于每個產(chǎn)生式寫出屬性值計算的規(guī)則。例:ET1+T2|T1orT2
Tnum|ture|false
給出類型檢查的屬性文法。ET1+T2{T1.t=intANDT2.t=int}
ET1orT2{T1.t=boolANDT2.t=bool}
Tnum{T.t:=int}Tture{T.t:=bool}Tfalse{T.t:=bool}屬性文法中,對應(yīng)每個產(chǎn)生式A都有一套與之相關(guān)聯(lián)的語義規(guī)則,每條規(guī)則的形式為b:=f(c1,c2,…,ck)。其中,f是一個函數(shù),b和c1,c2,…,ck是該產(chǎn)生式文法符號的屬性。
(1)如果b是A的一個屬性,c1,c2,…,ck是產(chǎn)生式右部文法符號的屬性或A的其它屬性,則稱b是A的綜合屬性(synthesizedattribute)。
(2)如果b是產(chǎn)生式右部某個文法符號X的一個屬性,并且c1,c2,…,ck是A或產(chǎn)生式右邊任何文法符號的屬性,則稱b是文法符號X的繼承屬性(Inheritedattribute)。屬性b依賴于屬性c1,c2,…,ck
。注意:非終結(jié)符既可以有綜合屬性也可以有繼承屬性,但文法開始符號沒有繼承屬性。終結(jié)符只有綜合屬性,屬性值由詞法分析程序提供。繼承屬性的計算規(guī)則自頂向下,綜合屬性的計算規(guī)則自底向上.例如,定義表達式值的屬性文法,E.val是一個綜合屬性的例子:
EE1+E2{E.val:=E1.val+E2.val}E(E1){E.val:=E1.val}En{E.val:=n.lex}考慮句子2+(3+1)的求值順序,將2+(3+1)的分析樹結(jié)點改為有附加屬性的結(jié)點(這樣的樹稱為帶注釋的分析樹):E.val=6E.val=2+E.val=4n.lex=2(E.val=4)E.val=3+E.val=1n.lex=3n.lex=1
例:簡單算術(shù)表達式求值的語義描述(語法制導(dǎo)定義)
語義規(guī)則LEEE1+TETTT1*FTFF(E)FdigitPrint(E.val)E.val:=E1.val+T.valE.val:=T.valT.val:=T1.valF.valT.val:=F.valF.val:=E.valF.val:=digit.lexval產(chǎn)生式產(chǎn)生式語義規(guī)則L→EL.nptr:=E.nptrE→E1+TE.nptr:=makenode(‘+’,E1.nptr,T.nptr)E→TE.nptr:=T.nptrT→T1*FT.nptr:=makenode(‘*’,T1.nptr,F.nptr)T→FT.nptr:=F.nptrF→(E)F.nptr:=E.nptrF→numF.nptr:=mkleaf(num,num.val)例:構(gòu)造表達式語法樹的語法制導(dǎo)定義例:說明語句中各變量的類型信息的語法制導(dǎo)定義產(chǎn)生式語義規(guī)則DTL
T
int
Treal
LL1,idLidL.type:=T.typeT.type=integerT.type:=real
L1.type:=L.type
addtype(id.entry,L.type)
addtype(id.entry,L.type)DTLLintid1id2,屬性信息傳遞7.2
語法制導(dǎo)的語義計算注釋分析樹每個結(jié)點的屬性值都標注出來的分析樹叫做注釋分析樹。(分析樹vs
語法樹)LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*3*5+4的注釋的分析樹計算語義規(guī)則分析樹結(jié)點的屬性間的相互依賴關(guān)系圖稱為屬性依賴圖。構(gòu)造算法如下:
for
分析樹中的每一結(jié)點n
do
for
結(jié)點n的文法符號的每一屬性a
do
為a在依賴圖中建立一個結(jié)點;
for
分析樹中的每一結(jié)點n
do
for
結(jié)點n所用產(chǎn)生式對應(yīng)的每一語義規(guī)則
b:=f(c1,c2,…,ck)do
for
i:=1tok
do
從ci結(jié)點到b結(jié)點構(gòu)造一條有向邊;
DL.type=realL.type=realL.type=realT.type=realrealid2id1id3..realid1,id2,id3的注釋分析樹,,
realid1,id2,id3分析樹的屬性依賴圖屬性依賴圖的拓撲序列,就是語義規(guī)則的計算順序。DLLLTrealid2id1id3..,,4typein56in7in91entry2entry1entry108Forward屬性計算策略:樹遍歷:常用的是深度優(yōu)先,自左而右的遍歷方法。一遍掃描:在語法分析的同時計算屬性值(無需構(gòu)造語法樹),而不是先構(gòu)造語法樹再計算屬性。S屬性文法及其自下而上翻譯S屬性文法:只含有綜合屬性的屬性文法。S屬性文法的翻譯器通??山柚鶯R分析器實現(xiàn)。實現(xiàn)方法:分析器保存與棧中文法符號有關(guān)的綜合屬性值,每當進行規(guī)約時,新的非終結(jié)符的屬性值就由棧中待規(guī)約的產(chǎn)生式右邊文法符號的屬性值來計算。
例:簡單算術(shù)表達式求值的語義描述(語法制導(dǎo)定義)
語義規(guī)則LEEE1+TETTT1*FTFF(E)FdigitPrint(E.val)E.val:=E1.val+T.valE.val:=T.valT.val:=T1.valF.valT.val:=F.valF.val:=E.valF.val:=digit.lexval產(chǎn)生式SmY.valYSm-1X.valX………S0-#狀態(tài)棧語義值棧符號棧擴充的LR分析棧步驟狀態(tài)棧符號棧語義棧留余輸入串規(guī)約動作10#–2+3*5#205#2––+3*5#303#F–2+3*5#r6402#T–2+3*5#r4501#E–2+3*5#r26016#E+–2–3*5#70165#E+3–2––*5#80163#E+F–2–3*5#r690169#E+T–2–3*5#r41001697#E+T*–2–3–5#11016975#E+T*5–2–3––#1201697510#E+T*F–2–3–5#r6130169#E+T–2–15#r31401#E–17#r115acc2+3*5的分析計算過程語法樹構(gòu)造產(chǎn)生式代碼段L→Eprint(val[top])E→E1+Tval[top-2]:=val[top-2]+val[top]E→TT→T1*Fval[top-2]:=val[top-2]*val[top]T→FF→(E)val[top-2]:=val[top-1]F→digit用LR分析器實現(xiàn)表達式求值產(chǎn)生式語義規(guī)則L→EL.nptr:=E.nptrE→E1+TE.nptr:=makenode(‘+’,E1.nptr,T.nptr)E→TE.nptr:=T.nptrT→T1*FT.nptr:=makenode(‘*’,T1.nptr,F.nptr)T→FT.nptr:=F.nptrF→(E)F.nptr:=E.nptrF→numF.nptr:=mkleaf(num,num.val)例:構(gòu)造表達式文法語法樹的語法制導(dǎo)定義2+3*5的語法樹的構(gòu)造規(guī)約過程E.nptrE.nptrT.nptrF.nptrnumnum2+T.nptrF.nptrT.nptr*numF.nptrnumnum3num5*+L屬性文法及其自上而下分析L屬性文法:如果對于每個產(chǎn)生A→X1X2…Xn的每個語義規(guī)則計算的的屬性,或者是A的綜合屬性,或者是Xj的一個繼承屬性而且這個繼承屬性僅依賴于:產(chǎn)生式Xj的左邊符號X1,X2,…Xj-1的屬性;A的繼承屬性;S屬性文法一定是L屬性文法。例:說明語句中各變量的類型信息的L屬性文法產(chǎn)生式語義規(guī)則DTL
Tint
Treal
LL1,idLidL.type:=T.typeT.type=integerT.type:=real
L1.type:=L.type
addtype(id.entry,L.type)
addtype(id.entry,L.type)分析過程例:將中綴表達式翻譯成相應(yīng)的后綴表達式的屬性文法。
E→EaddopTE→TT→num若采用LR分析方法,串2+3-5時的語義動作圖示如下:print(addop.Lexeme)print(num.val)E﹣TEET+T325Print(2)Print(3)Print(5)Print(+)Print(-)例:將中綴表達式翻譯成相應(yīng)的后綴表達式的屬性文法。
E→EaddopTE→TT→num還以分析串2+3-5為例,若采用LL(1)分析方法(自上而下的分析),其屬性文法?消除左遞歸:
E→TRR→addopTR1|εT→num翻譯模式(翻譯方案、translationschemes):是語法制導(dǎo)翻譯的另一種描述形式。語義動作(區(qū)別于語義規(guī)則)放在{}括號內(nèi),可插入到產(chǎn)生式右部的任何位置。
E→TRR→addopTR1|εT→numprint(addop.Lexeme)print(num.val)包含語義動作的分析樹ETR2Print(2)+TRPrint(+)3Print(3)-TPrint(-)R5Print(5)ε轉(zhuǎn)換左遞歸翻譯模式的方法若翻譯模式為:A→A1Y{A.a:=g(A1.a,Y.y)}A→X{A.a:=f(X.x)}消除左遞歸后的翻譯模式如下(使用了R的繼承屬性i):A→X{R.i:=f(X.x)}R{A.a:=R.s}R→Y{R1.i:=g(R.i,Y.y)}R1{R.s:=R1.s}R→ε{R.s:=R.i}例如:
E→E1+T E.nptr:=makenode(‘+’,E1.nptr,T.nptr)E→T E.nptr:=T.nptrT→numF.nptr:=mkleaf(num,num.val)轉(zhuǎn)換成自上而下分析(消除左遞歸):E→TRR→+TR1
R→ε轉(zhuǎn)換成自上而下分析(消除左遞歸):E→T{R.i:=T.nptr}
R{E.nptr:=R.s}R→+T{R1.i=makenode(‘+’,R.i,T.nptr)}R1{R.s:=R1.s}R→ε{R.s:=R.i}此翻譯模式的屬性信息(語法樹結(jié)點指針)是從左向右流動的,規(guī)約方向(?)卻是從右向左的,這種不一致性導(dǎo)致了繼承屬性的出現(xiàn)。Forward2+3+5的語法樹的構(gòu)造EsT.nptrnumnum2+iRsiRsT.nptrεnumnum3num5++iRs+T.nptrnumnum3num3num3num3num3num3num3num3num3num3num3翻譯模式L屬性文法的自下而上分析考慮以下兩種實現(xiàn)自下而上計算繼承屬性的方法:刪除翻譯模式中嵌入的動作、用綜合屬性代替繼承屬性、用分析棧處理繼承屬性。刪除翻譯模式中嵌入的動作的方法是:引入新的非終結(jié)符N和產(chǎn)生式N→ε,把嵌入在產(chǎn)生式中的語義動作用非終結(jié)符N代替,并把這個動作放在N→ε的右端。為了用綜合屬性代替繼承屬性,改變基礎(chǔ)文法是一種可行的方法。例如:E→TRR→+T{print(+)}R1R→-T{print(-)}R1R→εT→num{print(num,val)}引入產(chǎn)生ε的標記非終結(jié)符后的翻譯方案為:E→TRR→+TMR1R→-TNR1R→εT→num{print(num,val)}M→ε{print(+)}N→ε{print(-)}
例如,說明語句文法:D→L:TT→integer
|charL→L,id|id分析:標識符由L產(chǎn)生,但類型不在L中,僅用綜合類型不能把類型與標識符聯(lián)系起來。進一步,類型信息從右向左流動,而文法是從左向右規(guī)約的。解決方法:重構(gòu)文法!
原文法:
D→L:TT→integer
|charL→L,id|id新文法如下:
D→idLL→,idL|:TT→integer
|char相應(yīng)的,屬性文法如下:D→idL{addtype(id.entry,L.type)}L→,idL1{L.type:=L1.type;
addtype(id.entry,L1.type)}:T{L.type:=T.type}T→integer{T.type:=int}
char{T.type:=char}
此時,類型信息流動方向和規(guī)約方向一致,都是從右向左的。分析棧上的繼承屬性產(chǎn)生式代碼段DTL
Tint
Treal
LL1,idLidval[top]:=integerval[top]:=realaddtype(val[top],val[top-3])addtype(val[top],val[top-1])其中,val[i]保存對應(yīng)文法符號的綜合屬性習(xí)
題1313(1)定點二進制數(shù)的CFGNS?SSSBSBB0B1
顯然,可以使用一個正規(guī)文法表示同樣的語言。D.E.Knuth使用這個CFG是為了說明綜合屬性和繼承屬性如何附加在非終結(jié)符上。非終結(jié)符N表示整個二進制數(shù)。非終結(jié)符N表示整個二進制數(shù),該例中共使用了三個屬性:綜合屬性v和le,繼承屬性f,分別使用和顯示綜合屬性和繼承屬性.綜合屬性v附加在N上:Nv表示整個二進制數(shù)的數(shù)值。非終結(jié)符B表示一個二進制數(shù)字,它有自己的值v,但該值與它的位置有關(guān),與2成比例,但這個比例因子是無法用綜合屬性的,因此設(shè)計一個從S繼承的屬性f,那么附加在B的屬性表示為:Bvf非終結(jié)符S表示一個二進制數(shù)字串,它的值v與它在串中的位置有關(guān),與串的長度le有關(guān),f的計算基于串的長度和相對于小數(shù)點的位置,所以有:Sfvle
繼承屬性和綜合屬性---帶注釋的分析樹Nv.Svfle
S
vfle
BvfSvfle
S
vfleBvf11Bvf..Bvf,10構(gòu)造數(shù)值的屬性和斷言NvSf1v1le1?Sf2
v2le2
{v=v1+v2;f1=1;f2=2-le2}
/*一個數(shù)的值是整數(shù)部分v1和小數(shù)部分v2的和;整數(shù)部分和小數(shù)部分已分別選定了比例因子f,并沿語法樹傳下去了,該數(shù)的整數(shù)部分的數(shù)字串繼承的比例因子是1,而該數(shù)的小數(shù)部分的數(shù)字串繼承的比例因子基于小數(shù)點至它的右端的數(shù)字的數(shù)目,即小數(shù)部分的長度*/SfvleSf1v1le1Bf2v2
{f1=2f;f2=f;v=v1+v2;le=le1+1}
/*任何二進制數(shù)串都是由子串后跟一位二進制數(shù)字構(gòu)成,二進制數(shù)字B的比例因子與數(shù)串的一樣,子串的要乘以2,數(shù)串的長度增1*/
Bfv
{le=1}
/*當數(shù)串只有一位數(shù)字時,f和v都不變*/Bfv0
{v=0}
1{v=f}
/*屬性v和f有關(guān),f是從父結(jié)點繼承的*/
語法樹中的屬性流---屬性le自底向上N.Sle
S
le
BSle
S
leB
11B..B10le=1
le=2
Le=2
Le=1
語法樹中的屬性流---屬性f自上而下NSf
S
f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新石器課件教學(xué)課件
- 人力資源部門招聘勞動合同模板
- 個人著作權(quán)質(zhì)押貸款協(xié)議
- 《寵物醫(yī)院物業(yè)管理方案范本》
- 企業(yè)員工離職管理
- 互聯(lián)網(wǎng)旅游合同協(xié)議書范本
- 臨沂虛擬現(xiàn)實行業(yè)勞動合同模板
- 傳媒合作結(jié)束協(xié)議書
- 企業(yè)健康醫(yī)療共建協(xié)議
- 上海個人租房合同-機場附近
- 中小學(xué)節(jié)約能源資源工作實施方案(完整版)
- 建筑施工作業(yè)活動風險分級管控清單
- 基于DCS的溫度控制系統(tǒng)的設(shè)計與應(yīng)用(共35頁)
- XX區(qū)畜禽養(yǎng)殖屠宰無害化處理企業(yè)洗消中心建設(shè)項目實施方案.docx
- 大貓英語分級閱讀 六級1 A Letter to New Zealand課件
- 科創(chuàng)板知識測評含答案
- 帶電作業(yè)規(guī)程PPT
- 第幾和幾專項訓(xùn)練
- 北京市海淀區(qū)2021-2022學(xué)年七年級上學(xué)期期末考試語文試卷(word版含答案)
- (完整版)心理健康教育五年工作規(guī)劃
- 作業(yè)流程分析ppt課件
評論
0/150
提交評論