Skip to content
Lucciola edited this page Sep 22, 2016 · 3 revisions

Welcome to the FormulaParser wiki!

ここでは,READMEでは説明しきれないこのライブラリの使用について語ります.

数値計算

単位を入力せずに普通に四則演算を入力すると,ただの数値計算ができます.単位の出力もありません.

この時,各予約語

(, ), +, -, *, /, ^

と数値の間にはスペースを開ける必要があります. すなわち,

1 + 1 * ( 1 + 1 )

のように入力する必要があるということです.その代わり,スペースはいくつ入れても,タブなどの空白文字を使っても動作します.

演算子の種類とか関数とか

今のところ,演算子は

  • /
  • ^

の5種類です.また,関数は,

  • sqrt()

のみの実装となります. しかしながら,演算子や関数を定義するのはかなり簡単に行えるといえます.優先順位は

Expression < Term < Factor

の三種類しか存在しませんが,その優先順位に従う範囲であれば,Operatorクラスの実装を作ることで容易に機能拡張が可能です.

Operatorクラスは,Expressionインターフェイスの実装で,Expressionインターフェイスは構文木の要素の抽象です.InterpreterPatternを使うことで,ポリモーフィズムを実現しました.

単位について

単位は,

[]

で囲ってつけます.また,単位の区切りは,

'

を使い,単位と接頭辞の区切りは

_

を使います.したがって,単位の見た目は

[m'kg's^-2]

や,

[k_m^2'k_A]

のようになります.

また,こうして作られた単位は,数字の後ろにスペース無しで直結するか,括弧閉じ())の後ろにスペース無しで直結されている必要があります.

計算結果は今のところ,SI基本単位に直されて出力されます.したがって,接頭辞の計算は自動で行います.また,単位の四則演算も行ってくれるので,面倒な単位計算を手でやる必要もなくなります.

今はSI基本単位のみの実装であり,また,UnitParser#evaluatePrefix()メソッドがごちゃごちゃしていることもあって,新しい実装をここに作ることは難しいと考えられます.したがって,ここを直すことは,当面の課題となるでしょう.