|
||||||||||
前 次 | フレームあり フレームなし |
参照先:
説明
パッケージ | |
---|---|
jp.sourceforge.rpn_computer | 数式の解析、計算を行う機能を提供します。 |
jp.sourceforge.rpn_computer.command | 数式を構成するコマンドを提供します。 |
jp.sourceforge.rpn_computer.node | 抽象構文木のノードを提供します。 |
jp.sourceforge.rpn_computer.token | 数式を構成するトークンを提供します。 |
jp.sourceforge.tokenizer | トークナイザ(字句解析器)を提供します。 |
数式の解析、計算を行う機能を提供します。
以下の機能を実装します(する予定です)。
機能 | 内容 |
---|---|
数式の解析、計算 | 通常の数式に対して、演算子順位文法による解析、抽象構文木の構築、命令列への変換(逆ポーランド記法への変換)、計算、を行います。このライブラリの基本的な機能です。 |
変数 | 数式中で変数を使用することが出来ます。(0.0.1では実実装) |
関数呼び出し | あらかじめ定義した関数を数式中で呼び出すことが出来ます。(0.0.1では未実装) |
RpnComputerクラスは、文字列を直接計算することが出来ます。
String exp = "1 + 2"; RpnComputer comp = new RpnComputer(); double value = comp.computer(exp);
数式の解析、計算は、以下の段階を経て行われます。
RpnParserクラスは、文字列を数式として解析し、抽象構文木を構築します。 以下のように使用します。
String exp = "1 + 2"; RpnParser parser = new RpnParser(); RpnNode node = parser.parse(exp);
得られたRpnNodeインスタンスが、抽象構文木の最上位ノードです。
RpnCompilerクラスは、RpnParserクラスによって構築された抽象構文木を解析し、命令列へ変換します。 以下のように使用します。
RpnCompiler compiler = new RpnCompiler(); RpnCommandList cl = compiler.compile(node);
得られたRpnCommandListインスタンスが、命令列を表します。
RpnComputerクラスは、RpnParserクラスによって変換された命令列を実行し、計算結果を返します。 以下のように使用します。
RpnComputer comp = new RpnComputer(); double value = comp.computer(cl);
こうして、計算結果を取得することが出来ます。
以下の演算子をサポートします(する予定です)。
演算子 | 内容 |
---|---|
+, -, *, /, % | 加算、減算、乗算、除算、剰余算演算子。(剰余演算子だけ0.0.1では未実装) |
<, >, <=, >=, ==, != | 比較演算子。左辺をa、右辺をbとしたとき、aがbより大きい場合は1、aがbより小さい場合は-1、aとbが等しい場合は0を返します。(0.0.1では未実装) |
++, -- | 前置、後置インクリメント、デクリメント。(0.0.1では未実装) |
&, |, ^ | 論理積、論理和、排他的論理和。 |
<<, >>, >>> | シフト演算子。 |
=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, |=, ^= | 代入式。左辺が変数である必要があります。(0.0.1では未実装) |
?: | 条件演算子。"a ? b : c"という式がある場合、aが真(0以外である場合はbを、aが偽(0)である場合はcを返します。(0.0.1では未実装) |
Maven2で管理していますが、siteプラグインの不具合により文字化けしていてまともに読めないので、サイトは作成していません。
|
||||||||||
前 次 | フレームあり フレームなし |