#!/usr/bin/perl
###########################################################-*-mode:cperl-*-
##                                                                       ##
##                           Cepstral, LLC                               ##
##                        Copyright (c) 2001                             ##
##                        All Rights Reserved.                           ##
##                                                                       ##
##  Permission is hereby granted, free of charge, to use and distribute  ##
##  this software and its documentation without restriction, including   ##
##  without limitation the rights to use, copy, modify, merge, publish,  ##
##  distribute, sublicense, and/or sell copies of this work, and to      ##
##  permit persons to whom this work is furnished to do so, subject to   ##
##  the following conditions:                                            ##
##   1. The code must retain the above copyright notice, this list of    ##
##      conditions and the following disclaimer.                         ##
##   2. Any modifications must be clearly marked as such.                ##
##   3. Original authors' names are not deleted.                         ##
##   4. The authors' names are not used to endorse or promote products   ##
##      derived from this software without specific prior written        ##
##      permission.                                                      ##
##                                                                       ##
##  CEPSTRAL, LLC AND THE CONTRIBUTORS TO THIS WORK DISCLAIM ALL         ##
##  WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED       ##
##  WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL         ##
##  CEPSTRAL, LLC NOR THE CONTRIBUTORS BE LIABLE FOR ANY SPECIAL,        ##
##  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER          ##
##  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION    ##
##  OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR  ##
##  IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.          ##
##                                                                       ##
###########################################################################
##                                                                       ##
##  Output compiled regexes for cst_regex.c                              ##
##                                                                       ##
###########################################################################

%RXS = (
	cst_rx_white => "[ \n\t\r]+",
	cst_rx_alpha => "[A-Za-z]+",
	cst_rx_uppercase => "[A-Z]+",
	cst_rx_lowercase => "[a-z]+",
	cst_rx_alphanum => "[0-9A-Za-z]+",
	cst_rx_identifier => "[A-Za-z_][0-9A-Za-z_]+",
	cst_rx_int => "-?[0-9]+",
	cst_rx_double => "-?\\(\\([0-9]+\\.[0-9]*\\)\\|\\([0-9]+\\)\\|\\(\\.[0-9]+\\)\\)\\([eE][---+]?[0-9]+\\)?",
	cst_rx_commaint => "[0-9][0-9]?[0-9]?,\\([0-9][0-9][0-9],\\)*[0-9][0-9][0-9]\\(\\.[0-9]+\\)?",
	cst_rx_digits => "[0-9][0-9]*",
	cst_rx_dotted_abbrev => "\\([A-Za-z]\\.\\)*[A-Za-z]",
       );

while (my ($n, $r) = each %RXS) {
    system './regexcomp', $n, $r;
}

foreach my $n (keys %RXS) {
    print "const cst_regex *$n = &${n}_rx;\n";
}
