dodany komponent compdic - kompilator slownikow dla lem, cor, kor, gue
(compdic zastepuje compiledic)
This commit is contained in:
parent
a6e708f37f
commit
93afab8cc2
21
_old/app/src/compdic/Makefile
Normal file
21
_old/app/src/compdic/Makefile
Normal file
@ -0,0 +1,21 @@
|
||||
CFLAG1 = -m32 -Wno-deprecated -O3 -fpermissive
|
||||
CFLAG_ST = -Wno-deprecated -O3 -fpermissive -static
|
||||
|
||||
all: compdic aut2fsa
|
||||
|
||||
compdic:
|
||||
|
||||
|
||||
aut2fsa: aut2fsa.cc
|
||||
#g++ -m32 -Wno-deprecated -O3 -fpermissive -static -o aut2fsa aut2fsa.cc
|
||||
g++ $(CFLAG1) -o aut2fsa aut2fsa.cc
|
||||
|
||||
|
||||
copy:
|
||||
ifdef UTT_BIN_DIR
|
||||
cp compdic fsm2aut aut2fsa lst2fstext ${UTT_BIN_DIR}
|
||||
endif
|
||||
|
||||
clean:
|
||||
rm aut2fsa
|
||||
|
18
_old/app/src/compdic/aut2fsa.cc
Normal file
18
_old/app/src/compdic/aut2fsa.cc
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../lib/tfti.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
TFTiv<char,char> a;
|
||||
a.read();
|
||||
a.save();
|
||||
|
||||
return 0;
|
||||
}
|
175
_old/app/src/compdic/compdic
Executable file
175
_old/app/src/compdic/compdic
Executable file
@ -0,0 +1,175 @@
|
||||
|
||||
no_of_parts=0
|
||||
|
||||
while [ $# -gt 2 ]
|
||||
do
|
||||
case $1
|
||||
in
|
||||
-p)
|
||||
no_of_parts=$2
|
||||
shift 2
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "The arguments to use are"
|
||||
echo "-p: number of parts"
|
||||
shift 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
echo "Usage:"
|
||||
echo " compdic [-p <parts>] <wordlist> <automaton>"
|
||||
echo "where"
|
||||
echo " <wordlist> - file containig a list of words, one per line, iso-8859-2 encoded"
|
||||
echo " <automaton> - a file to which the compiled automaton (cor/kor format) shoul be written"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ $no_of_parts -eq 0 ]
|
||||
then
|
||||
no_of_parts=$(( `cat $1 | wc -l` / 75000 + 1 ))
|
||||
fi
|
||||
|
||||
|
||||
echo number of parts: $no_of_parts
|
||||
|
||||
|
||||
tempdir=`mktemp -d /tmp/compdic.XXXXXX`
|
||||
|
||||
alphabet=`tempfile -d $tempdir`
|
||||
|
||||
cat <<EOF > $alphabet
|
||||
<eps> 0
|
||||
a 1
|
||||
A 2
|
||||
ä 3
|
||||
± 4
|
||||
¡ 5
|
||||
b 6
|
||||
B 7
|
||||
c 8
|
||||
C 9
|
||||
æ 10
|
||||
Æ 11
|
||||
d 12
|
||||
D 13
|
||||
e 14
|
||||
E 15
|
||||
é 16
|
||||
ê 17
|
||||
Ê 18
|
||||
f 19
|
||||
F 20
|
||||
g 21
|
||||
G 22
|
||||
h 23
|
||||
H 24
|
||||
i 25
|
||||
I 26
|
||||
j 27
|
||||
J 28
|
||||
k 29
|
||||
K 30
|
||||
l 31
|
||||
L 32
|
||||
³ 33
|
||||
£ 34
|
||||
m 35
|
||||
M 36
|
||||
n 37
|
||||
N 38
|
||||
ñ 39
|
||||
Ñ 40
|
||||
o 41
|
||||
O 42
|
||||
ö 43
|
||||
ó 44
|
||||
Ó 45
|
||||
p 46
|
||||
P 47
|
||||
q 48
|
||||
Q 49
|
||||
r 50
|
||||
R 51
|
||||
s 52
|
||||
S 53
|
||||
¶ 54
|
||||
¦ 55
|
||||
t 56
|
||||
T 57
|
||||
u 58
|
||||
U 59
|
||||
ü 60
|
||||
v 61
|
||||
V 62
|
||||
w 63
|
||||
W 64
|
||||
x 65
|
||||
X 66
|
||||
y 67
|
||||
Y 68
|
||||
z 69
|
||||
Z 70
|
||||
¼ 71
|
||||
¬ 72
|
||||
¿ 73
|
||||
¯ 74
|
||||
0 75
|
||||
1 76
|
||||
2 77
|
||||
3 78
|
||||
4 79
|
||||
5 80
|
||||
6 81
|
||||
7 82
|
||||
8 83
|
||||
9 84
|
||||
_ 85
|
||||
- 86
|
||||
? 87
|
||||
! 88
|
||||
~ 89
|
||||
; 90
|
||||
, 91
|
||||
/ 92
|
||||
* 93
|
||||
+ 94
|
||||
EOF
|
||||
|
||||
|
||||
no_of_lines=$(( (`cat $1 | wc -l` / $no_of_parts) + 1 ))
|
||||
|
||||
split -l $no_of_lines $1 $tempdir/part.
|
||||
|
||||
automaton=$tempdir/output.fst
|
||||
|
||||
cat <<EOF | fstcompile --acceptor --isymbols=$alphabet --keep_isymbols > $automaton
|
||||
EOF
|
||||
|
||||
n=0
|
||||
|
||||
for f in $tempdir/part.*
|
||||
do
|
||||
temp1=`tempfile -d $tempdir`
|
||||
temp2=`tempfile -d $tempdir`
|
||||
temp3=`tempfile -d $tempdir`
|
||||
|
||||
n=$(( $n + 1 ))
|
||||
echo processing part $n
|
||||
|
||||
cat $f |\
|
||||
lst2fstext |\
|
||||
fstcompile --acceptor --isymbols=$alphabet --keep_isymbols |\
|
||||
fstrmepsilon |\
|
||||
fstdeterminize > $temp1
|
||||
fstminimize $temp1 $temp2
|
||||
|
||||
fstunion $automaton $temp2 | fstrmepsilon | fstdeterminize > $temp3
|
||||
fstminimize $temp3 $automaton
|
||||
done
|
||||
|
||||
cat $automaton | fsttopsort | fstprint --acceptor | fsm2aut | aut2fsa > $2
|
||||
rm -r $tempdir
|
44
_old/app/src/compdic/fsm2aut
Executable file
44
_old/app/src/compdic/fsm2aut
Executable file
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
my $currstate=-1;
|
||||
my @states;
|
||||
my @final;
|
||||
my $tn=0;
|
||||
|
||||
while(<>)
|
||||
{
|
||||
if(/^\s*([0-9]+)\s+([0-9]+)\s+(.)(\s*)?$/)
|
||||
{
|
||||
push @{$states[$1]}, ($3, $2);
|
||||
$#states=$2 if $#states<$2;
|
||||
$tn++;
|
||||
}
|
||||
elsif(/^\s*([0-9]+)\s*$/)
|
||||
{
|
||||
$final[$1]=1;
|
||||
$#states=$1 if $#states<$1;
|
||||
}
|
||||
else
|
||||
{
|
||||
die("Input error.");
|
||||
}
|
||||
}
|
||||
|
||||
print scalar(@states)," ",$tn," char void\n";
|
||||
|
||||
my $i=0;
|
||||
my $width=int(log(@states+1)/log(10));
|
||||
foreach $stateref (@states)
|
||||
{
|
||||
$f = ($final[$i]?"+":"-");
|
||||
printf "%${width}d %s",$i++,$f;
|
||||
while(@$stateref)
|
||||
{
|
||||
$c=shift @$stateref;
|
||||
$s=shift @$stateref;
|
||||
print " $c $s";
|
||||
}
|
||||
print "\n";
|
||||
}
|
||||
|
||||
|
20
_old/app/src/compdic/lst2fstext
Executable file
20
_old/app/src/compdic/lst2fstext
Executable file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
use locale;
|
||||
|
||||
$s=1;
|
||||
|
||||
$f=1;
|
||||
while(<>)
|
||||
{
|
||||
chomp;
|
||||
@cs = split('');
|
||||
++$s;
|
||||
print "0 $s <eps>\n";
|
||||
while($c = shift @cs)
|
||||
{
|
||||
print $s . ' ' . ++$s . " $c\n";
|
||||
}
|
||||
print "$s $f <eps>\n";
|
||||
}
|
||||
print "$f\n";
|
Loading…
Reference in New Issue
Block a user