Location : Home > Languages > Perl > Package Title : Math::BooleanEval |
![]() |
Math::BooleanEval - ブール式のパーサ
use Math::BooleanEval; my $bool = Math::BooleanEval->new('yes|no'); # 式内の各定義項を 1 または 0 に評価 foreach my $item (@{$bool->{'arr'}}){ next unless defined $item; $item = ($item =~ m/^no|off|false|null$/i) ? 0 : 1; } # 式を評価 print $bool->eval();
BooleanEval はブール式をパースし、式の要素の配列を生成する。各要素に 0 または 1 を充当することで式を評価することができる。式は標準のブール区切り文字でパースされる。
& | () ! ? :
BooleanEval を実行すると、オブジェクトの初期化・式内の各要素への 0 または 1 の充当・eval() の呼び出しの3段階の処理を行う。
新しいオブジェクトを生成するには new() を呼び出し、単一の引数として式を渡す。
$bool = BooleanEval->new('yes|no');
一般には、最も簡単な方法は foreach ループを使うことである。:
foreach my $item (@{$bool->{'arr'}}){ next unless defined $item; $item = ($item =~ m/^no|off|false|null$/i) ? 1 : 0; }
ループの最初で実行するのは、各項が定義されているかを確認することである。未定義ならば実行を中止し、そうでなければその項を使う。上の例では標準の英語で「偽」を表す言葉を確認している。各項に 1 または 0 を設定する。
最後に eval() メソッドで式の評価を行う。method:
print $bool->eval();
Math::BooleanEval->new(expression)
BooleanEval オブジェクトを初期化する。
$bool->reset()
設定や評価のためにオブジェクトをリセットする。
T auto_reset プロパティが false に設定されていない限り(デフォルトでは true に設定されている) eval() を呼び出した後に自動的にリセットされるので、 eval を呼び出した後にはリセットを行う必要はない。
$bool->eval()
式を評価する。本メソッドを呼び出したときには {'arr'} 内の全ての要素を 1 または 0 に設定するか、始める前ならば未設定のままにしておく必要がある。上述の例を見よ。
syntaxcheck()
式が文法的に妥当であれば true を返し、そうでなかれば false を返す。例えば "Me & You" には true を返すが "Me & | You" には false を返す。
syntaxcheck はオブジェクトメソッドとしても呼び出すことができる。
if ($bool->syntaxcheck)
または静的なスタブとしても呼び出せる。
if (Math::BooleanEval::syntaxcheck($expr))
Copyright (c) 2000 by Miko O'Sullivan. All rights reserved.
本プログラムはフリーソフトウェアであり、 Perl 本体と同等の条件で修正/再配布してもよい。このソフトウェアは無保証である。
Miko O'Sullivan, <miko@idocs.com>
作成したのは20世紀の終わりごろ。正確な日を覚えてない。
Version 0.9 December 18, 2000 オリジナルリリース Version 0.91 Oct 15, 2001 0.9 と変わりはないが CPAN に登録。 Version 1.00 July 11, 2002 reset メソッドを追加 ドキュメントを清書
![]() |
Updated : 2006/07/29 |