-
Notifications
You must be signed in to change notification settings - Fork 1
Home
ここでは,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()メソッドがごちゃごちゃしていることもあって,新しい実装をここに作ることは難しいと考えられます.したがって,ここを直すことは,当面の課題となるでしょう.