#!/usr/local/bin/perl

die "Missing name of grammar" if @ARGV == 0;

$srcgrammar = $ARGV[0];
$revgrammar = $srcgrammar;

$revgrammar =~ s/\./-rev./;

open(IN, $ARGV[0]) or die $!;
open(REVERSE, "> $revgrammar") or die $!;
while ($line = <IN>) {
    if ($line =~ m/^\s*;/) {
	print REVERSE $line;
    } elsif ($line =~ m/\{\w+,\d+\}/) {
	print REVERSE $line;
    } elsif ($line =~ s/\(X(\d+)\:\:Y(\d+)\)/\(X$2\:\:Y$1\)/g) {
	print REVERSE $line;
    } elsif ($line =~ m/->/) {
	$line =~ s/^(\w+)\:\:(\w+)/$2\:\:$1/;
	$line =~ s/\[([^\]]+)\] -> \[([^\]]+)\]/\[$2\] -> \[$1\]/;
	print REVERSE $line;
    } else {
	print REVERSE $line;
    }

}
close(IN);
close(REVERSE);
