genslowczas
1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#! /usr/bin/perl
# Dostosowanie formatu słownika wymagań czasownikowych.
#
# Author: Marcin Woliński
# This file is in the public domain.
use strict;
use locale;
my $srcdict=shift;
$srcdict = 's_czas_walenty' unless $srcdict;
my $podmiot='subj(np(mian))';
my (%slownik, %swislownik);
open SLOW, ">slowczas.pl" || die;
print SLOW <<EOS;
% This file has been generated with genslowczas. Do not modify.
% Modifications should be applied to the file $srcdict instead.\n
%
EOS
open TAB, "<$srcdict" || die;
while (<TAB>) {
s/refl/sie/g; # Na razie nie odróżniamy w parserze zwrotnego «się»
# od morfologicznego.
if (/^%(?!%)/) {
print SLOW;
} elsif (/^%%/) {
} elsif (m/^([^\t %]+)( się)?\t([^\t%]+)\t([^\t%]*)(?: ?%.*)?\n/) {
my ($lemat, $sie, $wl, @wyms)=($1, ($2?'s':'n'), $3, split('\+',$4));
my $key="$lemat";
$slownik{$key}=[$lemat, 'n', ()]
unless defined $slownik{$key};
unshift @wyms, 'sie'
if $sie eq 's';
unshift @wyms, $podmiot
if $wl eq 'V';
push @{$slownik{$key}->[2]}, [@wyms];
} else {
die "Error in $srcdict w. $.: $_";
}
}
foreach my $verb (sort keys %slownik) {
my ($lemat, $sie, $wyms) = @{$slownik{$verb}};
my $entry = "slowczas($lemat, $sie, [".
join(', ',map {"[".join(', ', @$_)."]"} @$wyms).
"]).\n";
$swislownik{$entry}=1;
}
print SLOW $_
foreach sort keys %swislownik;
print SLOW <<EOS;
%%% \x4Cocal Variables:
%%% coding: utf-8
%%% mode: prolog
%%% End:
EOS
### Local Variables:
### coding: utf-8
### mode: perl
### End: