-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpg2p.foma
64 lines (44 loc) · 1.69 KB
/
pg2p.foma
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
# Copyright (C) 2023 Darko Milosevic <daremc86@gmail.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, version 3.0 of the License.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
define PB %- | .#. ;
# # will separate the words in the same phrase.
define WB %# | PB ;
define StressVowel
a0 : a1 | e0 : e1 | ii0 : ii1 | o0 : o1 | u0 : u1 | i0 : i1 | ax0 : ax1 ;
define Vowel StressVowel.u | StressVowel.l ;
define fixVowelLetters
StressVowel -> || PB _ PB ;
define FixV
v -> ... ax1 || PB _ PB ;
define StressSingleMonosyllabicWord
s e0 @-> ... || PB _ PB ,,
StressVowel @-> || PB [\[Vowel | %#]]* _ [\[Vowel | %#]]* PB ;
# Voiced/unvoiced pairs
define VUPair
b:p|g:k|dj:tj|d:t|dzh:tsh|zh:sh|z:s|v:f;
#Voiced obstruents, extracting the domain of the pair fst.
define VObs VUPair.u;
#Voiceless obstruents, extracting the range of the pair fst.
define UObs VUPair.l | h;
define Obs VObs | UObs ;
# Unvoiced become voiced before these.
define VContext VObs - v ;
define ObsSeq Obs [[%#]* Obs]* ;
define Voicing ObsSeq .o. [VUPair.i ->] ;
define Assimilation
Voicing [%#]* VContext @-> || _ ;
define Rules
fixVowelLetters
.o. FixV
.o. StressSingleMonosyllabicWord
.o. Assimilation
;
regex Rules ;