TODO tests in t/parser-subclass.t
Andy Armstrong
andy at hexten.net
Wed Jun 11 10:40:15 UTC 2008
On 11 Jun 2008, at 10:25, Steve Purkis wrote:
> Finally, I've a nagging voice in the back of my head about circular
> refs & memory leaks - parser refers to grammar refers to parser...
> Any word on whether it's ok to use Scalar::Util's weaken() ?
How about making Grammar delete its ref to the parser when it sees end-
of-stream?
sub tokenize {
my $self = shift;
my $line = $self->{stream}->next;
unless ( defined $line ) {
delete $self->{parser}; # break circular ref
return;
}
my $token;
foreach my $token_data ( @{ $self->{ordered_tokens} } ) {
if ( $line =~ $token_data->{syntax} ) {
my $handler = $token_data->{handler};
$token = $self->$handler($line);
last;
}
}
$token = $self->_make_unknown_token($line) unless $token;
return $self->{parser}->make_result($token);
}
Does that look OK?
--
Andy Armstrong, Hexten
More information about the tapx-dev
mailing list