[1] 中置記法から逆ポーランド記法への変換アルゴリズム 1) 式eからtokenを取り出す 2) すべてのトークンを処理し終えたら スタックに残ったすべての演算子をキューに入れ,キューを返す(終了) 3) tokenが数字のとき tokenをキューに入れ,式の残りを再帰的に処理 4) (tokenが演算子で) 4-a) スタックが空なら tokenをスタックに積んで,式の残りを再帰的に処理 4-b) token(演算子)の優先度 > スタックトップの演算子の優先度 なら tokenをスタックに積んで,式の残りを再帰的に処理 4-c) いずれでもなければ( tokenの優先度 ≦ スタックトップの演算子の優先度 ) スタックトップを取り出してキューに入れ,4)に戻る.
演算子 | 優先度 |
+ | 1 |
- | 1 |
* | 2 |
/ | 2 |
**(べき乗) | 3 |
[2] 逆ポーランド記法の式の計算アルゴリズム
1) キューからtokenを取り出す
2) 全てのトークンを処理し終えたら
スタックトップを取り出し返す(終了)
3) tokenが数字のとき
tokenをスタックに積み,キューの残りを再帰的に処理
4) (tokenが演算子のとき)
スタックトップを取り出し,arg2にセット
スタックトップを取り出し,arg1にセット
[arg1 token arg2] を計算し,結果をスタックに積む.
キューの残りを再帰的に処理;
香川高等専門学校(詫間キャンパス)情報工学科 宮武明義