mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-16 08:19:31 -06:00
107 lines
2.8 KiB
Plaintext
107 lines
2.8 KiB
Plaintext
--# -path=.:../abstract:../common:../../prelude
|
||
|
||
resource ResTur = ParamX ** open Prelude, Predef in {
|
||
|
||
--2 For $Noun$
|
||
|
||
param
|
||
Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess ;
|
||
|
||
Species = Indef | Def ;
|
||
|
||
VForm =
|
||
VPres Number Person
|
||
| VPast Number Person
|
||
| VFuture Number Person
|
||
| VAorist Number Person
|
||
| VImperative
|
||
| VInfinitive
|
||
;
|
||
|
||
oper
|
||
Agr = {n : Number ; p : Person} ;
|
||
|
||
-- For $Verb$.
|
||
|
||
Verb : Type = {
|
||
s : VForm => Str
|
||
} ;
|
||
|
||
--2 For $Numeral$
|
||
param
|
||
DForm = unit | ten ;
|
||
|
||
-- For $Numeral$.
|
||
oper
|
||
mkNum : Str -> Str -> {s : DForm => Str} =
|
||
\two, twenty ->
|
||
{s = table {
|
||
unit => two ;
|
||
ten => twenty
|
||
}
|
||
} ;
|
||
|
||
mkNP : (ben,beni,bana,banin,bende,benden:Str) -> Number -> Person ->
|
||
{s : Case => Str ; a : Agr} =
|
||
\ben,beni,bana,banin,bende,benden,n,p -> {
|
||
s = table {
|
||
Nom => ben ;
|
||
Acc => beni ;
|
||
Dat => bana ;
|
||
Gen => banin ;
|
||
Loc => bende ;
|
||
Abl => benden
|
||
} ;
|
||
a = {n=n; p=p} ;
|
||
} ;
|
||
|
||
oper
|
||
harmony4 : Str -> Str -> Str
|
||
= \base,suffix0 ->
|
||
let c : Str =
|
||
case base of {
|
||
_+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+
|
||
("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => c ;
|
||
_ => error "harmony4"
|
||
} ;
|
||
h : Str =
|
||
case c of {
|
||
("ı"|"a") => "ı" ;
|
||
("i"|"e") => "i" ;
|
||
("u"|"o") => "u" ;
|
||
("ü"|"ö") => "ü"
|
||
} ;
|
||
suffix : Str =
|
||
case suffix0 of {
|
||
s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*)
|
||
+ ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")
|
||
+s2 => s1+h+s2 ;
|
||
s => s
|
||
}
|
||
in base + suffix ;
|
||
|
||
harmony2 : Str -> Str -> Str
|
||
= \base,suffix0 ->
|
||
let c : Str =
|
||
case base of {
|
||
_+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+
|
||
("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => c ;
|
||
_ => error "harmony4"
|
||
} ;
|
||
h : Str =
|
||
case c of {
|
||
("ı"|"a") => "ı" ;
|
||
("i"|"e") => "i" ;
|
||
("u"|"o") => "u" ;
|
||
("ü"|"ö") => "ü"
|
||
} ;
|
||
suffix : Str =
|
||
case suffix0 of {
|
||
s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*)
|
||
+ ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")
|
||
+s2 => s1+h+s2 ;
|
||
s => s
|
||
}
|
||
in base + suffix ;
|
||
}
|