mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 01:18:57 -06:00
Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl
This commit is contained in:
@@ -5,7 +5,7 @@ Ara,Arabic,arabic,,,,,,y,,y
|
|||||||
Bul,Bulgarian,bulgarian,,,y,,,,,y
|
Bul,Bulgarian,bulgarian,,,y,,,,,y
|
||||||
Cat,Catalan,catalan,Romance,,y,,,,y,y
|
Cat,Catalan,catalan,Romance,,y,,,,y,y
|
||||||
Chi,Chinese (simplified),chinese,,,,,,,,y
|
Chi,Chinese (simplified),chinese,,,,,,,,y
|
||||||
Cze,Czech,czech,,,n,n,n,n,n,n
|
Cze,Czech,czech,,,,,,n,,y
|
||||||
Dan,Danish,danish,Scand,,y,,,,,y
|
Dan,Danish,danish,Scand,,y,,,,,y
|
||||||
Dut,Dutch,dutch,,,y,,,,,y
|
Dut,Dutch,dutch,,,y,,,,,y
|
||||||
Eng,English,english,,,y,,,,y,y
|
Eng,English,english,,,y,,,,y,y
|
||||||
|
|||||||
|
@@ -97,7 +97,7 @@ oper
|
|||||||
_ + "í" => jarniAdjForms s ;
|
_ + "í" => jarniAdjForms s ;
|
||||||
_ + "ův" => otcuvAdjForms s ;
|
_ + "ův" => otcuvAdjForms s ;
|
||||||
_ + "in" => matcinAdjForms s ;
|
_ + "in" => matcinAdjForms s ;
|
||||||
_ => Predef.error ("no mkA for" ++ s)
|
_ => matcinAdjForms ("??" + s) -- Predef.error ("no mkA for" ++ s)
|
||||||
}) ;
|
}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ oper
|
|||||||
ul + "ice" => ul + "ic" ;
|
ul + "ice" => ul + "ic" ;
|
||||||
koleg + "yně" => koleg + "yň" ;
|
koleg + "yně" => koleg + "yň" ;
|
||||||
ruz + "e" => ruz + "í" ;
|
ruz + "e" => ruz + "í" ;
|
||||||
_ => Predef.error ("shortFemPlGen does not apply to" ++ s)
|
_ => "??" + s -- Predef.error ("shortFemPlGen does not apply to" ++ s)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
@@ -155,7 +155,7 @@ oper
|
|||||||
<Neutr, _ + "e" , _+"ete"> => declKURE ;
|
<Neutr, _ + "e" , _+"ete"> => declKURE ;
|
||||||
<Neutr, _ + "e" , _ + "e"> => declMORE ;
|
<Neutr, _ + "e" , _ + "e"> => declMORE ;
|
||||||
<Neutr, _ + "í" , _ + "í"> => declSTAVENI ;
|
<Neutr, _ + "í" , _ + "í"> => declSTAVENI ;
|
||||||
_ => Predef.error ("cannot infer declension type for" ++ nom ++ gen)
|
_ => (\s -> declSTROJ ("??" + s)) -- Predef.error ("cannot infer declension type for" ++ nom ++ gen)
|
||||||
}
|
}
|
||||||
in decl nom ;
|
in decl nom ;
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ oper
|
|||||||
_ + "ce" => declSOUDCE s ;
|
_ + "ce" => declSOUDCE s ;
|
||||||
_ + "e" => declMORE s ;
|
_ + "e" => declMORE s ;
|
||||||
_ + "í" => declSTAVENI s ;
|
_ + "í" => declSTAVENI s ;
|
||||||
_ => Predef.error ("cannot guess declension type for" ++ s)
|
_ => declSTROJ ("??" + s) -- Predef.error ("cannot guess declension type for" ++ s)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- the traditional declensions, in both CEG and Wiki
|
-- the traditional declensions, in both CEG and Wiki
|
||||||
|
|||||||
@@ -6,19 +6,24 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
|
|
||||||
-- : A -> AP ;
|
-- : A -> AP ;
|
||||||
PositA a = emptyAP ** {
|
PositA a = emptyAP ** {
|
||||||
s = a.s ! Posit
|
s = \\n,c =>
|
||||||
|
let adj : Noun = (a ** {s = a.s ! Posit}) in
|
||||||
|
caseFromStem glue adj c n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : A -> NP -> AP ;
|
-- : A -> NP -> AP ;
|
||||||
ComparA a np = emptyAP ** {
|
ComparA a np = UseComparA a ** {
|
||||||
s = a.s ! Compar ;
|
compl = \\n => applyAdp (caseAdp Ade) np ;
|
||||||
compar = np.s ! Ade ;
|
-- compl = applyAdp (prepos Nom "mint") np ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : A2 -> NP -> AP ; -- married to her
|
-- : A2 -> NP -> AP ; -- married to her
|
||||||
ComplA2 a2 np = emptyAP ** {
|
ComplA2 a2 np = let ap : AP = PositA a2 in ap ** {
|
||||||
s = a2.s ! Posit ;
|
s = case a2.isPost of {False => ap.s ; _ => \\_,_ => []} ;
|
||||||
compar = np.s ! a2.c2.c ++ a2.c2.s
|
compl = \\n => applyAdp a2.c2 np
|
||||||
|
++ case a2.isPost of {
|
||||||
|
True => ap.s ! n ! Nom ;
|
||||||
|
False => [] } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : A2 -> AP ; -- married to itself
|
-- : A2 -> AP ; -- married to itself
|
||||||
@@ -29,13 +34,15 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
|
|
||||||
-- : A -> AP ; -- warmer
|
-- : A -> AP ; -- warmer
|
||||||
UseComparA a = emptyAP ** {
|
UseComparA a = emptyAP ** {
|
||||||
s = a.s ! Compar ;
|
s = \\n,c =>
|
||||||
|
let adj : Noun = (a ** {s = a.s ! Compar}) in
|
||||||
|
caseFromStem glue adj c n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CAdv -> AP -> NP -> AP ; -- as cool as John
|
-- : CAdv -> AP -> NP -> AP ; -- as cool as John
|
||||||
CAdvAP adv ap np = ap ** {
|
CAdvAP adv ap np = ap ** {
|
||||||
s = \\n => adv.s ++ ap.s ! n ;
|
s = \\n,c => adv.s ++ ap.s ! n ! c ;
|
||||||
compar = ap.compar ++ adv.p ++ np.s ! Nom
|
compl = \\n => ap.compl ! n ++ adv.p ++ applyAdp (caseAdp Nom) np ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- The superlative use is covered in $Ord$.
|
-- The superlative use is covered in $Ord$.
|
||||||
@@ -53,7 +60,7 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
|
|
||||||
-- : AdA -> AP -> AP ;
|
-- : AdA -> AP -> AP ;
|
||||||
AdAP ada ap = ap ** {
|
AdAP ada ap = ap ** {
|
||||||
s = \\af => ada.s ++ ap.s ! af ;
|
s = \\n,c => ada.s ++ ap.s ! n ! c ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -61,7 +68,7 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
|
|
||||||
-- : AP -> Adv -> AP ; -- warm by nature
|
-- : AP -> Adv -> AP ; -- warm by nature
|
||||||
AdvAP ap adv = ap ** {
|
AdvAP ap adv = ap ** {
|
||||||
s = \\af => ap.s ! af ++ adv.s ;
|
s = \\n,c => ap.s ! n ! c ++ adv.s ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ lin
|
|||||||
|
|
||||||
-- : Prep -> NP -> Adv ;
|
-- : Prep -> NP -> Adv ;
|
||||||
PrepNP prep np = {
|
PrepNP prep np = {
|
||||||
s = prep.pr ++ np.s ! prep.c ++ prep.s ;
|
s = applyAdp prep np ;
|
||||||
|
isPre = False ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
concrete CatHun of Cat = CommonX ** open ResHun, Prelude in {
|
concrete CatHun of Cat = CommonX - [Adv] ** open ResHun, Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ concrete CatHun of Cat = CommonX ** open ResHun, Prelude in {
|
|||||||
-- ``` Predet (QuantSg | QuantPl Num) Ord
|
-- ``` Predet (QuantSg | QuantPl Num) Ord
|
||||||
-- as defined in NounHun.
|
-- as defined in NounHun.
|
||||||
|
|
||||||
CN = ResHun.Noun ;
|
CN = ResHun.CNoun ;
|
||||||
NP = ResHun.NounPhrase ;
|
NP = ResHun.NounPhrase ;
|
||||||
Pron = ResHun.Pronoun ; --Pronouns need enough info to turn it into NP or Quant.
|
Pron = ResHun.Pronoun ; --Pronouns need enough info to turn it into NP or Quant.
|
||||||
Det = ResHun.Determiner ;
|
Det = ResHun.Determiner ;
|
||||||
@@ -66,7 +66,7 @@ concrete CatHun of Cat = CommonX ** open ResHun, Prelude in {
|
|||||||
Quant = ResHun.Quant ;
|
Quant = ResHun.Quant ;
|
||||||
Num = ResHun.Num ;
|
Num = ResHun.Num ;
|
||||||
Ord = {
|
Ord = {
|
||||||
s : Number => Str ; -- Number => Case => Str ; -- Ord can come from AP and become AP again
|
s : Number => Case => Str ; -- Ord can come from AP and become AP again
|
||||||
n : Number -- Ord can come from Num, which has inherent number
|
n : Number -- Ord can come from Num, which has inherent number
|
||||||
} ;
|
} ;
|
||||||
DAP = ResHun.Determiner ;
|
DAP = ResHun.Determiner ;
|
||||||
@@ -78,7 +78,7 @@ concrete CatHun of Cat = CommonX ** open ResHun, Prelude in {
|
|||||||
|
|
||||||
Card = ResHun.Numeral ;
|
Card = ResHun.Numeral ;
|
||||||
Numeral = ResHun.Numeral ;
|
Numeral = ResHun.Numeral ;
|
||||||
Digits = {s : CardOrd => Str ; n : Number} ;
|
Digits = {s : CardOrd => Str} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -118,4 +118,9 @@ concrete CatHun of Cat = CommonX ** open ResHun, Prelude in {
|
|||||||
N3 = ResHun.Noun ;
|
N3 = ResHun.Noun ;
|
||||||
PN = ResHun.NounPhrase ;
|
PN = ResHun.NounPhrase ;
|
||||||
|
|
||||||
|
Adv = {s : Str ; isPre : Bool} ;
|
||||||
|
|
||||||
|
linref
|
||||||
|
CN = linCN ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,36 +3,48 @@ concrete ConjunctionHun of Conjunction =
|
|||||||
|
|
||||||
-- Adverb and other simple {s : Str} types.
|
-- Adverb and other simple {s : Str} types.
|
||||||
lincat
|
lincat
|
||||||
[Adv],[AdV],[IAdv],[S] = {s1,s2 : Str} ;
|
[AdV],[IAdv],[S] = {s1,s2 : Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
BaseAdv, BaseAdV, BaseIAdv, BaseS = twoSS ;
|
BaseAdV, BaseIAdv, BaseS = twoSS ;
|
||||||
ConsAdv, ConsAdV, ConsIAdv, ConsS = consrSS comma ;
|
ConsAdV, ConsIAdv, ConsS = consrSS comma ;
|
||||||
ConjAdv, ConjAdV, ConjIAdv, ConjS = conjunctDistrSS ;
|
ConjAdV, ConjIAdv, ConjS = conjunctDistrSS ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
[Adv] = {s1,s2 : Str ; isPre : Bool} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
BaseAdv x y = y ** twoSS x y ;
|
||||||
|
ConsAdv x xs = xs ** consrSS comma x xs ;
|
||||||
|
ConjAdv co xs = xs ** conjunctDistrSS co xs ;
|
||||||
|
|
||||||
-- Adjectival phrases
|
-- Adjectival phrases
|
||||||
lincat
|
lincat
|
||||||
[AP] = {s1,s2 : Number => Str} ;
|
[AP] = {s1,s2 : Number => Case => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
BaseAP x y =
|
BaseAP x y =
|
||||||
-- Don't try to have discontinuous comparative forms
|
-- Don't try to have discontinuous comparative forms
|
||||||
let xCont : AP = x ** {s = \\n => x.s ! n ++ x.compar} ;
|
let xCont : AP = x ** {s = \\n,c => x.s ! n ! c ++ x.compl ! n} ;
|
||||||
yCont : AP = y ** {s = \\n => y.s ! n ++ y.compar} ;
|
yCont : AP = y ** {s = \\n,c => y.s ! n ! c ++ y.compl ! n} ;
|
||||||
in twoTable Number xCont yCont ;
|
in twoTable2 Number Case xCont yCont ;
|
||||||
ConsAP a as =
|
ConsAP a as =
|
||||||
let aCont : AP = a ** {s = \\n => a.s ! n ++ a.compar} ;
|
let aCont : AP = a ** {s = \\n,c => a.s ! n ! c ++ a.compl ! n} ;
|
||||||
in consrTable Number comma aCont as ;
|
in consrTable2 Number Case comma aCont as ;
|
||||||
ConjAP co as = conjunctDistrTable Number co as ** {compar = []} ;
|
ConjAP co as = conjunctDistrTable2 Number Case co as ** {compl = \\_ => []} ;
|
||||||
|
|
||||||
-- Noun phrases
|
-- Noun phrases
|
||||||
lincat
|
lincat
|
||||||
[NP] = ResHun.BaseNP ** {s1,s2 : Case => Str} ;
|
[NP] = ResHun.BaseNP ** {s1,s2 : Possessor => Case => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
BaseNP x y = twoTable Case x y ** y ;
|
BaseNP x y = twoTable2 Possessor Case x y ** y ;
|
||||||
ConsNP x xs = consrTable Case comma x xs ** xs ;
|
ConsNP x xs = xs ** consrTable2 Possessor Case comma x xs ;
|
||||||
ConjNP co xs = conjunctDistrTable Case co xs ** xs ** {agr = <P3,co.n>};
|
ConjNP co xs = conjunctDistrTable2 Possessor Case co xs ** xs ** {
|
||||||
|
agr = <P3, case xs.agr.p2 of {
|
||||||
|
Pl => Pl ;
|
||||||
|
_ => co.n }>
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Relative sentences
|
-- Relative sentences
|
||||||
lincat
|
lincat
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ concrete GrammarHun of Grammar =
|
|||||||
RelativeHun,
|
RelativeHun,
|
||||||
ConjunctionHun,
|
ConjunctionHun,
|
||||||
PhraseHun,
|
PhraseHun,
|
||||||
TextX,
|
TextX - [Adv],
|
||||||
StructuralHun,
|
StructuralHun,
|
||||||
IdiomHun,
|
IdiomHun,
|
||||||
TenseX
|
TenseX - [Adv]
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||||
|
|||||||
@@ -8,93 +8,93 @@ concrete LexiconHun of Lexicon = CatHun **
|
|||||||
lin airplane_N = mkN "repülőgép" "repülőgépet" ;
|
lin airplane_N = mkN "repülőgép" "repülőgépet" ;
|
||||||
-- lin alas_Interj = mkInterj "" ;
|
-- lin alas_Interj = mkInterj "" ;
|
||||||
-- lin already_Adv = mkA "" ;
|
-- lin already_Adv = mkA "" ;
|
||||||
lin animal_N = mkN "állat" ;
|
lin animal_N = mkN "állat" "állatot" "állatok" "állata" ;
|
||||||
-- lin answer_V2S = mkV2S "válasz" ;
|
-- lin answer_V2S = mkV2S "válasz" ;
|
||||||
lin apartment_N = mkN "lakás" ;
|
lin apartment_N = mkN "lakás" "lakást" ;
|
||||||
lin apple_N = mkN "alma" ;
|
lin apple_N = mkN "alma" ;
|
||||||
lin art_N = mkN "müvészet" ;
|
lin art_N = mkN "művészet" "művészetet" ;
|
||||||
-- lin ashes_N = mkN "" ;
|
-- lin ashes_N = mkN "" ;
|
||||||
-- lin ask_V2Q = mkV2 "" ;
|
-- lin ask_V2Q = mkV2 "" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- B
|
-- B
|
||||||
|
|
||||||
lin baby_N = mkN "bébi" ;
|
lin baby_N = mkN "bébi" "bébit" ;
|
||||||
-- lin back_N = mkN "" ;
|
-- lin back_N = mkN "" ;
|
||||||
lin bad_A = mkA "rossz" ;
|
lin bad_A = mkA "rossz" ;
|
||||||
lin bank_N = mkN "bank" ;
|
lin bank_N = mkN "bank" "bankot" ;
|
||||||
-- lin bark_N = mkN "" ;
|
-- lin bark_N = mkN "" ;
|
||||||
lin beautiful_A = mkA "szép" ;
|
lin beautiful_A = mkA "szép" ;
|
||||||
-- lin become_VA = mkVA "" ;
|
-- lin become_VA = mkVA "" ;
|
||||||
lin beer_N = mkN "sör" "sört" ;
|
lin beer_N = mkN "sör" "sört" ;
|
||||||
-- lin beg_V2V = mkV2 "" ;
|
-- lin beg_V2V = mkV2 "" ;
|
||||||
lin belly_N = mkN "has" ;
|
lin belly_N = mkN "has" "hasat" ;
|
||||||
lin big_A = mkA "nagy" ;
|
lin big_A = mkA "nagy" ;
|
||||||
lin bike_N = mkN "bicikli" ;
|
lin bike_N = mkN "bicikli" "biciklit";
|
||||||
lin bird_N = mkN "madár" ;
|
lin bird_N = mkN "madár" "madarat";
|
||||||
-- lin bite_V2 = mkV2 "" ;
|
-- lin bite_V2 = mkV2 "" ;
|
||||||
lin black_A = mkA "fekete" ;
|
lin black_A = mkA "fekete" ;
|
||||||
lin blood_N = mkN "vér" ;
|
lin blood_N = mkN "vér" "vért";
|
||||||
-- lin blow_V = mkV "" ;
|
-- lin blow_V = mkV "" ;
|
||||||
lin blue_A = mkA "kék" ;
|
lin blue_A = mkA "kék" ;
|
||||||
lin boat_N = mkN "hajó" ;
|
lin boat_N = mkN "hajó" "hajót" "hajók" "hajója" ;
|
||||||
-- lin bone_N = mkN "" ;
|
-- lin bone_N = mkN "" ;
|
||||||
-- lin boot_N = mkN "" ;
|
-- lin boot_N = mkN "" ;
|
||||||
-- lin boss_N = mkN "" ;
|
-- lin boss_N = mkN "" ;
|
||||||
lin book_N = mkN "könyv" ;
|
lin book_N = mkN "könyv" "könyvet" ;
|
||||||
lin boy_N = mkN "fiú" ;
|
lin boy_N = mkN "fiú" ;
|
||||||
lin bread_N = mkN "kenyér" ;
|
lin bread_N = mkN "kenyér" "kenyeret";
|
||||||
lin break_V2 = mkV2 "szünet" ;
|
lin break_V2 = mkV2 "szünet" ;
|
||||||
lin breast_N = mkN "mell" ;
|
lin breast_N = mkN "mell" "mellet" ;
|
||||||
-- lin breathe_V = mkV "" ;
|
-- lin breathe_V = mkV "" ;
|
||||||
-- lin broad_A = mkA "" ;
|
-- lin broad_A = mkA "" ;
|
||||||
-- lin brother_N2 = mkN "öccsém" ; (possessive form?)
|
-- lin brother_N2 = mkN "öccsém" ; (possessive form?)
|
||||||
lin brown_A = mkA "barna" ;
|
lin brown_A = mkA "barna" ;
|
||||||
-- lin burn_V = mkV "" ;
|
-- lin burn_V = mkV "" ;
|
||||||
lin butter_N = mkN "vaj" ;
|
lin butter_N = mkN "vaj" "vajat" ;
|
||||||
-- lin buy_V2 = mkV2 "" ;
|
-- lin buy_V2 = mkV2 "" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- C
|
-- C
|
||||||
|
|
||||||
lin camera_N = mkN "fényképezőgép" ;
|
lin camera_N = mkN "fényképezőgép" "fényképezőgépet";
|
||||||
-- lin cap_N = mkN "" ;
|
-- lin cap_N = mkN "" ;
|
||||||
lin car_N = mkN "autó" ;
|
lin car_N = mkN "autó" "autót" ;
|
||||||
lin carpet_N = mkN "szőnyeg" ;
|
lin carpet_N = mkN "szőnyeg" "szőnyeget" ;
|
||||||
lin cat_N = mkN "macska" ;
|
lin cat_N = mkN "macska" "macskát";
|
||||||
lin ceiling_N = mkN "plafon" ;
|
lin ceiling_N = roof_N ;
|
||||||
lin chair_N = mkN "szék" ;
|
lin chair_N = mkN "szék" "széket";
|
||||||
lin cheese_N = mkN "sajt" ;
|
lin cheese_N = mkN "sajt" "sajtot" ;
|
||||||
lin child_N = mkN "gyerek" ;
|
lin child_N = mkN "gyerek" "gyereket" ;
|
||||||
lin church_N = mkN "templom" ;
|
lin church_N = mkN "templom" "templomot" ;
|
||||||
lin city_N = mkN "város" ;
|
lin city_N = mkN "város" "várost" ;
|
||||||
lin clean_A = mkA "tiszta" ;
|
lin clean_A = mkA "tiszta" ;
|
||||||
lin clever_A = mkA "okos" ;
|
lin clever_A = mkA "okos" ;
|
||||||
lin close_V2 = mkV2 "közel" ;
|
lin close_V2 = mkV2 "közel" ;
|
||||||
lin cloud_N = mkN "felhö" ;
|
lin cloud_N = mkN "felhő" "felhőt" ;
|
||||||
lin coat_N = mkN "kabát" ;
|
lin coat_N = mkN "kabát" "kabátot" ;
|
||||||
lin cold_A = mkA "hideg" ;
|
lin cold_A = mkA "hideg" ;
|
||||||
-- lin come_V = mkV "" ;
|
-- lin come_V = mkV "" ;
|
||||||
lin computer_N = mkN "számítógép" ;
|
lin computer_N = mkN "számítógép" "számítógépet" ;
|
||||||
lin correct_A = mkA "igaz" ;
|
lin correct_A = mkA "igaz" ;
|
||||||
-- lin count_V2 = mkV2 "" ;
|
-- lin count_V2 = mkV2 "" ;
|
||||||
lin country_N = mkN "ország" ;
|
lin country_N = mkN "ország" "országot" "országok" "országa" ;
|
||||||
lin cousin_N = mkN "unokatestvér" ; --short "unoka"
|
lin cousin_N = mkN "unokatestvér" "unokatestvért"; --short "unoka"
|
||||||
lin cow_N = mkN "tehén" ;
|
lin cow_N = mkN "tehén" ;
|
||||||
-- lin cut_V2 = mkV2 "" ;
|
-- lin cut_V2 = mkV2 "" ;
|
||||||
--
|
--
|
||||||
-- ----
|
-- ----
|
||||||
-- -- D
|
-- -- D
|
||||||
--
|
--
|
||||||
lin day_N = mkN "nap" ;
|
lin day_N = mkN "nap" "napot" ;
|
||||||
-- lin die_V = mkV "" ;
|
-- lin die_V = mkV "" ;
|
||||||
-- lin dig_V = mkV "" ;
|
-- lin dig_V = mkV "" ;
|
||||||
-- lin dirty_A = mkA "" ;
|
-- lin dirty_A = mkA "" ;
|
||||||
-- lin distance_N3 = mkN "" ;
|
-- lin distance_N3 = mkN "" ;
|
||||||
-- lin do_V2 = mkV2 do_V ;
|
-- lin do_V2 = mkV2 do_V ;
|
||||||
lin doctor_N = mkN "orvos" ;
|
lin doctor_N = mkN "orvos" "orvost";
|
||||||
lin dog_N = mkN "kutya" ;
|
lin dog_N = mkN "kutya" "kutyát";
|
||||||
lin door_N = mkN "ajtó" ;
|
lin door_N = mkN "ajtó" "ajtót" ;
|
||||||
-- lin drink_V2 = mkV2 "" ;
|
-- lin drink_V2 = mkV2 "" ;
|
||||||
-- lin dry_A = mkA "" ;
|
-- lin dry_A = mkA "" ;
|
||||||
-- lin dull_A = mkA "" ;
|
-- lin dull_A = mkA "" ;
|
||||||
@@ -103,94 +103,95 @@ lin door_N = mkN "ajtó" ;
|
|||||||
----
|
----
|
||||||
-- E
|
-- E
|
||||||
|
|
||||||
lin ear_N = mkN "fül" ;
|
lin ear_N = mkN "fül" "fület";
|
||||||
lin earth_N = mkN "föld" ;
|
lin earth_N = mkN "föld" "földet";
|
||||||
-- lin eat_V2 = mkV2 "" ;
|
-- lin eat_V2 = mkV2 "" ;
|
||||||
lin egg_N = mkN "tojás" ;
|
lin egg_N = mkN "tojás" "tojást" ;
|
||||||
lin empty_A = mkA "üres" ;
|
lin empty_A = mkA "üres" ;
|
||||||
lin enemy_N = mkN "ellenség" ;
|
lin enemy_N = mkN "ellenség" "ellenséget" ;
|
||||||
lin eye_N = mkN "szem" ;
|
lin eye_N = mkN "szem" "szemet";
|
||||||
|
|
||||||
----
|
----
|
||||||
-- F
|
-- F
|
||||||
|
|
||||||
lin factory_N = mkN "gyár" ;
|
lin factory_N = mkN "gyár" "gyárat" ;
|
||||||
-- lin fall_V = mkV "" ;
|
-- lin fall_V = mkV "" ;
|
||||||
-- lin far_Adv = mkA "" ;
|
-- lin far_Adv = mkA "" ;
|
||||||
lin fat_N = mkN "kövér" ;
|
lin fat_N = mkN "kövér" "kövéret";
|
||||||
lin father_N2 = mkN2 "apa" ;
|
lin father_N2 = mkN2 (mkN "apa" "apát") ;
|
||||||
-- lin fear_V2 = mkV2 "" ;
|
-- lin fear_V2 = mkV2 "" ;
|
||||||
-- lin fear_VS = mkVS "" ;
|
-- lin fear_VS = mkVS "" ;
|
||||||
lin feather_N = mkN "madártoll" ;
|
lin feather_N = mkN "madártoll" "madártollat";
|
||||||
-- lin fight_V2 = mkV2 "" ;
|
-- lin fight_V2 = mkV2 "" ;
|
||||||
-- lin find_V2 = mkV2 "" ;
|
-- lin find_V2 = mkV2 "" ;
|
||||||
lin fingernail_N = mkN "köröm" ;
|
lin fingernail_N = mkN "köröm" "körmöt";
|
||||||
lin fire_N = mkN "tűz" ;
|
lin fire_N = mkN "tűz" "tüzet" ;
|
||||||
lin fish_N = mkN "hal" ;
|
lin fish_N = mkN "hal" "halat" ;
|
||||||
-- lin float_V = mkV "" ;
|
-- lin float_V = mkV "" ;
|
||||||
lin floor_N = mkN "padló" ;
|
lin floor_N = mkN "padló" "padlót" ;
|
||||||
-- lin flow_V = mkV "" ;
|
-- lin flow_V = mkV "" ;
|
||||||
lin flower_N = mkN "vírág" ;
|
lin flower_N = mkN "virág" "virágot" "virágok" "virága" ;
|
||||||
lin fly_V = mkV "repül" ;
|
lin fly_V = mkV "repül" ;
|
||||||
lin fog_N = mkN "köd" ;
|
lin fog_N = mkN "köd" "ködöt" "ködön" "ködhöz" "ködök"
|
||||||
lin foot_N = mkN "láb" ; --same as leg, to specify "lábfej"
|
"köde" "ködünk" "ködei" ;
|
||||||
lin forest_N = mkN "erdő" ;
|
lin foot_N = leg_N ; --same as leg, to specify "lábfej"
|
||||||
|
lin forest_N = mkN "erdő" "erdőt" ;
|
||||||
-- lin forget_V2 = mkV2 "" ;
|
-- lin forget_V2 = mkV2 "" ;
|
||||||
-- lin freeze_V = mkV "" ;
|
-- lin freeze_V = mkV "" ;
|
||||||
lin fridge_N = mkN "hűtő" ;
|
lin fridge_N = mkN "hűtő" "hűtőt" ;
|
||||||
lin friend_N = mkN "barát" ;
|
lin friend_N = mkN "barát" "barátot" ;
|
||||||
lin fruit_N = mkN "gyümölcs" ;
|
lin fruit_N = mkN "gyümölcs" "gyümölcsöt" "gyümölcsök" "gyümölcse" ;
|
||||||
lin full_A = mkA "tele" ;
|
lin full_A = mkA "tele" ;
|
||||||
-- --lin fun_AV
|
-- --lin fun_AV
|
||||||
|
|
||||||
----
|
----
|
||||||
-- G
|
-- G
|
||||||
|
|
||||||
lin garden_N = mkN "kert" ;
|
lin garden_N = mkN "kert" "kertet" ;
|
||||||
lin girl_N = mkN "lány" ;
|
lin girl_N = mkN "lány" "lányt";
|
||||||
-- lin give_V3 = mkV3 "" ;
|
-- lin give_V3 = mkV3 "" ;
|
||||||
lin glove_N = mkN "kesztyű" ;
|
lin glove_N = mkN "kesztyű" "kesztyűt" ;
|
||||||
-- lin go_V = mkV "" ;
|
-- lin go_V = mkV "" ;
|
||||||
lin gold_N = mkN "arany" ;
|
lin gold_N = mkN "arany" "aranyat" ;
|
||||||
lin good_A = mkA "jó" ;
|
lin good_A = mkA "jó" ;
|
||||||
lin grammar_N = mkN "nyelvtan" ;
|
lin grammar_N = mkN "nyelvtan" "nyelvtant";
|
||||||
lin grass_N = mkN "fű" ;
|
lin grass_N = mkN "fű" "füvet";
|
||||||
lin green_A = mkA "zöld" ;
|
lin green_A = mkA "zöld" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- H
|
-- H
|
||||||
|
|
||||||
lin hair_N = mkN "haj" ;
|
lin hair_N = mkN "haj" "hajat" ;
|
||||||
lin hand_N = mkN "kéz" ;
|
lin hand_N = mkN "kéz" "kezet" ;
|
||||||
-- lin harbour_N = mkN "" ;
|
-- lin harbour_N = mkN "" ;
|
||||||
lin hat_N = mkN "kalap" ;
|
lin hat_N = mkN "kalap" "kalapot" ;
|
||||||
-- lin hate_V2 = mkV2 "" ;
|
-- lin hate_V2 = mkV2 "" ;
|
||||||
lin head_N = mkN "fej" ;
|
lin head_N = mkN "fej" "fejet";
|
||||||
-- lin hear_V2 = mkV2 "" ;
|
-- lin hear_V2 = mkV2 "" ;
|
||||||
lin heart_N = mkN "szív" ;
|
lin heart_N = mkN "szív" "szívet";
|
||||||
lin heavy_A = mkA "nehéz" ;
|
lin heavy_A = mkA "nehéz" ;
|
||||||
-- lin hill_N = mkN "" ;
|
-- lin hill_N = mkN "" ;
|
||||||
-- lin hit_V2 = mkV2 "" ;
|
-- lin hit_V2 = mkV2 "" ;
|
||||||
-- lin hold_V2 = mkV2 "" ;
|
-- lin hold_V2 = mkV2 "" ;
|
||||||
-- lin hope_VS = mkV "" ;
|
-- lin hope_VS = mkV "" ;
|
||||||
-- lin horn_N = mkN "" ;
|
-- lin horn_N = mkN "" ;
|
||||||
lin horse_N = mkN "ló" ;
|
lin horse_N = mkN "ló" "lovat";
|
||||||
lin hot_A = mkA "forró" ;
|
lin hot_A = mkA "forró" ;
|
||||||
lin house_N = mkN "ház" ;
|
lin house_N = mkN "ház" "házat" ;
|
||||||
-- lin hunt_V2 = mkV2 "" ;
|
-- lin hunt_V2 = mkV2 "" ;
|
||||||
lin husband_N = mkN "férj" ;
|
lin husband_N = mkN "férj" "férjet";
|
||||||
|
|
||||||
--------
|
--------
|
||||||
-- I - K
|
-- I - K
|
||||||
|
|
||||||
lin ice_N = mkN "jég" ;
|
lin ice_N = mkN "jég" "jeget" ;
|
||||||
lin industry_N = mkN "ipar" ;
|
lin industry_N = mkN "ipar" "ipart" ;
|
||||||
lin iron_N = mkN "vas" ;
|
lin iron_N = mkN "vas" "vasat" ;
|
||||||
-- lin john_PN = mkPN "" ;
|
-- lin john_PN = mkPN "" ;
|
||||||
-- lin jump_V = mkV "" ;
|
-- lin jump_V = mkV "" ;
|
||||||
-- lin kill_V2 = mkV2 "" ;
|
-- lin kill_V2 = mkV2 "" ;
|
||||||
lin king_N = mkN "király" ;
|
lin king_N = mkN "király" "királyt" ;
|
||||||
lin knee_N = mkN "térd" ;
|
lin knee_N = mkN "térd" "térdet";
|
||||||
-- lin know_V2 = mkV2 "" ;
|
-- lin know_V2 = mkV2 "" ;
|
||||||
-- lin know_VQ = mkVQ "" ;
|
-- lin know_VQ = mkVQ "" ;
|
||||||
-- lin know_VS = mkV "" ;
|
-- lin know_VS = mkV "" ;
|
||||||
@@ -199,15 +200,15 @@ lin knee_N = mkN "térd" ;
|
|||||||
----
|
----
|
||||||
-- L
|
-- L
|
||||||
|
|
||||||
lin lake_N = mkN "tó" ;
|
lin lake_N = mkN "tó" "tavat" ;
|
||||||
lin lamp_N = mkN "lámpa" ;
|
lin lamp_N = mkN "lámpa" "lámpát";
|
||||||
lin language_N = mkN "nyelv" ;
|
lin language_N = mkN "nyelv" "nyelvet";
|
||||||
-- lin laugh_V = mkV "" ;
|
-- lin laugh_V = mkV "" ;
|
||||||
lin leaf_N = mkN "levél" ;
|
lin leaf_N = mkN "levél" "levelet";
|
||||||
-- lin learn_V2 = mkV2 "" ;
|
-- lin learn_V2 = mkV2 "" ;
|
||||||
lin leather_N = mkN "bőr" ;
|
lin leather_N = mkN "bőr" "bőrt";
|
||||||
-- lin leave_V2 = mkV2 "" ;
|
-- lin leave_V2 = mkV2 "" ;
|
||||||
lin leg_N = mkN "láb" ;
|
lin leg_N = mkN "láb" "lábat";
|
||||||
-- lin lie_V = mkV "" ;
|
-- lin lie_V = mkV "" ;
|
||||||
-- lin like_V2 = mkV2 "" ;
|
-- lin like_V2 = mkV2 "" ;
|
||||||
-- lin listen_V2 = mkV2 "" ;
|
-- lin listen_V2 = mkV2 "" ;
|
||||||
@@ -216,7 +217,7 @@ lin leg_N = mkN "láb" ;
|
|||||||
-- lin long_A = mkA "" ;
|
-- lin long_A = mkA "" ;
|
||||||
-- lin lose_V2 = mkV2 "" ;
|
-- lin lose_V2 = mkV2 "" ;
|
||||||
-- lin louse_N = mkN "" ;
|
-- lin louse_N = mkN "" ;
|
||||||
lin love_N = mkN "szerelem" ;
|
lin love_N = mkN "szerelem" "szerelmet";
|
||||||
-- lin love_V2 = mkV2 "" ;
|
-- lin love_V2 = mkV2 "" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
@@ -224,46 +225,46 @@ lin love_N = mkN "szerelem" ;
|
|||||||
|
|
||||||
lin man_N = mkN "férfi" "ak" harmA ; -- force plural allomorph and a-harmony
|
lin man_N = mkN "férfi" "ak" harmA ; -- force plural allomorph and a-harmony
|
||||||
lin married_A2 = mkA2 "házas" Ins ;
|
lin married_A2 = mkA2 "házas" Ins ;
|
||||||
lin meat_N = mkN "hús" ;
|
lin meat_N = mkN "hús" "húst";
|
||||||
lin milk_N = mkN "tej" ;
|
lin milk_N = mkN "tej" "tejet" ;
|
||||||
lin moon_N = mkN "hold" ;
|
lin moon_N = mkN "hold" "holdat" ;
|
||||||
lin mother_N2 = mkN2 "anya" ;
|
lin mother_N2 = mkN2 (mkN "anya" "anyát") ;
|
||||||
lin mountain_N = mkN "hegy" ;
|
lin mountain_N = mkN "hegy" "hegyet";
|
||||||
lin mouth_N = mkN "száj" ;
|
lin mouth_N = mkN "száj" "szájat" ;
|
||||||
lin music_N = mkN "zene" ;
|
lin music_N = mkN "zene" "zenét";
|
||||||
|
|
||||||
----
|
----
|
||||||
-- N
|
-- N
|
||||||
|
|
||||||
lin name_N = mkN "név" "nevet" ;
|
lin name_N = mkN "név" "nevet" ;
|
||||||
lin narrow_A = mkA "keskeny" ; --also "szűk"
|
lin narrow_A = mkA "keskeny" "keskenyet"; --also "szűk"
|
||||||
lin near_A = mkA "közel" ;
|
lin near_A = mkA "közel" ;
|
||||||
lin neck_N = mkN "nyak" ;
|
lin neck_N = mkN "nyak" "nyakat";
|
||||||
lin new_A = mkA "új" ;
|
lin new_A = mkA "új" ;
|
||||||
lin newspaper_N = mkN "újság" ;
|
lin newspaper_N = mkN "újság" "újságot" ;
|
||||||
lin night_N = mkN "éjszak" ; --also shortened to "éj" ("este" more for evening)
|
lin night_N = mkN "éjszaka" "éjszakát"; --also shortened to "éj" ("este" more for evening)
|
||||||
lin nose_N = mkN "orr" ;
|
lin nose_N = mkN "orr" "orrot" ;
|
||||||
lin now_Adv = mkAdv "most" ;
|
lin now_Adv = mkAdv "most" ;
|
||||||
lin number_N = mkN "szám" ;
|
lin number_N = mkN "szám" "számot" ;
|
||||||
--
|
--
|
||||||
-- --------
|
-- --------
|
||||||
-- -- O - P
|
-- -- O - P
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
lin oil_N = mkN "olaj" ;
|
lin oil_N = mkN "olaj" "olajat" ; -- TODO olajok or olajak?
|
||||||
lin old_A = mkA "öreg" ; --also "idős"
|
lin old_A = mkA "öreg" ; --also "idős"
|
||||||
-- lin open_V2 = mkV2 "" ;
|
-- lin open_V2 = mkV2 "" ;
|
||||||
-- lin paint_V2A = mkV2A "" ;
|
-- lin paint_V2A = mkV2A "" ;
|
||||||
lin paper_N = mkN "papír" ;
|
lin paper_N = mkN "papír" "papírt" "papírok" "papírja" ;
|
||||||
-- lin paris_PN = mkPN "Paris" ;
|
-- lin paris_PN = mkPN "Paris" ;
|
||||||
lin peace_N = mkN "béke" ;
|
lin peace_N = mkN "béke" "békét";
|
||||||
lin pen_N = mkN "toll" ;
|
lin pen_N = mkN "toll" "tollat" ;
|
||||||
lin person_N = mkN "ember" ;
|
lin person_N = mkN "ember" "embert";
|
||||||
lin planet_N = mkN "bolygó" ;
|
lin planet_N = mkN "bolygó" "bolygót" ;
|
||||||
lin plastic_N = mkN "műanyag" ;
|
lin plastic_N = mkN "műanyag" "műanyagot" "műanyagok" "műanyaga" ;
|
||||||
-- lin play_V = mkV "" ;
|
-- lin play_V = mkV "" ;
|
||||||
lin policeman_N = mkN "rendőr" ; --the police "rendőrség"
|
lin policeman_N = mkN "rendőr" "rendőrt"; --the police "rendőrség"
|
||||||
lin priest_N = mkN "pap" ;
|
lin priest_N = mkN "pap" "papot" "papok" "papja" ;
|
||||||
-- lin pull_V2 = mkV2 "" ;
|
-- lin pull_V2 = mkV2 "" ;
|
||||||
-- lin push_V2 = mkV2 "" ;
|
-- lin push_V2 = mkV2 "" ;
|
||||||
-- lin put_V2 = mkV2 "" ;
|
-- lin put_V2 = mkV2 "" ;
|
||||||
@@ -271,42 +272,42 @@ lin priest_N = mkN "pap" ;
|
|||||||
-- --------
|
-- --------
|
||||||
-- -- Q - R
|
-- -- Q - R
|
||||||
--
|
--
|
||||||
lin queen_N = mkN "kírálynő" ;
|
lin queen_N = mkN "kírálynő" "kírálynőt" ;
|
||||||
lin question_N = mkN "kérdés" ;
|
lin question_N = mkN "kérdés" "kérdést" ;
|
||||||
lin radio_N = mkN "rádió" ;
|
lin radio_N = mkN "rádió" "rádiót" ;
|
||||||
lin rain_N = mkN "eső" ;
|
lin rain_N = mkN "eső" "esőt" ;
|
||||||
-- lin rain_V0 = mkV "" ;
|
-- lin rain_V0 = mkV "" ;
|
||||||
-- lin read_V2 = mkV2 "" ;
|
-- lin read_V2 = mkV2 "" ;
|
||||||
lin ready_A = mkA "kész" ;
|
lin ready_A = mkA "kész" ;
|
||||||
lin reason_N = mkN "ok" ;
|
lin reason_N = mkN "ok" "okot" "okok" "oka" ;
|
||||||
lin red_A = mkA "piros" ;
|
lin red_A = mkA "piros" ;
|
||||||
lin religion_N = mkN "vallás" ;
|
lin religion_N = mkN "vallás" "vallást";
|
||||||
lin restaurant_N = mkN "étterem" ;
|
lin restaurant_N = mkN "étterem" "éttermet";
|
||||||
lin river_N = mkN "folyó" ;
|
lin river_N = mkN "folyó" "folyót" ;
|
||||||
lin road_N = mkN "út" ;
|
lin road_N = mkN "út" "utat" ;
|
||||||
lin rock_N = mkN "szikla" ;
|
lin rock_N = mkN "szikla" "sziklát";
|
||||||
lin roof_N = mkN "plafon" ;
|
lin roof_N = mkN "plafon" "plafont" "plafonok" "plafonja" ;
|
||||||
lin root_N = mkN "gyökér" ;
|
lin root_N = mkN "gyökér" "gyökeret";
|
||||||
lin rope_N = mkN "kötél" ;
|
lin rope_N = mkN "kötél" "kötelet";
|
||||||
-- lin rotten_A = mkA "" ;
|
-- lin rotten_A = mkA "" ;
|
||||||
-- lin round_A = mkA "" ;
|
-- lin round_A = mkA "" ;
|
||||||
-- lin rub_V2 = mkV2 "" ;
|
-- lin rub_V2 = mkV2 "" ;
|
||||||
lin rubber_N = mkN "gumi" ;
|
lin rubber_N = mkN "gumi" "gumit";
|
||||||
lin rule_N = mkN "szabály" ;
|
lin rule_N = mkN "szabály" "szabályt" ;
|
||||||
-- lin run_V = mkV "" ;
|
-- lin run_V = mkV "" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- S
|
-- S
|
||||||
|
|
||||||
lin salt_N = mkN "só" ;
|
lin salt_N = mkN "só" "sót" ;
|
||||||
lin sand_N = mkN "homok" ;
|
lin sand_N = mkN "homok" "homokot" "homokok" "homokja" ;
|
||||||
-- lin say_VS = mkVS "" ;
|
-- lin say_VS = mkVS "" ;
|
||||||
lin school_N = mkN "iskola" ;
|
lin school_N = mkN "iskola" "iskolát";
|
||||||
lin science_N = mkN "tudomány" ;
|
lin science_N = mkN "tudomány" "tudományt" ;
|
||||||
-- lin scratch_V2 = mkV2 "" ;
|
-- lin scratch_V2 = mkV2 "" ;
|
||||||
lin sea_N = mkN "tenger" ;
|
lin sea_N = mkN "tenger" "tengert";
|
||||||
lin see_V2 = mkV2 "lát" ;
|
lin see_V2 = mkV2 "lát" ;
|
||||||
lin seed_N = mkN "mag" ;
|
lin seed_N = mkN "mag" "magot" "magok" "magja" ;
|
||||||
-- lin seek_V2 = mkV2 "" ;
|
-- lin seek_V2 = mkV2 "" ;
|
||||||
-- lin sell_V3 = mkV3 "" ;
|
-- lin sell_V3 = mkV3 "" ;
|
||||||
-- lin send_V3 = mkV3 "" ;
|
-- lin send_V3 = mkV3 "" ;
|
||||||
@@ -314,42 +315,43 @@ lin seed_N = mkN "mag" ;
|
|||||||
-- lin sharp_A = mkA "" ;
|
-- lin sharp_A = mkA "" ;
|
||||||
-- lin sheep_N = mkN "" fem ;
|
-- lin sheep_N = mkN "" fem ;
|
||||||
-- lin ship_N = mkN "" ;
|
-- lin ship_N = mkN "" ;
|
||||||
lin shirt_N = mkN "ing" ; --shirt like t-shirt or the more formal?
|
lin shirt_N = mkN "ing" "inget"; --shirt like t-shirt or the more formal?
|
||||||
lin shoe_N = mkN "cipő" ;
|
lin shoe_N = mkN "cipő" "cipőt" ;
|
||||||
lin shop_N = mkN "üzlet" ;
|
lin shop_N = mkN "üzlet" "üzletet";
|
||||||
lin short_A = mkA "rövid" ; --in short text, if human length then "alacsony"
|
lin short_A = mkA "rövid" ; --in short text, if human length then "alacsony"
|
||||||
lin silver_N = mkN "ezüst" ;
|
lin silver_N = mkN "ezüst" "ezüstöt" "ezüstön" "ezüsthöz" "ezüstök"
|
||||||
|
"ezüstje" "ezüstünk" "ezüstjei" ;
|
||||||
-- lin sing_V = mkV "" ;
|
-- lin sing_V = mkV "" ;
|
||||||
-- lin sister_N = mkN "" ;
|
-- lin sister_N = mkN "" ;
|
||||||
-- lin sit_V = mkV "" ;
|
-- lin sit_V = mkV "" ;
|
||||||
lin skin_N = mkN "bőr" ;
|
lin skin_N = mkN "bőr" "bőrt";
|
||||||
lin sky_N = mkN "ég" ;
|
lin sky_N = mkN "ég" "eget" ;
|
||||||
-- lin sleep_V = mkV "" ;
|
-- lin sleep_V = mkV "" ;
|
||||||
lin small_A = mkA "kicsi" ;
|
lin small_A = mkA "kicsi" "kicsit";
|
||||||
-- lin smell_V = mkV "" ;
|
-- lin smell_V = mkV "" ;
|
||||||
lin smoke_N = mkN "füst" ;
|
lin smoke_N = mkN "füst" "füstet";
|
||||||
lin smooth_A = mkA "sima" ;
|
lin smooth_A = mkA "sima" ;
|
||||||
lin snake_N = mkN "kígyó" ;
|
lin snake_N = mkN "kígyó" "kígyót" ;
|
||||||
lin snow_N = mkN "hó" ;
|
lin snow_N = mkN "hó" "havat" ;
|
||||||
lin sock_N = mkN "zokni" ;
|
lin sock_N = mkN "zokni" "zoknit";
|
||||||
lin song_N = mkN "dal" ;
|
lin song_N = mkN "dal" "dalt" ;
|
||||||
-- lin speak_V2 = mkV2 "" ;
|
-- lin speak_V2 = mkV2 "" ;
|
||||||
-- lin spit_V = mkV "" ;
|
-- lin spit_V = mkV "" ;
|
||||||
-- lin split_V2 = mkV2 "" ;
|
-- lin split_V2 = mkV2 "" ;
|
||||||
-- lin squeeze_V2 = mkV2 "" ;
|
-- lin squeeze_V2 = mkV2 "" ;
|
||||||
-- lin stab_V2 = mkV2 "" ;
|
-- lin stab_V2 = mkV2 "" ;
|
||||||
-- lin stand_V = mkV "" ;
|
-- lin stand_V = mkV "" ;
|
||||||
lin star_N = mkN "csillag" ;
|
lin star_N = mkN "csillag" "csillagot" "csillagok" "csillaga" ;
|
||||||
lin steel_N = mkN "acél" ;
|
lin steel_N = mkN "acél" "ok" harmA ;
|
||||||
lin stick_N = mkN "rúd" ;
|
lin stick_N = mkN "rúd" "rudat" ;
|
||||||
lin stone_N = mkN "kő";
|
lin stone_N = mkN "kő" "követ" ;
|
||||||
-- lin stop_V = mkV "" ;
|
-- lin stop_V = mkV "" ;
|
||||||
-- lin stove_N = mkN "" ;
|
-- lin stove_N = mkN "" ;
|
||||||
lin straight_A = mkA "egyenes" ;
|
lin straight_A = mkA "egyenes";
|
||||||
lin student_N = mkN "diák" ;
|
lin student_N = mkN "diák" "diákot" ;
|
||||||
lin stupid_A = mkA "buta" ; --also "hülye"
|
lin stupid_A = mkA "buta" ; --also "hülye"
|
||||||
-- lin suck_V2 = mkV2 "" ;
|
-- lin suck_V2 = mkV2 "" ;
|
||||||
lin sun_N = mkN "nap" ; --same as day
|
lin sun_N = mkN "nap" "napot"; --same as day
|
||||||
-- lin swell_V = mkV "" ;
|
-- lin swell_V = mkV "" ;
|
||||||
-- lin swim_V = mkV "" ;
|
-- lin swim_V = mkV "" ;
|
||||||
|
|
||||||
@@ -357,23 +359,23 @@ lin sun_N = mkN "nap" ; --same as day
|
|||||||
-- T
|
-- T
|
||||||
|
|
||||||
|
|
||||||
lin table_N = mkN "asztal" ;
|
lin table_N = mkN "asztal" "asztalt";
|
||||||
lin tail_N = mkN "farok" ;
|
lin tail_N = mkN "farok" "farkot";
|
||||||
lin talk_V3 = mkV3 "beszél" ;
|
lin talk_V3 = mkV3 "beszél" ;
|
||||||
-- lin teach_V2 = mkV2 "" ;
|
-- lin teach_V2 = mkV2 "" ;
|
||||||
lin teacher_N = mkN "tanár" ;
|
lin teacher_N = mkN "tanár" "tanárt" ;
|
||||||
lin television_N = mkN "tévé" ; --also "televízió" but not used
|
lin television_N = mkN "tévé" "tévét" ; --also "televízió" but not used
|
||||||
lin thick_A = mkA "vastag" ;
|
lin thick_A = mkA "vastag" ;
|
||||||
lin thin_A = mkA "vekony" ;
|
lin thin_A = mkA "vekony" ;
|
||||||
-- lin think_V = mkV "" ;
|
-- lin think_V = mkV "" ;
|
||||||
-- lin throw_V2 = mkV2 "" ;
|
-- lin throw_V2 = mkV2 "" ;
|
||||||
-- lin tie_V2 = mkV2 "" ;
|
-- lin tie_V2 = mkV2 "" ;
|
||||||
lin today_Adv = mkAdv "ma" ;
|
lin today_Adv = mkAdv "ma" ;
|
||||||
lin tongue_N = mkN "nyelv" ; --same as language
|
lin tongue_N = mkN "nyelv" "nyelvet"; --same as language
|
||||||
lin tooth_N = mkN "fog" ;
|
lin tooth_N = mkN "fog" "fogat" ;
|
||||||
lin train_N = mkN "vonat" ;
|
lin train_N = mkN "vonat" "vonatot" "vonatok" "vonata" ;
|
||||||
-- lin travel_V = mkV "" ;
|
-- lin travel_V = mkV "" ;
|
||||||
lin tree_N = mkN "fa" ;
|
lin tree_N = mkN "fa" "fát";
|
||||||
-- lin turn_V = mkV "" ;
|
-- lin turn_V = mkV "" ;
|
||||||
|
|
||||||
--------
|
--------
|
||||||
@@ -382,8 +384,8 @@ lin tree_N = mkN "fa" ;
|
|||||||
lin ugly_A = mkA "csúf" ;
|
lin ugly_A = mkA "csúf" ;
|
||||||
-- lin uncertain_A = mkA "" ;
|
-- lin uncertain_A = mkA "" ;
|
||||||
-- lin understand_V2 = mkV2 "" ;
|
-- lin understand_V2 = mkV2 "" ;
|
||||||
lin university_N = mkN "egyetem" ;
|
lin university_N = mkN "egyetem" "egyetemet";
|
||||||
lin village_N = mkN "falu" ;
|
lin village_N = mkN "falu" "falut" "falvak";
|
||||||
-- lin vomit_V = mkV2 "" ;
|
-- lin vomit_V = mkV2 "" ;
|
||||||
|
|
||||||
--------
|
--------
|
||||||
@@ -391,28 +393,27 @@ lin village_N = mkN "falu" ;
|
|||||||
|
|
||||||
-- lin wait_V2 = mkV2 "" ;
|
-- lin wait_V2 = mkV2 "" ;
|
||||||
-- lin walk_V = mkV "" ;
|
-- lin walk_V = mkV "" ;
|
||||||
lin war_N = mkN "háború" ;
|
lin war_N = mkN "háború" "háborút" ;
|
||||||
lin warm_A = mkA "meleg" ;
|
lin warm_A = mkA "meleg" ;
|
||||||
-- lin wash_V2 = mkV2 "" ;
|
-- lin wash_V2 = mkV2 "" ;
|
||||||
-- lin watch_V2 = mkV2 "" ;
|
-- lin watch_V2 = mkV2 "" ;
|
||||||
lin water_N = mkN "víz" ;
|
lin water_N = mkN "víz" "vizet" ;
|
||||||
lin wet_A = mkA "nedves" ;
|
lin wet_A = mkA "nedves" ;
|
||||||
lin white_A = mkA "fehér" ;
|
lin white_A = mkA "fehér" ;
|
||||||
lin wide_A = mkA "széles" ;
|
lin wide_A = mkA "széles" ;
|
||||||
lin wife_N = mkN "feleség" ;
|
lin wife_N = mkN "feleség" "feleséget" ;
|
||||||
-- lin win_V2 = mkV2 "" ;
|
-- lin win_V2 = mkV2 "" ;
|
||||||
lin wind_N = mkN "szél" ;
|
lin wind_N = mkN "szél" "szelet" ;
|
||||||
lin window_N = mkN "ablak" ;
|
lin window_N = mkN "ablak" "ablakot" "ablakok" "ablaka" ;
|
||||||
lin wine_N = mkN "bor" ;
|
lin wine_N = mkN "bor" "bort";
|
||||||
lin wing_N = mkN "szárny" ;
|
lin wing_N = mkN "szárny" "szárnyat";
|
||||||
-- lin wipe_V2 = mkV2 "" ;
|
-- lin wipe_V2 = mkV2 "" ;
|
||||||
--lin woman_N = mkN "nő" "k" harmO ;
|
lin woman_N = mkN "nő" "nőt" ;
|
||||||
lin woman_N = mkN "nő" "nőket" ;
|
|
||||||
-- lin wonder_VQ = mkVQ "" ;
|
-- lin wonder_VQ = mkVQ "" ;
|
||||||
lin wood_N = mkN "fa" ; --same as tree
|
lin wood_N = mkN "fa" "fát"; --same as tree
|
||||||
lin worm_N = mkN "féreg" ; --also "kukac"
|
lin worm_N = mkN "féreg" "férget"; --also "kukac"
|
||||||
-- lin write_V2 = mkV2 "" ;
|
lin write_V2 = mkV2 (mkV "írok" "írsz" "ír" "írunk" "írtok" "írnak" "írni") ;
|
||||||
lin year_N = mkN "év" ;
|
lin year_N = mkN "év" "évet";
|
||||||
lin yellow_A = mkA "sárga" ;
|
lin yellow_A = mkA "sárga" ;
|
||||||
lin young_A = mkA "fiatal" ;
|
lin young_A = mkA "fiatal" ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
concrete NounHun of Noun = CatHun ** open
|
||||||
|
ResHun, Prelude, Coordination in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
@@ -7,20 +8,39 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
--2 Noun phrases
|
--2 Noun phrases
|
||||||
|
|
||||||
-- : Det -> CN -> NP
|
-- : Det -> CN -> NP
|
||||||
DetCN det cn = emptyNP ** det ** {
|
DetCN det cn = emptyNP ** cn ** det ** {
|
||||||
s = \\c => det.s ! Nom ++ cn.s ! det.n ! c ;
|
s = \\p,c =>
|
||||||
|
let possessed : Str = caseFromPossStem cn det c ;
|
||||||
|
standalone : Str = caseFromStem glue cn c det.n ;
|
||||||
|
in case det.caseagr of {
|
||||||
|
True => det.s ! c ;
|
||||||
|
False => det.s ! Nom
|
||||||
|
} ++ case <p,det.dt> of {
|
||||||
|
<_, DetPoss _>
|
||||||
|
=> possessed ;
|
||||||
|
<NoPoss, _>
|
||||||
|
=> standalone ;
|
||||||
|
<Poss per rnum, _>
|
||||||
|
=> let pron : Pronoun = pronTable ! <per,rnum> ; -- Possessor's number
|
||||||
|
dnum : CatHun.Num = case det.n of { -- Possessed's number
|
||||||
|
Sg => NumSg ; Pl => NumPl } ;
|
||||||
|
in caseFromPossStem cn (DetQuant (PossPron pron) dnum) c
|
||||||
|
} ++ cn.compl ! det.n ! c ;
|
||||||
agr = <P3,det.n> ;
|
agr = <P3,det.n> ;
|
||||||
|
objdef = dt2objdef det.dt ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : PN -> NP ;
|
-- : PN -> NP ;
|
||||||
UsePN pn = pn ;
|
UsePN pn = pn ;
|
||||||
|
|
||||||
-- : Pron -> NP ;
|
-- : Pron -> NP ;
|
||||||
UsePron pron = pron ;
|
UsePron pron = pron ** {
|
||||||
|
s = \\_ => pron.s ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : Predet -> NP -> NP ; -- only the man
|
-- : Predet -> NP -> NP ; -- only the man
|
||||||
PredetNP predet np = np ** {
|
PredetNP predet np = np ** {
|
||||||
s = \\c => predet.s ++ np.s ! c ;
|
s = \\p,c => predet.s ++ np.s ! p ! c ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- A noun phrase can also be postmodified by the past participle of a
|
-- A noun phrase can also be postmodified by the past participle of a
|
||||||
@@ -32,28 +52,33 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
|
|
||||||
-- : NP -> Adv -> NP ; -- Paris today
|
-- : NP -> Adv -> NP ; -- Paris today
|
||||||
AdvNP np adv = np ** {
|
AdvNP np adv = np ** {
|
||||||
s = \\c => np.s ! c ++ adv.s ;
|
s = \\p,c => case adv.isPre of {
|
||||||
|
True => adv.s ++ np.s ! p ! c ;
|
||||||
|
False => np.s ! p ! c ++ adv.s } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : NP -> Adv -> NP ; -- boys, such as ..
|
-- : NP -> Adv -> NP ; -- boys, such as ..
|
||||||
ExtAdvNP np adv = np ** {
|
ExtAdvNP np adv = np ** {
|
||||||
s = \\c => np.s ! c ++ bindComma ++ adv.s ;
|
s = \\p,c => np.s ! p ! c ++ bindComma ++ adv.s ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : NP -> RS -> NP ; -- Paris, which is here
|
-- : NP -> RS -> NP ; -- Paris, which is here
|
||||||
RelNP np rs = np ** {
|
RelNP np rs = np ** {
|
||||||
s = \\c => np.s ! c ++ bindComma ++ rs.s ! np.agr.p2 ! c ;
|
s = \\p,c => np.s ! p ! c ++ bindComma ++ rs.s ! np.agr.p2 ! c ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Determiners can form noun phrases directly.
|
-- Determiners can form noun phrases directly.
|
||||||
|
|
||||||
-- : Det -> NP ;
|
-- : Det -> NP ;
|
||||||
DetNP det = emptyNP ** {
|
DetNP det = emptyNP ** det ** {
|
||||||
s = det.sp ;
|
s = \\p => det.sp ;
|
||||||
agr = <P3,det.n> ;
|
agr = <P3,det.n> ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> NP ;
|
-- : CN -> NP ;
|
||||||
MassNP cn = emptyNP ** {
|
MassNP cn = emptyNP ** {
|
||||||
s = \\c => cn.s ! Sg ! c ;
|
s = \\p,c => caseFromStem glue cn c Sg ++ -- TODO add possessors
|
||||||
|
cn.compl ! Sg ! c ;
|
||||||
agr = <P3,Sg> ;
|
agr = <P3,Sg> ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -63,20 +88,27 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
-- quantifier and an optional numeral can be discerned.
|
-- quantifier and an optional numeral can be discerned.
|
||||||
|
|
||||||
-- : Quant -> Num -> Det ;
|
-- : Quant -> Num -> Det ;
|
||||||
DetQuant quant num = quant ** num ** {
|
DetQuant quant num = let n = num2number num.n in
|
||||||
s = \\c => case <isNum num,quant.isIndefArt> of {
|
quant ** num ** {
|
||||||
|
s = \\c => case <isNum num,isIndefArt quant> of {
|
||||||
<True,True> => [] ; -- don't output "a 2 cars"
|
<True,True> => [] ; -- don't output "a 2 cars"
|
||||||
_ => quant.s ! num.n ! c }
|
_ => quant.s ! n ! c }
|
||||||
++ num.s ! Attrib ; -- TODO: add inflection table in numbers
|
++ num.s ! Attrib ; -- TODO: add inflection table in numbers
|
||||||
sp = \\c => quant.sp ! num.n ! c
|
sp = \\c => case <isNum num,isIndefArt quant> of {
|
||||||
|
<True,True> => [] ;
|
||||||
|
_ => quant.sp ! n ! c }
|
||||||
++ num.s ! Indep ;
|
++ num.s ! Indep ;
|
||||||
|
n = n ;
|
||||||
|
dt = qt2dt quant.qt ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Quant -> Num -> Ord -> Det ; -- these five best
|
-- : Quant -> Num -> Ord -> Det ; -- these five best
|
||||||
DetQuantOrd quant num ord =
|
DetQuantOrd quant num ord =
|
||||||
let theseFive = DetQuant quant num in theseFive ** {
|
let theseFive = DetQuant quant num ;
|
||||||
s = \\c => theseFive.s ! c ++ ord.s ! num.n ;
|
n = num2number num.n ;
|
||||||
sp = \\c => theseFive.sp ! c ++ ord.s ! num.n ;
|
in theseFive ** {
|
||||||
|
s = \\c => theseFive.s ! c ++ ord.s ! n ! Nom ;
|
||||||
|
sp = \\c => theseFive.sp ! c ++ ord.s ! n ! Nom ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Whether the resulting determiner is singular or plural depends on the
|
-- Whether the resulting determiner is singular or plural depends on the
|
||||||
@@ -87,17 +119,16 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
-- the inherent number.
|
-- the inherent number.
|
||||||
|
|
||||||
NumSg = baseNum ;
|
NumSg = baseNum ;
|
||||||
NumPl = baseNum ** {n = Pl} ;
|
NumPl = baseNum ** {n = NoNum Pl} ;
|
||||||
|
|
||||||
-- : Card -> Num ;
|
-- : Card -> Num ;
|
||||||
NumCard card = card ** {
|
NumCard card = card ** {
|
||||||
n = Sg -- Numerals take noun in Sg: e.g. öt város, literally 'five city'
|
n = IsNum -- Numerals take noun in Sg: e.g. öt város, literally 'five city'
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Digits -> Card ;
|
-- : Digits -> Card ;
|
||||||
NumDigits dig = dig ** {
|
NumDigits dig = dig ** {
|
||||||
s = \\place => dig.s ! NCard ;
|
s = \\place => dig.s ! NCard ;
|
||||||
numtype = IsNum ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Numeral -> Card ;
|
-- : Numeral -> Card ;
|
||||||
@@ -117,7 +148,9 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
-}
|
-}
|
||||||
-- : A -> Ord ;
|
-- : A -> Ord ;
|
||||||
OrdSuperl a = {
|
OrdSuperl a = {
|
||||||
s = a.s ! Superl ;
|
s = \\n,c =>
|
||||||
|
let adj : Noun = (a ** {s = a.s ! Superl}) in
|
||||||
|
caseFromStem glue adj c n ;
|
||||||
n = Sg -- ?? is this meaningful?
|
n = Sg -- ?? is this meaningful?
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -127,32 +160,33 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
-- OrdNumeralSuperl num a = num ** { } ;
|
-- OrdNumeralSuperl num a = num ** { } ;
|
||||||
|
|
||||||
-- : Quant
|
-- : Quant
|
||||||
DefArt = {
|
DefArt = mkQuant "a" "a" ** {
|
||||||
s,
|
s,
|
||||||
sp = \\_,_ => pre {"a" ; "az" / v } ;
|
sp = \\_,_ => pre {"a" ; "az" / v } ;
|
||||||
isIndefArt = False ;
|
qt = DefQuant ;
|
||||||
objdef = Def ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Quant
|
-- : Quant
|
||||||
IndefArt = {
|
IndefArt = mkQuant "egy" [] ** {
|
||||||
s,
|
s = \\n,_ => case n of {Sg => "egy" ; Pl => []} ;
|
||||||
sp = \\n,_ => case n of {Sg => "egy" ; Pl => []} ;
|
sp = \\n,_ => case n of {Sg => "egy" ; Pl => "sok"} ;
|
||||||
isIndefArt = True ;
|
qt = IndefArticle ;
|
||||||
objdef = Indef ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Pron -> Quant
|
-- : Pron -> Quant
|
||||||
-- PossPron pron =
|
PossPron pron = pron ** {
|
||||||
-- let p = pron.poss ;
|
s,sp = \\_ => pron.s ;
|
||||||
-- in DefArt ** {
|
qt = QuantPoss (agr2pstem pron.agr) ;
|
||||||
-- } ;
|
caseagr = False ;
|
||||||
|
} ;
|
||||||
|
|
||||||
--2 Common nouns
|
--2 Common nouns
|
||||||
|
|
||||||
-- : N -> CN
|
-- : N -> CN
|
||||||
-- : N2 -> CN ;
|
-- : N2 -> CN ;
|
||||||
UseN,UseN2 = \n -> n ;
|
UseN,UseN2 = \n -> n ** {
|
||||||
|
compl = \\_,_ => [] ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : N2 -> NP -> CN ;
|
-- : N2 -> NP -> CN ;
|
||||||
-- ComplN2 n2 np =
|
-- ComplN2 n2 np =
|
||||||
@@ -169,17 +203,19 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
|
|
||||||
-- : AP -> CN -> CN
|
-- : AP -> CN -> CN
|
||||||
AdjCN ap cn = cn ** {
|
AdjCN ap cn = cn ** {
|
||||||
s = \\n,c => ap.s ! Sg ++ cn.s ! n ! c ++ ap.compar
|
s = \\nc => ap.s ! Sg ! Nom ++ cn.s ! nc ;
|
||||||
|
compl = \\n,c => ap.compl ! n ++ cn.compl ! n ! c ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> RS -> CN ;
|
-- : CN -> RS -> CN ;
|
||||||
RelCN cn rs = cn ** {
|
RelCN cn rs = cn ** {
|
||||||
s = \\n,c => cn.s ! n ! c ++ rs.s ! n ! c
|
compl = \\n,c => cn.compl ! n ! c ++ rs.s ! n ! c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> Adv -> CN ;
|
-- : CN -> Adv -> CN ;
|
||||||
AdvCN cn adv = cn ** {
|
AdvCN cn adv = case adv.isPre of {
|
||||||
s = \\n,c => cn.s ! n ! c ++ adv.s
|
True => AdjCN (invarAP adv.s) cn ;
|
||||||
|
False => cn ** {compl = \\n,c => cn.compl ! n ! c ++ adv.s}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Nouns can also be modified by embedded sentences and questions.
|
-- Nouns can also be modified by embedded sentences and questions.
|
||||||
@@ -195,13 +231,14 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
|
|
||||||
-- : CN -> NP -> CN ; -- city Paris (, numbers x and y)
|
-- : CN -> NP -> CN ; -- city Paris (, numbers x and y)
|
||||||
ApposCN cn np = cn ** {
|
ApposCN cn np = cn ** {
|
||||||
s = \\n,c => cn.s ! n ! c ++ np.s ! Nom
|
compl = \\n,c => cn.compl ! n ! c ++ np.s ! NoPoss ! Nom
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 Possessive and partitive constructs
|
--2 Possessive and partitive constructs
|
||||||
|
|
||||||
-- : PossNP : CN -> NP -> CN ;
|
-- : PossNP : CN -> NP -> CN ;
|
||||||
-- PossNP cn np = cn ** {
|
-- PossNP cn np = cn ** {
|
||||||
|
-- compl = \\n,c => cn.compl ! n ! c ++ np.s ! Poss P3 n ! c -- TODO check
|
||||||
-- } ;
|
-- } ;
|
||||||
|
|
||||||
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
resource NounMorphoHun = ParamHun ** open Prelude, Predef in {
|
resource NounMorphoHun = ParamHun ** open Prelude, Predef in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Noun = {s : Number => Case => Str} ;
|
Noun = {s : NumCaseStem => Str ; h : Harm} ;
|
||||||
|
|
||||||
-- Paradigm functions
|
-- Paradigm functions
|
||||||
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
||||||
@@ -12,31 +12,16 @@ oper
|
|||||||
|
|
||||||
-- Apply mkNoun to the lengthened stem "almá" or "kefé"
|
-- Apply mkNoun to the lengthened stem "almá" or "kefé"
|
||||||
nAlmá : Noun = mkNoun almá ;
|
nAlmá : Noun = mkNoun almá ;
|
||||||
in {s = \\n,c => case <n,c> of {
|
in nAlmá ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
-- Singular nominative uses the given form, e.g. "alma" or "kefe"
|
-- Singular nominative uses the given form, e.g. "alma" or "kefe"
|
||||||
<Sg,Nom> => alma ;
|
SgNom => alma ;
|
||||||
|
|
||||||
|
PossdSg_PossrP3 => almá + "j" ;
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
-- using "almá" or "kefé" as the stem.
|
-- using "almá" or "kefé" as the stem.
|
||||||
_ => nAlmá.s ! n ! c
|
_ => nAlmá.s ! nc }
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Handles words like "madár, nyár, név, bogár" with shortened stem vowel in plural
|
|
||||||
-- No special <Sg,Sup> case here
|
|
||||||
dMadár : (nom : Str) -> (acc : Str) -> Noun = \madár,madarat ->
|
|
||||||
let madara = init madarat ;
|
|
||||||
nMadara = mkNounHarm (getHarm madara) "k" madara ;
|
|
||||||
nMadár = mkNoun madár ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
-- All plural forms and Sg Acc use the "madara"/"neve" stem
|
|
||||||
<Pl,_>|<Sg,Acc> => nMadara.s ! n ! c ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "madár"/"név" as the stem.
|
|
||||||
_ => nMadár.s ! n ! c
|
|
||||||
|
|
||||||
} ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--Handles words like "ló, lé, kő" which are "lovak, levek, kövek" in plural.
|
--Handles words like "ló, lé, kő" which are "lovak, levek, kövek" in plural.
|
||||||
@@ -48,18 +33,52 @@ oper
|
|||||||
nLov = mkNoun lov ;
|
nLov = mkNoun lov ;
|
||||||
nLova = mkNoun lova ;
|
nLova = mkNoun lova ;
|
||||||
nLó = mkNoun ló ;
|
nLó = mkNoun ló ;
|
||||||
in {s = \\n,c => case <n,c> of {
|
in nLova ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
|
||||||
-- All plural forms and Sg Acc, Sg Sup use the "lova" stem
|
-- All plural forms and Sg Acc use the "lova" stem
|
||||||
<Pl,_>| <Sg,Acc> => nLova.s ! n ! c ;
|
PlStem | SgAccStem
|
||||||
<Sg,Sup> => nLov.s ! n ! c ;
|
=> nLova.s ! nc ;
|
||||||
|
|
||||||
|
SgSup | -- Sg Sup has vowel o/ö, not a/e
|
||||||
|
PossdSg_PossrP3 -- Consonant stem before P3 suffixes
|
||||||
|
=> nLov.s ! nc ;
|
||||||
|
|
||||||
|
PossdSg_PossrPl1 -- Round vowel, part of Pl1 suffix
|
||||||
|
=> lov + harm "u" "ü" ! nLov.h ;
|
||||||
|
|
||||||
|
PossdPl => lova + "i" ;
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
-- using "ló" as the stem.
|
-- using "ló" as the stem.
|
||||||
_ => nLó.s ! n ! c
|
_ => nLó.s ! nc }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- NB. Relevant arguments are Sg Nom, Pl Nom.
|
||||||
|
-- Third argument prevents accidental application of this paradigm
|
||||||
|
-- handles words like: falu, daru, tetű -> falvak, darvak, tetvek
|
||||||
|
dFalu : (nomsg,_,nompl : Str) -> Noun = \falu,_,falvak ->
|
||||||
|
let falva = init falvak ;
|
||||||
|
nFalva = mkNoun falva ;
|
||||||
|
nFalu = mkNoun falu ;
|
||||||
|
in nFalu ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
|
||||||
|
-- All plural forms use the "falva" stem
|
||||||
|
PlStem => nFalva.s ! nc ;
|
||||||
|
|
||||||
|
-- The plural morpheme before possessive suffixes is i
|
||||||
|
PossdPl => nFalu.s ! nc + "i" ;
|
||||||
|
|
||||||
|
-- The form before P3 possessive suffixes: faluj|a, faluj|uk
|
||||||
|
-- Forms before other possessive suffixes follow SgAccStem.
|
||||||
|
PossdSg_PossrP3 => nFalu.s ! nc + "j" ;
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
|
-- using "falu" as the stem.
|
||||||
|
_ => nFalu.s ! nc }
|
||||||
} ;
|
} ;
|
||||||
} ;
|
|
||||||
|
|
||||||
--Handles words like "gyomor, majom, retek" which are "gyomrot, majmot, retket" in accusative (wovel dropping base)
|
--Handles words like "gyomor, majom, retek" which are "gyomrot, majmot, retket" in accusative (wovel dropping base)
|
||||||
--More examples: "ajak, bokor, cukor, csokor, eper, fészek, fodor, gödör, haszon, iker, izom, kölyök, köröm, méreg, piszok, sarok, selyem, szeder, szobor, takony, terem, titok, torok, torony, tükör, vödör" ->
|
--More examples: "ajak, bokor, cukor, csokor, eper, fészek, fodor, gödör, haszon, iker, izom, kölyök, köröm, méreg, piszok, sarok, selyem, szeder, szobor, takony, terem, titok, torok, torony, tükör, vödör" ->
|
||||||
@@ -72,64 +91,261 @@ oper
|
|||||||
majm = init majmo ;
|
majm = init majmo ;
|
||||||
nMajmo = mkNoun majmo ;
|
nMajmo = mkNoun majmo ;
|
||||||
nMajom = mkNoun majom ;
|
nMajom = mkNoun majom ;
|
||||||
in {s = \\n,c => case <n,c> of {
|
o = last (init majom) ;
|
||||||
-- All plural forms and Sg Acc and Sg Sup use the "majmo" stem
|
in nMajmo ** {
|
||||||
<Pl,_> | <Sg,Acc> => nMajmo.s ! n ! c ;
|
s = \\nc => case nc of {
|
||||||
<Sg,Sup> => nMajmo.s ! n ! c ;
|
|
||||||
|
-- All plural forms and Sg Acc use the "majmo" stem
|
||||||
|
PlStem | SgAccStem => nMajmo.s ! nc ;
|
||||||
|
|
||||||
|
-- Sg Sup uses the same majm* stem, but vowel can be different:
|
||||||
|
-- sátor, sátrat -> sátron, not *sátran
|
||||||
|
-- vászon, vásznat -> vásznon, not *vásznan
|
||||||
|
SgSup => majm + o + "n" ;
|
||||||
|
|
||||||
|
-- The plural morpheme before possessive suffixes: majmai
|
||||||
|
PossdPl => majm + harm "a" "e" ! nMajmo.h + "i" ;
|
||||||
|
|
||||||
|
-- The form before P3 possessive suffixes: majm|a, majm|uk
|
||||||
|
-- Forms before other possessive suffixes follow SgAccStem.
|
||||||
|
PossdSg_PossrP3 => majm ;
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
-- using "majom" as the stem.
|
-- using "majom" as the stem.
|
||||||
_ => nMajom.s ! n ! c
|
_ => nMajom.s ! nc
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Handles regular wovel ending words, with j added in possesive forms
|
||||||
|
-- Examples: "hajó, hajója, zseni, zsenije, kestyű, kestyűje"
|
||||||
|
dHajó : (nom : Str) -> (acc : Str) -> Noun = \hajó,hajót ->
|
||||||
|
let nHajó = mkNoun hajó ;
|
||||||
|
hajój = hajó + "j" ;
|
||||||
|
h = nHajó.h ;
|
||||||
|
in nHajó ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
-- hajó|nk, zseni|nk
|
||||||
|
PossdSg_PossrPl1 => hajó ;
|
||||||
|
-- hajój|a, zsenij|e
|
||||||
|
PossdSg_PossrP3 => hajój ;
|
||||||
|
|
||||||
|
PossdPl => case hajó of {
|
||||||
|
_ + "i" => hajój + harm "a" "e" ! h + "i" ; -- zsenij|ei
|
||||||
|
_ => hajó + "i" } ; -- hajó|i
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor
|
||||||
|
_ => nHajó.s ! nc
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Opposite to dVirág: unexpected j after consonant
|
||||||
|
dPlafon : (nom : Str) -> (acc : Str) -> Noun = \plafon,plafont ->
|
||||||
|
let nPlafon = regNounNomAcc plafon plafont ;
|
||||||
|
h = nPlafon.h ;
|
||||||
|
in nPlafon ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
PossdSg_PossrPl1 => plafon + harm "u" "ü" ! h ;
|
||||||
|
PossdSg_PossrP3 => plafon + "j" ;
|
||||||
|
PossdPl => plafon + harm "jai" "jei" ! h ;
|
||||||
|
_ => nPlafon.s ! nc
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Opposite to dPlafon: regular paradigm puts j, but these words don't have it.
|
||||||
|
dVirág : (nom : Str) -> (acc : Str) -> Noun = \virág,virágot ->
|
||||||
|
let nVirág = regNounNomAcc virág virágot ;
|
||||||
|
h = nVirág.h ;
|
||||||
|
in nVirág ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
PossdSg_PossrPl1 => virág + harm "u" "ü" ! h ;
|
||||||
|
PossdSg_PossrP3 => virág ;
|
||||||
|
PossdPl => virág + harm "a" "e" ! h + "i" ;
|
||||||
|
_ => nVirág.s ! nc }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Handles many possesive forms
|
||||||
|
dToll : (nom : Str) -> (acc : Str) -> Noun = \toll,tollat ->
|
||||||
|
let tolla = init tollat ;
|
||||||
|
nTolla = mkNoun tolla ;
|
||||||
|
nToll = mkNoun toll ;
|
||||||
|
napj = case andB (ifTok Bool toll tolla True False)
|
||||||
|
(notB (vowFinal tolla)) of {
|
||||||
|
True => toll ; -- sör, sör|t -> sör|e
|
||||||
|
-- király, király|t -> király|a
|
||||||
|
-- NB. plafon, papír with dPlafon
|
||||||
|
False => case tolla of {
|
||||||
|
-- hegy, hegy|et -> hegy|e
|
||||||
|
_ + ("ty"|"gy"|"ny"|"j"|"ly"|"m"|"h")
|
||||||
|
+ ("e"|"a"|"ö"|"o") => init tolla ;
|
||||||
|
|
||||||
|
-- ház, ház|at -> ház|a
|
||||||
|
_ + #c + ("a"|"e") => init tolla ;
|
||||||
|
|
||||||
|
-- orr, orr|ot -> orr|a
|
||||||
|
-- TODO fails for gyümölcs, gyümölcs|öt -> gyümölcs|e
|
||||||
|
-- I don't know what this list means /IL
|
||||||
|
_ + #v + ("sz"|"z"|"s"|"zs"|"j"|"ly"|"l"|"r"|"n"|"ny"
|
||||||
|
|"ssz"|"zz"|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"|"nz")
|
||||||
|
+ ("o"|"ö") => init tolla ;
|
||||||
|
|
||||||
|
-- nap, nap|ot -> napj|a
|
||||||
|
-- bank, bank|ot -> bankj|a
|
||||||
|
-- kabát, kabát|ot -> kabátj|a (diák, barát, újság …)
|
||||||
|
-- NB. virág, ország with dVirág (virág|ot -> virág|a)
|
||||||
|
_ + #c + ("o"|"ö") => init tolla + "j" ;
|
||||||
|
|
||||||
|
-- háború, háború|t -> háborúj|a
|
||||||
|
_ => tolla + "j" }
|
||||||
|
} ;
|
||||||
|
in nTolla ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
-- All plural forms and Sg Acc use the "tolla" stem
|
||||||
|
PlStem | SgAccStem => nTolla.s ! nc ;
|
||||||
|
|
||||||
|
PossdSg_PossrPl1 => napj + harm "u" "ü" ! nToll.h ;
|
||||||
|
|
||||||
|
PossdSg_PossrP3 => napj ;
|
||||||
|
|
||||||
|
-- The plural morpheme before possessive suffixes: madarai
|
||||||
|
PossdPl => napj + harm "a" "e" ! nToll.h + "i" ;
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
|
-- using "toll" as the stem.
|
||||||
|
_ => nToll.s ! nc
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Handles words like "madár, nyár, név, bogár" with shortened stem vowel in plural.
|
||||||
|
dMadár : (nom : Str) -> (acc : Str) -> Noun = \madár,madarat ->
|
||||||
|
let madara = init madarat ;
|
||||||
|
madar = init madara ;
|
||||||
|
nMadara = mkNoun madara ;
|
||||||
|
nMadár = mkNoun madár ;
|
||||||
|
in nMadara ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
-- All plural forms and Sg Acc use the "tolla" stem
|
||||||
|
PlStem | SgAccStem => nMadara.s ! nc ;
|
||||||
|
|
||||||
|
PossdSg_PossrPl1 => madar + harm "u" "ü" ! nMadara.h ;
|
||||||
|
|
||||||
|
PossdSg_PossrP3 => madar ;
|
||||||
|
|
||||||
|
-- The plural morpheme before possessive suffixes: madarai
|
||||||
|
PossdPl => madara + "i" ;
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
|
-- using "toll" as the stem.
|
||||||
|
_ => nMadár.s ! nc
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- More words not covered by current paradigms:
|
-- More words not covered by current paradigms:
|
||||||
-- https://cl.lingfil.uu.se/~bea/publ/megyesi-hungarian.pdf
|
-- https://cl.lingfil.uu.se/~bea/publ/megyesi-hungarian.pdf
|
||||||
-- TODO: falu ~ falva-k (v-case)
|
|
||||||
-- TODO: teher ~ terhet (consonant-crossing)
|
-- TODO: teher ~ terhet (consonant-crossing)
|
||||||
-- TODO: do we need possessive forms? e.g. fiú ~ fia{m,d,tok}
|
|
||||||
|
|
||||||
-- regNoun is a /smart paradigm/: it takes one or a couple of forms,
|
-- Worst case constructor: takes all stems
|
||||||
|
worstCaseNoun : (x1,_,_,_,_,_,_,x8 : Str) -> Harm -> Noun =
|
||||||
|
\nomsg,accsg,supsg,allsg,nompl,possdSg_possrP3sg,possdSg_PossrPl1,possdPl,h ->
|
||||||
|
let sgstem = tk 3 allsg ; -- remove -hoz/hez/höz
|
||||||
|
sginsstem : Str = case vowFinal sgstem of {
|
||||||
|
True => sgstem + "v" ;
|
||||||
|
False => duplicateLast sgstem } ;
|
||||||
|
in {s = table {
|
||||||
|
SgNom => nomsg ;
|
||||||
|
SgSup => supsg ;
|
||||||
|
SgAll => allsg ;
|
||||||
|
SgStem => sgstem ;
|
||||||
|
SgAccStem => init accsg ; -- remove t; same stem used for other forms
|
||||||
|
SgInsStem => sginsstem ;
|
||||||
|
PlStem => nompl ;
|
||||||
|
PossdSg_PossrP3 => init possdSg_possrP3sg ; -- remove -a/e
|
||||||
|
PossdSg_PossrPl1 => tk 2 possdSg_PossrPl1 ; -- remove -nk
|
||||||
|
PossdPl => possdPl } ;
|
||||||
|
h = h ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- All regNoun* are /smart paradigms/: they take one or a couple of forms,
|
||||||
-- and decides which (non-smart) paradigm is the most likely to match.
|
-- and decides which (non-smart) paradigm is the most likely to match.
|
||||||
regNounNomAcc : (nom : Str) -> (acc : Str) -> Noun = \n,a ->
|
regNoun4 : (nomsg, accsg, nompl, possdSg_possrP3sg : Str) -> Noun =
|
||||||
|
\nsg,asg,npl,possd -> case possd of {
|
||||||
|
_ + #v + "j" + ("a"|"e") => dHajó nsg asg ;
|
||||||
|
_ + #c + "j" + ("a"|"e") => dPlafon nsg asg ;
|
||||||
|
|
||||||
|
_ + #c + ("a"|"e") => dVirág nsg asg ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Fall back to 3-argument smart paradigm
|
||||||
|
_ => regNounNomAccPl nsg asg npl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regNounNomAccPl : (nomsg, accsg, nompl : Str) -> Noun = \nsg,asg,npl ->
|
||||||
|
case <nsg,asg,npl> of {
|
||||||
|
<_ + ("u"|"ú"|"ü"|"ű"|"ó"), -- falu, falut, falvak ; szó, szót, szavak
|
||||||
|
_ + ("u"|"ú"|"ü"|"ű"|"ó") + "t",
|
||||||
|
_ + "v" + #v + "k"> => dFalu nsg asg npl ;
|
||||||
|
|
||||||
|
-- Fall back to 2-argument smart paradigm
|
||||||
|
_ => regNounNomAcc nsg asg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regNounNomAcc : (nom : Str) -> (acc : Str) -> Noun = \n,a ->
|
||||||
case <n,a> of {
|
case <n,a> of {
|
||||||
|
|
||||||
|
-- Stem 1: Sg Nom
|
||||||
|
-- Stem 2: Everything else
|
||||||
-- alma, almát
|
-- alma, almát
|
||||||
<_ + "a", _ + "át">
|
<_ + "a", _ + "át">
|
||||||
|<_ + "e" ,_ + "ét"> => dAlma n a ;
|
|<_ + "e" ,_ + "ét"> => dAlma n a ;
|
||||||
|
|
||||||
|
-- Stem 1: Sg Nom
|
||||||
|
-- Stem 2: Sg Gen, Sg Sup, Pl *
|
||||||
|
<_ + #c + #shortv + #c, -- majom, majmot
|
||||||
|
_ + #c + #c + #shortv + "t"> => dMajom n a ;
|
||||||
|
|
||||||
<_ + "á" + #c, -- madár, madarat
|
-- Stem 1: Sg Nom
|
||||||
_ + "a" + #c + #v + "t">
|
-- Stem 2: Sg Sup
|
||||||
|
-- Stem 3: Sg Gen, Pl *
|
||||||
|<_ + "é" + #c, -- név, nevet
|
|
||||||
_ + "e" + #c + #v + "t">
|
|
||||||
|
|
||||||
|<_ + "í" + #c, -- víz, vizet
|
|
||||||
_ + "i" + #c + #v + "t"> => dMadár n a ;
|
|
||||||
|
|
||||||
|
|
||||||
<_ + #v + #c, -- majom, majmot
|
|
||||||
_ + #c + #v + "t"> => dMajom n a ;
|
|
||||||
|
|
||||||
|
|
||||||
<_ + "ó", -- ló, lovat
|
<_ + "ó", -- ló, lovat
|
||||||
_ + "o" + #c + #v + "t">
|
_ + "o" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "ó", -- tó, tavat
|
||||||
|
_ + "a" + #c + #v + "t">
|
||||||
|
|
||||||
|<_ + "ő", -- kő, követ
|
|<_ + "ő", -- kő, követ
|
||||||
_ + "ö" + #c + #v + "t">
|
_ + "ö" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "ű", -- fű, füvet
|
||||||
|
_ + "ü" + #c + #v + "t">
|
||||||
|
|
||||||
|<_ + "é", -- lé, levet
|
|<_ + "é", -- lé, levet
|
||||||
_ + "e" + #c + #v + "t"> => dLó n a ;
|
_ + "e" + #c + #v + "t"> => dLó n a ;
|
||||||
|
|
||||||
_ => mkNoun n
|
-- Stem 1 == Stem 2 == Stem 3
|
||||||
|
-- j in PossdSg_PossrP3 but not elsewhere: gumi -> gumi|nk, gumij|a
|
||||||
|
<_ + "i", -- gumi, gumit:
|
||||||
|
_ + "it"> => dHajó n a ;
|
||||||
|
|
||||||
|
-- Stem 1: Sg Nom, Sg * - [Gen]
|
||||||
|
-- Stem 2: Sg Gen, Pl *
|
||||||
|
<_ + "á" + #c, _ + "a" + #c + "at">
|
||||||
|
|<_ + "é" + #c,_ + "e" + #c + ("et"|"at")> => dMadár n a ;
|
||||||
|
|
||||||
|
_ => dToll n a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- 1-argument smart paradigm
|
||||||
|
-- Here we guess the genitive form and give it to appropriate 2-arg paradigm
|
||||||
regNoun : Str -> Noun = \sgnom -> case sgnom of {
|
regNoun : Str -> Noun = \sgnom -> case sgnom of {
|
||||||
_ + ("a"|"e") => dAlma sgnom (lengthen sgnom + "t") ;
|
_ + ("a"|"e") => dAlma sgnom (lengthen sgnom + "t") ;
|
||||||
#c + ("á"|"é") + #c => mkNoun sgnom ;
|
-- Words like nyár, név need to use 2-arg smart paradigm
|
||||||
_ + ("á"|"é") + #c => dMadár sgnom (név2nevet sgnom) ;
|
(#c|"")+("á"|"é")+ #c => mkNoun sgnom ;
|
||||||
_ + ("ó"|"é"|"ő"|"ű") => dLó sgnom (ló2lovat sgnom) ;
|
_ + ("ság"|"ség"|"gás"|"gés") -- source: https://en.wikisource.org/wiki/Simplified_Grammar_of_the_Hungarian_Language/Nouns
|
||||||
_ + #v + #c + #v + #c => dMajom sgnom (majom2majmo sgnom);
|
=> mkNoun sgnom ;
|
||||||
|
_ + ("á"|"é") + #c => dToll sgnom (név2nevet sgnom) ;
|
||||||
|
-- _ + ("ó"|"é"|"ő"|"ű") => dLó sgnom (ló2lovat sgnom) ;
|
||||||
|
-- _ + #v + #c + #v + #c => dMajom sgnom (majom2majmo sgnom);
|
||||||
_ => mkNoun sgnom -- Fall back to the regular paradigm
|
_ => mkNoun sgnom -- Fall back to the regular paradigm
|
||||||
} where {
|
} where {
|
||||||
név2nevet : Str -> Str = \név ->
|
név2nevet : Str -> Str = \név ->
|
||||||
@@ -158,12 +374,10 @@ regNounNomAcc : (nom : Str) -> (acc : Str) -> Noun = \n,a ->
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
--TODO: Special cases (enter these words manually to not complicate the paradigms):
|
--TODO: Special cases (enter these words manually to not complicate the paradigms):
|
||||||
--dTó: szó special case which fulfills the plural cases but not the <Sg,Acc> or <Sg,Sup> case ("szót" not "szavat")
|
|
||||||
--dLó: special case <Sg,Sup> "lén" not "leven"
|
--dLó: special case <Sg,Sup> "lén" not "leven"
|
||||||
--dLó: <Sg,Sup> also "kövön" not "köven", but that is due to H_e, which is needed for "köveket" so it's conflicting
|
|
||||||
--endCaseConsAcc: "falat, fület, várat, könnyet",
|
--endCaseConsAcc: "falat, fület, várat, könnyet",
|
||||||
--also special in superessive case "falon, fülek, vizen"
|
--also special in superessive case "falon, fülek, vizen"
|
||||||
--pattern matching in regNoun: one-syllable words that in fact belong to dMadár: "nyár, név"
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Following code by EG in 2009 (?), comments and some additions by IL 2020
|
-- Following code by EG in 2009 (?), comments and some additions by IL 2020
|
||||||
|
|
||||||
@@ -176,12 +390,24 @@ oper
|
|||||||
-- Vowels as a pattern.
|
-- Vowels as a pattern.
|
||||||
v : pattern Str = #("a" | "e" | "i" | "o" | "u" | "ö" | "ü" |
|
v : pattern Str = #("a" | "e" | "i" | "o" | "u" | "ö" | "ü" |
|
||||||
"á" | "é" | "í" | "ó" | "ú" | "ő" | "ű") ;
|
"á" | "é" | "í" | "ó" | "ú" | "ő" | "ű") ;
|
||||||
|
shortv : pattern Str = #("a" | "e" | "i" | "o" | "u" | "ö" | "ü") ;
|
||||||
|
|
||||||
|
back : pattern Str = #("a" | "á" | "o" | "ó" | "u" | "ú") ;
|
||||||
|
|
||||||
|
front_rounded : pattern Str = #("ö" | "ő" | "ü" | "ű") ;
|
||||||
|
|
||||||
|
-- front and back rounded
|
||||||
|
-- rounded : pattern Str = #("ö" | "ő" | "ü" | "ű" | "o" | "ó" | "u" | "ú")
|
||||||
|
|
||||||
c : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|
|
c : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|
|
||||||
"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z"|
|
"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z"|
|
||||||
"cs"|"dz"|"gy"|"ly"|"ny"|"sz"|"ty"|"zs"|
|
"cs"|"dz"|"gy"|"ly"|"ny"|"sz"|"ty"|"zs"|
|
||||||
"dzs") ;
|
"dzs") ;
|
||||||
|
|
||||||
|
dupl : pattern Str = #("bb"|"cc"|"dd"|"ff"|"gg"|"hh"|"jj"|"kk"|"ll"|"mm"|
|
||||||
|
"nn"|"pp"|"qq"|"rr"|"ss"|"tt"|"vv"|"ww"|"xx"|"zz"|
|
||||||
|
"ddzs"|"ccs"|"ddz"|"ggy"|"lly"|"nny"|"ssz"|"tty"|"zzs") ;
|
||||||
|
|
||||||
-- Only single consonants
|
-- Only single consonants
|
||||||
unigraph : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|
|
unigraph : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|
|
||||||
"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z") ;
|
"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z") ;
|
||||||
@@ -194,14 +420,15 @@ oper
|
|||||||
|
|
||||||
duplicateLast : Str -> Str = \str -> case str of {
|
duplicateLast : Str -> Str = \str -> case str of {
|
||||||
x + "dzs" => x + "ddzs" ;
|
x + "dzs" => x + "ddzs" ;
|
||||||
x + "ny" => x + "nny" ; -- takony : takonnyal
|
|
||||||
x + "cs" => x + "ccs" ;
|
x + "cs" => x + "ccs" ;
|
||||||
x + "dz" => x + "ddz" ;
|
x + "dz" => x + "ddz" ;
|
||||||
x + "gy" => x + "ggy" ;
|
x + "gy" => x + "ggy" ;
|
||||||
x + "ly" => x + "lly" ;
|
x + "ly" => x + "lly" ;
|
||||||
|
x + "ny" => x + "nny" ;
|
||||||
x + "sz" => x + "ssz" ;
|
x + "sz" => x + "ssz" ;
|
||||||
x + "ty" => x + "tty" ;
|
x + "ty" => x + "tty" ;
|
||||||
x + "zs" => x + "zzs" ;
|
x + "zs" => x + "zzs" ;
|
||||||
|
x + #dupl => str ; -- Don't duplicate already long consonant
|
||||||
|
|
||||||
-- Base case: just duplicate the single letter
|
-- Base case: just duplicate the single letter
|
||||||
x + s@? => x + s + s } ;
|
x + s@? => x + s + s } ;
|
||||||
@@ -221,7 +448,7 @@ oper
|
|||||||
x + "u" => x + "ú" ;
|
x + "u" => x + "ú" ;
|
||||||
x + "ö" => x + "ő" ;
|
x + "ö" => x + "ő" ;
|
||||||
x + "ü" => x + "ű" ;
|
x + "ü" => x + "ű" ;
|
||||||
_ => Predef.error "Lengthening not applicable to" ++ str
|
_ => str -- Lengthening not applicable to str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
shorten : Str -> Str = \str -> case str of {
|
shorten : Str -> Str = \str -> case str of {
|
||||||
@@ -232,13 +459,13 @@ oper
|
|||||||
x + "ú" => x + "u" ;
|
x + "ú" => x + "u" ;
|
||||||
x + "ő" => x + "ö" ;
|
x + "ő" => x + "ö" ;
|
||||||
x + "ű" => x + "ü" ;
|
x + "ű" => x + "ü" ;
|
||||||
_ => Predef.error "Shortening not applicable to" ++ str
|
_ => str -- Shortening not applicable to str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Function to get a harmony from a string
|
-- Function to get a harmony from a string
|
||||||
getHarm : Str -> Harm = \s -> case s of {
|
getHarm : Str -> Harm = \s -> case s of {
|
||||||
_ + ("a" | "á" | "o" | "ó" | "u" | "ú") + _ => H_a ;
|
_ + #back + _ => H_a ;
|
||||||
_ + ("ö" | "ő" | "ü") + _ => H_o ;
|
_ + #front_rounded + (#c|"") + (#c|"") => H_o ;
|
||||||
_ => H_e
|
_ => H_e
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -255,48 +482,33 @@ oper
|
|||||||
harm1 : Str -> HarmForms = \i -> harm i i ;
|
harm1 : Str -> HarmForms = \i -> harm i i ;
|
||||||
|
|
||||||
-- Variant of case forms when the noun stem ends in consonant.
|
-- Variant of case forms when the noun stem ends in consonant.
|
||||||
endCaseCons : Case -> HarmForms = \c -> case c of {
|
endCaseCons : NumCaseStem -> HarmForms = \c -> case c of {
|
||||||
Nom => harm1 [] ;
|
SgSup => harm3 "on" "en" "ön" ;
|
||||||
Acc => harm3 "ot" "et" "öt" ;
|
SgAccStem => harm3 "o" "e" "ö" ;
|
||||||
Dat => harm "nak" "nek" ;
|
SgAll => harm3 "hoz" "hez" "höz" ;
|
||||||
Ill => harm "ba" "be" ;
|
PossdPl => harm1 "i" ; -- TODO figure out allomorphs
|
||||||
Ine => harm "ban" "ben" ;
|
_ => harm1 []
|
||||||
Ela => harm "ból" "ből" ;
|
|
||||||
All => harm3 "hoz" "hez" "höz" ;
|
|
||||||
Ade => harm "nál" "nél" ;
|
|
||||||
Abl => harm "tól" "től" ;
|
|
||||||
Sub => harm "ra" "re" ;
|
|
||||||
Sup => harm3 "on" "en" "ön" ;
|
|
||||||
Del => harm "ról" "ről" ;
|
|
||||||
Cau => harm1 "ért" ;
|
|
||||||
Ins => harm "al" "el" ;
|
|
||||||
Tra => harm "á" "é"
|
|
||||||
-- Ess => harm "stul" "stül" ; -- Essive-modal 'with <the noun> and its parts'
|
|
||||||
-- Ter => harm1 "ig" ; -- Terminative 'as far as <the noun>'
|
|
||||||
-- For => harm1 "ként" ; -- Formal 'as <the noun>'
|
|
||||||
-- Tem => harm1 "kor" -- Temporal 'at <numeral>'. Only used with numerals.
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- Variant where accusative has the allomorph -at
|
-- Variant where accusative has the allomorph -at
|
||||||
endCaseConsAccAt : Case -> HarmForms = \c -> case c of {
|
endCaseConsAccAt : NumCaseStem -> HarmForms = \c -> case c of {
|
||||||
Acc => harm3 "at" "et" "öt" ;
|
SgAccStem => harm3 "a" "e" "ö" ;
|
||||||
_ => endCaseCons c
|
_ => endCaseCons c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Variant where accusative has the allomorph -t for consonants
|
-- Variant where accusative has the allomorph -t for consonants
|
||||||
-- Examples: "pénz, bor, orr, szín, lány, kés, dal"
|
-- Examples: "pénz, bor, orr, szín, lány, kés, dal"
|
||||||
endCaseConsAcc : Case -> HarmForms = \c -> case c of {
|
endCaseConsAcc : NumCaseStem -> HarmForms = \c -> case c of {
|
||||||
Acc => harm1 "t" ;
|
SgAccStem => harm1 "" ;
|
||||||
_ => endCaseCons c
|
_ => endCaseCons c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Variant of case forms when the noun stem ends in vowel.
|
-- Variant of case forms when the noun stem ends in vowel.
|
||||||
endCaseVow : Case -> HarmForms = \c -> case c of {
|
endCaseVow : NumCaseStem -> HarmForms = \c -> case c of {
|
||||||
Acc => harm1 "t" ;
|
SgAccStem => harm1 "" ;
|
||||||
Sup => harm1 "n" ;
|
SgSup => harm1 "n" ;
|
||||||
Ins => harm "val" "vel" ;
|
SgInsStem => harm1 "v" ;
|
||||||
Tra => harm "vá" "vé" ;
|
|
||||||
|
|
||||||
-- Other forms are shared with endCaseCons.
|
-- Other forms are shared with endCaseCons.
|
||||||
_ => endCaseCons c
|
_ => endCaseCons c
|
||||||
} ;
|
} ;
|
||||||
@@ -323,38 +535,68 @@ oper
|
|||||||
mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ;
|
mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ;
|
||||||
|
|
||||||
mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w ->
|
mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w ->
|
||||||
let endCaseSg : Case -> HarmForms = case <useAt, w> of {
|
let endCaseSg : NumCaseStem -> HarmForms =
|
||||||
|
case <useAt, w> of {
|
||||||
<_,_ + #v> => endCaseVow ;
|
<_,_ + #v> => endCaseVow ;
|
||||||
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"
|
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"|"ly"|"l"|"r"|"n"|"ny"|"ssz"
|
||||||
|"ly"|"l"|"r"|"n"|"ny"|"ssz"|"zz"
|
|"zz"|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"|"nz")> => endCaseConsAcc ;
|
||||||
|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"
|
|
||||||
|"nz")> => endCaseConsAcc ;
|
|
||||||
<True,_> => endCaseConsAccAt ;
|
<True,_> => endCaseConsAccAt ;
|
||||||
_ => endCaseCons } ;
|
_ => endCaseCons } ;
|
||||||
endCasePl : Case -> HarmForms = case <plural, useAt> of {
|
|
||||||
<"ak",_> => endCaseConsAccAt ;
|
|
||||||
<_,True> => endCaseConsAccAt ;
|
|
||||||
_ => endCaseCons } ;
|
|
||||||
-- Last consonant doubles before instrumental and translative
|
-- Last consonant doubles before instrumental and translative
|
||||||
duplConsStem : Str = case vowFinal w of {
|
duplConsStem : Str = case vowFinal w of {
|
||||||
True => w ;
|
True => w ;
|
||||||
False => duplicateLast w } ;
|
False => duplicateLast w } ;
|
||||||
|
|
||||||
-- Noun is {s : Number => Case => Str}, we construct nested tables.
|
-- Noun is {s : NumCaseStem => Str}
|
||||||
in {s = table {
|
in {h = h ;
|
||||||
Sg => table {
|
s = table {
|
||||||
-- Double the last letter (if consonant) before Ins, Tra
|
-- Before Sg Ins, Tra:
|
||||||
c@(Ins|Tra) => duplConsStem + endCaseSg c ! h ;
|
-- * Double the last letter if consonant
|
||||||
c@_ => w + endCaseSg c ! h } ;
|
-- * Add v if vowel (comes from endCaseSg)
|
||||||
|
SgInsStem => duplConsStem + endCaseSg SgInsStem ! h ;
|
||||||
Pl => table {
|
|
||||||
-- Double the plural k before Ins, Tra
|
|
||||||
c@(Ins|Tra) => w + plural + "k" + endCasePl c ! h ;
|
|
||||||
|
|
||||||
-- endCaseCons, because we only use -k as plural morpheme.
|
-- endCaseCons, because we only use -k as plural morpheme.
|
||||||
-- If we add possessive forms with allomorph -i, then revise.
|
-- Possessive forms with allomorph -i are handled separately.
|
||||||
c@_ => w + plural + endCasePl c ! h }
|
PlStem => w + plural ;
|
||||||
}
|
|
||||||
|
-- All other singular forms and stems
|
||||||
|
c => w + endCaseSg c ! h } ;
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- This is used in ResHun.caseFromStem, which makes NP out of CN.
|
||||||
|
-- Ns only have stems, and these forms are attached to the stems.
|
||||||
|
|
||||||
|
endCase : Case -> HarmForms = \c -> case c of {
|
||||||
|
Nom => harm1 [] ;
|
||||||
|
Acc => harm "at" "et" ; -- NB. this is only used for plural acc!
|
||||||
|
Dat => harm "nak" "nek" ;
|
||||||
|
Ade => harm "nál" "nél" ;
|
||||||
|
Sup => harm3 "on" "en" "ön" ;
|
||||||
|
Ine => harm "ban" "ben" ;
|
||||||
|
Ela => harm "ból" "ből" ;
|
||||||
|
Ins => harm "al" "el" ;
|
||||||
|
Tra => harm "á" "é" ;
|
||||||
|
All => harm3 "hoz" "hez" "höz" ;
|
||||||
|
Abl => harm "tól" "től" ;
|
||||||
|
Sub => harm "ra" "re" ;
|
||||||
|
Del => harm "ról" "ről" ;
|
||||||
|
Cau => harm1 "ért" ;
|
||||||
|
Ill => harm "ba" "be"
|
||||||
|
-- Ess => harm "stul" "stül" ; -- Essive-modal 'with <the noun> and its parts'
|
||||||
|
-- Ter => harm1 "ig" ; -- Terminative 'as far as <the noun>'
|
||||||
|
-- For => harm1 "ként" ; -- Formal 'as <the noun>'
|
||||||
|
-- Tem => harm1 "kor" -- Temporal 'at <numeral>'. Only used with numerals.
|
||||||
|
} ;
|
||||||
|
|
||||||
|
endCasePossVow : Case -> HarmForms = \c -> case c of {
|
||||||
|
Acc => harm1 "t" ;
|
||||||
|
Sup => harm1 "n" ;
|
||||||
|
Tra => harm "vá" "vé" ;
|
||||||
|
Ins => harm "val" "vel" ;
|
||||||
|
_ => endCase c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,361 +0,0 @@
|
|||||||
resource NounMorphoHunOneArgument = ParamHun ** open Prelude, Predef in {
|
|
||||||
|
|
||||||
oper
|
|
||||||
Noun = {s : Number => Case => Str} ;
|
|
||||||
|
|
||||||
-- Paradigm functions
|
|
||||||
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
|
||||||
|
|
||||||
-- Words like "alma, kefe, apa, anya, fa":
|
|
||||||
dAlma : Str -> Noun = \alma ->
|
|
||||||
let almá : Str = lengthen alma;
|
|
||||||
|
|
||||||
nAlmá : Noun = mkNoun almá ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
-- Singular nominative uses the given form, e.g. "alma" or "kefe"
|
|
||||||
<Sg,Nom> => alma ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "almá" or "kefé" as the stem.
|
|
||||||
_ => nAlmá.s ! n ! c
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Handles words like "madár, nyár, név, bogár" with shortened stem vowel in plural
|
|
||||||
-- No special <Sg,Sup> case here
|
|
||||||
-- dMadár: "víz" has wovel shortening but "vizek" not "vizik", implement differently?
|
|
||||||
dMadár : Str -> Noun = \madár ->
|
|
||||||
let r = last madár ;
|
|
||||||
madá = init madár ;
|
|
||||||
mada = shorten madá ; -- shortens vowels
|
|
||||||
a = last mada ;
|
|
||||||
a = case a of {
|
|
||||||
"e"|"i" => "e" ;
|
|
||||||
a => a
|
|
||||||
} ;
|
|
||||||
madara = mada + r + a ;
|
|
||||||
nMadara = mkNounHarm (getHarm madara) "k" madara ;
|
|
||||||
nMadár = mkNoun madár ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
-- All plural forms and Sg Acc use the "madara"/"neve" stem
|
|
||||||
<Pl,_>|<Sg,Acc> => nMadara.s ! n ! c ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "madár"/"név" as the stem.
|
|
||||||
_ => nMadár.s ! n ! c
|
|
||||||
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--Handles words like "ló, lé, kő" which are "lovak, levek, kövek" in plural.
|
|
||||||
-- <Sg,Sup> "lovon" instead of "lón" fixed but that gives the following problems:
|
|
||||||
dLó : Str -> Noun = \ló ->
|
|
||||||
let lo = shorten ló ;
|
|
||||||
lov = lo + "v" ;
|
|
||||||
ak : Str = case ló of {
|
|
||||||
_ + ("ö" | "ő") => "ek" ;
|
|
||||||
_ + ("o" | "ó") => "ak" ;
|
|
||||||
lé => shorten (last lé) + "k"} ;
|
|
||||||
harmonyPlural : Harm = case ló of {
|
|
||||||
_ + ("ö" | "ő") => H_e ; -- All plural allomorphs have E harmony, singular ones have O.
|
|
||||||
_ + ("o" | "ó") => H_a ;
|
|
||||||
lé => getHarm (lé)} ;
|
|
||||||
nLov = mkNounHarm harmonyPlural ak lov ;
|
|
||||||
nLó = mkNoun ló ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
|
|
||||||
-- All plural forms and Sg Acc, Sg Sup use the "lov" stem
|
|
||||||
<Pl,_>| <Sg,Acc> | <Sg,Sup> => nLov.s ! n ! c ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "ló" as the stem.
|
|
||||||
_ => nLó.s ! n ! c
|
|
||||||
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--Handles words like "tó, hó"" which are "tavak, havak" in plural.
|
|
||||||
--(Since I only have these examples for now I do a simplified case with ó, a)
|
|
||||||
--<Sg,Sup> "tavon" instead of "tón" case fixed, works automatically with the Sup rules
|
|
||||||
dTó : Str -> Noun = \tó ->
|
|
||||||
let t = init tó ;
|
|
||||||
tav = t + "av" ;
|
|
||||||
nTav = mkNounHarm H_a "ak" tav ;
|
|
||||||
nTó = mkNoun tó ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
|
|
||||||
-- All plural forms and Sg Acc use the "tav" stem
|
|
||||||
<Pl,_>|<Sg,Acc>|<Sg,Sup> => nTav.s ! n ! c ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "tó" as the stem.
|
|
||||||
_ => nTó.s ! n ! c
|
|
||||||
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--Handles words like "gyomor, majom, retek" which are "gyomrot, majmot, retket" in accusative (wovel dropping base)
|
|
||||||
--More examples: "ajak, bokor, cukor, csokor, eper, fészek, fodor, gödör, haszon, iker, izom, kölyök, köröm, méreg, piszok, sarok, selyem, szeder, szobor, takony, terem, titok, torok, torony, tükör, vödör" ->
|
|
||||||
-- "ajkat, bokrot, cukrot, csokrot, epret, fészket, fodrot, gödröt, hasznot, ikret, izmot, kölyköt, körmet, mérget, piszkot, sarkot, selymet, szedret, szobrot, taknyot, termet, titkot, torkot, tornyot, tükröt, vödröt"
|
|
||||||
--<Sg,Sup> case handled
|
|
||||||
dMajom : Str -> Noun = \majom ->
|
|
||||||
-- Str*Str is syntactic sugar for {p1 : Str ; p2 : Str} ;
|
|
||||||
-- confusing syntax: you can't write let <tako,ny> : Str*Str = …
|
|
||||||
-- it has to be called something else, and then you
|
|
||||||
-- can get "tako" and "ny" with p1, p2.
|
|
||||||
let tako_ny : Str*Str = case majom of {
|
|
||||||
x + dzs@#trigraph => <x,dzs> ;
|
|
||||||
x + zs@#digraph => <x,zs> ;
|
|
||||||
-- ? pattern matches exactly 1 character
|
|
||||||
x + s@? => <x,s> } ;
|
|
||||||
tako = tako_ny.p1 ;
|
|
||||||
ny = tako_ny.p2 ;
|
|
||||||
|
|
||||||
nyo = ny + last tako ;
|
|
||||||
tak = init tako ;
|
|
||||||
taknyo = tak + nyo ;
|
|
||||||
nMajmo = mkNounHarm (getHarm taknyo) "k" taknyo ;
|
|
||||||
nMajom = mkNoun majom ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
-- All plural forms and Sg Acc and Sg Sup use the "majmo" stem
|
|
||||||
<Pl,_> | <Sg,Acc> | <Sg, Sup> => nMajmo.s ! n ! c ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "majom" as the stem.
|
|
||||||
_ => nMajom.s ! n ! c
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--Handles words like "sátor, álom, alkalom, farok, halom, vászon"
|
|
||||||
-- "sátrat, álmat, alkalmat, farkat, halmat, vásznat"
|
|
||||||
-- (bátor not noun)
|
|
||||||
dFarok : Str -> Noun = \farok ->
|
|
||||||
let k = last farok ;
|
|
||||||
far = init (init farok) ;
|
|
||||||
fark = far + k ;
|
|
||||||
nFark = mkNounHarm (getHarm fark) "ak" fark ;
|
|
||||||
nFarok = mkNoun farok ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
-- All plural forms and Sg Acc and Sg Sup use the "fark" stem
|
|
||||||
<Pl,_> | <Sg,Acc> | <Sg, Sup> => nFark.s ! n ! c ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "farok" as the stem.
|
|
||||||
_ => nFarok.s ! n ! c
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- More words not covered by current paradigms:
|
|
||||||
-- https://cl.lingfil.uu.se/~bea/publ/megyesi-hungarian.pdf
|
|
||||||
-- TODO: falu ~ falva-k (v-case)
|
|
||||||
-- TODO: teher ~ terhet (consonant-crossing)
|
|
||||||
-- TODO: do we need possessive forms? e.g. fiú ~ fia{m,d,tok}
|
|
||||||
|
|
||||||
-- regNoun is a /smart paradigm/: it takes one or a couple of forms,
|
|
||||||
-- and decides which (non-smart) paradigm is the most likely to match.
|
|
||||||
regNoun : Str -> Noun = \sgnom -> case sgnom of {
|
|
||||||
_ + "a"|"e" => dAlma sgnom ;
|
|
||||||
(? | #digraph | #trigraph) + ("á"|"é") + (? | #digraph | #trigraph) => mkNoun sgnom ;
|
|
||||||
_ + ("á"|"é") + ? => dMadár sgnom ;
|
|
||||||
_ + "é"|"ő"|"ű" => dLó sgnom ;
|
|
||||||
_ + "ó" => dTó sgnom ;
|
|
||||||
_ + "alom" => dFarok sgnom ;
|
|
||||||
_ + "elem" => dMajom sgnom ;
|
|
||||||
|
|
||||||
-- TODO: more non-smart paradigms + more pattern matching
|
|
||||||
-- TODO: smart paradigms with >1 form. Which forms are the most descriptive?
|
|
||||||
|
|
||||||
_ => mkNoun sgnom -- Fall back to the regular paradigm
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--TODO: Special cases (enter these words manually to not complicate the paradigms):
|
|
||||||
--dTó: szó special case which fulfills the plural cases but not the <Sg,Acc> or <Sg,Sup> case ("szót" not "szavat")
|
|
||||||
--dLó: special case <Sg,Sup> "lén" not "leven"
|
|
||||||
--dLó: <Sg,Sup> also "kövön" not "köven", but that is due to H_e, which is needed for "köveket" so it's conflicting
|
|
||||||
--endCaseConsAcc: "falat, fület, várat, könnyet",
|
|
||||||
--also special in superessive case "falon, fülek, vizen"
|
|
||||||
--pattern matching in regNoun: one-syllable words that in fact belong to dMadár: "nyár, név"
|
|
||||||
---------------------------------------------------------------------------------------------
|
|
||||||
-- Following code by EG in 2009 (?), comments and some additions by IL 2020
|
|
||||||
|
|
||||||
param
|
|
||||||
-- Harmony types
|
|
||||||
Harm = H_a | H_e | H_o ;
|
|
||||||
|
|
||||||
oper
|
|
||||||
|
|
||||||
-- Vowels as a pattern.
|
|
||||||
v : pattern Str = #("a" | "e" | "i" | "o" | "u" | "ö" | "ü" |
|
|
||||||
"á" | "é" | "í" | "ó" | "ú" | "ő" | "ű") ;
|
|
||||||
-- Digraphs
|
|
||||||
digraph : pattern Str = #("cs"|"dz"|"gy"|"ly"|"ny"|"sz"|"ty"|"zs") ;
|
|
||||||
|
|
||||||
-- Trigraphs
|
|
||||||
trigraph : pattern Str = #("dzs") ;
|
|
||||||
|
|
||||||
duplicateLast : Str -> Str = \str -> case str of {
|
|
||||||
x + "dzs" => x + "ddzs" ;
|
|
||||||
x + "ny" => x + "nny" ; -- takony : takonnyal
|
|
||||||
x + "cs" => x + "ccs" ;
|
|
||||||
x + "dz" => x + "ddz" ;
|
|
||||||
x + "gy" => x + "ggy" ;
|
|
||||||
x + "ly" => x + "lly" ;
|
|
||||||
x + "sz" => x + "ssz" ;
|
|
||||||
x + "ty" => x + "tty" ;
|
|
||||||
x + "zs" => x + "zzs" ;
|
|
||||||
|
|
||||||
-- Base cacse: just duplicate the single letter
|
|
||||||
x + s@? => x + s + s } ;
|
|
||||||
|
|
||||||
-- Function to test if a string ends in a vowel
|
|
||||||
vowFinal : Str -> Bool = \str ->
|
|
||||||
case str of {
|
|
||||||
_ + #v => True ; -- Matching a string against a pattern.
|
|
||||||
_ => False
|
|
||||||
} ;
|
|
||||||
|
|
||||||
lengthen : Str -> Str = \str -> case str of {
|
|
||||||
x + "a" => x + "á" ;
|
|
||||||
x + "e" => x + "é" ;
|
|
||||||
x + "i" => x + "í" ;
|
|
||||||
x + "o" => x + "ó" ;
|
|
||||||
x + "u" => x + "ú" ;
|
|
||||||
x + "ö" => x + "ő" ;
|
|
||||||
x + "ü" => x + "ű" ;
|
|
||||||
_ => Predef.error "Lengthening not applicable to" ++ str
|
|
||||||
} ;
|
|
||||||
|
|
||||||
shorten : Str -> Str = \str -> case str of {
|
|
||||||
x + "á" => x + "a" ;
|
|
||||||
x + "é" => x + "e" ;
|
|
||||||
x + "í" => x + "i" ;
|
|
||||||
x + "ó" => x + "o" ;
|
|
||||||
x + "ú" => x + "u" ;
|
|
||||||
x + "ő" => x + "ö" ;
|
|
||||||
x + "ű" => x + "ü" ;
|
|
||||||
_ => Predef.error "Shortening not applicable to" ++ str
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Function to get a harmony from a string
|
|
||||||
getHarm : Str -> Harm = \s -> case s of {
|
|
||||||
_ + ("a" | "á" | "o" | "ó" | "u" | "ú") + _ => H_a ;
|
|
||||||
_ + ("ö" | "ő" | "ü") + _ => H_o ;
|
|
||||||
_ => H_e
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Used as a table of allomorphs for a give case.
|
|
||||||
HarmForms : Type = Harm => Str ;
|
|
||||||
|
|
||||||
-- Functions for constructing a HarmForms table.
|
|
||||||
harm3 : Str -> Str -> Str -> HarmForms = \a,e,o -> table {
|
|
||||||
H_a => a ;
|
|
||||||
H_e => e ;
|
|
||||||
H_o => o
|
|
||||||
} ;
|
|
||||||
harm : Str -> Str -> HarmForms = \a,e -> harm3 a e e ;
|
|
||||||
harm1 : Str -> HarmForms = \i -> harm i i ;
|
|
||||||
|
|
||||||
-- Variant of case forms when the noun stem ends in consonant.
|
|
||||||
endCaseCons : Case -> HarmForms = \c -> case c of {
|
|
||||||
Nom => harm1 [] ;
|
|
||||||
Acc => harm3 "ot" "et" "öt" ;
|
|
||||||
Dat => harm "nak" "nek" ;
|
|
||||||
Ill => harm "ba" "be" ;
|
|
||||||
Ine => harm "ban" "ben" ;
|
|
||||||
Ela => harm "ból" "ből" ;
|
|
||||||
All => harm3 "hoz" "hez" "höz" ;
|
|
||||||
Ade => harm "nál" "nél" ;
|
|
||||||
Abl => harm "tól" "től" ;
|
|
||||||
Sub => harm "ra" "re" ;
|
|
||||||
Sup => harm3 "on" "en" "ön" ;
|
|
||||||
Del => harm "ról" "ről" ;
|
|
||||||
Cau => harm1 "ért" ;
|
|
||||||
Ins => harm "al" "el" ;
|
|
||||||
Tra => harm "á" "é"
|
|
||||||
-- Ess => harm "stul" "stül" ; -- Essive-modal 'with <the noun> and its parts'
|
|
||||||
-- Ter => harm1 "ig" ; -- Terminative 'as far as <the noun>'
|
|
||||||
-- For => harm1 "ként" ; -- Formal 'as <the noun>'
|
|
||||||
-- Tem => harm1 "kor" -- Temporal 'at <numeral>'. Only used with numerals.
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Variant where accusative has the allomorph -at
|
|
||||||
endCaseConsAccAt : Case -> HarmForms = \c -> case c of {
|
|
||||||
Acc => harm3 "at" "et" "öt" ;
|
|
||||||
_ => endCaseCons c
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Variant where accusative has the allomorph -t for consonants
|
|
||||||
-- Examples: "pénz, bor, orr, szín, lány, kés, dal"
|
|
||||||
endCaseConsAcc : Case -> HarmForms = \c -> case c of {
|
|
||||||
Acc => harm1 "t" ;
|
|
||||||
_ => endCaseCons c
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Variant of case forms when the noun stem ends in vowel.
|
|
||||||
endCaseVow : Case -> HarmForms = \c -> case c of {
|
|
||||||
Acc => harm1 "t" ;
|
|
||||||
Sup => harm1 "n" ;
|
|
||||||
Ins => harm "val" "vel" ;
|
|
||||||
Tra => harm "vá" "vé" ;
|
|
||||||
|
|
||||||
-- Other forms are shared with endCaseCons.
|
|
||||||
_ => endCaseCons c
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Function to return a plural allomorph given the stem (e.g. név, almá).
|
|
||||||
pluralAllomorph : (stem : Str) -> Str = pluralAllomorphLowStem False ;
|
|
||||||
|
|
||||||
-- Function to return a plural allomorph given lowering stem or not
|
|
||||||
-- Examples of lowering stems: ág, ágy, ár, fal, fog, gyár, hal, has, hát, ház, hold, láz, lyuk, nyak, olaj, oldal, toll, ujj, vonal
|
|
||||||
-- Examples of lowering stems: férj, fej, hely, fül, könny, könyv, mell, szög
|
|
||||||
pluralAllomorphLowStem : (low : Bool) -> (stem : Str) -> Str = \low,stem ->
|
|
||||||
case <low,vowFinal stem> of {
|
|
||||||
<_,True> => "k" ;
|
|
||||||
<True, _> => harm "ak" "ek" ! getHarm stem ;
|
|
||||||
_ => harm3 "ok" "ek" "ök" ! getHarm stem
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
-- Harmony and plural allomorph read from the singular nominative
|
|
||||||
mkNoun : Str -> Noun = \w ->
|
|
||||||
mkNounHarm (getHarm w) (pluralAllomorph w) w ;
|
|
||||||
|
|
||||||
-- Harmony and plural allomorph given explicitly (check if the True makes it bad)
|
|
||||||
mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ;
|
|
||||||
|
|
||||||
mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w ->
|
|
||||||
let endCaseSg : Case -> HarmForms = case <useAt, w> of {
|
|
||||||
<_,_ + #v> => endCaseVow ;
|
|
||||||
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"
|
|
||||||
|"ly"|"l"|"r"|"n"|"ny"|"ssz"|"zz"
|
|
||||||
|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"
|
|
||||||
|"nz")> => endCaseConsAcc ;
|
|
||||||
<True,_> => endCaseConsAccAt ;
|
|
||||||
_ => endCaseCons } ;
|
|
||||||
endCasePl : Case -> HarmForms = case <plural, useAt> of {
|
|
||||||
<"ak",_> => endCaseConsAccAt ;
|
|
||||||
<_,True> => endCaseConsAccAt ;
|
|
||||||
_ => endCaseCons } ;
|
|
||||||
-- Last consonant doubles before instrumental and translative
|
|
||||||
duplConsStem : Str = case vowFinal w of {
|
|
||||||
True => w ;
|
|
||||||
False => duplicateLast w } ;
|
|
||||||
|
|
||||||
-- Noun is {s : Number => Case => Str}, we construct nested tables.
|
|
||||||
in {s = table {
|
|
||||||
Sg => table {
|
|
||||||
-- Double the last letter (if consonant) before Ins, Tra
|
|
||||||
c@(Ins|Tra) => duplConsStem + endCaseSg c ! h ;
|
|
||||||
c@_ => w + endCaseSg c ! h } ;
|
|
||||||
|
|
||||||
Pl => table {
|
|
||||||
-- Double the plural k before Ins, Tra
|
|
||||||
c@(Ins|Tra) => w + plural + "k" + endCasePl c ! h ;
|
|
||||||
|
|
||||||
-- endCaseCons, because we only use -k as plural morpheme.
|
|
||||||
-- If we add possessive forms with allomorph -i, then revise.
|
|
||||||
c@_ => w + plural + endCasePl c ! h }
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -18,8 +18,11 @@ oper
|
|||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
mkN : overload {
|
mkN : overload {
|
||||||
mkN : (sgnom : Str) -> N ; -- Predictable nouns from singular nominative. Accusative vowel is o for back harmony. No stem lowering (TODO better explanation/examples)
|
mkN : (sgnom : Str) -> N ; -- Predictable nouns from singular nominative. Accusative vowel is o/ö, no stem lowering. Use: `mkN "nap"` for nap, napot.
|
||||||
mkN : (sgnom : Str) -> (sggen : Str) -> N ; -- Singular nominative and accusative. Takes care of cases like … TODO example
|
mkN : (sgnom, sggen : Str) -> N ; -- Singular nominative and accusative. Use: `mkN "név" "nevet"`
|
||||||
|
mkN : (sgnom, sggen, plnom : Str) -> N ; -- Singular nominative, singular accusative, plural nominative. Use: `mkN "falu" "falut" "falvak"`
|
||||||
|
mkN : (sgnom, sggen, plnom, sgnom_possdSg3 : Str) -> N ; -- Singular nominative, singular accusative, plural nominative, singular nominative possessed by 3rd person singular. Use: `mkN "virág" "virágot" "virágok" "virága"` (would give "virágja" otherwise)
|
||||||
|
|
||||||
mkN : (férfi : Str) -> (harm : Harmony) -> (ak : Str) -> N ; -- Noun with unpredictable vowel harmony and plural allomorph
|
mkN : (férfi : Str) -> (harm : Harmony) -> (ak : Str) -> N ; -- Noun with unpredictable vowel harmony and plural allomorph
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -32,8 +35,9 @@ oper
|
|||||||
--2 Adjectives
|
--2 Adjectives
|
||||||
|
|
||||||
mkA : overload {
|
mkA : overload {
|
||||||
mkA : (adj : Str) -> A ; -- Regular adjective, given in ??? form
|
mkA : (sgnom : Str) -> A ; -- Regular adjective, given in singular nominative
|
||||||
-- mkA : (kiga : Str) -> (jakda : A) -> A ; -- Compound adjective, e.g. 키가 작다 'short', literally 'height (is) small'. 키가 'height' given as string, 작다 'small' given as preconstructed A.
|
mkA : (sgnom, sgacc : Str) -> A ; -- Singular nominative and accusative
|
||||||
|
mkA : N -> A ; -- Adjective from a noun. mkN has more paradigms, so anything irregular goes via N.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkA2 : overload {
|
mkA2 : overload {
|
||||||
@@ -88,7 +92,7 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
prePrep : Str -> Case -> Prep -- Preposition
|
prePrep : Str -> Case -> Prep -- Preposition
|
||||||
= \s,c -> lin Prep {pr=s ; s=[] ; c=c} ;
|
= \s,c -> lin Prep (ResHun.prepos c s) ;
|
||||||
|
|
||||||
casePrep : Case -> Prep ; -- No postposition, only case
|
casePrep : Case -> Prep ; -- No postposition, only case
|
||||||
|
|
||||||
@@ -99,7 +103,7 @@ oper
|
|||||||
-- lin Subj { } ;
|
-- lin Subj { } ;
|
||||||
|
|
||||||
mkAdv : Str -> Adv
|
mkAdv : Str -> Adv
|
||||||
= \s -> lin Adv {s = s} ;
|
= \s -> lin Adv {s = s ; isPre=False} ;
|
||||||
|
|
||||||
mkAdV : Str -> AdV
|
mkAdV : Str -> AdV
|
||||||
= \s -> lin AdV {s = s} ;
|
= \s -> lin AdV {s = s} ;
|
||||||
@@ -125,6 +129,15 @@ oper
|
|||||||
mkN : Str -> Str -> N =
|
mkN : Str -> Str -> N =
|
||||||
\n,a-> lin N (regNounNomAcc n a) ;
|
\n,a-> lin N (regNounNomAcc n a) ;
|
||||||
|
|
||||||
|
mkN : Str -> Str -> Str -> N =
|
||||||
|
\n,a,pln-> lin N (regNounNomAccPl n a pln) ;
|
||||||
|
|
||||||
|
mkN : (x1,_,_,x4 : Str) -> N =
|
||||||
|
\n,a,pln,possd -> lin N (regNoun4 n a pln possd) ;
|
||||||
|
|
||||||
|
mkN : (x1,_,_,_,_,_,_,x8 : Str) -> N =
|
||||||
|
\a,b,c,d,e,f,g,h -> lin N (worstCaseNoun a b c d e f g h (getHarm a)) ;
|
||||||
|
|
||||||
mkN : Str -> Harmony -> N =
|
mkN : Str -> Harmony -> N =
|
||||||
\s,h -> lin N (mkNounHarm h (pluralAllomorph s) s) ;
|
\s,h -> lin N (mkNounHarm h (pluralAllomorph s) s) ;
|
||||||
|
|
||||||
@@ -145,25 +158,30 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : (adj : Str) -> A = \s -> lin A (mkAdj s) ;
|
mkA : (sgnom : Str) -> A = \s -> lin A (mkAdj s) ;
|
||||||
-- mkA : (kiga : Str) -> (jakda : A) -> A = \kiga,jakda ->
|
mkA : (sgnom,sgacc : Str) -> A = \nom,acc ->
|
||||||
-- jakda ** {s = \\af => kiga ++ jakda.s ! af} ;
|
lin A (mkAdj2 nom (regNounNomAcc nom acc)) ;
|
||||||
|
mkA : N -> A = \noun ->
|
||||||
|
let sgnom : Str = noun.s ! SgNom in
|
||||||
|
lin A (mkAdj2 sgnom noun) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkA2 = overload {
|
mkA2 = overload {
|
||||||
mkA2 : A -> A2 = \a -> a ** {c2 = casePrep Nom} ;
|
mkA2 : A -> A2 = \a -> a ** {c2 = casePrep Nom ; isPost = False} ;
|
||||||
mkA2 : Str -> Prep -> A2 = \s,p ->
|
mkA2 : Str -> Prep -> A2 = \s,p ->
|
||||||
lin A2 {s = (mkAdj s).s ; c2 = p} ;
|
lin A2 ((mkAdj s) ** {c2 = p ; isPost = False}) ;
|
||||||
mkA2 : Str -> Case -> A2 = \s,c ->
|
mkA2 : Str -> Case -> A2 = \s,c ->
|
||||||
lin A2 {s = (mkAdj s).s ; c2 = casePrep c} ;
|
lin A2 ((mkAdj s) ** {c2 = casePrep c ; isPost = False}) ;
|
||||||
mkA2 : A -> Prep -> A2 = \a,p ->
|
mkA2 : A -> Prep -> A2 = \a,p ->
|
||||||
lin A2 (a ** {c2 = p}) ;
|
lin A2 (a ** {c2 = p ; isPost = False}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkV = overload {
|
mkV = overload {
|
||||||
mkV : (sg3 : Str) -> V = \v -> lin V (mkVerb v) ;
|
mkV : (sg3 : Str) -> V = \v -> lin V (mkVerb v) ;
|
||||||
-- mkV : (nore : Str) -> (hada : V) -> V = \nore,hada -> hada ** {
|
-- mkV : (nore : Str) -> (hada : V) -> V = \nore,hada -> hada ** {
|
||||||
-- s = \\vf => nore + hada.s ! vf} ;
|
-- s = \\vf => nore + hada.s ! vf} ;
|
||||||
|
mkV : (x1,_,_,_,_,_,x7 : Str) -> V = \sg1,sg2,sg3,pl1,pl2,pl3,inf ->
|
||||||
|
lin V (mkVerbFull sg1 sg2 sg3 pl1 pl2 pl3 inf) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
copula = ResHun.copula ;
|
copula = ResHun.copula ;
|
||||||
@@ -182,13 +200,13 @@ oper
|
|||||||
|
|
||||||
mkPrep = overload {
|
mkPrep = overload {
|
||||||
mkPrep : (e : Str) -> Prep
|
mkPrep : (e : Str) -> Prep
|
||||||
= \str -> lin Prep (ResHun.mkPrep str) ;
|
= \str -> lin Prep (ResHun.nomAdp str) ;
|
||||||
mkPrep : Str -> Case -> Prep
|
mkPrep : Str -> Case -> Prep
|
||||||
= \str,c -> lin Prep (ResHun.mkPrep str ** {c = c}) ;
|
= \str,c -> lin Prep (ResHun.caseAdp c str) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
casePrep : Case -> Prep
|
casePrep : Case -> Prep
|
||||||
= \c -> lin Prep (ResHun.mkPrep [] ** {c = c}) ;
|
= \c -> lin Prep (ResHun.caseAdp c) ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +1,109 @@
|
|||||||
resource ParamHun = ParamX ** open Prelude in {
|
resource ParamHun = ParamX ** open Prelude in {
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Generic
|
||||||
|
|
||||||
|
oper
|
||||||
|
if_then_Pol : Polarity -> Str -> Str -> Str = \p,t,f ->
|
||||||
|
case p of {Pos => t ; Neg => f } ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Phonology
|
-- Phonology
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Morphophonology
|
-- Morphophonology
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Quant
|
||||||
|
|
||||||
|
param
|
||||||
|
QuantType =
|
||||||
|
IndefArticle -- Needed to prevent "a 2 cars"
|
||||||
|
| IndefQuant -- Not IndefArt, not poss, not def
|
||||||
|
| DefQuant
|
||||||
|
| QuantPoss PossStem -- Which possessive stem it takes
|
||||||
|
;
|
||||||
|
|
||||||
|
DetType =
|
||||||
|
DefDet -- distinction between Article and Other no longer needed
|
||||||
|
| IndefDet -- still need def or indef
|
||||||
|
| DetPoss PossStem -- Sill need to know which stem it takes if Poss
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Singular stems. Plural is always same, no need to add here.
|
||||||
|
PossStem = dSg_rSg1P2 | dSg_rP3 Number | dSg_rPl1 ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
-- standard trick to prevent "a one car"
|
||||||
|
isIndefArt : {qt : QuantType} -> Bool = \quant ->
|
||||||
|
case quant.qt of {
|
||||||
|
IndefArticle => True ;
|
||||||
|
_ => False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
dt2objdef : DetType -> ObjDef = \dt -> case dt of {
|
||||||
|
IndefDet => Indef ;
|
||||||
|
_ => Def
|
||||||
|
} ;
|
||||||
|
|
||||||
|
objdef2dt : ObjDef -> DetType = \od -> case od of {
|
||||||
|
Def => DefDet ;
|
||||||
|
Indef => IndefDet
|
||||||
|
} ;
|
||||||
|
|
||||||
|
qt2dt : QuantType -> DetType = \qt -> case qt of {
|
||||||
|
QuantPoss x => DetPoss x ;
|
||||||
|
DefQuant => DefDet ;
|
||||||
|
_ => IndefDet
|
||||||
|
} ;
|
||||||
|
|
||||||
|
agr2pstem : Person*Number -> PossStem = \pn ->
|
||||||
|
case <pn.p1,pn.p2> of {
|
||||||
|
<P1,Pl> => dSg_rPl1 ;
|
||||||
|
<P3,n> => dSg_rP3 n ;
|
||||||
|
_ => dSg_rSg1P2
|
||||||
|
} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Nouns
|
-- Nouns
|
||||||
|
|
||||||
param
|
param
|
||||||
|
|
||||||
Case = Nom | Acc | Dat
|
NumCaseStem =
|
||||||
-- | PossStem -- TODO: Stem where possessive suffixes attach?
|
SgNom | SgAccStem | SgSup -- These may use 2-3 different stems
|
||||||
| Ill | Ine | Ela | All | Ade | Abl | Sub | Sup | Del -- Locatives
|
-- May have irregular vowel in suffix
|
||||||
| Cau -- Causal-final 'for the purpose of, for the reason that'
|
| SgAll -- May have irregular vowel in suffix
|
||||||
|
| SgInsStem -- Instrumental and translative: -v after vowels
|
||||||
|
| SgStem -- Rest of the cases in Sg
|
||||||
|
| PlStem -- Rest of the cases in Pl
|
||||||
|
| PossdSg_PossrP3 -- Possessed item is Sg, possessor is Sg or Pl P3
|
||||||
|
| PossdSg_PossrPl1 -- Possessed item is Sg, possessor is Pl P1
|
||||||
|
| PossdPl -- Possessed item in plural, any possessor.
|
||||||
|
; -- Rest of poss forms use SgAccStem
|
||||||
|
|
||||||
|
|
||||||
|
Case =
|
||||||
|
Nom | Acc | Dat
|
||||||
|
-- | Ill -- Locatives
|
||||||
|
| Ine
|
||||||
|
| Ela
|
||||||
|
| All
|
||||||
|
| Ade
|
||||||
|
-- | Abl
|
||||||
|
-- | Sub
|
||||||
|
| Sup
|
||||||
|
-- | Del
|
||||||
|
-- | Cau -- Causal-final 'for the purpose of, for the reason that'
|
||||||
| Ins -- Instrumental
|
| Ins -- Instrumental
|
||||||
| Tra -- Translative
|
| Tra -- Translative
|
||||||
-- | Ess | Ter | For
|
-- | Ess | Ter | For
|
||||||
-- | Tem -- Temporal, e.g. hatkor ‘six o’clock’ (from hat ‘6’)
|
-- | Tem -- Temporal, e.g. hatkor ‘six o’clock’ (from hat ‘6’)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
SubjCase = SCNom | SCDat ; -- Limited set of subject cases
|
SubjCase = SCNom | SCDat ; -- Limited set of subject cases
|
||||||
|
|
||||||
|
Possessor = NoPoss | Poss Person Number ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
caseTable : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Case=>Str =
|
caseTable : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Case=>Str =
|
||||||
@@ -33,18 +111,18 @@ oper
|
|||||||
Nom => n ;
|
Nom => n ;
|
||||||
Acc => a ;
|
Acc => a ;
|
||||||
Dat => d ;
|
Dat => d ;
|
||||||
Ill => il ;
|
Ins => ins ;
|
||||||
|
Tra => tra ;
|
||||||
|
Sup => sup ;
|
||||||
Ine => ine ;
|
Ine => ine ;
|
||||||
Ela => el ;
|
Ela => el ;
|
||||||
All => al ;
|
All => al ;
|
||||||
Ade => ad ;
|
Ade => ad ;
|
||||||
Abl => ab ;
|
Abl => ab ;
|
||||||
Sub => sub ;
|
Sub => sub ;
|
||||||
Sup => sup ;
|
|
||||||
Del => del ;
|
Del => del ;
|
||||||
Cau => ca ;
|
Ill => il ;
|
||||||
Ins => ins ;
|
Cau => ca } ;
|
||||||
Tra => tra } ;
|
|
||||||
|
|
||||||
sc2case : SubjCase -> Case = \sc ->
|
sc2case : SubjCase -> Case = \sc ->
|
||||||
case sc of {
|
case sc of {
|
||||||
@@ -52,6 +130,45 @@ oper
|
|||||||
SCDat => Dat
|
SCDat => Dat
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
case2str : Case -> Str = \c -> case c of {
|
||||||
|
Nom => "Nom" ;
|
||||||
|
Acc => "Acc" ;
|
||||||
|
Dat => "Dat" ;
|
||||||
|
Ins => "Ins" ;
|
||||||
|
Tra => "Tra" ;
|
||||||
|
Sup => "Sup" ;
|
||||||
|
Ine => "Ine" ;
|
||||||
|
Ela => "Ela" ;
|
||||||
|
All => "All" ;
|
||||||
|
Ade => "Ade" ;
|
||||||
|
Abl => "Abl" ;
|
||||||
|
Sub => "Sub" ;
|
||||||
|
Del => "Del" ;
|
||||||
|
Ill => "Ill" ;
|
||||||
|
Cau => "Cau" } ;
|
||||||
|
|
||||||
|
ncstem2str : NumCaseStem -> Str = \nc -> case nc of {
|
||||||
|
SgNom => "SgNom" ;
|
||||||
|
SgAccStem => "SgAccStem" ;
|
||||||
|
SgSup => "SgSup" ;
|
||||||
|
SgAll => "SgAll" ;
|
||||||
|
SgInsStem => "SgInsStem" ;
|
||||||
|
SgStem => "SgStem" ;
|
||||||
|
PlStem => "PlStem" ;
|
||||||
|
PossdSg_PossrP3 => "PossdSg_PossrP3" ;
|
||||||
|
PossdSg_PossrPl1 => "PossdSg_PossrPl1" ;
|
||||||
|
PossdPl => "PossdPl"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
possessor2str : Possessor -> Str = \p -> case p of {
|
||||||
|
NoPoss => "NoPoss" ;
|
||||||
|
Poss P1 Sg => "Poss P1 Sg" ;
|
||||||
|
Poss P2 Sg => "Poss P2 Sg" ;
|
||||||
|
Poss P3 Sg => "Poss P3 Sg" ;
|
||||||
|
Poss P1 Pl => "Poss P1 Pl" ;
|
||||||
|
Poss P2 Pl => "Poss P2 Pl" ;
|
||||||
|
Poss P3 Pl => "Poss P3 Pl"
|
||||||
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Numerals
|
-- Numerals
|
||||||
|
|
||||||
@@ -61,13 +178,16 @@ param
|
|||||||
|
|
||||||
CardOrd = NOrd | NCard ; -- Not used yet
|
CardOrd = NOrd | NCard ; -- Not used yet
|
||||||
|
|
||||||
NumType = NoNum | IsDig | IsNum ;
|
NumType = NoNum Number | IsNum ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
isNum : {numtype : NumType} -> Bool = \nt -> case nt.numtype of {
|
isNum : {n : NumType} -> Bool = \n -> case n.n of {
|
||||||
NoNum => False ;
|
IsNum => True ;
|
||||||
_ => True
|
_ => False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
num2number : NumType -> Number = \n ->
|
||||||
|
case n of {NoNum x => x ; IsNum => Sg} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Adjectives
|
-- Adjectives
|
||||||
|
|
||||||
@@ -88,13 +208,13 @@ param
|
|||||||
|
|
||||||
VForm =
|
VForm =
|
||||||
VInf
|
VInf
|
||||||
| VFin Person Number ;
|
| VPres Person Number ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
agr2vf : Person*Number -> VForm = \pn ->
|
agr2vf : Person*Number -> VForm = \pn ->
|
||||||
case <pn.p1,pn.p2> of {
|
case <pn.p1,pn.p2> of {
|
||||||
<p,n> => VFin p n
|
<p,n> => VPres p n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ concrete PhraseHun of Phrase = CatHun ** open Prelude, ResHun in {
|
|||||||
UttImpPol = UttImpSg ;
|
UttImpPol = UttImpSg ;
|
||||||
-}
|
-}
|
||||||
UttIP,
|
UttIP,
|
||||||
UttNP = \np -> {s = np.s ! Nom} ;
|
UttNP = \np -> {s = np.s ! NoPoss ! Nom} ;
|
||||||
UttVP vp = {s = vp.obj ++ vp.adv ++ vp.s ! VInf} ;
|
UttVP vp = {s = vp.obj ++ vp.adv ++ vp.s ! VInf} ;
|
||||||
UttAdv adv = adv ;
|
UttAdv adv = adv ;
|
||||||
UttCN cn = {s = cn.s ! Sg ! Nom} ;
|
UttCN cn = {s = linCN cn} ;
|
||||||
UttCard n = {s = n.s ! Indep} ;
|
UttCard n = {s = n.s ! Indep} ;
|
||||||
UttAP ap = {s = ap.s ! Sg ++ ap.compar} ;
|
UttAP ap = {s = ap.s ! Sg ! Nom ++ ap.compl ! Sg} ;
|
||||||
UttInterj i = i ;
|
UttInterj i = i ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
|||||||
@@ -13,6 +13,63 @@ resource ResHun = NounMorphoHun ** open Prelude, Predef in {
|
|||||||
-- Noun morphology is in NounMorphoHun
|
-- Noun morphology is in NounMorphoHun
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
CNoun : Type = Noun ** {
|
||||||
|
compl : Number => Case => Str ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkCaseNoun : Str -> Number => Case => Str = \s ->
|
||||||
|
\\n,c => caseFromStem (\a,b -> a+b) (mkNoun s) c n ;
|
||||||
|
mkCaseNoun2 : (n,a : Str) -> Number => Case => Str = \no,ac ->
|
||||||
|
\\n,c => caseFromStem (\a,b -> a+b) (regNounNomAcc no ac) c n ;
|
||||||
|
|
||||||
|
caseFromStem : (Str->Str->Str) -> Noun -> Case -> Number -> Str = \bind,cn,cas,n ->
|
||||||
|
let applyCase' : NumCaseStem -> Str = applyCase bind cas cn in
|
||||||
|
case <n,cas> of {
|
||||||
|
<Sg,Nom> => cn.s ! SgNom ;
|
||||||
|
<Sg,Acc> => bind (cn.s ! SgAccStem) "t" ;
|
||||||
|
<Sg,Sup> => cn.s ! SgSup ;
|
||||||
|
<Sg,All> => cn.s ! SgAll ;
|
||||||
|
<Pl,Nom> => cn.s ! PlStem ; -- don't use applyCase', it adds a BIND which breaks everything!
|
||||||
|
<Sg,Ins|Tra> => applyCase' SgInsStem ;
|
||||||
|
<Pl,Ins|Tra> => bind (bind (cn.s ! PlStem) "k") (endCase cas ! cn.h) ;
|
||||||
|
<Sg,_> => applyCase' SgStem ;
|
||||||
|
<Pl,_> => applyCase' PlStem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
caseFromPossStem : CNoun -> Determiner -> Case -> Str = \cn,det,cas ->
|
||||||
|
let st : PossStem = case det.dt of {
|
||||||
|
DetPoss x => x ;
|
||||||
|
_ => Predef.error "caseFromPossStem: Not possessive Det" } ;
|
||||||
|
casetable : Case->HarmForms = case <det.n,st> of {
|
||||||
|
-- P3 Sg possessive suffix ends in vowel, others in consonant.
|
||||||
|
<Sg, dSg_rP3 Sg> => endCasePossVow ;
|
||||||
|
_ => endCase } ;
|
||||||
|
stem : NumCaseStem = case det.n of {
|
||||||
|
Pl => PossdPl ;
|
||||||
|
Sg => case st of {
|
||||||
|
dSg_rP3 _ => PossdSg_PossrP3 ;
|
||||||
|
dSg_rPl1 => PossdSg_PossrPl1 ;
|
||||||
|
dSg_rSg1P2 => SgAccStem }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- possessive suffix e.g. "their cats-3pl" is just k. not uk/ük
|
||||||
|
-- possessive suffix e.g. "her cat-3sg" is ∅, we store
|
||||||
|
suf = case <det.n,st> of {
|
||||||
|
<Pl, dSg_rP3 Pl> => "k" ;
|
||||||
|
<Pl, dSg_rP3 Sg> => "" ;
|
||||||
|
_ => det.poss ! cn.h } ;
|
||||||
|
in case <cas,det.n,st> of {
|
||||||
|
-- Possessor is P3 Sg, possessed is plural, case is Nom:
|
||||||
|
-- just use the stored PossdPl stem, e.g. 'madarai'
|
||||||
|
<Nom, Pl, dSg_rP3 Sg> => cn.s ! PossdPl ;
|
||||||
|
|
||||||
|
-- Any number of possr or possd, case Nom = empty case ending
|
||||||
|
<Nom> => glue (cn.s ! stem) suf ;
|
||||||
|
|
||||||
|
-- Other forms have non-empty poss. suffix and case ending
|
||||||
|
_ => applyCaseSuf suf cas cn stem casetable
|
||||||
|
} ;
|
||||||
|
|
||||||
BaseNP : Type = {
|
BaseNP : Type = {
|
||||||
agr : Person*Number ;
|
agr : Person*Number ;
|
||||||
objdef : ObjDef ;
|
objdef : ObjDef ;
|
||||||
@@ -20,70 +77,164 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
NounPhrase : Type = BaseNP ** {
|
NounPhrase : Type = BaseNP ** {
|
||||||
s : Case => Str ;
|
s : Possessor => Case => Str ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
emptyNP : NounPhrase = {
|
emptyNP : NounPhrase = {
|
||||||
s = \\_ => [] ;
|
s = \\_,_ => [] ;
|
||||||
agr = <P3,Sg> ;
|
agr = <P3,Sg> ;
|
||||||
objdef = Indef ;
|
objdef = Indef ;
|
||||||
empty = [] ;
|
empty = [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\c => s} ;
|
indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\p,c => s} ;
|
||||||
|
|
||||||
defNP : Str -> Number -> NounPhrase = \s,n -> emptyNP ** {
|
defNP : Str -> Number -> NounPhrase = \s,n -> emptyNP ** {
|
||||||
s = (mkNoun s).s ! n ;
|
s = \\c => mkCaseNoun s ! n ;
|
||||||
n = n ;
|
n = n ;
|
||||||
objdef = Def ;
|
objdef = Def ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
linCN : CNoun -> Str = \cn -> cn.s ! SgNom ++ cn.compl ! Sg ! Nom ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Pronouns
|
-- Pronouns
|
||||||
|
|
||||||
Pronoun : Type = NounPhrase ** {
|
Pronoun : Type = BaseNP ** {
|
||||||
--poss : Str ; -- for PossPron : Pron -> Quant
|
s : Case => Str ;
|
||||||
|
poss : HarmForms ; -- for PossPron : Pron -> Quant
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
possForms : Person*Number => HarmForms = \\agr => case agr of {
|
||||||
|
<P1,Sg> => harm1 "m" ;
|
||||||
|
<P2,Sg> => harm1 "d" ;
|
||||||
|
<P3,Sg> => harm "a" "e" ; --TODO: wovel cases with "ja"? See verb forms below
|
||||||
|
<P1,Pl> => harm1 "nk" ; -- u/ü/other vowel in stem
|
||||||
|
<P2,Pl> => harm "tok" "tök" ;
|
||||||
|
<P3,Pl> => harm "uk" "ük"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pronTable : Person*Number => Pronoun = \\agr => case agr of {
|
||||||
|
<P1,Sg> => emptyNP ** {
|
||||||
|
s = caseTable "én" "engem" "nekem"
|
||||||
|
"belém" "bennem" "belőlem" -- inner locatives
|
||||||
|
"hozzám" "nálam" "tőlem" -- outer locatives
|
||||||
|
"rám" "rajtam" "rólam" -- outer locatives
|
||||||
|
"értem" -- Causative
|
||||||
|
"velem" -- Instrumental
|
||||||
|
nonExist ; -- Translative
|
||||||
|
agr = agr ;
|
||||||
|
objdef = Def ;
|
||||||
|
poss = possForms ! agr } ;
|
||||||
|
<P2,Sg> => emptyNP ** {
|
||||||
|
s = caseTable "te" "teged" "neked"
|
||||||
|
"beléd" "benned" "belőled"
|
||||||
|
"hozzád" "nálad" "tőled"
|
||||||
|
"rád" "rajtad" "rólad"
|
||||||
|
"érted" -- Causative
|
||||||
|
"veled" -- Instrumental
|
||||||
|
nonExist ; -- Translative
|
||||||
|
agr = agr ;
|
||||||
|
objdef = Def ;
|
||||||
|
poss = possForms ! agr } ;
|
||||||
|
<P3,Sg> => emptyNP ** {
|
||||||
|
s = caseTable "ő" "őt" "neki"
|
||||||
|
"belé" "benne" "belőle"
|
||||||
|
"hozzá" "nála" "tőle"
|
||||||
|
"rá" "rajta" "róla"
|
||||||
|
"érte" -- Causative
|
||||||
|
"vele" -- Instrumental
|
||||||
|
nonExist ; -- Translative
|
||||||
|
objdef = Def ;
|
||||||
|
poss = possForms ! agr } ;
|
||||||
|
<P1,Pl> => emptyNP ** {
|
||||||
|
s = caseTable "mi" "minket" "nekünk"
|
||||||
|
"belénk" "bennünk" "belőlünk"
|
||||||
|
"hozzánk" "nálunk" "tőlünk"
|
||||||
|
"ránk" "rajtunk" "rólunk"
|
||||||
|
"értünk" -- Causative
|
||||||
|
"velünk" -- Instrumental
|
||||||
|
nonExist ; -- Translative
|
||||||
|
agr = agr ;
|
||||||
|
objdef = Def ;
|
||||||
|
poss = possForms ! agr } ;
|
||||||
|
<P2,Pl> => emptyNP ** {
|
||||||
|
s = caseTable "ti" "titeket" "nektek"
|
||||||
|
"belétek" "bennetek" "belőletek"
|
||||||
|
"hozzátok" "nálatok" "tőletek"
|
||||||
|
"rátok" "rajtatok" "rólatok"
|
||||||
|
"értetek" -- Causative
|
||||||
|
"veletek" -- Instrumental
|
||||||
|
nonExist ; -- Translative
|
||||||
|
agr = agr ;
|
||||||
|
objdef = Def ;
|
||||||
|
poss = possForms ! agr } ;
|
||||||
|
<P3,Pl> => emptyNP ** {
|
||||||
|
s = caseTable "ők" "őket" "nekik"
|
||||||
|
"beléjük" "bennük" "belőlük"
|
||||||
|
"hozzájuk" "náluk" "tőlük"
|
||||||
|
"rájuk" "rajtuk" "róluk"
|
||||||
|
"értük" -- Causative
|
||||||
|
"velük" -- Instrumental
|
||||||
|
nonExist ; -- Translative
|
||||||
|
agr = agr ;
|
||||||
|
objdef = Def ;
|
||||||
|
poss = possForms ! agr }
|
||||||
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Det, Quant, Card, Ord
|
-- Det, Quant, Card, Ord
|
||||||
|
|
||||||
|
BaseQuant : Type = {
|
||||||
|
poss : HarmForms ; -- Quants made by PossPron need this, empty for others
|
||||||
|
caseagr : Bool ; -- If it agrees in case: "azoknak a nőknek" vs. "sok nőknek"
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Quant has variable number:
|
-- Quant has variable number:
|
||||||
-- e.g. this_Quant has both "this" and "these"
|
-- e.g. this_Quant has both "this" and "these"
|
||||||
Quant : Type = {
|
Quant : Type = BaseQuant ** {
|
||||||
s, -- form that comes before noun: "{this} car"
|
s, -- form that comes before noun: "{this} car"
|
||||||
sp : Number => Case => Str ; -- independent form, "I like {this}" (DetNP)
|
sp : Number => Case => Str ; -- independent form, "I like {this}" (DetNP)
|
||||||
isIndefArt : Bool ; -- standard trick to prevent "a one car"
|
qt : QuantType ;
|
||||||
objdef : ObjDef ; -- How V2 agrees if NP with this Det is an object
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkQuant : (s,sp : Str) -> Quant = \s,sp -> {
|
mkQuant : (s,sp : Str) -> Quant = \s,sp -> {
|
||||||
s = (mkNoun s).s ;
|
s = mkCaseNoun s ;
|
||||||
sp = (mkNoun sp).s ;
|
sp = mkCaseNoun sp ;
|
||||||
isIndefArt = False ;
|
qt = DefQuant ;
|
||||||
objdef = Def ;
|
caseagr = True ;
|
||||||
|
poss = harm1 [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Det is formed in DetQuant : Quant -> Num -> Det
|
-- Det is formed in DetQuant : Quant -> Num -> Det
|
||||||
-- so it has an inherent number.
|
-- so it has an inherent number.
|
||||||
Determiner : Type = {
|
Determiner : Type = BaseQuant ** {
|
||||||
s,
|
s,
|
||||||
sp : Case => Str ;
|
sp : Case => Str ;
|
||||||
n : Number ;
|
n : Number ;
|
||||||
numtype : NumType ; -- Whether its Num component is digit, numeral or Sg/Pl
|
dt : DetType ;
|
||||||
objdef : ObjDef ; -- How V2 agrees if NP with this Det is an object
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkDet : (s : Str) -> ObjDef -> Number -> Determiner = \s,d,n -> {
|
mkDet : (s : Str) -> ObjDef -> Number -> Bool -> Determiner = \s,d,n,ca -> {
|
||||||
s,
|
s,
|
||||||
sp = (mkNoun s).s ! n ;
|
sp = mkCaseNoun s ! n ;
|
||||||
n = n ;
|
n = n ;
|
||||||
numtype = NoNum ;
|
numtype = NoNum ;
|
||||||
objdef = d ;
|
caseagr = ca ;
|
||||||
|
dt = objdef2dt d ;
|
||||||
|
poss = harm1 [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkDet2 : (n,a : Str) -> ObjDef -> Number -> Bool -> Determiner = \no,ac,d,n,ca ->
|
||||||
|
let reg : Determiner = mkDet no d n ca
|
||||||
|
in reg ** {
|
||||||
|
s,sp = mkCaseNoun2 no ac ! n ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- No need for number:
|
||||||
|
-- https://en.wikisource.org/wiki/Simplified_Grammar_of_the_Hungarian_Language/Nouns
|
||||||
|
-- "Nouns are used in the singular only, if preceded by a numeral or any other
|
||||||
|
-- word expressing quantity; as két ember, two men; sok fa, many trees."
|
||||||
Numeral : Type = {
|
Numeral : Type = {
|
||||||
s : Place => Str ; -- Independent or attribute
|
s : Place => Str ; -- Independent or attribute
|
||||||
numtype : NumType ; -- Digit, numeral or Sg/Pl : makes a difference in many languages
|
|
||||||
-- TODO add ordinal
|
-- TODO add ordinal
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -92,13 +243,12 @@ oper
|
|||||||
Noun.gf: NumCard : Card -> Num ;
|
Noun.gf: NumCard : Card -> Num ;
|
||||||
-}
|
-}
|
||||||
Num : Type = Numeral ** {
|
Num : Type = Numeral ** {
|
||||||
n : Number ; -- Singular or plural
|
n : NumType ; -- Singular, plural or numeral
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
baseNum : Num = {
|
baseNum : Num = {
|
||||||
s = \\_ => [] ;
|
s = \\_ => [] ;
|
||||||
n = Sg ;
|
n = NoNum Sg ;
|
||||||
numtype = NoNum
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@@ -111,9 +261,27 @@ oper
|
|||||||
c : Case ;
|
c : Case ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkPrep : Str -> Adposition = \str -> {s=str ; c=Nom ; pr=[]} ;
|
nomAdp : Str -> Adposition = \s -> postpos Nom s ;
|
||||||
|
|
||||||
|
caseAdp = overload {
|
||||||
|
caseAdp : Case -> Adposition = \c -> postpos c [] ;
|
||||||
|
caseAdp : Case -> Str -> Adposition = \c,s -> postpos c s ;
|
||||||
|
} ;
|
||||||
|
postpos : Case -> Str -> Adposition = \c,s-> {s=s ; c=c ; pr=[]} ;
|
||||||
|
prepos : Case -> Str -> Adposition = \c,s -> {s=[] ; c=c ; pr=s} ;
|
||||||
|
|
||||||
|
emptyAdp : Adposition = nomAdp [] ;
|
||||||
|
|
||||||
|
applyAdp : Adposition -> NounPhrase -> Str = \adp,np ->
|
||||||
|
adp.pr ++ np.s ! NoPoss ! adp.c ++ adp.s ;
|
||||||
|
|
||||||
|
applyCase : (Str->Str->Str) -> Case -> Noun -> NumCaseStem -> Str =
|
||||||
|
\bind,cas,cn,stem -> bind (cn.s ! stem) (endCase cas ! cn.h) ;
|
||||||
|
|
||||||
|
applyCaseSuf : Str -> Case -> CNoun -> NumCaseStem -> (Case -> HarmForms) -> Str =
|
||||||
|
\suf,cas,cn,stem,casetable ->
|
||||||
|
glue (glue (cn.s ! stem) suf) (casetable cas ! cn.h) ;
|
||||||
|
|
||||||
emptyAdp : Adposition = mkPrep [] ;
|
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- Conj
|
-- Conj
|
||||||
@@ -135,34 +303,40 @@ oper
|
|||||||
-- Adjectives
|
-- Adjectives
|
||||||
|
|
||||||
AdjPhrase : Type = {
|
AdjPhrase : Type = {
|
||||||
s : Number => Str ;
|
s : Number => Case => Str ;
|
||||||
compar : Str -- Discontinuous: Én *nagyobb* vagyok *nálad*.
|
compl : Number => Str -- Discontinuous comparative: Én nagyobb vagyok nálad.
|
||||||
|
-- This depends on Number to allow postmodifier APs.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
emptyAP : AdjPhrase = {
|
emptyAP : AdjPhrase = {
|
||||||
s = \\_ => [] ;
|
s = \\_,_ => [] ;
|
||||||
compar = [] ;
|
compl = \\_ => [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
Adjective : Type = {
|
Adjective : Type = {
|
||||||
s : Degree => Number => Str
|
s : Degree => NumCaseStem => Str ;
|
||||||
} ;
|
h : Harm ;
|
||||||
Adjective2 : Type = Adjective ** {
|
|
||||||
c2 : Adposition ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkAdj : Str -> Adjective = \sg -> {
|
Adjective2 : Type = Adjective ** {
|
||||||
s = \\d,n =>
|
c2 : Adposition ;
|
||||||
let adj = case d of {
|
isPost : Bool ; -- put adjective past the thing it modifies
|
||||||
Compar => comparAdj sg ;
|
|
||||||
Superl => "leg" + comparAdj sg ;
|
|
||||||
_ => sg } ;
|
|
||||||
plural = case n of {
|
|
||||||
Sg => [] ;
|
|
||||||
Pl => pluralAdj adj }
|
|
||||||
in adj + plural
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkAdj : Str -> Adjective = \sgnom -> mkAdj2 sgnom (regNoun sgnom) ;
|
||||||
|
|
||||||
|
|
||||||
|
mkAdj2 : Str -> Noun -> Adjective = \sgnom,adjAsNoun -> adjAsNoun ** {
|
||||||
|
s = \\d =>
|
||||||
|
let adj : Noun = case d of {
|
||||||
|
Compar => mkNoun (comparAdj sgnom) ;
|
||||||
|
Superl => mkNoun ("leg" + comparAdj sgnom) ;
|
||||||
|
_ => adjAsNoun } ;
|
||||||
|
in adj.s ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
invarAP : Str -> AdjPhrase = \s -> emptyAP ** {s = \\_,_ => s} ;
|
||||||
|
|
||||||
-- https://en.wikisource.org/wiki/Simplified_Grammar_of_the_Hungarian_Language/Adjectives
|
-- https://en.wikisource.org/wiki/Simplified_Grammar_of_the_Hungarian_Language/Adjectives
|
||||||
comparAdj : Str -> Str = \stem ->
|
comparAdj : Str -> Str = \stem ->
|
||||||
case stem of {
|
case stem of {
|
||||||
@@ -236,7 +410,7 @@ oper
|
|||||||
|
|
||||||
vtov2 : Verb -> Verb2 = \v -> v ** {
|
vtov2 : Verb -> Verb2 = \v -> v ** {
|
||||||
s = table {
|
s = table {
|
||||||
Def => let vDef : Verb = mkVerbReg endingsDef (v.s ! VInf) (v.s ! VFin P3 Sg)
|
Def => let vDef : Verb = mkVerbReg endingsDef (v.s ! VInf) (v.s ! VPres P3 Sg)
|
||||||
in vDef.s ;
|
in vDef.s ;
|
||||||
Indef => v.s } ;
|
Indef => v.s } ;
|
||||||
c2 = Acc
|
c2 = Acc
|
||||||
@@ -259,12 +433,12 @@ oper
|
|||||||
\sg1,sg2,sg3,pl1,pl2,pl3,inf -> {
|
\sg1,sg2,sg3,pl1,pl2,pl3,inf -> {
|
||||||
s = table {
|
s = table {
|
||||||
VInf => inf ;
|
VInf => inf ;
|
||||||
VFin P1 Sg => sg1 ;
|
VPres P1 Sg => sg1 ;
|
||||||
VFin P2 Sg => sg2 ;
|
VPres P2 Sg => sg2 ;
|
||||||
VFin P3 Sg => sg3 ;
|
VPres P3 Sg => sg3 ;
|
||||||
VFin P1 Pl => pl1 ;
|
VPres P1 Pl => pl1 ;
|
||||||
VFin P2 Pl => pl2 ;
|
VPres P2 Pl => pl2 ;
|
||||||
VFin P3 Pl => pl3
|
VPres P3 Pl => pl3
|
||||||
} ;
|
} ;
|
||||||
sc = SCNom
|
sc = SCNom
|
||||||
} ;
|
} ;
|
||||||
@@ -286,7 +460,7 @@ oper
|
|||||||
-- VP
|
-- VP
|
||||||
|
|
||||||
VerbPhrase : Type = Verb ** {
|
VerbPhrase : Type = Verb ** {
|
||||||
obj : Str ;
|
obj : Str ; -- Person*Number => Str, if we want open word order in have_V2
|
||||||
adv : Str ;
|
adv : Str ;
|
||||||
c2 : Case ; -- for RelSlash
|
c2 : Case ; -- for RelSlash
|
||||||
} ; -- TODO more fields
|
} ; -- TODO more fields
|
||||||
@@ -296,7 +470,8 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
useV : Verb -> VerbPhrase = \v -> v ** {
|
useV : Verb -> VerbPhrase = \v -> v ** {
|
||||||
obj,adv = [] ;
|
obj = [] ;
|
||||||
|
adv = [] ;
|
||||||
c2 = Acc ; -- TODO check
|
c2 = Acc ; -- TODO check
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -304,15 +479,6 @@ oper
|
|||||||
adv = [] ;
|
adv = [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertObj : VPSlash -> NounPhrase -> VerbPhrase = \vps,np -> vps ** {
|
|
||||||
obj = np.s ! vps.c2 ;
|
|
||||||
|
|
||||||
-- If verb's subject case is Dat and object Nom, verb agrees with obj.
|
|
||||||
s = \\vf => case <vps.sc,vps.c2> of {
|
|
||||||
<SCDat,Nom> => vps.s ! np.objdef ! agr2vf np.agr ;
|
|
||||||
_ => vps.s ! np.objdef ! vf } ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
insertAdv : VerbPhrase -> SS -> VerbPhrase = \vp,adv -> vp ** {adv = adv.s} ;
|
insertAdv : VerbPhrase -> SS -> VerbPhrase = \vp,adv -> vp ** {adv = adv.s} ;
|
||||||
insertAdvSlash : VPSlash -> SS -> VPSlash = \vps,adv -> vps ** {adv = adv.s} ;
|
insertAdvSlash : VPSlash -> SS -> VPSlash = \vps,adv -> vps ** {adv = adv.s} ;
|
||||||
|
|
||||||
@@ -337,9 +503,10 @@ oper
|
|||||||
s = \\t,a,p => let subjcase : Case = case vp.sc of {
|
s = \\t,a,p => let subjcase : Case = case vp.sc of {
|
||||||
SCNom => Nom ;
|
SCNom => Nom ;
|
||||||
SCDat => Dat }
|
SCDat => Dat }
|
||||||
in np.s ! subjcase
|
in np.s ! NoPoss ! subjcase
|
||||||
|
++ if_then_Pol p [] "nem"
|
||||||
++ vp.s ! agr2vf np.agr
|
++ vp.s ! agr2vf np.agr
|
||||||
++ vp.obj
|
++ vp.obj -- ! np.agr
|
||||||
++ vp.adv
|
++ vp.adv
|
||||||
++ np.empty -- standard trick for prodrop+metavariable problem
|
++ np.empty -- standard trick for prodrop+metavariable problem
|
||||||
} ;
|
} ;
|
||||||
@@ -349,10 +516,6 @@ oper
|
|||||||
RP : Type = {s : Number => Case => Str} ;
|
RP : Type = {s : Number => Case => Str} ;
|
||||||
RClause : Type = {s : Tense => Anteriority => Polarity => Number => Case => Str} ;
|
RClause : Type = {s : Tense => Anteriority => Polarity => Number => Case => Str} ;
|
||||||
|
|
||||||
np2rp : NounPhrase -> RP ** {agr : Person*Number} = \np -> np ** {
|
|
||||||
s = \\n => np.s ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
relVP : RP -> VerbPhrase -> RClause = \rp -> relVP' (rp ** {agr=<P3,Sg>}) ;
|
relVP : RP -> VerbPhrase -> RClause = \rp -> relVP' (rp ** {agr=<P3,Sg>}) ;
|
||||||
|
|
||||||
relVP' : RP ** {agr : Person*Number} -> VerbPhrase -> RClause = \rp,vp -> {
|
relVP' : RP ** {agr : Person*Number} -> VerbPhrase -> RClause = \rp,vp -> {
|
||||||
@@ -360,9 +523,10 @@ oper
|
|||||||
SCNom => Nom ;
|
SCNom => Nom ;
|
||||||
SCDat => Dat }
|
SCDat => Dat }
|
||||||
in rp.s ! n ! subjcase
|
in rp.s ! n ! subjcase
|
||||||
++ vp.obj
|
++ if_then_Pol p [] "nem"
|
||||||
|
++ vp.obj -- ! <rp.agr.p1,n>
|
||||||
++ vp.adv
|
++ vp.adv
|
||||||
++ vp.s ! VFin rp.agr.p1 n -- variable by number
|
++ vp.s ! VPres rp.agr.p1 n -- variable by number
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
||||||
|
|||||||
@@ -61,16 +61,20 @@ lin most_Predet = {s = ""} ;
|
|||||||
-}
|
-}
|
||||||
|
|
||||||
--lin every_Det =
|
--lin every_Det =
|
||||||
lin few_Det = mkDet "kevés" Def Sg ; -- TODO check
|
lin few_Det = mkDet "kevés" Indef Sg False ;
|
||||||
lin many_Det = mkDet "sok" Def Sg ; -- TODO check
|
lin many_Det = mkDet "sok" Indef Sg False ;
|
||||||
--lin much_Det =
|
--lin much_Det =
|
||||||
|
|
||||||
lin somePl_Det = mkDet "néhány" Indef Sg ;
|
lin someSg_Det,
|
||||||
lin someSg_Det = mkDet "néhány" Indef Sg ;
|
somePl_Det = mkDet2 "néhány" "néhányat" Indef Sg False ;
|
||||||
--lin no_Quant =
|
--lin no_Quant =
|
||||||
|
|
||||||
lin that_Quant = mkQuant "az" "az" ;
|
lin that_Quant =
|
||||||
lin this_Quant = mkQuant "ez" "ez" ;
|
let az : Quant = mkQuant "az" "az" ;
|
||||||
|
in az ** {s = \\n,c => az.s ! n ! c ++ pre {"a" ; "az" / v }} ;
|
||||||
|
lin this_Quant =
|
||||||
|
let ez : Quant = mkQuant "ez" "ez" ;
|
||||||
|
in ez ** {s = \\n,c => ez.s ! n ! c ++ pre {"a" ; "az" / v }} ;
|
||||||
{-lin which_IQuant =
|
{-lin which_IQuant =
|
||||||
|
|
||||||
|
|
||||||
@@ -90,25 +94,25 @@ lin something_NP = defNP "valami" Sg ;
|
|||||||
|
|
||||||
-- List of postpositions requiring case:
|
-- List of postpositions requiring case:
|
||||||
-- https://en.wiktionary.org/wiki/Appendix:Hungarian_postpositions#Postpositions_Requiring_Case
|
-- https://en.wiktionary.org/wiki/Appendix:Hungarian_postpositions#Postpositions_Requiring_Case
|
||||||
lin above_Prep = mkPrep "fölött" ;
|
lin above_Prep = nomAdp "fölött" ;
|
||||||
-- lin after_Prep = mkPrep ""
|
-- lin after_Prep = mkPrep ""
|
||||||
-- lin before_Prep = mkPrep "" ;
|
-- lin before_Prep = mkPrep "" ;
|
||||||
-- lin behind_Prep = mkPrep "" ;
|
-- lin behind_Prep = mkPrep "" ;
|
||||||
-- lin between_Prep = = mkPrep "" ;
|
-- lin between_Prep = = mkPrep "" ;
|
||||||
lin by8agent_Prep = mkPrep "által" ;
|
lin by8agent_Prep = nomAdp "által" ;
|
||||||
lin by8means_Prep = casePrep Ins ;
|
lin by8means_Prep = caseAdp Ins ;
|
||||||
-- lin during_Prep = mkPrep ;
|
-- lin during_Prep = mkPrep ;
|
||||||
-- lin except_Prep = mkPrep ;
|
-- lin except_Prep = mkPrep ;
|
||||||
-- lin for_Prep = mkPrep "" ;
|
lin for_Prep = caseAdp Dat ;
|
||||||
-- lin from_Prep = mkPrep "" ;
|
-- lin from_Prep = mkPrep "" ;
|
||||||
-- lin in8front_Prep = mkPrep "" ;
|
-- lin in8front_Prep = mkPrep "" ;
|
||||||
lin in_Prep = casePrep Ine ;
|
lin in_Prep = caseAdp Ine ;
|
||||||
lin on_Prep = casePrep Ade ;
|
lin on_Prep = caseAdp Sup ;
|
||||||
-- lin part_Prep = casePrep ;
|
-- lin part_Prep = casePrep ;
|
||||||
-- lin possess_Prep = -- Suffix attaches to possessee, not possessor
|
-- lin possess_Prep = -- Suffix attaches to possessee, not possessor
|
||||||
-- lin through_Prep = mkPrep ;
|
-- lin through_Prep = mkPrep ;
|
||||||
lin to_Prep = casePrep All ;
|
lin to_Prep = caseAdp All ;
|
||||||
lin under_Prep = mkPrep "alatt" ;
|
lin under_Prep = nomAdp "alatt" ;
|
||||||
-- lin with_Prep = mkPrep "" ;
|
-- lin with_Prep = mkPrep "" ;
|
||||||
-- lin without_Prep = mkPrep "" ;
|
-- lin without_Prep = mkPrep "" ;
|
||||||
|
|
||||||
@@ -118,76 +122,14 @@ lin under_Prep = mkPrep "alatt" ;
|
|||||||
|
|
||||||
-- Pronouns are closed class, no constructor in ParadigmsHun.
|
-- Pronouns are closed class, no constructor in ParadigmsHun.
|
||||||
-- it_Pron =
|
-- it_Pron =
|
||||||
i_Pron = emptyNP ** {
|
i_Pron = pronTable ! <P1,Sg> ;
|
||||||
s = caseTable "én" "engem" "nekem"
|
|
||||||
"belém" "bennem" "belőlem" -- inner locatives
|
|
||||||
"hozzám" "nálam" "tőlem" -- outer locatives
|
|
||||||
"rám" "rajtam" "rólam" -- outer locatives
|
|
||||||
"értem" -- Causative
|
|
||||||
"velem" -- Instrumental
|
|
||||||
nonExist ; -- Translative
|
|
||||||
agr = <P1,Sg> ;
|
|
||||||
objdef = Def ;
|
|
||||||
poss = "em" ;
|
|
||||||
} ;
|
|
||||||
youPol_Pron,
|
youPol_Pron,
|
||||||
youSg_Pron = emptyNP ** {
|
youSg_Pron = pronTable ! <P2,Sg> ;
|
||||||
s = caseTable "te" "teged" "neked"
|
|
||||||
"beléd" "benned" "belőled"
|
|
||||||
"hozzád" "nálad" "tőled"
|
|
||||||
"rád" "rajtad" "rólad"
|
|
||||||
"érted" -- Causative
|
|
||||||
"veled" -- Instrumental
|
|
||||||
nonExist ; -- Translative
|
|
||||||
agr = <P2,Sg> ;
|
|
||||||
objdef = Def ;
|
|
||||||
poss = "d" ;
|
|
||||||
} ;
|
|
||||||
he_Pron,
|
he_Pron,
|
||||||
she_Pron = emptyNP ** {
|
she_Pron = pronTable ! <P3,Sg> ;
|
||||||
s = caseTable "ő" "őt" "neki"
|
we_Pron = pronTable ! <P1,Pl> ;
|
||||||
"belé" "benne" "belőle"
|
youPl_Pron = pronTable ! <P2,Pl> ;
|
||||||
"hozzá" "nála" "tőle"
|
they_Pron = pronTable ! <P3,Pl> ;
|
||||||
"rá" "rajta" "róla"
|
|
||||||
"érte" -- Causative
|
|
||||||
"vele" -- Instrumental
|
|
||||||
nonExist ; -- Translative
|
|
||||||
objdef = Def ;
|
|
||||||
} ;
|
|
||||||
we_Pron = emptyNP ** {
|
|
||||||
s = caseTable "mi" "minket" "nekünk"
|
|
||||||
"belénk" "bennünk" "belőlünk"
|
|
||||||
"hozzánk" "nálunk" "tőlünk"
|
|
||||||
"ránk" "rajtunk" "rólunk"
|
|
||||||
"értünk" -- Causative
|
|
||||||
"velünk" -- Instrumental
|
|
||||||
nonExist ; -- Translative
|
|
||||||
agr = <P1,Pl> ;
|
|
||||||
objdef = Def ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
youPl_Pron = emptyNP ** {
|
|
||||||
s = caseTable "ti" "titeket" "nektek"
|
|
||||||
"belétek" "bennetek" "belőletek"
|
|
||||||
"hozzátok" "nálatok" "tőletek"
|
|
||||||
"rátok" "rajtatok" "rólatok"
|
|
||||||
"értetek" -- Causative
|
|
||||||
"veletek" -- Instrumental
|
|
||||||
nonExist ; -- Translative
|
|
||||||
agr = <P2,Pl> ;
|
|
||||||
objdef = Def ;
|
|
||||||
} ;
|
|
||||||
they_Pron = emptyNP ** {
|
|
||||||
s = caseTable "ők" "őket" "nekik"
|
|
||||||
"beléjük" "bennük" "belőlük"
|
|
||||||
"hozzájuk" "náluk" "tőlük"
|
|
||||||
"rájuk" "rajtuk" "róluk"
|
|
||||||
"értük" -- Causative
|
|
||||||
"velük" -- Instrumental
|
|
||||||
nonExist ; -- Translative
|
|
||||||
agr = <P3,Pl> ;
|
|
||||||
objdef = Def ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--lin whatPl_IP = ;
|
--lin whatPl_IP = ;
|
||||||
--lin whatSg_IP = :
|
--lin whatSg_IP = :
|
||||||
|
|||||||
@@ -18,22 +18,22 @@ lin
|
|||||||
oper
|
oper
|
||||||
|
|
||||||
mkPN : Str -> NounPhrase = \s -> emptyNP ** {
|
mkPN : Str -> NounPhrase = \s -> emptyNP ** {
|
||||||
s = \\_ => s ;
|
s = \\_,_ => s ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
-- : CN -> Int -> NP
|
-- : CN -> Int -> NP
|
||||||
CNIntNP cn i = NH.MassNP (cn ** {
|
CNIntNP cn i = NH.MassNP (cn ** {
|
||||||
s = \\n,c => cn.s ! n ! c ++ i.s}) ;
|
compl = \\n,c => cn.compl ! n ! c ++ i.s}) ;
|
||||||
|
|
||||||
-- : Det -> CN -> [Symb] -> NP ; -- (the) (2) numbers x and y
|
-- : Det -> CN -> [Symb] -> NP ; -- (the) (2) numbers x and y
|
||||||
CNSymbNP det cn xs =
|
CNSymbNP det cn xs =
|
||||||
let cnSymb : CN = cn ** {s = \\n,c => cn.s ! n ! c ++ xs.s}
|
let cnSymb : CN = cn ** {compl = \\n,c => cn.compl ! n ! c ++ xs.s}
|
||||||
in NH.DetCN det cnSymb ;
|
in NH.DetCN det cnSymb ;
|
||||||
|
|
||||||
-- : CN -> Card -> NP ; -- level five ; level 5
|
-- : CN -> Card -> NP ; -- level five ; level 5
|
||||||
CNNumNP cn i = NH.MassNP (cn ** {
|
CNNumNP cn i = NH.MassNP (cn ** {
|
||||||
s = \\n,c => cn.s ! n ! c ++ i.s ! Indep}) ;
|
compl = \\n,c => cn.compl ! n ! c ++ i.s ! Indep}) ;
|
||||||
|
|
||||||
-- : Symb -> S ;
|
-- : Symb -> S ;
|
||||||
SymbS sy = sy ;
|
SymbS sy = sy ;
|
||||||
@@ -42,7 +42,7 @@ lin
|
|||||||
SymbNum sy = baseNum ** {s = \\_ => sy.s} ;
|
SymbNum sy = baseNum ** {s = \\_ => sy.s} ;
|
||||||
|
|
||||||
-- : Symb -> Ord ;
|
-- : Symb -> Ord ;
|
||||||
SymbOrd sy = {s = \\n => sy.s ; n=Pl} ;
|
SymbOrd sy = {s = \\n,c => sy.s ; n=Pl} ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Symb, [Symb] = SS ;
|
Symb, [Symb] = SS ;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
concrete VerbHun of Verb = CatHun ** open ResHun, AdverbHun, Prelude in {
|
concrete VerbHun of Verb = CatHun **
|
||||||
|
open ResHun, AdverbHun, NounHun, Prelude in {
|
||||||
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
@@ -63,7 +64,7 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
-}
|
-}
|
||||||
-- : VPSlash -> NP -> VP
|
-- : VPSlash -> NP -> VP
|
||||||
ComplSlash = ResHun.insertObj ;
|
ComplSlash = insertObj ;
|
||||||
{-
|
{-
|
||||||
-- : VV -> VPSlash -> VPSlash ;
|
-- : VV -> VPSlash -> VPSlash ;
|
||||||
-- Just like ComplVV except missing subject!
|
-- Just like ComplVV except missing subject!
|
||||||
@@ -109,25 +110,31 @@ lin
|
|||||||
-- : AP -> Comp ;
|
-- : AP -> Comp ;
|
||||||
CompAP ap = UseCopula ** {
|
CompAP ap = UseCopula ** {
|
||||||
s = \\vf => case vf of {
|
s = \\vf => case vf of {
|
||||||
VFin P3 n => ap.s ! n ;
|
VPres P3 n => ap.s ! n ! Nom ++ ap.compl ! n ;
|
||||||
VFin _ n => ap.s ! n ++ copula.s ! vf ;
|
VPres _ n => ap.s ! n ! Nom ++ copula.s ! vf ++ ap.compl ! n ;
|
||||||
_ => ap.s ! Sg ++ copula.s ! vf}
|
_ => ap.s ! Sg ! Nom ++ copula.s ! vf ++ ap.compl ! Sg } ;
|
||||||
++ ap.compar ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> Comp ;
|
-- : CN -> Comp ;
|
||||||
CompCN cn = UseCopula ** {
|
CompCN cn = UseCopula ** {
|
||||||
s = \\vf => case vf of {
|
s = \\vf => case vf of {
|
||||||
VFin P3 n => cn.s ! n ! Nom ;
|
VPres P3 n => cn.s ! SgNom -- TODO
|
||||||
VFin _ n => cn.s ! n ! Nom ++ copula.s ! vf ;
|
++ cn.compl ! n ! Nom ;
|
||||||
_ => cn.s ! Sg ! Nom ++ copula.s ! vf} ;
|
|
||||||
|
VPres _ n => cn.s ! SgNom -- TODO
|
||||||
|
++ cn.compl ! n ! Nom
|
||||||
|
++ copula.s ! vf ;
|
||||||
|
|
||||||
|
_ => cn.s ! SgNom
|
||||||
|
++ cn.compl ! Sg ! Nom
|
||||||
|
++ copula.s ! vf} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : NP -> Comp ;
|
-- : NP -> Comp ;
|
||||||
CompNP np = UseCopula ** {
|
CompNP np = UseCopula ** {
|
||||||
s = \\vf => case vf of {
|
s = \\vf => case vf of {
|
||||||
VFin P3 _ => np.s ! Nom ;
|
VPres P3 _ => np.s ! NoPoss ! Nom ;
|
||||||
_ => np.s ! Nom ++ copula.s ! vf } ;
|
_ => np.s ! NoPoss ! Nom ++ copula.s ! vf } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Adv -> Comp ;
|
-- : Adv -> Comp ;
|
||||||
@@ -138,4 +145,24 @@ lin
|
|||||||
-- : VP -- Copula alone;
|
-- : VP -- Copula alone;
|
||||||
UseCopula = useV copula ;
|
UseCopula = useV copula ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
insertObj : ResHun.VPSlash -> NounPhrase -> VerbPhrase = \vps,np -> vps ** {
|
||||||
|
obj = case <vps.sc,vps.c2> of {
|
||||||
|
<SCDat,Nom> => [] ;
|
||||||
|
_ => np.s ! NoPoss ! vps.c2 } ;
|
||||||
|
|
||||||
|
s = \\vf =>
|
||||||
|
-- If verb's subject case is Dat and object Nom, verb agrees with obj.
|
||||||
|
case <vps.sc,vps.c2> of { -- have_V2 needs its object possessed by the subject
|
||||||
|
<SCDat,Nom> =>
|
||||||
|
let agr : Person*Number = case vf of {
|
||||||
|
VPres p n => <p,n> ;
|
||||||
|
_ => <P3,Sg> } ;
|
||||||
|
in np.s ! Poss agr.p1 agr.p2 ! vps.c2
|
||||||
|
++ vps.s ! np.objdef ! agr2vf np.agr ;
|
||||||
|
|
||||||
|
-- Default case: Verb agrees in person and number with subject
|
||||||
|
_ => vps.s ! np.objdef ! vf } ;
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
-- LangEng: I have a cat
|
-- LangEng: I have a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N)))))) NoVoc
|
||||||
LangHun: nekem van egy macskám
|
LangHun: nekem van egy macská &+ m
|
||||||
|
|
||||||
-- LangEng: I have the cat
|
-- LangEng: I have the cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))))) NoVoc
|
||||||
LangHun: nekem megvan a macska
|
LangHun: nekem van a macská &+ m
|
||||||
|
|
||||||
--In this case we don't have to use plural
|
--In this case we don't have to use plural
|
||||||
-- LangEng: I have many cats
|
-- LangEng: I have many cats
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN many_Det (UseN cat_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN many_Det (UseN cat_N)))))) NoVoc
|
||||||
LangHun: nekem van sok macskám
|
LangHun: nekem van sok macská &+ m
|
||||||
|
|
||||||
-- LangEng: I have some cats
|
-- LangEng: I have some cats
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN somePl_Det (UseN cat_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN somePl_Det (UseN cat_N)))))) NoVoc
|
||||||
LangHun: nekem van néhány macskám
|
LangHun: nekem van néhány macská &+ m
|
||||||
-- "néhány" better translation than "némely"
|
|
||||||
|
|||||||
39
src/hungarian/unittest/determiners.gftest
Normal file
39
src/hungarian/unittest/determiners.gftest
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant this_Quant NumSg) (UseN apple_N)))))) NoVoc
|
||||||
|
LangEng: I see this apple
|
||||||
|
LangHun: én látom ezt az almá &+ t
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant this_Quant NumPl) (UseN apple_N)))))) NoVoc
|
||||||
|
LangEng: I see these apples
|
||||||
|
LangHun: én látom ezeket az almákat
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant that_Quant NumPl) (AdjCN (PositA red_A) (UseN apple_N))))))) NoVoc
|
||||||
|
LangEng: I see those red apples
|
||||||
|
LangHun: én látom azokat a piros almákat
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetNP (DetQuant this_Quant NumSg)))))) NoVoc
|
||||||
|
LangEng: I see this
|
||||||
|
LangHun: én látom ezt
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetNP (DetQuant this_Quant NumPl)))))) NoVoc
|
||||||
|
LangEng: I see these
|
||||||
|
LangHun: én látom ezeket
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN somePl_Det (UseN apple_N)))))) NoVoc
|
||||||
|
LangEng: I see some apples
|
||||||
|
LangHun: én látok néhány almá &+ t
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN somePl_Det (AdjCN (PositA red_A) (UseN apple_N))))))) NoVoc
|
||||||
|
LangEng: I see some red apples
|
||||||
|
LangHun: én látok néhány piros almá &+ t
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetNP somePl_Det))))) NoVoc
|
||||||
|
LangEng: I see some
|
||||||
|
LangHun: én látok néhányat
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN few_Det (AdjCN (PositA red_A) (UseN apple_N))))))) NoVoc
|
||||||
|
LangEng: I see few red apples
|
||||||
|
LangHun: én látok kevés piros almá &+ t
|
||||||
|
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN many_Det (AdjCN (PositA red_A) (UseN apple_N))))))) NoVoc
|
||||||
|
LangEng: I see many red apples
|
||||||
|
LangHun: én látok sok piros almá &+ t
|
||||||
@@ -1,364 +0,0 @@
|
|||||||
---------------------
|
|
||||||
-- Noun inflection --
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
-- Beer
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN beer_N))
|
|
||||||
LangEng: under the beer
|
|
||||||
LangHun: a sör alatt
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN beer_N))
|
|
||||||
LangEng: in the beer
|
|
||||||
LangHun: a sörben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN beer_N))
|
|
||||||
LangEng: on the beer
|
|
||||||
LangHun: a sörnél
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN beer_N))
|
|
||||||
# LangEng: of the beer
|
|
||||||
# LangHun: a söré
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN beer_N))
|
|
||||||
LangEng: to the beer
|
|
||||||
LangHun: a sörhöz
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN beer_N))
|
|
||||||
LangHun: a sörökben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN beer_N))
|
|
||||||
LangHun: a söröknél
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumPl) (UseN beer_N))
|
|
||||||
# LangHun: a söröké
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN beer_N))
|
|
||||||
LangHun: a sörökhöz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN beer_N))
|
|
||||||
LangHun: a sörök alatt
|
|
||||||
|
|
||||||
--látom not látok
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN beer_N)))))) NoVoc
|
|
||||||
LangEng: I see the beer
|
|
||||||
LangHun: én látom a sört
|
|
||||||
|
|
||||||
--söröket not sörököt
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN beer_N)))))) NoVoc
|
|
||||||
LangEng: I see the beers
|
|
||||||
LangHun: én látom a söröket
|
|
||||||
|
|
||||||
|
|
||||||
-- Woman
|
|
||||||
-- nő-nőt, not *nő-növet
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN woman_N))
|
|
||||||
LangEng: under the woman
|
|
||||||
LangHun: a nő alatt
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN woman_N))
|
|
||||||
LangEng: in the woman
|
|
||||||
LangHun: a nőben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN woman_N))
|
|
||||||
LangEng: on the woman
|
|
||||||
LangHun: a nőnél
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN woman_N))
|
|
||||||
# LangEng: of the woman
|
|
||||||
# LangHun: a nőé
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN woman_N))
|
|
||||||
LangEng: to the woman
|
|
||||||
LangHun: a nőhöz
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN woman_N))
|
|
||||||
LangHun: a nőkben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN woman_N))
|
|
||||||
LangHun: a nőknél
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumPl) (UseN woman_N))
|
|
||||||
# LangHun: a nőké
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN woman_N))
|
|
||||||
LangHun: a nőkhöz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN woman_N))
|
|
||||||
LangHun: a nők alatt
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN woman_N)))))) NoVoc
|
|
||||||
LangEng: I see the woman
|
|
||||||
LangHun: én látom a nőt
|
|
||||||
|
|
||||||
--nőket not nőköt
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN woman_N)))))) NoVoc
|
|
||||||
LangEng: I see the women
|
|
||||||
LangHun: én látom a nőket
|
|
||||||
|
|
||||||
-- Apple
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN apple_N))
|
|
||||||
LangEng: under the apple
|
|
||||||
LangHun: az alma alatt
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN apple_N))
|
|
||||||
LangEng: in the apple
|
|
||||||
LangHun: az almában
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN apple_N))
|
|
||||||
LangEng: on the apple
|
|
||||||
LangHun: az almánál
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN apple_N))
|
|
||||||
# LangEng: of the apple
|
|
||||||
# LangHun: az almáé
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN apple_N))
|
|
||||||
LangEng: to the apple
|
|
||||||
LangHun: az almához
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN apple_N))
|
|
||||||
LangHun: az almákban
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN apple_N))
|
|
||||||
LangHun: az almáknál
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumPl) (UseN apple_N))
|
|
||||||
# LangHun: az almáké
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN apple_N))
|
|
||||||
LangHun: az almákhoz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN apple_N))
|
|
||||||
LangHun: az almák alatt
|
|
||||||
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN apple_N)))))) NoVoc
|
|
||||||
LangEng: I see the apple
|
|
||||||
LangHun: én látom az almát
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN apple_N)))))) NoVoc
|
|
||||||
LangEng: I see the apples
|
|
||||||
LangHun: én látom az almákat
|
|
||||||
|
|
||||||
-- Bird
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN bird_N))
|
|
||||||
LangEng: under the bird
|
|
||||||
LangHun: a madár alatt
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN bird_N))
|
|
||||||
LangEng: in the bird
|
|
||||||
LangHun: a madárban
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN bird_N))
|
|
||||||
LangEng: on the bird
|
|
||||||
LangHun: a madárnál
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN bird_N))
|
|
||||||
# LangEng: of the bird
|
|
||||||
# LangHun: a madáré
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN bird_N))
|
|
||||||
LangEng: to the bird
|
|
||||||
LangHun: a madárhoz
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN bird_N))
|
|
||||||
LangHun: a madarakban
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN bird_N))
|
|
||||||
LangHun: a madaraknál
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumPl) (UseN bird_N))
|
|
||||||
# LangHun: a madaraké
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN bird_N))
|
|
||||||
LangHun: a madarakhoz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN bird_N))
|
|
||||||
LangHun: a madarak alatt
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN bird_N)))))) NoVoc
|
|
||||||
LangEng: I see the bird
|
|
||||||
LangHun: én látom a madarat
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN bird_N)))))) NoVoc
|
|
||||||
LangEng: I see the birds
|
|
||||||
LangHun: én látom a madarakat
|
|
||||||
|
|
||||||
-- Name
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN name_N))
|
|
||||||
LangEng: under the name
|
|
||||||
LangHun: a név alatt
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN name_N))
|
|
||||||
LangEng: in the name
|
|
||||||
LangHun: a névben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN name_N))
|
|
||||||
LangEng: on the name
|
|
||||||
LangHun: a névnél
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN name_N))
|
|
||||||
# LangEng: of the name
|
|
||||||
# LangHun: a névé
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN name_N))
|
|
||||||
LangEng: to the name
|
|
||||||
LangHun: a névhez
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN name_N))
|
|
||||||
LangHun: a nevekben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN name_N))
|
|
||||||
LangHun: a neveknél
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumPl) (UseN name_N))
|
|
||||||
# LangHun: a neveké
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN name_N))
|
|
||||||
LangHun: a nevekhez
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN name_N))
|
|
||||||
LangHun: a nevek alatt
|
|
||||||
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN name_N)))))) NoVoc
|
|
||||||
LangEng: I see the name
|
|
||||||
LangHun: én látom a nevet
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN name_N)))))) NoVoc
|
|
||||||
LangEng: I see the names
|
|
||||||
LangHun: én látom a neveket
|
|
||||||
|
|
||||||
-- Man
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN man_N))
|
|
||||||
LangEng: under the man
|
|
||||||
LangHun: a férfi alatt
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN man_N))
|
|
||||||
LangEng: in the man
|
|
||||||
LangHun: a férfiban
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN man_N))
|
|
||||||
LangEng: on the man
|
|
||||||
LangHun: a férfinál
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN man_N))
|
|
||||||
# LangEng: of the man
|
|
||||||
# LangHun: a férfié
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN man_N))
|
|
||||||
LangEng: to the man
|
|
||||||
LangHun: a férfihoz
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN man_N))
|
|
||||||
LangHun: a férfiakban
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN man_N))
|
|
||||||
LangHun: a férfiaknál
|
|
||||||
|
|
||||||
# Lang: PrepNP possess_Prep (DetCN (DetQuant DefArt NumPl) (UseN man_N))
|
|
||||||
# LangHun: a férfiaké
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN man_N))
|
|
||||||
LangHun: a férfiakhoz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN man_N))
|
|
||||||
LangHun: a férfiak alatt
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN man_N)))))) NoVoc
|
|
||||||
LangEng: I see the man
|
|
||||||
LangHun: én látom a férfit
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN man_N)))))) NoVoc
|
|
||||||
LangEng: I see the men
|
|
||||||
LangHun: én látom a férfiakat
|
|
||||||
|
|
||||||
|
|
||||||
-- Horse
|
|
||||||
Lang: PrepNP by8means_Prep (DetCN (DetQuant DefArt NumSg) (UseN horse_N))
|
|
||||||
LangEng: by the horse
|
|
||||||
LangHun: a lóval
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN horse_N))
|
|
||||||
LangEng: in the horse
|
|
||||||
LangHun: a lóban
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN horse_N))
|
|
||||||
LangEng: on the horse
|
|
||||||
LangHun: a lónál
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN horse_N))
|
|
||||||
LangEng: to the horse
|
|
||||||
LangHun: a lóhoz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN horse_N))
|
|
||||||
LangEng: under the horse
|
|
||||||
LangHun: a ló alatt
|
|
||||||
|
|
||||||
Lang: PrepNP by8means_Prep (DetCN (DetQuant DefArt NumPl) (UseN horse_N))
|
|
||||||
LangEng: by the horses
|
|
||||||
LangHun: a lovakkal
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN horse_N))
|
|
||||||
LangEng: in the horses
|
|
||||||
LangHun: a lovakban
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN horse_N))
|
|
||||||
LangEng: on the horses
|
|
||||||
LangHun: a lovaknál
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN horse_N))
|
|
||||||
LangEng: to the horses
|
|
||||||
LangHun: a lovakhoz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN horse_N))
|
|
||||||
LangEng: under the horses
|
|
||||||
LangHun: a lovak alatt
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN horse_N)))))) NoVoc
|
|
||||||
LangEng: I see the horse
|
|
||||||
LangHun: én látom a lovat
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN horse_N)))))) NoVoc
|
|
||||||
LangEng: I see the horses
|
|
||||||
LangHun: én látom a lovakat
|
|
||||||
|
|
||||||
|
|
||||||
-- Stone
|
|
||||||
Lang: PrepNP by8means_Prep (DetCN (DetQuant DefArt NumSg) (UseN stone_N))
|
|
||||||
LangHun: a kővel
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN stone_N))
|
|
||||||
LangHun: a kőben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumSg) (UseN stone_N))
|
|
||||||
LangHun: a kőnél
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN stone_N))
|
|
||||||
LangHun: a kőhöz
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumSg) (UseN stone_N))
|
|
||||||
LangHun: a kő alatt
|
|
||||||
|
|
||||||
Lang: PrepNP by8means_Prep (DetCN (DetQuant DefArt NumPl) (UseN stone_N))
|
|
||||||
LangHun: a kövekkel
|
|
||||||
|
|
||||||
Lang: PrepNP in_Prep (DetCN (DetQuant DefArt NumPl) (UseN stone_N))
|
|
||||||
LangHun: a kövekben
|
|
||||||
|
|
||||||
Lang: PrepNP on_Prep (DetCN (DetQuant DefArt NumPl) (UseN stone_N))
|
|
||||||
LangHun: a köveknél
|
|
||||||
|
|
||||||
Lang: PrepNP to_Prep (DetCN (DetQuant DefArt NumPl) (UseN stone_N))
|
|
||||||
LangHun: a kövekhez
|
|
||||||
|
|
||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN stone_N))
|
|
||||||
LangHun: a kövek alatt
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN stone_N)))))) NoVoc
|
|
||||||
LangEng: I see the stone
|
|
||||||
LangHun: én látom a követ
|
|
||||||
|
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN stone_N)))))) NoVoc
|
|
||||||
LangEng: I see the stones
|
|
||||||
LangHun: én látom a köveket
|
|
||||||
23
src/hungarian/unittest/inflection/alma.gftest
Normal file
23
src/hungarian/unittest/inflection/alma.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN apple_N)
|
||||||
|
LangHun: alma
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN apple_N)))
|
||||||
|
LangHun: én látok egy almá &+ t
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN apple_N))
|
||||||
|
LangHun: egy almán
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN apple_N)
|
||||||
|
LangHun: almák
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN apple_N)))
|
||||||
|
LangHun: én látok almákat
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN apple_N))
|
||||||
|
LangHun: egy almához
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN apple_N))
|
||||||
|
LangHun: almákhoz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN apple_N)
|
||||||
|
LangHun: TODO
|
||||||
25
src/hungarian/unittest/inflection/falu.gftest
Normal file
25
src/hungarian/unittest/inflection/falu.gftest
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
--This constructor also takes care of szó <Sg,Acc> or <Sg,Sup> case ("szót" not "szavat")
|
||||||
|
|
||||||
|
Lang: MassNP (UseN village_N)
|
||||||
|
LangHun: falu
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN village_N)))
|
||||||
|
LangHun: én látok egy falut
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN village_N))
|
||||||
|
LangHun: egy falun
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN village_N)
|
||||||
|
LangHun: falvak
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN village_N)))
|
||||||
|
LangHun: én látok falvakat
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN village_N))
|
||||||
|
LangHun: egy faluhoz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN village_N))
|
||||||
|
LangHun: falvakhoz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN village_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/férfi.gftest
Normal file
23
src/hungarian/unittest/inflection/férfi.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN man_N)
|
||||||
|
LangHun: férfi
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN man_N)))
|
||||||
|
LangHun: én látok egy férfi &+ t
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN man_N))
|
||||||
|
LangHun: egy férfin
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN man_N)
|
||||||
|
LangHun: férfiak
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN man_N)))
|
||||||
|
LangHun: én látok férfiakat
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN man_N))
|
||||||
|
LangHun: egy férfihoz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN man_N))
|
||||||
|
LangHun: férfiakhoz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN man_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/fű.gftest
Normal file
23
src/hungarian/unittest/inflection/fű.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN grass_N)
|
||||||
|
LangHun: fű
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN grass_N)))
|
||||||
|
LangHun: én látok egy füvet
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN grass_N))
|
||||||
|
LangHun: egy füvön
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN grass_N)
|
||||||
|
LangHun: füvek
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN grass_N)))
|
||||||
|
LangHun: én látok füveket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN grass_N))
|
||||||
|
LangHun: egy fűhöz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN grass_N))
|
||||||
|
LangHun: füvekhez
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN grass_N)
|
||||||
|
LangHun: TODO
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
i ../../LangHun.gf
|
||||||
|
l -treebank MassNP (UseN PLACEHOLDER)
|
||||||
|
l -treebank PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN PLACEHOLDER)))
|
||||||
|
l -treebank PrepNP on_Prep (MassNP (UseN PLACEHOLDER))
|
||||||
|
l -treebank DetCN (DetQuant IndefArt NumPl) (UseN PLACEHOLDER)
|
||||||
|
l -treebank PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN PLACEHOLDER)))
|
||||||
|
l -treebank PrepNP to_Prep (MassNP (UseN PLACEHOLDER))
|
||||||
|
l -treebank PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN PLACEHOLDER))
|
||||||
|
l -treebank DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN PLACEHOLDER)
|
||||||
26
src/hungarian/unittest/inflection/kő.gftest
Normal file
26
src/hungarian/unittest/inflection/kő.gftest
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
-- Julia's comments:
|
||||||
|
-- dLó: <Sg,Sup> also "kövön" not "köven", but that is due to H_e, which is needed for "köveket" so it's conflicting
|
||||||
|
|
||||||
|
Lang: MassNP (UseN stone_N)
|
||||||
|
LangHun: kő
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN stone_N)))
|
||||||
|
LangHun: én látok egy követ
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN stone_N))
|
||||||
|
LangHun: egy kövön
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN stone_N)
|
||||||
|
LangHun: kövek
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN stone_N)))
|
||||||
|
LangHun: én látok köveket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN stone_N))
|
||||||
|
LangHun: egy kőhöz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN stone_N))
|
||||||
|
LangHun: kövekhez
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN stone_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/ló.gftest
Normal file
23
src/hungarian/unittest/inflection/ló.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN horse_N)
|
||||||
|
LangHun: ló
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN horse_N)))
|
||||||
|
LangHun: én látok egy lovat
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN horse_N))
|
||||||
|
LangHun: egy lovon
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN horse_N)
|
||||||
|
LangHun: lovak
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN horse_N)))
|
||||||
|
LangHun: én látok lovakat
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN horse_N))
|
||||||
|
LangHun: egy lóhoz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN horse_N))
|
||||||
|
LangHun: lovakhoz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN horse_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/madár.gftest
Normal file
23
src/hungarian/unittest/inflection/madár.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN bird_N)
|
||||||
|
LangHun: madár
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN bird_N)))
|
||||||
|
LangHun: én látok egy madarat
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN bird_N))
|
||||||
|
LangHun: egy madáron
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN bird_N)
|
||||||
|
LangHun: madarak
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN bird_N)))
|
||||||
|
LangHun: én látok madarakat
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN bird_N))
|
||||||
|
LangHun: egy madárhoz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN bird_N))
|
||||||
|
LangHun: madarakhoz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN bird_N)
|
||||||
|
LangHun: TODO
|
||||||
5
src/hungarian/unittest/inflection/mkInflection.sh
Executable file
5
src/hungarian/unittest/inflection/mkInflection.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
sed "s/PLACEHOLDER/$1_N/g" < inflection_placeholder.gfs > inflection_concrete.gfs
|
||||||
|
gf --run < inflection_concrete.gfs > $2-new.gftest # don't override the existing ones
|
||||||
|
rm inflection_concrete.gfs
|
||||||
23
src/hungarian/unittest/inflection/név.gftest
Normal file
23
src/hungarian/unittest/inflection/név.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN name_N)
|
||||||
|
LangHun: név
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN name_N)))
|
||||||
|
LangHun: én látok egy nevet
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN name_N))
|
||||||
|
LangHun: egy néven
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN name_N)
|
||||||
|
LangHun: nevek
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN name_N)))
|
||||||
|
LangHun: én látok neveket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN name_N))
|
||||||
|
LangHun: egy névhez
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN name_N))
|
||||||
|
LangHun: nevekhez
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN name_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/nő.gftest
Normal file
23
src/hungarian/unittest/inflection/nő.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN woman_N)
|
||||||
|
LangHun: nő
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN woman_N)))
|
||||||
|
LangHun: én látok egy nőt
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN woman_N))
|
||||||
|
LangHun: egy nőn
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN woman_N)
|
||||||
|
LangHun: nők
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN woman_N)))
|
||||||
|
LangHun: én látok nőket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN woman_N))
|
||||||
|
LangHun: egy nőhöz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN woman_N))
|
||||||
|
LangHun: nőkhöz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN woman_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/szerelem.gftest
Normal file
23
src/hungarian/unittest/inflection/szerelem.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN love_N)
|
||||||
|
LangHun: szerelem
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN love_N)))
|
||||||
|
LangHun: én látok egy szerelmet
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN love_N))
|
||||||
|
LangHun: egy szerelmen
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN love_N)
|
||||||
|
LangHun: szerelmek
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN love_N)))
|
||||||
|
LangHun: én látok szerelmeket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN love_N))
|
||||||
|
LangHun: egy szerelemhez
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN love_N))
|
||||||
|
LangHun: szerelmekhez
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN love_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/sör.gftest
Normal file
23
src/hungarian/unittest/inflection/sör.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN beer_N)
|
||||||
|
LangHun: sör
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN beer_N)))
|
||||||
|
LangHun: én látok egy sört
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN beer_N))
|
||||||
|
LangHun: egy sörön
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN beer_N)
|
||||||
|
LangHun: sörök
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN beer_N)))
|
||||||
|
LangHun: én látok söröket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN beer_N))
|
||||||
|
LangHun: egy sörhöz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN beer_N))
|
||||||
|
LangHun: sörökhöz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN beer_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/tó.gftest
Normal file
23
src/hungarian/unittest/inflection/tó.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN lake_N)
|
||||||
|
LangHun: tó
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN lake_N)))
|
||||||
|
LangHun: én látok egy tavat
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN lake_N))
|
||||||
|
LangHun: egy tavon
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN lake_N)
|
||||||
|
LangHun: tavak
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN lake_N)))
|
||||||
|
LangHun: én látok tavakat
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN lake_N))
|
||||||
|
LangHun: egy tóhoz
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN lake_N))
|
||||||
|
LangHun: tavakhoz
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN lake_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/víz.gftest
Normal file
23
src/hungarian/unittest/inflection/víz.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN water_N)
|
||||||
|
LangHun: víz
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN water_N)))
|
||||||
|
LangHun: én látok egy vízt
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN water_N))
|
||||||
|
LangHun: egy vízen
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN water_N)
|
||||||
|
LangHun: vízek
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN water_N)))
|
||||||
|
LangHun: én látok vízeket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN water_N))
|
||||||
|
LangHun: egy vízhez
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN water_N))
|
||||||
|
LangHun: vízekhez
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN water_N)
|
||||||
|
LangHun: TODO
|
||||||
23
src/hungarian/unittest/inflection/év.gftest
Normal file
23
src/hungarian/unittest/inflection/év.gftest
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Lang: MassNP (UseN year_N)
|
||||||
|
LangHun: év
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN year_N)))
|
||||||
|
LangHun: én látok egy évet
|
||||||
|
|
||||||
|
Lang: PrepNP on_Prep (DetCN (DetQuant IndefArt NumSg) (UseN year_N))
|
||||||
|
LangHun: egy éven
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant IndefArt NumPl) (UseN year_N)
|
||||||
|
LangHun: évek
|
||||||
|
|
||||||
|
Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumPl) (UseN year_N)))
|
||||||
|
LangHun: én látok éveket
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumSg) (UseN year_N))
|
||||||
|
LangHun: egy évhez
|
||||||
|
|
||||||
|
Lang: PrepNP to_Prep (DetCN (DetQuant IndefArt NumPl) (UseN year_N))
|
||||||
|
LangHun: évekhez
|
||||||
|
|
||||||
|
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN year_N)
|
||||||
|
LangHun: TODO
|
||||||
@@ -6,39 +6,39 @@
|
|||||||
|
|
||||||
-- LangEng: I see a man that flies
|
-- LangEng: I see a man that flies
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
||||||
LangHun: én látok egy férfit ami repül
|
LangHun: én látok egy férfi &+ t ami repül
|
||||||
|
|
||||||
-- LangEng: I see the man that flies
|
-- LangEng: I see the man that flies
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
||||||
LangHun: én látom a férfit ami repül
|
LangHun: én látom a férfi &+ t ami repül
|
||||||
|
|
||||||
-- LangEng: I see the man that sees a cat
|
-- LangEng: I see the man that sees a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit ami egy macskát lát
|
LangHun: én látom a férfi &+ t ami egy macská &+ t lát
|
||||||
|
|
||||||
-- LangEng: I see the man that sees the cat
|
-- LangEng: I see the man that sees the cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit ami a macskát látja
|
LangHun: én látom a férfi &+ t ami a macská &+ t látja
|
||||||
|
|
||||||
-- LangEng: I see the man that has a cat
|
-- LangEng: I see the man that has a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit aminek egy macskája van
|
LangHun: én látom a férfi &+ t aminek egy macskáj &+ a van
|
||||||
|
|
||||||
-- LangEng: I see the man that has the cat
|
-- LangEng: I see the man that has the cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit aminek megvan a macska
|
LangHun: én látom a férfi &+ t aminek megvan a macska
|
||||||
-- vet inte riktigt hur jag ska tänka med "the cat", tyckte det kändes mer rätt med "meg-" konstruktionen
|
-- vet inte riktigt hur jag ska tänka med "the cat", tyckte det kändes mer rätt med "meg-" konstruktionen
|
||||||
|
|
||||||
-- LangEng: I see the cat that flies and that is red
|
-- LangEng: I see the cat that flies and that is red
|
||||||
-- Do we need copula in "is red" or is it still fine without?
|
-- Do we need copula in "is red" or is it still fine without?
|
||||||
-- This constructor repeats amit, we have other constructors that don't. I think we don't need it
|
-- This constructor repeats amit, we have other constructors that don't. I think we don't need it
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseComp (CompAP (PositA red_A))))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseComp (CompAP (PositA red_A))))))))))))) NoVoc
|
||||||
LangHun: én látom a macskát ami repül és piros
|
LangHun: én látom a macská &+ t ami repül és piros
|
||||||
--skulle dock byta plats på "piros" och "repül"
|
--skulle dock byta plats på "piros" och "repül"
|
||||||
|
|
||||||
-- LangEng: I see the man that flies and that has a cat
|
-- LangEng: I see the man that flies and that has a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit ami repül és aminek egy macskája van
|
LangHun: én látom a férfi &+ t ami repül és aminek egy macskáj &+ a van
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
@@ -47,26 +47,26 @@ LangHun: én látom a férfit ami repül és aminek egy macskája van
|
|||||||
|
|
||||||
-- LangEng: I see the man that the cat sees
|
-- LangEng: I see the man that the cat sees
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
||||||
LangHun: én látom a férfit amit a macska lát
|
LangHun: én látom a férfi &+ t amit a macska lát
|
||||||
|
|
||||||
-- LangEng: I see a man that the cat sees
|
-- LangEng: I see a man that the cat sees
|
||||||
-- Should this be "amit a macska lát"? Yes
|
-- Should this be "amit a macska lát"? Yes
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
||||||
LangHun: én látok egy férfit amit a macska lát
|
LangHun: én látok egy férfi &+ t amit a macska lát
|
||||||
|
|
||||||
--These last cases not corrected due to "van" confusion
|
--These last cases not corrected due to "van" confusion
|
||||||
-- LangEng: I see a cat that the man has
|
-- LangEng: I see a cat that the man has
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))))))))) NoVoc
|
||||||
LangHun: én látok egy macskát amit a férfinak van
|
LangHun: én látok egy macská &+ t amit a férfi &+ nak van
|
||||||
|
|
||||||
-- LangEng: I see the cat that the man has
|
-- LangEng: I see the cat that the man has
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))))))))) NoVoc
|
||||||
LangHun: én látom a macskát amit a férfinak van
|
LangHun: én látom a macská &+ t amit a férfi &+ nak van
|
||||||
|
|
||||||
-- LangEng: I see the cat that the man has and that flies
|
-- LangEng: I see the cat that the man has and that flies
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))))) NoVoc
|
||||||
LangHun: én látom a macskát amit a férfinak van és amit repül
|
LangHun: én látom a macská &+ t amit a férfi &+ nak van és amit repül
|
||||||
|
|
||||||
-- LangEng: I am redder than the cats that those women have
|
-- LangEng: I am redder than the cats that those women have
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompAP (ComparA red_A (DetCN (DetQuant DefArt NumPl) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant that_Quant NumPl) (UseN woman_N)) (SlashV2a have_V2)))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompAP (ComparA red_A (DetCN (DetQuant DefArt NumPl) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant that_Quant NumPl) (UseN woman_N)) (SlashV2a have_V2)))))))))))) NoVoc
|
||||||
LangHun: én pirosabb vagyok a macskáknál amik azoknak nőknek vannak
|
LangHun: én pirosabb vagyok a macskák &+ nál amik azoknak a nők &+ nek vannak
|
||||||
|
|||||||
@@ -5,26 +5,28 @@ concrete LexiconSlo of Lexicon =
|
|||||||
ResSlo, ParadigmsSlo
|
ResSlo, ParadigmsSlo
|
||||||
in {
|
in {
|
||||||
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
boy_N = declPAN "kluk" ;
|
boy_N = mkN "chlapec" ;
|
||||||
man_N = declMUZ "muž" ;
|
man_N = mkN "muž" ;
|
||||||
teacher_N = declMUZ "učitel" ;
|
teacher_N = mkN "učiteľ" ;
|
||||||
horse_N = declMUZ "kůň" ;
|
horse_N = mkN "kôň" ;
|
||||||
father_N = declMUZ "otec" ;
|
father_N = mkN "otec" ;
|
||||||
husband_N = declPAN "manžel" ;
|
husband_N = mkN "manžel" ;
|
||||||
|
|
||||||
castle_N = declHRAD "hrad" ;
|
castle_N = mkN "hrad" ;
|
||||||
forest_N = declHRAD "les" ;
|
forest_N = mkN "les" ;
|
||||||
machine_N = declSTROJ "stroj" ;
|
machine_N = mkN "stroj" ;
|
||||||
|
|
||||||
woman_N = declZENA "žena" ;
|
woman_N = mkN "žena" ;
|
||||||
school_N = declZENA "škola" ; ----
|
school_N = mkN "učilište" ;
|
||||||
skirt_N = declRUZE "sukně";
|
skirt_N = mkN "sukňa";
|
||||||
street_N = declRUZE "ulice" ;
|
street_N = mkN "ulica" ;
|
||||||
rose_N = declRUZE "růže" ;
|
rose_N = mkN "ruže" ;
|
||||||
song_N = declPISEN "píseň" ;
|
song_N = mkN "pieseň" ;
|
||||||
bed_N = declPISEN "postel" ;
|
bed_N = mkN "posteľ" ;
|
||||||
door_N = declRUZE "dveře" ;
|
{-
|
||||||
|
door_N = mkN "dveře" ;
|
||||||
bone_N = declKOST "kost" ;
|
bone_N = declKOST "kost" ;
|
||||||
village_N = declKOST "ves" ; ----
|
village_N = declKOST "ves" ; ----
|
||||||
|
|
||||||
@@ -43,17 +45,20 @@ concrete LexiconSlo of Lexicon =
|
|||||||
beautiful_A = mkA "krásný" ;
|
beautiful_A = mkA "krásný" ;
|
||||||
clean_A = mkA "čistý" ;
|
clean_A = mkA "čistý" ;
|
||||||
dirty_A = mkA "špinavý" ;
|
dirty_A = mkA "špinavý" ;
|
||||||
|
-}
|
||||||
|
|
||||||
white_A = mkA "bílý" ;
|
--- from Google translate dictionary
|
||||||
black_A = mkA "černý" ;
|
|
||||||
|
white_A = mkA "biely" ;
|
||||||
|
black_A = mkA "čierny" ;
|
||||||
red_A = mkA "červený" ;
|
red_A = mkA "červený" ;
|
||||||
brown_A = mkA "hnědý" ;
|
brown_A = mkA "hnedý" ;
|
||||||
blue_A = mkA "modrý" ;
|
blue_A = mkA "modrý" ; --- belasý
|
||||||
green_A = mkA "zelený" ;
|
green_A = mkA "zelený" ;
|
||||||
yellow_A = mkA "žlutý" ;
|
yellow_A = mkA "žltý" ;
|
||||||
|
|
||||||
buy_V2 = mkV2 (iii_kupovatVerbForms "kupovat") ;
|
buy_V2 = mkV2 (iii_kupovatVerbForms "kupovať") ;
|
||||||
love_V2 = mkV2 (iii_kupovatVerbForms "milovat") ;
|
love_V2 = mkV2 (iii_kupovatVerbForms "milovať") ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ lin
|
|||||||
|
|
||||||
UsePron pron = {
|
UsePron pron = {
|
||||||
s = table {
|
s = table {
|
||||||
Nom | Voc => pron.nom ;
|
Nom => pron.nom ;
|
||||||
Gen => pron.gen ;
|
Gen => pron.gen ;
|
||||||
Dat => pron.dat ;
|
Dat => pron.dat ;
|
||||||
Acc => pron.acc ;
|
Acc => pron.acc ;
|
||||||
@@ -38,7 +38,6 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
clit = table {
|
clit = table {
|
||||||
Nom => pron.cnom ;
|
Nom => pron.cnom ;
|
||||||
Voc => pron.nom ;
|
|
||||||
Gen => pron.cgen ;
|
Gen => pron.cgen ;
|
||||||
Dat => pron.cdat ;
|
Dat => pron.cdat ;
|
||||||
Acc => pron.cacc ;
|
Acc => pron.cacc ;
|
||||||
@@ -46,7 +45,7 @@ lin
|
|||||||
Ins => pron.ins
|
Ins => pron.ins
|
||||||
} ;
|
} ;
|
||||||
prep = table {
|
prep = table {
|
||||||
Nom | Voc => pron.nom ;
|
Nom => pron.nom ;
|
||||||
Gen => pron.pgen ;
|
Gen => pron.pgen ;
|
||||||
Dat => pron.pdat ;
|
Dat => pron.pdat ;
|
||||||
Acc => pron.pacc ;
|
Acc => pron.pacc ;
|
||||||
|
|||||||
@@ -35,31 +35,31 @@ oper mk2Num : Determiner -> Str -> Str -> Str -> LinDigit =
|
|||||||
\unit, teenbase, tenbase, hundred ->
|
\unit, teenbase, tenbase, hundred ->
|
||||||
mkNum unit teenbase (tenbase + "cet") hundred ;
|
mkNum unit teenbase (tenbase + "cet") hundred ;
|
||||||
|
|
||||||
oper mk5Num : Str -> Str -> Str -> Str -> LinDigit =
|
oper mk5Num : Str -> Str -> Str -> Str -> Str -> Str -> LinDigit =
|
||||||
\unit,uniti, teenbase, tenbase ->
|
\unit,unitich,unitim,unitimi, teenbase, tenbase ->
|
||||||
mkNum (regNumeral unit uniti) teenbase (tenbase + "desát") (unit ++ "set") ;
|
mkNum (regNumeral unit unitich unitim unitimi) teenbase (tenbase + "desiat") (unit ++ "sto") ;
|
||||||
|
|
||||||
oper bigNumeral : Str -> LinNumeral = \s -> invarNumeral s ;
|
oper bigNumeral : Str -> LinNumeral = \s -> invarNumeral s ;
|
||||||
|
|
||||||
lin num x = x ;
|
lin num x = x ;
|
||||||
|
|
||||||
lin n2 = mk2Num twoNumeral "dva" "dva" ("dvě" ++ "stě") ;
|
lin n2 = mk2Num twoNumeral "dva" "dva" ("dve" ++ "sto") ;
|
||||||
lin n3 = mk2Num threeNumeral "tři" "tři" ("tři" ++ "sta") ;
|
lin n3 = mk2Num threeNumeral "tri" "tri" ("tri" ++ "sto") ;
|
||||||
lin n4 = mk2Num fourNumeral "čtr" "čtyři" ("čtyři" ++ "sta") ;
|
lin n4 = mk2Num fourNumeral "štr" "štyři" ("styri" ++ "sto") ;
|
||||||
lin n5 = mk5Num "pět" "pěti" "pat" "pa" ;
|
lin n5 = mk5Num "päť" "piatich" "piatim" "piatimi" "pät" "pät" ; ----
|
||||||
lin n6 = mk5Num "šest" "šesti" "šest" "še" ;
|
lin n6 = mk5Num "šest" "šestich" "šestim" "šestimi" "šest" "šest" ; ----
|
||||||
lin n7 = mk5Num "sedm" "sedmi" "sedm" "sedm";
|
lin n7 = mk5Num "sedem" "sedemich" "sedemim" "sedemimi" "sedem" "sedem"; ----
|
||||||
lin n8 = mk5Num "osm" "osmi" "osm" "osm";
|
lin n8 = mk5Num "osem" "osemich" "osemim" "osemimi" "osem" "osem";
|
||||||
lin n9 = mk5Num "devět" "devíti" "devate" "deva" ;
|
lin n9 = mk5Num "deväť" "deviatich" "deviatim" "deviatimi" "deväť" "deväť" ;
|
||||||
|
|
||||||
lin pot01 = {
|
lin pot01 = {
|
||||||
unit = oneNumeral.s ; hundred = "sto" ; ten = "deset" ; teen = "jedenáct" ;
|
unit = oneNumeral.s ; hundred = "sto" ; ten = "desať" ; teen = "jedenásť" ;
|
||||||
size = Num1
|
size = Num1
|
||||||
} ;
|
} ;
|
||||||
lin pot0 d = d ;
|
lin pot0 d = d ;
|
||||||
|
|
||||||
lin pot110 = bigNumeral "deset" ;
|
lin pot110 = bigNumeral "desať" ;
|
||||||
lin pot111 = bigNumeral "jedenáct" ;
|
lin pot111 = bigNumeral "jedenásť" ;
|
||||||
lin pot1to19 d = bigNumeral d.teen ;
|
lin pot1to19 d = bigNumeral d.teen ;
|
||||||
|
|
||||||
lin pot0as1 n = {s = n.unit ; size = n.size} ;
|
lin pot0as1 n = {s = n.unit ; size = n.size} ;
|
||||||
@@ -91,8 +91,8 @@ oper tfSize : NumSize -> NumSize = \sz ->
|
|||||||
oper mkTh : Str -> NumSize -> Str = \attr,size ->
|
oper mkTh : Str -> NumSize -> Str = \attr,size ->
|
||||||
case size of {
|
case size of {
|
||||||
Num1 => "tisíc" ;
|
Num1 => "tisíc" ;
|
||||||
Num2_4 => attr ++ "tisíce" ;
|
Num2_4 => attr ++ "tisíc" ;
|
||||||
Num5 => attr ++ "tisíc"
|
Num5 => attr ++ "tisí"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper determinerStr : Determiner -> Str = \d -> d.s ! Masc Anim ! Nom ;
|
oper determinerStr : Determiner -> Str = \d -> d.s ! Masc Anim ! Nom ;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
resource ParadigmsSlo = open CatSlo, ResSlo, Prelude in {
|
resource ParadigmsSlo = open CatSlo, ResSlo, (R=ResSlo), Prelude in {
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
-- Parameters
|
-- Parameters
|
||||||
@@ -26,8 +26,6 @@ oper
|
|||||||
= Dat ;
|
= Dat ;
|
||||||
accusative : Case
|
accusative : Case
|
||||||
= Acc ;
|
= Acc ;
|
||||||
vocative : Case
|
|
||||||
= ResSlo.Voc ;
|
|
||||||
locative : Case
|
locative : Case
|
||||||
= Loc ;
|
= Loc ;
|
||||||
instrumental : Case
|
instrumental : Case
|
||||||
@@ -37,6 +35,7 @@ oper
|
|||||||
-- Nouns
|
-- Nouns
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
mkN : (nom : Str) -> N
|
mkN : (nom : Str) -> N
|
||||||
= \nom -> lin N (guessNounForms nom) ;
|
= \nom -> lin N (guessNounForms nom) ;
|
||||||
@@ -48,35 +47,36 @@ oper
|
|||||||
-- However, they have some defaults that may have to be overwritten.
|
-- However, they have some defaults that may have to be overwritten.
|
||||||
-- This can be done easily by overriding those formes with record extension (**).
|
-- This can be done easily by overriding those formes with record extension (**).
|
||||||
-- The default extensions are shown in comments; if the default is correct, no extension is needed.
|
-- The default extensions are shown in comments; if the default is correct, no extension is needed.
|
||||||
|
-- Notice that some paradigms take two arguments, some take one.
|
||||||
|
|
||||||
panN : Str -> N -- default ** {pnom = +i}
|
chlapN : Str -> N
|
||||||
= \s -> lin N (declPAN s) ;
|
= \s -> lin N (R.chlapN s) ;
|
||||||
predsedaN : Str -> N -- default ** {sgen = +i}
|
hrdinaN : Str -> N
|
||||||
= \s -> lin N (declPREDSEDA s) ;
|
= \s -> lin N (R.hrdinaN s) ;
|
||||||
hradN : Str -> N -- default ** {sgen,sloc = +u}
|
dubN : Str -> N
|
||||||
= \s -> lin N (declHRAD s) ;
|
= \s -> lin N (R.dubN s) ;
|
||||||
zenaN : Str -> N -- default ** {pgen = zen}
|
|
||||||
= \s -> lin N (declZENA s) ;
|
|
||||||
mestoN : Str -> N -- default ** {sloc = +u ; pgen = mest ; ploc = +ech}
|
|
||||||
= \s -> lin N (declMESTO s) ;
|
|
||||||
muzN : Str -> N
|
|
||||||
= \s -> lin N (declMUZ s) ;
|
|
||||||
soudceN : Str -> N -- default ** {sdat,sloc = +i ; pnom = +i}
|
|
||||||
= \s -> lin N (declSOUDCE s) ;
|
|
||||||
strojN : Str -> N
|
strojN : Str -> N
|
||||||
= \s -> lin N (declSTROJ s) ;
|
= \s -> lin N (R.strojN s) ;
|
||||||
ruzeN : Str -> N
|
ponyN : Str -> N
|
||||||
= \s -> lin N (declRUZE s) ;
|
= \s -> lin N (R.ponyN s) ;
|
||||||
pisenN : Str -> N
|
zenaN : (snom, pgen : Str) -> N
|
||||||
= \s -> lin N (declPISEN s) ;
|
= \s,p -> lin N (R.zenaN s) ** {pgen = p} ;
|
||||||
kostN : Str -> N
|
ulicaN : (snom, pgen : Str) -> N
|
||||||
= \s -> lin N (declKOST s) ;
|
= \s,p -> lin N (R.ulicaN s) ** {pgen = p} ;
|
||||||
kureN : Str -> N
|
dlanN : (snom, pgen : Str) -> N
|
||||||
= \s -> lin N (declKURE s) ;
|
= \s,p -> lin N (R.dlanN s p) ;
|
||||||
moreN : Str -> N -- default ** {pgen = +í}
|
kostN : (snom, pgen : Str) -> N
|
||||||
= \s -> lin N (declMORE s) ;
|
= \s,p -> lin N (R.kostN s p) ;
|
||||||
staveniN : Str -> N
|
mestoN : (snom, pgen : Str) -> N
|
||||||
= \s -> lin N (declSTAVENI s) ;
|
= \s,p -> lin N (R.mestoN s) ** {pgen = p} ;
|
||||||
|
srdceN : (snom, pgen : Str) -> N
|
||||||
|
= \s,p -> lin N (R.srdceN s) ** {pgen = p} ;
|
||||||
|
vysvedcenieN : Str -> N
|
||||||
|
= \s -> lin N (R.vysvedcenieN s) ;
|
||||||
|
dievcaN : Str -> N
|
||||||
|
= \s -> lin N (R.dievcaN s) ;
|
||||||
|
dievceniecN : Str -> N
|
||||||
|
= \s -> lin N (R.dievceniecN s) ;
|
||||||
|
|
||||||
-- The full definition of the noun record is
|
-- The full definition of the noun record is
|
||||||
-- {
|
-- {
|
||||||
@@ -92,27 +92,31 @@ oper
|
|||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : Str -> A
|
mkA : Str -> A
|
||||||
= \s -> lin A (case s of {
|
= \s -> lin A (guessAdjForms s)
|
||||||
_ + "ý" => mladyAdjForms s ;
|
|
||||||
_ + "í" => jarniAdjForms s ;
|
|
||||||
_ + "ův" => otcuvAdjForms s ;
|
|
||||||
_ + "in" => matcinAdjForms s ;
|
|
||||||
_ => Predef.error ("no mkA for" ++ s)
|
|
||||||
}) ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mladyA : Str -> A
|
peknyA : Str -> A
|
||||||
= \s -> lin A (mladyAdjForms s) ;
|
= \s -> lin A (R.peknyA s) ;
|
||||||
jarniA : Str -> A
|
krasnyA : Str -> A
|
||||||
= \s -> lin A (jarniAdjForms s) ;
|
= \s -> lin A (R.krasnyA s) ;
|
||||||
otcuvA : Str -> A
|
cudziA : Str -> A
|
||||||
= \s -> lin A (otcuvAdjForms s) ;
|
= \s -> lin A (R.cudziA s) ;
|
||||||
matcinA : Str -> A
|
rydziA : Str -> A
|
||||||
= \s -> lin A (matcinAdjForms s) ;
|
= \s -> lin A (R.rydziA s) ;
|
||||||
|
otcovA : Str -> A
|
||||||
|
= \s -> lin A (R.otcovA s) ;
|
||||||
|
|
||||||
|
|
||||||
mkA2 : A -> Prep -> A2
|
mkA2 : A -> Prep -> A2
|
||||||
= \a,p -> lin A2 (a ** {c = p}) ;
|
= \a,p -> lin A2 (a ** {c = p}) ;
|
||||||
|
|
||||||
|
-- the full definition of the adjective record is
|
||||||
|
-- {
|
||||||
|
-- msnom, fsnom, nsnom, msgen, fsgen, msdat, fsacc, msloc, msins, fsins,
|
||||||
|
-- ampnom, pgen, pins : Str
|
||||||
|
-- }
|
||||||
|
--
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
-- Verbs
|
-- Verbs
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ lin
|
|||||||
PConjConj conj = {s = conj.s2} ;
|
PConjConj conj = {s = conj.s2} ;
|
||||||
|
|
||||||
NoVoc = {s = []} ;
|
NoVoc = {s = []} ;
|
||||||
VocNP np = {s = np.s ! Voc} ;
|
VocNP np = {s = np.s ! Nom} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,20 +4,20 @@ concrete StructuralSlo of Structural = CatSlo **
|
|||||||
lin
|
lin
|
||||||
and_Conj = mkConj "a" ;
|
and_Conj = mkConj "a" ;
|
||||||
by8agent_Prep = mkPrep "od" Gen ; ---- TODO this means "from", there might be no good translation
|
by8agent_Prep = mkPrep "od" Gen ; ---- TODO this means "from", there might be no good translation
|
||||||
few_Det = invarNumeral "málo" ; -- CEG 6.8 --- TODO genitive mála
|
few_Det = invarNumeral "málo" ; -----
|
||||||
for_Prep = mkPrep "pro" accusative ;
|
for_Prep = mkPrep "pro" accusative ;
|
||||||
from_Prep = mkPrep (pre {"s"|"z" => "ze" ; _ => "z"}) Gen ; ---- consonant clusters
|
from_Prep = mkPrep (pre {"s"|"z" => "zo" ; _ => "z"}) Gen ; ---- consonant clusters
|
||||||
have_V2 = mkV2 haveVerbForms ;
|
have_V2 = mkV2 haveVerbForms ;
|
||||||
in_Prep = mkPrep (pre {"v"|"m" => "ve" ; _ => "v"}) Loc ; ----
|
in_Prep = mkPrep (pre {"v"|"m" => "vo" ; _ => "v"}) Loc ; ----
|
||||||
many_Det = regNumeral "mnoho" "mnoha" ; -- CEG 6.8 ----
|
many_Det = regNumeral "mnoho" "mnohých" "mnohým" "mnohými" ; -- CEG 6.8 ----
|
||||||
or_Conj = mkConj "nebo" ;
|
or_Conj = mkConj "alebo" ;
|
||||||
somePl_Det = regNumeral "několik" "několika" ; -- CEG 6.8 ----
|
somePl_Det = {s = \\g,c => (demPronFormsAdjective (mkDemPronForms "nektor") "").s ! g ! Pl ! c ; size = Num5} ;
|
||||||
something_NP = {s,clit,prep = \\c => "ně" + coForms ! c ; a = Ag Neutr Sg P3 ; hasClit = False} ; -- CEG 5.6.3
|
something_NP = {s,clit,prep = \\c => "nie" + coForms ! c ; a = Ag Neutr Sg P3 ; hasClit = False} ; -- CEG 5.6.3
|
||||||
possess_Prep = mkPrep "" Gen ;
|
possess_Prep = mkPrep "" Gen ;
|
||||||
that_Quant = demPronFormsAdjective (mkDemPronForms "tamt") "" ;
|
that_Quant = demPronFormsAdjective (mkDemPronForms "tamt") "" ;
|
||||||
this_Quant = demPronFormsAdjective (mkDemPronForms "t") "to" ;
|
this_Quant = demPronFormsAdjective (mkDemPronForms "t") "to" ;
|
||||||
to_Prep = mkPrep "do" Gen ;
|
to_Prep = mkPrep "do" Gen ;
|
||||||
with_Prep = mkPrep (pre {"s"|"z" => "se" ; _ => "s"}) Ins ; ----
|
with_Prep = mkPrep (pre {"s"|"z" => "so" ; _ => "s"}) Ins ; ----
|
||||||
|
|
||||||
i_Pron = personalPron (Ag (Masc Anim) Sg P1) ;
|
i_Pron = personalPron (Ag (Masc Anim) Sg P1) ;
|
||||||
youSg_Pron = personalPron (Ag (Masc Anim) Sg P2) ;
|
youSg_Pron = personalPron (Ag (Masc Anim) Sg P2) ;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:../abstract:../common:../prelude
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
concrete AllTur of AllTurAbs =
|
concrete AllTur of AllTurAbs =
|
||||||
LangTur,
|
LangTur
|
||||||
ExtendTur
|
-- ,ExtendTur
|
||||||
** {} ;
|
** {} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user