Location : Home > Languages > Perl > Package
Title : Math::BooleanEval
Toolbox Logo

名称

 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 メソッドを追加
ドキュメントを清書
Toolbox Logo
Updated : 2006/07/29