line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Lingua::FI::Inflect; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
24537
|
use 5.008; |
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
41
|
|
4
|
1
|
|
|
1
|
|
5
|
use strict; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
31
|
|
5
|
1
|
|
|
1
|
|
4
|
use warnings; |
|
1
|
|
|
|
|
6
|
|
|
1
|
|
|
|
|
5655
|
|
6
|
|
|
|
|
|
|
require Exporter; |
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
our @ISA = qw(Exporter); |
9
|
|
|
|
|
|
|
our %EXPORT_TAGS = ( 'all' => [ qw(taivuta to_number %sijamuodot) ] ); |
10
|
|
|
|
|
|
|
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); |
11
|
|
|
|
|
|
|
our @EXPORT = qw( ); |
12
|
|
|
|
|
|
|
our $VERSION = '0.02'; |
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
our %sijamuodot=( |
15
|
|
|
|
|
|
|
monikko => 0, |
16
|
|
|
|
|
|
|
genetiivi => 1, |
17
|
|
|
|
|
|
|
inessiivi => 2, |
18
|
|
|
|
|
|
|
elatiivi => 3, |
19
|
|
|
|
|
|
|
adessiivi => 4, |
20
|
|
|
|
|
|
|
ablatiivi => 5, |
21
|
|
|
|
|
|
|
partitiivi => 6, |
22
|
|
|
|
|
|
|
essiivi => 7, |
23
|
|
|
|
|
|
|
illatiivi => 8, |
24
|
|
|
|
|
|
|
translatiivi=> 9, |
25
|
|
|
|
|
|
|
); |
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
# haluaa taivuttamattoman sanan |
28
|
|
|
|
|
|
|
# palauttaa taivutetun sanan |
29
|
|
|
|
|
|
|
sub taivuta{ |
30
|
0
|
|
|
0
|
0
|
|
my($sijamuoto_id,$sana)=@_; |
31
|
|
|
|
|
|
|
|
32
|
|
|
|
|
|
|
# järjestä ao. lista ensin pituuden mukaan, sitten aakkosjärjestykseen |
33
|
|
|
|
|
|
|
# konsonantit |
34
|
|
|
|
|
|
|
# viimeinen id=6 |
35
|
|
|
|
|
|
|
|
36
|
0
|
|
|
|
|
|
my $k ="bcdfghjklmnpqrstvwxz"; |
37
|
0
|
|
|
|
|
|
my $k2="smnl"; |
38
|
0
|
|
|
|
|
|
my $k5="k"; |
39
|
0
|
|
|
|
|
|
my $k4="lr"; |
40
|
0
|
|
|
|
|
|
my $k3="vh"; |
41
|
0
|
|
|
|
|
|
my $k6="h"; |
42
|
0
|
|
|
|
|
|
my $k7="kptq"; |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
# järjestä ao. lista ensin pituuden mukaan, sitten aakkosjärjestykseen |
45
|
|
|
|
|
|
|
# vokaalit |
46
|
|
|
|
|
|
|
# viimeinen id=2 |
47
|
|
|
|
|
|
|
|
48
|
0
|
|
|
|
|
|
my $v ="aeiouy:;"; |
49
|
0
|
|
|
|
|
|
my $v2="i"; |
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
# muuta ä-kirjaimet kaksoispisteiksi ja ö-kirjaimet puolipisteiksi |
53
|
|
|
|
|
|
|
# hae käytetäänkö sanassa skandeja vai ei |
54
|
|
|
|
|
|
|
# $a == a tai ä |
55
|
|
|
|
|
|
|
# $o == o tai ö |
56
|
|
|
|
|
|
|
|
57
|
0
|
|
|
|
|
|
(local $_,my $a,my $o)=to_number($sana); |
58
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
# määritä sijamuodon sijapääte $p-muuttujaan |
61
|
|
|
|
|
|
|
# määritä $p1-muuttujaan sijapääte ilman skandeja |
62
|
|
|
|
|
|
|
# määritä $p2-muuttujaan sijapääte skandeilla varustettuna |
63
|
|
|
|
|
|
|
|
64
|
0
|
0
|
|
|
|
|
my($p)=( |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
65
|
|
|
|
|
|
|
$sijamuoto_id == 0 ? "t" # monikko |
66
|
|
|
|
|
|
|
: $sijamuoto_id == 1 ? "n" # genetiivi |
67
|
|
|
|
|
|
|
: $sijamuoto_id == 2 ? "ss$a" # inessiivi |
68
|
|
|
|
|
|
|
: $sijamuoto_id == 3 ? "st$a" # elatiivi |
69
|
|
|
|
|
|
|
: $sijamuoto_id == 4 ? "ll$a" # adessiivi |
70
|
|
|
|
|
|
|
: $sijamuoto_id == 5 ? "lt$a" # ablatiivi |
71
|
|
|
|
|
|
|
: $sijamuoto_id == 6 ? "$a" # partitiivi |
72
|
|
|
|
|
|
|
: $sijamuoto_id == 7 ? "n$a" # essiivi |
73
|
|
|
|
|
|
|
: $sijamuoto_id == 8 ? "$a"."n" # illatiivi |
74
|
|
|
|
|
|
|
: $sijamuoto_id == 9 ? "ksi" # translatiivi |
75
|
|
|
|
|
|
|
: die "Wrong case"); |
76
|
0
|
|
|
|
|
|
(my $p1=$p) =~ tr/y:;/uao/; |
77
|
0
|
|
|
|
|
|
(my $p2=$p) =~ tr/aou/:;y/; |
78
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
|
80
|
|
|
|
|
|
|
# 1 = regex |
81
|
|
|
|
|
|
|
# 2 = käytettävän säännön id; viimeinen id = 111 |
82
|
|
|
|
|
|
|
# 3 = esimerkkisanan alku |
83
|
|
|
|
|
|
|
# 4 = esimerkkisanan loppu ; isolla kirjaimet, jotka ovat aina juuri nämä |
84
|
|
|
|
|
|
|
# 5 = esimerkkisanan lopun käännös ; isolla kirjaimet, jotka ovat aina juuri nämä |
85
|
|
|
|
|
|
|
# 6 = ryhmän id, johon regex kuuluu; viimeinen id = 10 |
86
|
|
|
|
|
|
|
# 7 = ryhmän järjestys; pienin ensin. Laita perään +, jos järjestys jaetaan jonkun muun kanssa |
87
|
|
|
|
|
|
|
# |
88
|
|
|
|
|
|
|
# 1 2 3 4 5 6 7 |
89
|
|
|
|
|
|
|
|
90
|
|
|
|
|
|
|
# illatiivi (kotiin) |
91
|
0
|
0
|
0
|
|
|
|
$sijamuoto_id == 8 && ( |
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
92
|
|
|
|
|
|
|
s/(.*[$v])([$v]) $ /$1$2h$2n !77 /x |
93
|
|
|
|
|
|
|
|
94
|
|
|
|
|
|
|
# poikkeukset |
95
|
|
|
|
|
|
|
|| s/^([th])(uu?l)i $ /$1$2een !92 /x |
96
|
|
|
|
|
|
|
|| s/^kivi $ /kiveen !93 /x # |
97
|
|
|
|
|
|
|
|
98
|
|
|
|
|
|
|
# monikko |
99
|
|
|
|
|
|
|
|| s/(.*)([$v])(\2)t $ /$1$2isiin !94 /x # lampaat lampaisiin |
100
|
|
|
|
|
|
|
|| s/(.*)([$k])([a:])t $ /$1$2$o\0ihin!95 /x # perunat perunoihin |
101
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
|| s/(.*)(s) $ /$1kseen !96 /x # sirkus kseen |
103
|
|
|
|
|
|
|
|| s/(.*)(e) $ /$1$2$2seen !78 /x # hame hameeseen |
104
|
|
|
|
|
|
|
|| s/(.*)(nk)(i) $ /$1$2een !79 /x # henki henkeen |
105
|
|
|
|
|
|
|
|| s/(.*)([$v]) $ /$1$2$2n !80 /x # kissa kissaan |
106
|
|
|
|
|
|
|
|| s/(.*)([$k]+) $ /$1$2iin !81 /x # kiss kissiin |
107
|
|
|
|
|
|
|
) |
108
|
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
# partitiivi |
110
|
|
|
|
|
|
|
|| $sijamuoto_id == 6 && ( |
111
|
|
|
|
|
|
|
s/(.*[$v])([$v]) $ /$1$2t$a !82 /x |
112
|
|
|
|
|
|
|
|
113
|
|
|
|
|
|
|
# poikkeukset |
114
|
|
|
|
|
|
|
|| s/^([th])(uu?l)i $ /$1$2ta !108/x # |
115
|
|
|
|
|
|
|
|| s/^kivi $ /kive$a !98 /x # |
116
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
# monikko |
118
|
|
|
|
|
|
|
|| s/(.*)([$v])(\2)t $ /$1$2it$a !99 /x # lampaat lampaita |
119
|
|
|
|
|
|
|
|| s/(.*)([$v])([$k])([a:])t $ /$1$2$3$o\0it$a!100/x # perunat perunoita |
120
|
|
|
|
|
|
|
|| s/(.*)([$k])([a:])t $ /$1$2$o\0j$a ! /x # aika aikoja |
121
|
|
|
|
|
|
|
|| s/(.*)([$k])([$v])t $ /$1$2$3j$a ! /x # jauhot jauhoja |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
|| s/(.*)(s) $ /$1$2ta !109/x # sirkus ta |
124
|
|
|
|
|
|
|
|| s/(.*)(e) $ /$1$2tt$a !83 /x # hame hametta |
125
|
|
|
|
|
|
|
|| s/(.*)(nk)(i) $ /$1$2e$a !84 /x # henki henkeä |
126
|
|
|
|
|
|
|
|| s/(.*)([$v]) $ /$1$2$a !85 /x # kissa kissaa |
127
|
|
|
|
|
|
|
|| s/(.*)([$k]+) $ /$1$2i$a !86 /x # kiss kissiä |
128
|
|
|
|
|
|
|
) |
129
|
|
|
|
|
|
|
|
130
|
|
|
|
|
|
|
# essiivi |
131
|
|
|
|
|
|
|
|| $sijamuoto_id == 7 && ( |
132
|
|
|
|
|
|
|
s/(.*[$v])([$v]) $ /$1$2n$a !87 /x |
133
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
# poikkeukset |
135
|
|
|
|
|
|
|
|| s/^([th])(uu?l)i $ /$1$2ena !110/x |
136
|
|
|
|
|
|
|
|| s/^kivi $ /kiven$a !102/x # |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
# monikko |
139
|
|
|
|
|
|
|
|| s/(.*)([$v])(\2)t $ /$1$2in$a !103/x # lampaat lampaina |
140
|
|
|
|
|
|
|
|| s/(.*)([$k])([a:])t $ /$1$2$o\0in$a!104/x # perunat perunoina |
141
|
|
|
|
|
|
|
|
142
|
|
|
|
|
|
|
|| s/(.*)(s) $ /$1ksena !111/x # sirkus ksena |
143
|
|
|
|
|
|
|
|| s/(.*)(e) $ /$1$2$2n$a !88 /x # hame hameena |
144
|
|
|
|
|
|
|
|| s/(.*)(nk)i $ /$1$2en$a !89 /x # henki henkenä |
145
|
|
|
|
|
|
|
|| s/(.*)([$v]) $ /$1$2n$a !90 /x # kissa kissana |
146
|
|
|
|
|
|
|
|| s/(.*)([$k]+) $ /$1$2in$a !91 /x # kiss kissinä |
147
|
|
|
|
|
|
|
) |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
# lainasanat, jotka päättyvät vokaaliin |
150
|
|
|
|
|
|
|
|| s/( |
151
|
|
|
|
|
|
|
andante |
152
|
|
|
|
|
|
|
|anime |
153
|
|
|
|
|
|
|
|apache |
154
|
|
|
|
|
|
|
|appassionato |
155
|
|
|
|
|
|
|
|beta |
156
|
|
|
|
|
|
|
|beeta |
157
|
|
|
|
|
|
|
|blanko |
158
|
|
|
|
|
|
|
|byte |
159
|
|
|
|
|
|
|
|delta |
160
|
|
|
|
|
|
|
|data |
161
|
|
|
|
|
|
|
|desi |
162
|
|
|
|
|
|
|
|curry |
163
|
|
|
|
|
|
|
|copy |
164
|
|
|
|
|
|
|
|collie |
165
|
|
|
|
|
|
|
|college |
166
|
|
|
|
|
|
|
|chippendale |
167
|
|
|
|
|
|
|
|city |
168
|
|
|
|
|
|
|
|bluffi |
169
|
|
|
|
|
|
|
|beige |
170
|
|
|
|
|
|
|
|bridge |
171
|
|
|
|
|
|
|
|boutique |
172
|
|
|
|
|
|
|
|cache |
173
|
|
|
|
|
|
|
|case |
174
|
|
|
|
|
|
|
|deadline |
175
|
|
|
|
|
|
|
|freestyle |
176
|
|
|
|
|
|
|
|foto |
177
|
|
|
|
|
|
|
|fleece |
178
|
|
|
|
|
|
|
|empire |
179
|
|
|
|
|
|
|
|epo |
180
|
|
|
|
|
|
|
|esperanto |
181
|
|
|
|
|
|
|
|extreme |
182
|
|
|
|
|
|
|
|fluori |
183
|
|
|
|
|
|
|
|expo |
184
|
|
|
|
|
|
|
|folklore |
185
|
|
|
|
|
|
|
|ellipsi |
186
|
|
|
|
|
|
|
|ensemble |
187
|
|
|
|
|
|
|
|forte |
188
|
|
|
|
|
|
|
) $ /$1$p !59 /x |
189
|
|
|
|
|
|
|
|
190
|
|
|
|
|
|
|
# lainasanat, jotka päättyvät konsonanttiin |
191
|
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
|| s/( |
193
|
|
|
|
|
|
|
blues |
194
|
|
|
|
|
|
|
|charleston |
195
|
|
|
|
|
|
|
|evergreen |
196
|
|
|
|
|
|
|
|automarket |
197
|
|
|
|
|
|
|
|bouquet |
198
|
|
|
|
|
|
|
|bullshit |
199
|
|
|
|
|
|
|
|burnout |
200
|
|
|
|
|
|
|
|chat |
201
|
|
|
|
|
|
|
|debet |
202
|
|
|
|
|
|
|
|et |
203
|
|
|
|
|
|
|
|exit |
204
|
|
|
|
|
|
|
|fahrenheit |
205
|
|
|
|
|
|
|
|kermit |
206
|
|
|
|
|
|
|
) $ /$1i$p !60 /x |
207
|
|
|
|
|
|
|
|
208
|
|
|
|
|
|
|
# monikko |
209
|
|
|
|
|
|
|
|| /t$/ && ( |
210
|
|
|
|
|
|
|
s/([a:])t $ /$o\0i$p !105/x # kal AT oi 10 2 |
211
|
|
|
|
|
|
|
|| s/([$v])t $ /$1$p !106/x # pul u u |
212
|
|
|
|
|
|
|
|| s/(.) $ /$1i$p !107/x # marke T tIT |
213
|
|
|
|
|
|
|
) |
214
|
|
|
|
|
|
|
|
215
|
|
|
|
|
|
|
# numerot 8-10 |
216
|
|
|
|
|
|
|
|
217
|
|
|
|
|
|
|
|| s/( |
218
|
|
|
|
|
|
|
seitsem: |
219
|
|
|
|
|
|
|
|ykdeks: |
220
|
|
|
|
|
|
|
|kahdeksa |
221
|
|
|
|
|
|
|
|kymmene |
222
|
|
|
|
|
|
|
)n $ /$1$p !73 /x # 10 1 |
223
|
|
|
|
|
|
|
|
224
|
|
|
|
|
|
|
# säännöt, jotka toimivat myös nimille |
225
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
|| s/nen $ /se$p !22 /x # kisu NEN SEN 10 2 |
227
|
|
|
|
|
|
|
|
228
|
|
|
|
|
|
|
# nimet |
229
|
|
|
|
|
|
|
|| s/^([A-Z45].*)([$k7])\2([$v])$ /$1$2$3$p !67 /x # Ja tta ta 9 0 |
230
|
|
|
|
|
|
|
|| s/^([A-Z45].*[$v]) $ /$1$p !61 /x # Vil e e 9 1 |
231
|
|
|
|
|
|
|
|| s/^([A-Z45].*) $ /$1i$p !62 /x # Ki m mI 9 2 |
232
|
|
|
|
|
|
|
|
233
|
|
|
|
|
|
|
# pronominit |
234
|
|
|
|
|
|
|
|
235
|
|
|
|
|
|
|
|| $sijamuoto_id == 0 && ( |
236
|
|
|
|
|
|
|
s/^min: $ /me !63 /x |
237
|
|
|
|
|
|
|
|| s/^sin: $ /te !63 /x |
238
|
|
|
|
|
|
|
|| s/^h:n $ /he !63 /x |
239
|
|
|
|
|
|
|
|| s/^t:m: $ /n:m: !63 /x |
240
|
|
|
|
|
|
|
|| s/^tuo $ /nuo !63 /x |
241
|
|
|
|
|
|
|
|| s/^se $ /ne !63 /x |
242
|
|
|
|
|
|
|
) |
243
|
|
|
|
|
|
|
|
244
|
|
|
|
|
|
|
|| ( |
245
|
|
|
|
|
|
|
s/^min: $ /minu$p1 !63 /x |
246
|
|
|
|
|
|
|
|| s/^sin: $ /sinu$p1 !63 /x |
247
|
|
|
|
|
|
|
|| s/^h:n $ /h:ne$p2 !63 /x |
248
|
|
|
|
|
|
|
|| s/^me $ /meid:$p2 !63 /x |
249
|
|
|
|
|
|
|
|| s/^te $ /teid:$p2 !63 /x |
250
|
|
|
|
|
|
|
|| s/^he $ /heid:$p2 !63 /x |
251
|
|
|
|
|
|
|
|| s/^n:m: $ /n:ide$p2 !63 /x |
252
|
|
|
|
|
|
|
|| s/^nuo $ /noide$p1 !63 /x |
253
|
|
|
|
|
|
|
|| s/^ne $ /niide$p2 !63 /x |
254
|
|
|
|
|
|
|
|| s/^t:m: $ /t:m:$p2 !63 /x |
255
|
|
|
|
|
|
|
|| s/^tuo $ /tuo$p1 !63 /x |
256
|
|
|
|
|
|
|
|| s/^se $ /se$p2 !63 /x |
257
|
|
|
|
|
|
|
) |
258
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
# yksittäiset sanat, joita ei voi laittaa yhdyssanaan |
260
|
|
|
|
|
|
|
|
261
|
|
|
|
|
|
|
|| s/^aika $ /aja$p !64 /x # vrt. taika -> taia |
262
|
|
|
|
|
|
|
|| s/^([th])(uu?l)i $ /$1$2e$p !64 /x # vrt. kuli -> kulin |
263
|
|
|
|
|
|
|
|
264
|
|
|
|
|
|
|
# yksittäiset sanat, mahdolliset myös yhdyssanoissa |
265
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
|| s/poika $ /poja$p !66 /x # reliikki |
267
|
|
|
|
|
|
|
|| s/mies $ /miehe$p !66 /x # vrt. hies -> hiekse |
268
|
|
|
|
|
|
|
|| s/yhteys $ /yhteyde$p !66 /x # vrt. risteys -> risteykse |
269
|
|
|
|
|
|
|
|| s/haku $ /hau$p !66 /x # vrt. laku -> laku |
270
|
|
|
|
|
|
|
|| s/laki $ /lai$p !66 /x # vrt. khaki -> khaki |
271
|
|
|
|
|
|
|
|| s/tuoli $ /tuoli$p !66 /x # vrt. huoli -> huole |
272
|
|
|
|
|
|
|
|| s/henki $ /henge$p !66 /x # vrt. renki -> rengi |
273
|
|
|
|
|
|
|
|| s/puomi $ /puomi$p !66 /x # vrt. luomi -> luome |
274
|
|
|
|
|
|
|
|| s/(th])uli $ /$1uule$p !66 /x # vrt. muuli -> muuli |
275
|
|
|
|
|
|
|
|| s/nauris $ /naurii$p !66 /x |
276
|
|
|
|
|
|
|
|| s/veli $ /velje$p !66 /x # vrt. peli -> peli |
277
|
|
|
|
|
|
|
|| s/ruis $ /rukii$p !66 /x |
278
|
|
|
|
|
|
|
|| s/ananas $ /ananakse$p !66 /x |
279
|
|
|
|
|
|
|
|| s/business $ /businekse$p !66 /x |
280
|
|
|
|
|
|
|
|| s/kirves $ /kirvee$p !66 /x |
281
|
|
|
|
|
|
|
|
282
|
|
|
|
|
|
|
# numerot 1-6 |
283
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
|| s/(y|ka)ksi $ /$1hde$p !1 /x |
285
|
|
|
|
|
|
|
|| s/(kolme|nelj:) $ /$1$p !1 /x |
286
|
|
|
|
|
|
|
|| s/^(vii)si $ /$1de$p !1 /x # numero - kuitenkin aviisi -> aviisi |
287
|
|
|
|
|
|
|
|| s/(kuu)si $ /$1de$p !1 /x |
288
|
|
|
|
|
|
|
|
289
|
|
|
|
|
|
|
# numerot 11-19 |
290
|
|
|
|
|
|
|
|
291
|
0
|
|
|
|
|
|
|| s/(.+)(toista) $ /(taivuta($sijamuoto_id,$1))[0].$2.'!74' /ex |
292
|
|
|
|
|
|
|
|
293
|
|
|
|
|
|
|
# järjestysluvut 1-10 |
294
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
|| s/( |
296
|
|
|
|
|
|
|
yhde |
297
|
|
|
|
|
|
|
|kahde |
298
|
|
|
|
|
|
|
|kolma |
299
|
|
|
|
|
|
|
|nelj: |
300
|
|
|
|
|
|
|
|viide |
301
|
|
|
|
|
|
|
|kuude |
302
|
|
|
|
|
|
|
|seitsem: |
303
|
|
|
|
|
|
|
|kahdeksa |
304
|
|
|
|
|
|
|
|yhdeks: |
305
|
|
|
|
|
|
|
|kymmene |
306
|
|
|
|
|
|
|
)s $ /$1nne$p !75 /x |
307
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
|
309
|
|
|
|
|
|
|
|
310
|
|
|
|
|
|
|
# varmat säännöt, joissa etsimisosan säännöt ovat ilman muuttujia (esim. $1) |
311
|
|
|
|
|
|
|
|| s/^([vm])(er)i $ /$1$2e$p !33 /x # vERI > verE |
312
|
|
|
|
|
|
|
|| s/(n)si $ /$1$1e$p !38 /x # ka NSI > nnE |
313
|
|
|
|
|
|
|
|| s/(m)pi $ /$1$1e$p !11 /x # la MPI > mmE |
314
|
|
|
|
|
|
|
|| s/(iel)i $ /$1e$p !19 /x # k IELI > elE |
315
|
|
|
|
|
|
|
|| s/([yu]psi) $ /$1$p !55 /x # r yPSI > ypsi 8 1 |
316
|
|
|
|
|
|
|
|| s/(p)(s)i $ /$1$2e$p !32 /x # la PSI > psE 8 2 |
317
|
|
|
|
|
|
|
|| s/d([a:])s $ /t$1$1$p !24 /x # hi DAS > TAA |
318
|
|
|
|
|
|
|
|| s/([st])(([ou]u)|([;y]y))s$ /$1$2de$p !44 /x # out oUS > ouDE |
319
|
|
|
|
|
|
|
|| s/([$v])\1 $ /$1$1$p !58 /x # atelj ee > ee |
320
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
# sekalaiset säännöt |
322
|
|
|
|
|
|
|
|
323
|
|
|
|
|
|
|
|| s/(m)\1([a:])s $ /$1p$2$2$p !41 /x # ha MmAS > hamPaa 3 -2 |
324
|
|
|
|
|
|
|
|| s/(n)\1([a:])s $ /$1$1$2kse$p !42 /x # ka NnAS > nnaKSE 3 0 |
325
|
|
|
|
|
|
|
|| s/([$k])\1([a:])s $ /$1t$2$2$p !36 /x # ma llAS > malTaa 3 -1 |
326
|
|
|
|
|
|
|
|| s/([$k])d([a:])s $ /$1t$2$2$p !40 /x # a hDAS > ahTaa 3 -0.5 |
327
|
|
|
|
|
|
|
|| s/(n)\1e $ /$1tee$p !12 /x # la NnE > nTEE 3 1+ |
328
|
|
|
|
|
|
|
|| s/(m)\1e $ /$1$1ee$p !13 /x # a MmE > mmEE 3 1+ |
329
|
|
|
|
|
|
|
|| s/([$k2])\1([$v]) $ /$1$1$2$p !29 /x # ki ssa > ssa 3 2 |
330
|
|
|
|
|
|
|
|| s/([$k7])\1([$v]) $ /$1$2$p !02 /x # ta tti > ti |
331
|
|
|
|
|
|
|
|| s/(r)si $ /$1$1e$p !43 /x # vi RSI > rrE |
332
|
|
|
|
|
|
|
|| s/(sv|rm|sm)(i) $ /$1$2$p !68 /x # ka RmI > rmI |
333
|
|
|
|
|
|
|
|| s/([$k])([$k3])$v2 $ /$1$2e$p ! 3 /x # hi rvi > rvE |
334
|
|
|
|
|
|
|
|| s/([$v])\1s $ /$1$1de$p ! 4 /x # tilais uus > uuDE 1 1 |
335
|
|
|
|
|
|
|
|| s/([$v])([$v])s $ /$1$2kse$p ! 5 /x # lauk auS > auKSE 1 2 |
336
|
|
|
|
|
|
|
|| s/([$v])([$v])k([a:]) $ /$1$2$3$p ! 9 /x # s iiKA > iiA |
337
|
|
|
|
|
|
|
|| s/([$v])p([$v]) $ /$1v$2$p !16 /x # n aPa > aVa |
338
|
|
|
|
|
|
|
|| s/([$v])([$k])([a:])s $ /$1$2$2$3$3$p!25 /x # hi DAS > TAA 4 0 |
339
|
|
|
|
|
|
|
|| s/([$k])([$k])([a:])s $ /$1$2$3$3$p !37 /x # ka rvAS > karvaa 3 0 |
340
|
|
|
|
|
|
|
|| s/([$v])s $ /$1kse$p !23 /x # tik aS > aKSE 4 1 |
341
|
|
|
|
|
|
|
|| s/(tt)([$v])n $ /$1$2i$p !28 /x # 4 3 |
342
|
|
|
|
|
|
|
|| s/(t)(i)n $ /$1$1$2me$p !45 /x # lii TIN > ttiME 4 4+ |
343
|
|
|
|
|
|
|
|| s/(t)([o;])n $ /$1$1$2m$a$p !26 /x # ehdo TON > ttoMA 4 4+ |
344
|
|
|
|
|
|
|
|| s/(l)(i)n $ /$1$2me$p !30 /x # puhe LIN > liME 4 4+ |
345
|
|
|
|
|
|
|
|| s/(e)(n) $ /$1$2e$p !49 /x # ahv EN > enE 4 5 |
346
|
|
|
|
|
|
|
|| s/([$v])([$k]) $ /$1$2i$p !17 /x # kerm it > itI 4 6 |
347
|
|
|
|
|
|
|
|| s/([$v])(\1si) $ /$1$2$p !52 /x # m uuSI > uusi 6 1 |
348
|
|
|
|
|
|
|
|| s/([$v])si $ /$1de$p ! 6 /x # ka uSI > uDE 6 2 |
349
|
|
|
|
|
|
|
|| s/([$v])(t)(e) $ /$1$2$2$3$3$p!20 /x # ka TE > ttee 2 -2 |
350
|
|
|
|
|
|
|
|| s/d(e) $ /t$1$1$p !21 /x # kai DE > Tee 2 -1 |
351
|
|
|
|
|
|
|
|| s/(sk)(e) $ /$1$2$2$p !50 /x # rui SKE > skee 2 -0.5 |
352
|
|
|
|
|
|
|
|| s/(k)(e) $ /$1$1$2$2$p !46 /x # pil KE > kkee 2 -0.5 |
353
|
|
|
|
|
|
|
|| s/(e) $ /$1$1$p !18 /x # ven E > ee 2 0 |
354
|
|
|
|
|
|
|
|| s/(te[$k6])ti $ /$1di$p !56 /x # arkki TEhTI > tehDI 2 1.1 |
355
|
|
|
|
|
|
|
|| s/(e[$k6])ti $ /$1de$p !57 /x # le hTI > hDE 2 1.2 |
356
|
|
|
|
|
|
|
|| s/([$k6])t([$v]) $ /$1d$2$p !27 /x # jo hTo > hDo 2 1 |
357
|
|
|
|
|
|
|
|| s/([$v])t([$v]) $ /$1d$2$p !10 /x # ha uTa > uDa 2 2 |
358
|
|
|
|
|
|
|
|| s/([$k])(i)(v)i $ /$1$2$3e$p !14 /x # k ivI > ivE 2 3 |
359
|
|
|
|
|
|
|
|| s/([$k])([o;])([$k])i $ /$1$2$3i$p !51 /x # aero sOlI > olI 5 1 |
360
|
|
|
|
|
|
|
|| s/([o;]ni) $ /$1$p !54 /x # p ONI > oni 5 3 |
361
|
|
|
|
|
|
|
|| s/([o;])\1([$k])i $ /$1$1$2i$p !69 /x # b OolI > ooli 5 4 |
362
|
|
|
|
|
|
|
|| s/([o;])([$k])i $ /$1$2e$p !31 /x # hu OlI > olE 5 5 |
363
|
|
|
|
|
|
|
|| s/([$k4])t([a:]) $ /$1$1$2$p ! 7 /x # si lTA > llA |
364
|
|
|
|
|
|
|
|| s/(n)k([$v]) $ /$1g$2$p !28 /x # la NKo > ngo |
365
|
|
|
|
|
|
|
|| s/(n)t([$v]) $ /$1$1$2$p !15 /x # ka NTo > nno |
366
|
|
|
|
|
|
|
|| s/((au)|(:y))ki $ /$1e$p !47 /x # h AUKI > auE |
367
|
|
|
|
|
|
|
|| s/([o;]im|ie[$k])i $ /$1e$p !48 /x # t OIMI > oimE |
368
|
|
|
|
|
|
|
|| s/(l)t([$v]) $ /$1$1$2$p !70 /x # pe LTi > lli |
369
|
|
|
|
|
|
|
|| s/(l)k([i]) $ /$1je$p !72 /x # ky LKI > lJE |
370
|
|
|
|
|
|
|
|| s/(l)k([a:]) $ /$1$2$p !71 /x # su LKa > a |
371
|
|
|
|
|
|
|
|
372
|
|
|
|
|
|
|
# perussäännöt |
373
|
|
|
|
|
|
|
|| s/([$v]) $/$1$p ! 8 /x # kirj a > a 7 1 |
374
|
|
|
|
|
|
|
|| s/(.*) $/$1i$p !53 /x # aid S > sI 7 2 |
375
|
|
|
|
|
|
|
; |
376
|
|
|
|
|
|
|
|
377
|
0
|
|
|
|
|
|
tr/:;/\ä\ö/; |
378
|
|
|
|
|
|
|
|
379
|
0
|
|
|
|
|
|
m/^(.*?) *!(.*)/; |
380
|
0
|
|
|
|
|
|
return $1,$2; |
381
|
|
|
|
|
|
|
} |
382
|
|
|
|
|
|
|
|
383
|
|
|
|
|
|
|
# change scandinavic letters 'ä' to ':' and 'ö' to ';' in the given word |
384
|
|
|
|
|
|
|
# return changed word,a-skand,o-scand |
385
|
|
|
|
|
|
|
# a-skand == 'a' if scands are not used and ':' if they are |
386
|
|
|
|
|
|
|
# o-skand == 'o' if scands are not used and ';' if they are |
387
|
|
|
|
|
|
|
sub to_number{ |
388
|
0
|
|
|
0
|
0
|
|
my($temp)=@_; |
389
|
0
|
|
|
|
|
|
my($muisti,$apu,$scand)=undef; |
390
|
0
|
|
|
|
|
|
$scand=1; |
391
|
0
|
|
|
|
|
|
foreach my $kirjain(split //,$temp){ |
392
|
0
|
|
|
|
|
|
my $ascii=ord($kirjain); |
393
|
0
|
0
|
|
|
|
|
if($ascii == 195){ |
394
|
0
|
|
|
|
|
|
$muisti=1; |
395
|
|
|
|
|
|
|
}else{ |
396
|
0
|
0
|
0
|
|
|
|
if($ascii == 164 && $muisti){ |
|
|
0
|
0
|
|
|
|
|
397
|
0
|
|
|
|
|
|
$kirjain=":"; |
398
|
|
|
|
|
|
|
}elsif($ascii == 182 && $muisti){ |
399
|
0
|
|
|
|
|
|
$kirjain=";"; |
400
|
|
|
|
|
|
|
} |
401
|
0
|
|
|
|
|
|
$muisti=0; |
402
|
0
|
|
|
|
|
|
$apu.=$kirjain; |
403
|
|
|
|
|
|
|
} |
404
|
0
|
0
|
|
|
|
|
$scand=1 if $kirjain =~ /[y:;]/; |
405
|
0
|
0
|
|
|
|
|
$scand=0 if $kirjain =~ /[aou]/; |
406
|
|
|
|
|
|
|
} |
407
|
0
|
0
|
|
|
|
|
return $apu,$scand ? ":" : "a",$scand ? ";" : "o"; |
|
|
0
|
|
|
|
|
|
408
|
|
|
|
|
|
|
} |
409
|
|
|
|
|
|
|
|
410
|
|
|
|
|
|
|
1; |
411
|
|
|
|
|
|
|
|
412
|
|
|
|
|
|
|
__END__ |