76 lines
1.2 KiB
Perl
Executable File
76 lines
1.2 KiB
Perl
Executable File
#! /usr/bin/perl
|
|
|
|
use locale;
|
|
use strict;
|
|
|
|
my $file = shift;
|
|
my $filename;
|
|
|
|
if ($file eq "") {
|
|
print "Podaj nazwê pliku.\n";
|
|
exit(1);
|
|
}
|
|
|
|
if ($file =~ /(.*)\.dic/)
|
|
{
|
|
$filename = $1;
|
|
}
|
|
else
|
|
{
|
|
print "The input file must have .dic extension.";
|
|
exit(1);
|
|
}
|
|
|
|
`makeLabels.pl > labels.sym`;
|
|
|
|
`lexmakelab labels`;
|
|
|
|
print "Kanonizujê opisy.........................................";
|
|
|
|
#`canon.pl <$file >temp2`;
|
|
|
|
print "Kompilujê automat........................................";
|
|
|
|
`lexcomplex -l labels.lab -S labels.scl <$file > temp1`;
|
|
|
|
print "OK\n";
|
|
|
|
print "Usuwam epsilon-przejscia.................................";
|
|
|
|
`fsmrmepsilon temp1> temp2`;
|
|
|
|
print "OK\n";
|
|
|
|
print "Determinizujê automat....................................";
|
|
|
|
`fsmdeterminize temp2 > temp1`;
|
|
|
|
print "OK\n";
|
|
|
|
print "Minimalizujê automat.....................................";
|
|
|
|
`fsmminimize temp1> temp2`;
|
|
|
|
print "OK\n";
|
|
|
|
print "Konwertujê automat do formatu fsa........................";
|
|
|
|
`fsmprint -i labels.lab temp2> temp1`;
|
|
|
|
`cp temp1 pofsmprint`;
|
|
|
|
`../fsm2aut temp1> temp2`;
|
|
|
|
`./aut2fsa.nowy < temp2> $filename.bin`;
|
|
|
|
print "OK\n";
|
|
|
|
print "Czyszczê pliki pomocnicze................................";
|
|
|
|
`rm temp2`;
|
|
`rm temp1`;
|
|
#`rm labels.*`;
|
|
|
|
print "OK\n";
|
|
|