#! /usr/local/bin/perl -w # # naive - generate a regular expression that will lex regular expressions # it is naive in the sense that it can't lex certain patterns, such as a # pattern that contains nested parentheses (e.g. /ab(?:cd(?ef)?gh)+ij/ ) # # The emitted regular expression is the default pattern that Regexp::Assemble # uses to pick apart a string into tokens suitable for being assembled. If it # isn't sufficiently sophisticated, you will have to supply your own lexer. # # Copyright (C) David Landgren 2004-2005 use strict; my $directive = q{[bABCEGLQUXZ]}; my $punct = q{[^\\w]}; my $meta = q{[aefnrtdDwWsS]}; my $ctrl = q{c.}; my $octal = q{0\\d{2}}; my $hex = q{x(?:[\\da-fA-F]{2}|{[\\da-fA-F]{4}})}; my $named = q{N\\{\w+\\}}; my $prop = q{[Pp](?:\\{\w+\\}|.)}; my $single = q{[^\\w\\/{|}-]}; my $modifiable = qq{$punct|$meta|$ctrl|$octal|$hex|$named|$prop}; my $modifier = q{(?:[*+?]\\??|\\{\\d+(?:,\\d*)?\\}\\??)?}; my $backslash = qq{\\\\(?:$directive|[lu].|(?:$modifiable)$modifier)}; my $class = q{\\[.*?(?