PPIx::Regexp::Token::Condition - Represent the condition of a switch


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

Index


Code Index:

NAME

Top

PPIx::Regexp::Token::Condition - Represent the condition of a switch

SYNOPSIS

Top

 use PPIx::Regexp::Dumper;
 PPIx::Regexp::Dumper->new( 'qr{(?(1)foo|bar)}smx' )
     ->print();

INHERITANCE

Top

PPIx::Regexp::Token::Condition is a PPIx::Regexp::Token::Reference.

PPIx::Regexp::Token::Condition has no descendants.

DESCRIPTION

Top

This class represents the condition portion of a switch or conditional expression, provided that condition is reasonably represented as a token.

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::Token::Condition;

use strict;
use warnings;

use base qw{ PPIx::Regexp::Token::Reference };

use PPIx::Regexp::Constant qw{ RE_CAPTURE_NAME };

our $VERSION = '0.020';

sub perl_version_introduced {
    my ( $self ) = @_;
    $self->content() =~ m/ \A [(] \d+ [)] \z /smx
	and return '5.005';
    return '5.009005';
}

my @recognize = (
    [ qr{ \A \( (?: ( \d+ ) | R (\d+) ) \) }smx,
	{ is_named => 0 } ],
    [ qr{ \A \( R \) }smx,
	{ is_named => 0, capture => '0' } ],
    [ qr{ \A \( (?: < ( @{[ RE_CAPTURE_NAME ]} ) > |
	    	    ' ( @{[ RE_CAPTURE_NAME ]} ) ' |
	    	    R & ( @{[ RE_CAPTURE_NAME ]} ) ) \) }smxo,
	{ is_named => 1} ],
    [ qr{ \A \( DEFINE \) }smx,
	{ is_named => 0, capture => '0' } ],
);

# This must be implemented by tokens which do not recognize themselves.
# The return is a list of list references. Each list reference must
# contain a regular expression that recognizes the token, and optionally
# a reference to a hash to pass to make_token as the class-specific
# arguments. The regular expression MUST be anchored to the beginning of
# the string.
sub __PPIX_TOKEN__recognize {
    return @recognize;
}


# Return true if the token can be quantified, and false otherwise
# sub can_be_quantified { return };

sub __PPIX_TOKENIZER__regexp {
    my ( $class, $tokenizer, $character ) = @_;

    foreach ( @recognize ) {
	my ( $re, $arg ) = @{ $_ };
	my $accept = $tokenizer->find_regexp( $re ) or next;
	return $tokenizer->make_token( $accept, __PACKAGE__, $arg );
    }

    return;
}

1;

__END__

# ex: set textwidth=72 :