逆ポーランド記法
C言語で逆ポーランド記法への変換をしようとしています.
演算子の優先順位の付け方がわかりません.
構造体の配列に数式を入れて,それぞれに優先度をつけてみたりしたのですが,いい方法でないように思います.
適切な方法を知っている方よろしくお願いします.
回答(5件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
LR系の解析手法では「スタックを使って」解析しています. 式の解析に限定しちゃえば「演算子順位解析」あたりが簡単かな. フルスペックの LR を使うほどじゃないし.
もちろん LL系, 例えば再帰下降解析も「スタックを使ってる」と言い張ることは可能です.
>演算子の優先順位はどのように考えればいいのでしょうか?
乗除算は加減算よりも優先順位が高い
とかいうのを使いたい全部の演算子で関係が壊れないように決めればいいだけですが?
左結合の演算子と右結合の演算子(べき乗とか)や、同じ順位の演算子を
どうするかという問題はありますけどね。
VB.NET - katamari soulware
http://katamari.jp/soulware/index.php/post/categ …
電卓のアルゴリズム
http://www.di.takuma-ct.ac.jp/~miyatake/open/cal …
No.2ベストアンサー20pt
逆ポーランド記法の特徴、演算子の優先順位など↓
http://ja.wikipedia.org/wiki/%E9%80%86%E3%83%9D% …
逆ポーランド記法(後置記法)変換プログラムの例↓
http://www.sra.co.jp/people/miyata/algorithm/pos …
No.1ベストアンサー10pt
二分木を使えば効率よく実装できると思います。
この回答へのお礼
ありがとうございます.
早速,作ってみようと思います.
スタックを使うのも作ってみたいのですが,演算子の優先順位はどのように考えればいいのでしょうか?
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











