Parse-Token-Lite

 view release on metacpan or  search on metacpan

lib/Parse/Token/Lite/Builder.pm  view on Meta::CPAN


*_on = sub{ croak 'on'; };
*_name = sub{ croak 'name'; };
*_with = sub{ croak 'with'; };
*_match = sub{ croak 'match'; };
*_start = sub{ croak 'start'; };
*_end = sub{ croak 'end'; };

sub on($&){ goto &_on };
sub name($){ goto &_name };
sub with(&){ goto &_with };
sub match($&){ goto &_match };
sub start($){ goto &_start };
sub end($){ goto &_end };

sub ruleset(&){
	my $rules = {};
	my $code = shift;

	local *_match = sub($&){
		my ($pat, $code) = @_;
		my $_rule = {re=>$pat, state=>[] };
		
		local *_name = sub($){ $_rule->{name} = $_[0]; };
		local *_with = sub(&){ $_rule->{func} = $_[0]; };
		local *_start = sub($){ push(@{$_rule->{state}}, '+'.$_[0]); }; 



( run in 1.283 second using v1.01-cache-2.11-cpan-49f99fa48dc )