#!/usr/bin/perl

# Última versão do gerador de stylesheets por jcr
# Funciona com modes
# Adicionei o suporte para expressões LET
# Última revisão: 2001.05.22

use XML::DT ;
my $filename = shift;
my @ccvars = ();

my $modecounter = 0;
my $constcounter = 1;

%modehandler=(
     '-default' => sub{""},
     'CONSTRAINT' => sub{++$modecounter; "";});

%handler=(
     '-outputenc' => 'ISO-8859-1',
     '-default'   => sub{"<$q>$c"},
     'SELECTOR'   => sub{$predicates = $v{SELEXP}; ""},
     'CONSTRAINT' => sub{@ccvars=();
                         $predicates="";
                         $lets="";
                         $mode = "const$constcounter"; $constcounter++;
                         "\n\n".
                         "\n"."\n\n".
                         "\n";},
     'MESSAGE'    => sub{"$c"},
     'VALUE'      => sub{""},
     'CS'         => sub{"$c"},
     'ACTION'     => sub{"$c\n"},
     'CC'         => sub{$c =~ s/>/>/;
                         $c =~ s/\n".$lets.
                         "  ";},
     'VARIABLE'   => sub{push(@ccvars,$v{SELEXP});
                         "$v{SELEXP}";},  
     'LET'        => sub{$lets="\n".
                         "  \n".
                         "\n"; ""},
);

print <<'HEADER-END';




                



  
HEADER-END

dt($filename,%modehandler);
for($i=1; $i<=$modecounter; $i++)
  { print "\n";
  }

print "  \n";

print dt($filename,%handler); 

print <<'FOOTER-END';




FOOTER-END