# # This software is Copyright 2005 by Elsevier Inc. You may use it # under the terms of the license at http://perl.plover.com/hop/LICENSE.txt . # ### ### lookfor ### ## Chapter 9 section 3.1 sub lookfor { my $wanted = shift; my $value = shift || sub { $_[0][1] }; my $u = shift; $wanted = [$wanted] unless ref $wanted; my $parser = parser { my $input = shift; return unless defined $input; my $next = head($input); for my $i (0 .. $#$wanted) { next unless defined $wanted->[$i]; return unless $wanted->[$i] eq $next->[$i]; } my $wanted_value = $value->($next, $u); return ($wanted_value, tail($input)); }; return $parser; }