怎么求后綴表達(dá)式 什么是三元式,四元式,逆波蘭式?
什么是三元式,四元式,逆波蘭式?1)三元表達(dá)式和語句被表示為一組三元表達(dá)式。每個三元表達(dá)式由OP、arg1、2arg2組成,例如(OP、arg1、arg2)。例如:A:=b*cb*D(1)(*b,c)
什么是三元式,四元式,逆波蘭式?
1)三元表達(dá)式和語句被表示為一組三元表達(dá)式。每個三元表達(dá)式由OP、arg1、2arg2組成,例如(OP、arg1、arg2)。例如:A:=b*cb*D(1)(*b,c)(2)(*b,D)(3)((1),(2))(4)(:=(3),A)2)四元數(shù)是更常見的中間碼形式。與三元數(shù)相比,四元數(shù)多了一個結(jié)果,如(OP,arg1,arg2,result)。OP和arg1之間有一個逗號。如果arg是默認(rèn)值,請使用-occulation。例如:A:=b*C,b*D(1)(*,b,C,T1)(2)(*,b,D,T2)(3)(,T1,T2,T3)(4)(:=,T3,-,A)3)逆波蘭表達(dá)式是中間代碼表達(dá)式的最簡單形式。將操作對象寫在前面,操作符號寫在后面,例如a B寫為ab。實(shí)現(xiàn)方法:棧壓,碰到操作對象,棧壓,碰到操作符,在棧頂取兩個操作,然后棧壓。例如:a b*C->abc*(a b)*C->abc*
一般算術(shù)表達(dá)式轉(zhuǎn)化為逆波蘭式?
表達(dá)式e的后綴形式的定義:(1)如果e是變量或常量,則e的后綴形式為e本身;(2)如果e是E1*E2的形式(其中*表示任何二進(jìn)制運(yùn)算),則e的后綴形式為e“1 e”2*,e“1”和e“2分別是E1和E2的后綴表達(dá)式;(3)如果e是(E1)形式的表達(dá)式,則e的后綴表達(dá)式是E1的后綴表達(dá)式。所以波蘭語表達(dá)式的倒裝與運(yùn)算符的優(yōu)先級無關(guān)。具體算法比較困難,要使用DAG圖或三元圖,這是編譯原理中使用較多的。根據(jù)逆波蘭表達(dá)式計(jì)算相對簡單。堆棧用于依次將字符串讀入堆棧。遇到運(yùn)算符時,將堆棧頂部的兩個元素取出進(jìn)行操作,并將操作結(jié)果推入堆棧,直到讀取整個字符。