- return 0 unless($parent);
- return 0 unless($parent->type() == $TYPE_BOOL);
- return 1 if($parent->name() eq "OR");
+ my $parent_valid = ($parent && $parent->type() == $TYPE_BOOL);
+ if($tail->type() == $TYPE_BOOL)
+ {
+ return 1 if($tail->name() eq "OR");
+ return 0 unless($tail->name() eq "NOT");
+ return 0 unless($parent_valid);
+ return 1 if($parent->name() eq "OR");
+ return 1 if($parent->name() eq "AND");
+ }
+ elsif($tail->type() == $TYPE_TAG)
+ {
+ return 0 unless($parent_valid);
+ return 1 if($parent->name() eq "NOT");
+ }