編譯原理之後綴表示式生成與計算(2)

2021-07-12 06:56:00 字數 1180 閱讀 2272

先給parser這個類乙個code字段,用來儲存字尾表示式:

class parser 

void term(lexerstream* lexers)

void factor(lexerstream* lexers)

vector

code;

};

然後在每個解析函式中合適的地方壓入值。具體**前往 learncompilers/hll/calculator001 檢視。

class calculator  else 

} while(!code.empty());

return calc.top();

}bool isoperator(const

string& s) ;

string calcula(const

string& operation, const

string& arg0, const

string& arg1);

string add(const

string& arg0, const

string& arg1)

string sub(const

string& arg0, const

string& arg1);

string mul(const

string& arg0, const

string& arg1);

string div(const

string& arg0, const

string& arg1);

vector

code;

stack

calc;

}

具體看result函式。先取出字尾表示式中的token,如果是操作符,就從運算結果棧中取出兩個token,然後進行計算,將獲取到的結果壓入運算結果棧中;如果不是操作符,就壓入運算結果棧中。

具體**前往 learncompilers/hll/calculator001 檢視。

字首、中綴、字尾表示式

計算字首表示式與字尾表示式

字首表示式 從後往前掃,遇到運算元入棧 遇到字元時取兩棧頂元素進行相應運算後結果入棧。字尾表示式 與上類似,只是是從前往後掃。求字首表示式的值 25 分 算術表示式有字首表示法 中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2 3 7 4 8 4的字首表示式是 2 3 ...

Python生成字尾表示式及計算

字尾表示式 也叫做逆波蘭式或逆波蘭記法 其實就是將運算子寫在運算元之後的式子。比如我們平時寫a b,這是中綴表示式,寫成字尾表示式就是ab 下面來看乙個更複雜的例子 求 a b c a b e字尾表示式的j具體過程 a b c a b e a b c a b e a b c a b e ab c a...

字尾表示式計算

演算法 1.遍歷字尾表示式中的數字和符號 對於數字 進棧 對於符號 從棧中彈出右運算元 從棧中彈出左運算元 根據符號進行運算 將運算結果壓入棧中 2.遍歷結束 棧中的唯一數字為計算結果 include include linkstack.h int isnumber char c int isope...