mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
added Ukrainian
This commit is contained in:
@@ -55,6 +55,7 @@ Tam,Tamil,tamil,n,n,n,n,n,n,n,n,n
|
||||
Tel,Telugu,telugu,,,y,n,n,n,,n,n
|
||||
Tha,Thai,thai,,to_thai,,,,,,y,n
|
||||
Tur,Turkish,turkish,,,y,,,n,,n,n
|
||||
Ukr,Ukrainian,ukrainian,,,,y,n,n,n,y,n
|
||||
Urd,Urdu,urdu,Hindustani,,,,,,,y,n
|
||||
Som,Somali,somali,,,,,n,n,,n,n
|
||||
Zul,Zulu,zulu,,,,,n,n,,n,n
|
||||
|
||||
|
4
src/ukrainian/AdjectiveUkr.gf
Normal file
4
src/ukrainian/AdjectiveUkr.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AdjectiveUkr of Adjective = CatUkr ** {
|
||||
--lin
|
||||
-- PositA a = a ;
|
||||
}
|
||||
4
src/ukrainian/AllUkr.gf
Normal file
4
src/ukrainian/AllUkr.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AllUkr of AllUkrAbs =
|
||||
LangUkr
|
||||
**
|
||||
{} ;
|
||||
3
src/ukrainian/AllUkrAbs.gf
Normal file
3
src/ukrainian/AllUkrAbs.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract AllUkrAbs =
|
||||
Lang
|
||||
** {}
|
||||
21
src/ukrainian/CatUkr.gf
Normal file
21
src/ukrainian/CatUkr.gf
Normal file
@@ -0,0 +1,21 @@
|
||||
concrete CatUkr of Cat = CommonX ** open ResUkr in {
|
||||
|
||||
lincat N = N ;
|
||||
lincat N2 = N ** {c2 : Compl} ;
|
||||
lincat N3 = N ** {c2,c3 : Compl} ;
|
||||
lincat V = V ;
|
||||
lincat VV,VS,VQ,VA = V ;
|
||||
lincat V2 = V ** {c2 : Compl} ;
|
||||
lincat V3,V2A,V2S,V2Q,V2V = V ** {c2,c3 : Compl} ;
|
||||
lincat A = A ;
|
||||
lincat A2 = A ** {c2 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
lincat CN = CommonNoun ;
|
||||
lincat AP = AdjPhrase ;
|
||||
lincat S = {s : Str} ;
|
||||
|
||||
lincat LN,SN,GN,PN = {s : Str} ;
|
||||
|
||||
linref V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
|
||||
|
||||
}
|
||||
85
src/ukrainian/DocumentationUkr.gf
Normal file
85
src/ukrainian/DocumentationUkr.gf
Normal file
@@ -0,0 +1,85 @@
|
||||
concrete DocumentationUkr of Documentation = CatUkr ** open
|
||||
ResUkr, Prelude, HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Nom" ++ th "Sg" ++ td (x.s ! Nom ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.s ! Nom ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Acc" ++ th "Sg" ++ td (x.s ! Acc ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.s ! Acc ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Dat" ++ th "Sg" ++ td (x.s ! Dat ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.s ! Dat ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Gen" ++ th "Sg" ++ td (x.s ! Gen ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.s ! Gen ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Loc" ++ th "Sg" ++ td (x.s ! Loc ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.s ! Loc ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Instr" ++ th "Sg" ++ td (x.s ! Instr ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.s ! Instr ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Voc" ++ th "Sg" ++ td (x.Voc ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Voc ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionV,InflectionV2,InflectionV2A,InflectionV2Q,InflectionV2S,InflectionV2V,InflectionV3,InflectionVA,InflectionVQ,InflectionVS,InflectionVV = \x -> {
|
||||
t="v" ;
|
||||
s1="" ;
|
||||
s2=heading1 "Infinitive" ++
|
||||
paragraph (x.infinitive) ++
|
||||
heading1 "Present" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P2 ! Sg)) ++
|
||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P2 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P3 ! Pl))) ++
|
||||
heading1 "Imperative" ++
|
||||
paragraph (x.imperative1) ++
|
||||
frameTable (
|
||||
tr (th "Sg" ++ td (x.imperative2 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative2 ! Pl))) ++
|
||||
heading1 "participle" ++
|
||||
frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Masc" ++ td (x.participle ! Masc ! Sg) ++ td (x.participle ! Masc ! Pl)) ++
|
||||
tr (th "Fem" ++ td (x.participle ! Fem ! Sg) ++ td (x.participle ! Fem ! Pl)) ++
|
||||
tr (th "Neuter" ++ td (x.participle ! Neuter ! Sg) ++ td (x.participle ! Neuter ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionA,InflectionA2 = \x -> {
|
||||
t="a" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (th "" ++ th "Masc" ++ th "Fem" ++ th "Neuter" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (x.s ! Nom ! GSg Masc) ++ td (x.s ! Nom ! GSg Fem) ++ td (x.s ! Nom ! GSg Neuter) ++ td (x.s ! Nom ! GPl)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Acc ! GSg Masc) ++ td (x.s ! Acc ! GSg Fem) ++ td (x.s ! Acc ! GSg Neuter) ++ td (x.s ! Acc ! GPl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Dat ! GSg Masc) ++ td (x.s ! Dat ! GSg Fem) ++ td (x.s ! Dat ! GSg Neuter) ++ td (x.s ! Dat ! GPl)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Gen ! GSg Masc) ++ td (x.s ! Gen ! GSg Fem) ++ td (x.s ! Gen ! GSg Neuter) ++ td (x.s ! Gen ! GPl)) ++
|
||||
tr (th "Loc" ++ td (x.s ! Loc ! GSg Masc) ++ td (x.s ! Loc ! GSg Fem) ++ td (x.s ! Loc ! GSg Neuter) ++ td (x.s ! Loc ! GPl)) ++
|
||||
tr (th "Instr"++td (x.s ! Instr ! GSg Masc)++td (x.s ! Instr ! GSg Fem)++td (x.s ! Instr ! GSg Neuter)++td (x.s ! Instr ! GPl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionAdA,InflectionAdN,InflectionAdV,InflectionAdv = \x -> {t="adv"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
InflectionPrep = \x -> {t="prep"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
}
|
||||
6
src/ukrainian/GrammarUkr.gf
Normal file
6
src/ukrainian/GrammarUkr.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
concrete GrammarUkr of Grammar =
|
||||
TenseX,
|
||||
PhraseUkr,
|
||||
NounUkr,
|
||||
AdjectiveUkr ** {
|
||||
}
|
||||
10
src/ukrainian/LangUkr.gf
Normal file
10
src/ukrainian/LangUkr.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract
|
||||
concrete LangUkr of Lang =
|
||||
GrammarUkr,
|
||||
LexiconUkr
|
||||
,DocumentationUkr --# notpresent
|
||||
** {
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
}
|
||||
2
src/ukrainian/LexiconUkr.gf
Normal file
2
src/ukrainian/LexiconUkr.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete LexiconUkr of Lexicon = CatUkr ** open ParadigmsUkr in {
|
||||
}
|
||||
33464
src/ukrainian/MorphoUkr.gf
Normal file
33464
src/ukrainian/MorphoUkr.gf
Normal file
File diff suppressed because it is too large
Load Diff
4
src/ukrainian/NounUkr.gf
Normal file
4
src/ukrainian/NounUkr.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete NounUkr of Noun = CatUkr ** {
|
||||
--lin
|
||||
-- UseN n = n ;
|
||||
}
|
||||
1331
src/ukrainian/ParadigmsUkr.gf
Normal file
1331
src/ukrainian/ParadigmsUkr.gf
Normal file
File diff suppressed because it is too large
Load Diff
11
src/ukrainian/PhraseUkr.gf
Normal file
11
src/ukrainian/PhraseUkr.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
concrete PhraseUkr of Phrase = CatUkr ** {
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
}
|
||||
166
src/ukrainian/ResUkr.gf
Normal file
166
src/ukrainian/ResUkr.gf
Normal file
@@ -0,0 +1,166 @@
|
||||
resource ResUkr = {
|
||||
|
||||
param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
|
||||
param Number = Sg | Pl ;
|
||||
param Gender = Masc | Neuter | Fem ;
|
||||
oper N = {s: Case => Number => Str; Voc: Number => Str; g: Gender} ; -- 11407
|
||||
oper mkN : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> N =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,g ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
Sg => f1 ;
|
||||
Pl => f2
|
||||
} ;
|
||||
Acc => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
Gen => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
}
|
||||
} ;
|
||||
Voc = table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
} ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
param Aspect = Perf | Imperf ;
|
||||
param Person = P1 | P2 | P3 ;
|
||||
param Tense = Past | Pres ;
|
||||
oper V = {active: Aspect => {Past: Str; Pres: Person => Number => Str}; imperative1: Str; imperative2: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 4822
|
||||
oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28 ->
|
||||
{ active = table {
|
||||
Imperf => { Past = f1 ;
|
||||
Pres = table {
|
||||
P1 => table {
|
||||
Sg => f2 ;
|
||||
Pl => f3
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f4 ;
|
||||
Pl => f5
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f6 ;
|
||||
Pl => f7
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Perf => { Past = f8 ;
|
||||
Pres = table {
|
||||
P1 => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
imperative1 = f15 ;
|
||||
imperative2 = table {
|
||||
Sg => f16 ;
|
||||
Pl => f17
|
||||
} ;
|
||||
infinitive = f18 ;
|
||||
participle = table {
|
||||
Masc => table {
|
||||
Sg => f19 ;
|
||||
Pl => f20
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
} ;
|
||||
Neuter => table {
|
||||
Sg => f23 ;
|
||||
Pl => f24
|
||||
}
|
||||
} ;
|
||||
passive = table {
|
||||
Imperf => table {
|
||||
Pres => f25 ;
|
||||
Past => f26
|
||||
} ;
|
||||
Perf => table {
|
||||
Pres => f27 ;
|
||||
Past => f28
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
param GenNum = GSg Gender | GPl ;
|
||||
oper A = {s: Case => GenNum => Str} ; -- 4394
|
||||
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
GSg Masc => f1 ;
|
||||
GSg Fem => f2 ;
|
||||
GSg Neuter => f3 ;
|
||||
GPl => f4
|
||||
} ;
|
||||
Acc => table {
|
||||
GSg Masc => f5 ;
|
||||
GSg Fem => f6 ;
|
||||
GSg Neuter => f7 ;
|
||||
GPl => f8
|
||||
} ;
|
||||
Dat => table {
|
||||
GSg Masc => f9 ;
|
||||
GSg Fem => f10 ;
|
||||
GSg Neuter => f11 ;
|
||||
GPl => f12
|
||||
} ;
|
||||
Gen => table {
|
||||
GSg Masc => f13 ;
|
||||
GSg Fem => f14 ;
|
||||
GSg Neuter => f15 ;
|
||||
GPl => f16
|
||||
} ;
|
||||
Loc => table {
|
||||
GSg Masc => f17 ;
|
||||
GSg Fem => f18 ;
|
||||
GSg Neuter => f19 ;
|
||||
GPl => f20
|
||||
} ;
|
||||
Instr => table {
|
||||
GSg Masc => f21 ;
|
||||
GSg Fem => f22 ;
|
||||
GSg Neuter => f23 ;
|
||||
GPl => f24
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
oper Compl = {s : Str; c : Case} ;
|
||||
oper noPrep : Compl = {s=""; c=Acc} ;
|
||||
|
||||
oper CommonNoun = {s : Str} ;
|
||||
oper AdjPhrase = {s : Str} ;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user