# # 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 . # ### ### alternate-continuation ### ## Chapter 8 section 8.1 sub alternate { my @p = @_; return parser { return () } if @p == 0; return $p[0] if @p == 1; my $p; $p = parser { my ($input, $continuation) = @_; for (@p) { if (my ($v) = $_->($input, $continuation)) { return $v; } } return; # Failure }; $N{$p} = "(" . join(" | ", map $N{$_}, @p) . ")"; return $p; }