version 1.108, 2006/04/27 23:36:10
|
version 1.109, 2006/05/05 15:50:20
|
Line 413 sub accinit {
|
Line 413 sub accinit {
|
foreach my $key (keys(%hash)) { |
foreach my $key (keys(%hash)) { |
if ($key=~/^conditions/) { |
if ($key=~/^conditions/) { |
my $expr=$hash{$key}; |
my $expr=$hash{$key}; |
|
# try to find and factor out common sub-expressions |
foreach my $sub ($expr=~m/(\(\([_\.\d]+(?:\&[_\.\d]+)+\)(?:\|\([_\.\d]+(?:\&[_\.\d]+)+\))+\))/g) { |
foreach my $sub ($expr=~m/(\(\([_\.\d]+(?:\&[_\.\d]+)+\)(?:\|\([_\.\d]+(?:\&[_\.\d]+)+\))+\))/g) { |
my $orig=$sub; |
my $orig=$sub; |
$sub=~/\(\(([_\.\d]+\&(:?[_\.\d]+\&)*)(?:[_\.\d]+\&*)+\)(?:\|\(\1(?:[_\.\d]+\&*)+\))+\)/; |
|
my $factor=$1; |
my ($factor) = ($sub=~/\(\(([_\.\d]+\&(:?[_\.\d]+\&)*)(?:[_\.\d]+\&*)+\)(?:\|\(\1(?:[_\.\d]+\&*)+\))+\)/); |
$sub=~s/$factor//g; |
next if (!defined($factor)); |
|
|
|
$sub=~s/\Q$factor\E//g; |
$sub=~s/^\(/\($factor\(/; |
$sub=~s/^\(/\($factor\(/; |
$sub.=')'; |
$sub.=')'; |
$sub=simplify($sub); |
$sub=simplify($sub); |
$orig=~s/(\W)/\\$1/g; |
$expr=~s/\Q$orig\E/$sub/; |
$expr=~s/$orig/$sub/; |
|
} |
} |
$hash{$key}=$expr; |
$hash{$key}=$expr; |
unless (defined($captured{$expr})) { |
unless (defined($captured{$expr})) { |