PPIx::Regexp::Structure::Code - Represent one of the code structures.


PPIx-Regexp documentation Contained in the PPIx-Regexp distribution.

Index


Code Index:

NAME

Top

PPIx::Regexp::Structure::Code - Represent one of the code structures.

SYNOPSIS

Top

 use PPIx::Regexp::Dumper;
 PPIx::Regexp::Dumper->new( 'qr{(?{print "hello sailor\n")}smx' )
     ->print();

INHERITANCE

Top

PPIx::Regexp::Structure::Code is a PPIx::Regexp::Structure.

PPIx::Regexp::Structure::Code has no descendants.

DESCRIPTION

Top

This class represents one of the code structures, either

 (?{ code })

or

 (??{ code })

METHODS

Top

This class provides no public methods beyond those provided by its superclass.

SUPPORT

Top

Support is by the author. Please file bug reports at http://rt.cpan.org, or in electronic mail to the author.

AUTHOR

Top

Thomas R. Wyant, III wyant at cpan dot org

COPYRIGHT AND LICENSE

Top


PPIx-Regexp documentation Contained in the PPIx-Regexp distribution.
package PPIx::Regexp::Structure::Code;

use strict;
use warnings;

use base qw{ PPIx::Regexp::Structure };

use Carp qw{ cluck };
use PPIx::Regexp::Constant qw{ STRUCTURE_UNKNOWN TOKEN_UNKNOWN };

our $VERSION = '0.020';

# The only child of this structure should be a single
# PPIx::Regexp::Token::Code. Anything else gets turned into the
# appropriate ::Unknown object.
sub __PPIX_LEXER__finalize {
    my ( $self ) = @_;

    my $count;
    my $errors = 0;

    foreach my $kid ( $self->children() ) {

	$kid->isa( 'PPIx::Regexp::Token::Code' )
	    and not $count++
	    and next;

	$errors++;

	if ( $kid->isa( 'PPIx::Regexp::Token' ) ) {
	    bless $kid, TOKEN_UNKNOWN;
	} elsif ( $kid->isa( 'PPIx::Regexp::Structure' ) ) {
	    bless $kid, STRUCTURE_UNKNOWN;
	} else {
	    cluck( 'Programming error - unexpected element of class ',
		ref $kid, ' found in a PPIx::Regexp::Structure::Code. ',
		'Please contact the author' );
	}

    }
    return $errors;
}

1;

__END__

# ex: set textwidth=72 :