数式をJavaBigDecimal行に転送する小さなツールを作成しようとしています。
例えば:
A + B * C => A.add(B.multiply(C))
A / B + C => A.divide(B).add(C)
物事はブラケットで厄介になっています。
A - (B + C) / D => A.substract(B.add(C).divide(D))
A - (B * (C + D)) => A.substract(B.multiply(C.add(D)))
私のアプローチは、それを再帰的に行うことです。例:A + B * C
1. convert( A + B * C )
2. A.add( convert (B * C) )
3. A.add(B.multiply(C))
サポートする数学記号:+ - * / % ( )
これを処理するためのより良い方法があるかどうか疑問に思いました。
この種の問題の名前はありますか?コンパイラ?(そうでない場合は申し訳ありませんが、私はコンパイラで作業を行ったことがありません。)よろしくお願いします。