@rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S "%0" %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
goto endofperl
@rem ';
#!perl
#line 14

# Usage: perl varsub.bat [-n|-nr] <infile> <outfile>
#
# Substitutes variables into rules and deletes variable definition
# statements.  Variables that expand to UnicodeSets are NOT
# substituted.
#
#  -n   Afterwards, run native2ascii -encoding UTF8
#  -nr  Afterwards, run native2ascii -encoding UTF8 -reverse

$N2A = 0;

$IN = shift;
if ($IN =~ /^-n/) {
    $N2A = 1;
    $N2Aoption = ($IN eq '-nr') ? " -reverse " : "";
    $IN = shift;
}
$OUT = shift;

if (!($IN && $OUT)) {
    die "Usage: $0 [-n|-nr] <infile> <outfile>";
}

open(IN) or die "Can't open $IN: $!";
open(OUT, ">$OUT") or die "Can't open $OUT: $!";

while (<IN>) {
    if (/^\s*\$([a-zA-Z0-9_]+)\s*=\s*([^;\#]+)\s*;\s*(\#.*)?$/) {
        # This looks like a variable definition
        my ($var, $def) = ($1, $2);
        # Don't substitute UnicodeSet vars
        if ($def !~ /^\[/) {
            if (exists $VAR{$var}) {
                print STDERR "Error: Duplicate definition of $var\n";
            } else {
                $VAR{$var} = $def;
            }
            next;
        }
    }
    
    # Do variable substitutions, and output line
    foreach my $var (keys %VAR) {
        my $def = $VAR{$var};
        s/\$$var\b/$def/g;
    }
    print OUT;
}

close(OUT);
close(IN);

if ($N2A) {
    `native2ascii -encoding UTF8 $N2Aoption $OUT $OUT.native2ascii`;
    unlink $OUT;
    rename "$OUT.native2ascii", $OUT;
}

__END__
:endofperl
