# query_parser.pl use strict; use warnings; use Data::Dumper qw( ); use QueryParser qw( ); sub display { my ($expr, $tree) = @_; local $Data::Dumper::Indent = 0; print(Data::Dumper->Dump([$tree], [$expr]), "\n"); } { my $parser = QueryParser->new(); foreach my $expr ( '( keyword1 )', '( keyword1 ) AND ( keyword2 )', '( keyword1 ) AND ( keyword2 ) AND ( keyword3 )', '( keyword1 ) NOT ( keyword2 )', '( keyword1 ) NOT ( keyword2 ) NOT ( keyword3 )', '( keyword1 ) AND ( keyword2 ) NOT ( keyword3 )', '( keyword1 ) NOT ( keyword2 ) AND ( keyword3 )', '( keyword1 OR keyword2 )', '( keyword1 ) AND ( keyword2 OR keyword3 )', '( keyword1 ) NOT ( keyword2 OR keyword3 )', ) { my $tree = $parser->parse($expr); display($expr, $tree); } }