mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
added Human/NonHuman gender to select the right relative pronoun
This commit is contained in:
@@ -7,7 +7,7 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
-- : A -> AP ;
|
-- : A -> AP ;
|
||||||
PositA a = emptyAP ** {
|
PositA a = emptyAP ** {
|
||||||
s = \\n,c =>
|
s = \\n,c =>
|
||||||
let adj : Noun = (a ** {s = a.s ! Posit}) in
|
let adj : Noun = (a ** {s = a.s ! Posit; g = NonHuman}) in
|
||||||
caseFromStem glue adj c n ;
|
caseFromStem glue adj c n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
-- : A -> AP ; -- warmer
|
-- : A -> AP ; -- warmer
|
||||||
UseComparA a = emptyAP ** {
|
UseComparA a = emptyAP ** {
|
||||||
s = \\n,c =>
|
s = \\n,c =>
|
||||||
let adj : Noun = (a ** {s = a.s ! Compar}) in
|
let adj : Noun = (a ** {s = a.s ! Compar; g = NonHuman}) in
|
||||||
caseFromStem glue adj c n ;
|
caseFromStem glue adj c n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -52,12 +52,12 @@ lin
|
|||||||
in np ** {s = linTable} ;
|
in np ** {s = linTable} ;
|
||||||
-- Relative sentences
|
-- Relative sentences
|
||||||
lincat
|
lincat
|
||||||
[RS] = {s1,s2 : Number => Case => Str} ;
|
[RS] = {s1,s2 : Gender => Number => Case => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
BaseRS = twoTable2 Number Case ;
|
BaseRS = twoTable3 Gender Number Case ;
|
||||||
ConsRS = consrTable2 Number Case comma ;
|
ConsRS = consrTable3 Gender Number Case comma ;
|
||||||
ConjRS = conjunctDistrTable2 Number Case ;
|
ConjRS = conjunctDistrTable3 Gender Number Case ;
|
||||||
|
|
||||||
{-
|
{-
|
||||||
lincat
|
lincat
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ oper
|
|||||||
\noun,n,c -> caseFromStem glue noun c n ;
|
\noun,n,c -> caseFromStem glue noun c n ;
|
||||||
|
|
||||||
adjCase : Adjective -> Degree -> Number -> Case -> Str =
|
adjCase : Adjective -> Degree -> Number -> Case -> Str =
|
||||||
\adj,d,n,c -> caseFromStem glue {s = adj.s ! d ; h = adj.h} c n ;
|
\adj,d,n,c -> caseFromStem glue {s = adj.s ! d ; h = adj.h ; g = NonHuman} c n ;
|
||||||
|
|
||||||
possForm : Noun -> Number -> Person -> Number -> Str =
|
possForm : Noun -> Number -> Person -> Number -> Str =
|
||||||
\noun,possd,person,possr ->
|
\noun,possd,person,possr ->
|
||||||
|
|||||||
@@ -11,4 +11,8 @@ lin
|
|||||||
CompoundN n1 n2 =
|
CompoundN n1 n2 =
|
||||||
n2 ** {s = \\nc => n1.s ! SgNom ++ BIND ++ n2.s ! nc} ;
|
n2 ** {s = \\nc => n1.s ! SgNom ++ BIND ++ n2.s ! nc} ;
|
||||||
|
|
||||||
|
UseDAP = DetNP ;
|
||||||
|
UseDAPMasc,
|
||||||
|
UseDAPFem = \dap -> DetNP dap ** {g = Human} ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ lin art_N = mkN "művészet" "művészetet" ;
|
|||||||
----
|
----
|
||||||
-- B
|
-- B
|
||||||
|
|
||||||
lin baby_N = mkN "bébi" "bébit" ;
|
lin baby_N = humanN (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" "bankot" ;
|
lin bank_N = mkN "bank" "bankot" ;
|
||||||
@@ -65,7 +65,7 @@ lin cat_N = mkN "macska" "macskát";
|
|||||||
lin ceiling_N = roof_N ;
|
lin ceiling_N = roof_N ;
|
||||||
lin chair_N = mkN "szék" "széket";
|
lin chair_N = mkN "szék" "széket";
|
||||||
lin cheese_N = mkN "sajt" "sajtot" ;
|
lin cheese_N = mkN "sajt" "sajtot" ;
|
||||||
lin child_N = mkN "gyerek" "gyereket" ;
|
lin child_N = humanN (mkN "gyerek" "gyereket") ;
|
||||||
lin church_N = mkN "templom" "templomot" ;
|
lin church_N = mkN "templom" "templomot" ;
|
||||||
lin city_N = mkN "város" "várost" ;
|
lin city_N = mkN "város" "várost" ;
|
||||||
lin clean_A = mkA "tiszta" ;
|
lin clean_A = mkA "tiszta" ;
|
||||||
@@ -92,7 +92,7 @@ lin day_N = mkN "nap" "napot" ;
|
|||||||
-- 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" "orvost";
|
lin doctor_N = humanN (mkN "orvos" "orvost");
|
||||||
lin dog_N = mkN "kutya" "kutyát";
|
lin dog_N = mkN "kutya" "kutyát";
|
||||||
lin door_N = mkN "ajtó" "ajtót" ;
|
lin door_N = mkN "ajtó" "ajtót" ;
|
||||||
-- lin drink_V2 = mkV2 "" ;
|
-- lin drink_V2 = mkV2 "" ;
|
||||||
@@ -139,7 +139,7 @@ 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ő" "hűtőt" ;
|
lin fridge_N = mkN "hűtő" "hűtőt" ;
|
||||||
lin friend_N = mkN "barát" "barátot" ;
|
lin friend_N = humanN (mkN "barát" "barátot") ;
|
||||||
lin fruit_N = mkN "gyümölcs" "gyümölcsöt" "gyümölcsök" "gyümölcse" ; --TODO: plural PossPl2 fails "gyümölcseitek" instead of "gyümölcseitök", wovel harmony changing?
|
lin fruit_N = mkN "gyümölcs" "gyümölcsöt" "gyümölcsök" "gyümölcse" ; --TODO: plural PossPl2 fails "gyümölcseitek" instead of "gyümölcseitök", wovel harmony changing?
|
||||||
lin full_A = mkA "tele" ;
|
lin full_A = mkA "tele" ;
|
||||||
-- --lin fun_AV
|
-- --lin fun_AV
|
||||||
@@ -148,7 +148,7 @@ lin full_A = mkA "tele" ;
|
|||||||
-- G
|
-- G
|
||||||
|
|
||||||
lin garden_N = mkN "kert" "kertet" ;
|
lin garden_N = mkN "kert" "kertet" ;
|
||||||
lin girl_N = mkN "lány" "lányt";
|
lin girl_N = humanN (mkN "lány" "lányt");
|
||||||
-- lin give_V3 = mkV3 "" ;
|
-- lin give_V3 = mkV3 "" ;
|
||||||
lin glove_N = mkN "kesztyű" "kesztyűt" ;
|
lin glove_N = mkN "kesztyű" "kesztyűt" ;
|
||||||
-- lin go_V = mkV "" ;
|
-- lin go_V = mkV "" ;
|
||||||
@@ -179,7 +179,7 @@ lin horse_N = mkN "ló" "lovat";
|
|||||||
lin hot_A = mkA "forró" ;
|
lin hot_A = mkA "forró" ;
|
||||||
lin house_N = mkN "ház" "házat" ;
|
lin house_N = mkN "ház" "házat" ;
|
||||||
-- lin hunt_V2 = mkV2 "" ;
|
-- lin hunt_V2 = mkV2 "" ;
|
||||||
lin husband_N = mkN "férj" "férjet";
|
lin husband_N = humanN (mkN "férj" "férjet");
|
||||||
|
|
||||||
--------
|
--------
|
||||||
-- I - K
|
-- I - K
|
||||||
@@ -190,7 +190,7 @@ 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" "királyt" ;
|
lin king_N = humanN (mkN "király" "királyt") ;
|
||||||
lin knee_N = mkN "térd" "térdet";
|
lin knee_N = mkN "térd" "térdet";
|
||||||
-- lin know_V2 = mkV2 "" ;
|
-- lin know_V2 = mkV2 "" ;
|
||||||
-- lin know_VQ = mkVQ "" ;
|
-- lin know_VQ = mkVQ "" ;
|
||||||
@@ -223,12 +223,12 @@ lin love_N = mkN "szerelem" "szerelmet";
|
|||||||
----
|
----
|
||||||
-- M
|
-- M
|
||||||
|
|
||||||
lin man_N = mkN "férfi" "ak" harmA ; -- force plural allomorph and a-harmony
|
lin man_N = humanN (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" "húst";
|
lin meat_N = mkN "hús" "húst";
|
||||||
lin milk_N = mkN "tej" "tejet" ;
|
lin milk_N = mkN "tej" "tejet" ;
|
||||||
lin moon_N = mkN "hold" "holdat" ;
|
lin moon_N = mkN "hold" "holdat" ;
|
||||||
lin mother_N2 = mkN2 (mkN "anya" "anyát") ;
|
lin mother_N2 = mkN2 (humanN (mkN "anya" "anyát")) ;
|
||||||
lin mountain_N = mkN "hegy" "hegyet";
|
lin mountain_N = mkN "hegy" "hegyet";
|
||||||
lin mouth_N = mkN "száj" "szájat" ;
|
lin mouth_N = mkN "száj" "szájat" ;
|
||||||
lin music_N = mkN "zene" "zenét";
|
lin music_N = mkN "zene" "zenét";
|
||||||
@@ -259,12 +259,12 @@ 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" "békét";
|
lin peace_N = mkN "béke" "békét";
|
||||||
lin pen_N = mkN "toll" "tollat" ;
|
lin pen_N = mkN "toll" "tollat" ;
|
||||||
lin person_N = mkN "ember" "embert";
|
lin person_N = humanN (mkN "ember" "embert");
|
||||||
lin planet_N = mkN "bolygó" "bolygót" ;
|
lin planet_N = mkN "bolygó" "bolygót" ;
|
||||||
lin plastic_N = mkN "műanyag" "műanyagot" "műanyagok" "műanyaga" ;
|
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" "rendőrt"; --the police "rendőrség"
|
lin policeman_N = humanN (mkN "rendőr" "rendőrt"); --the police "rendőrség"
|
||||||
lin priest_N = mkN "pap" "papot" "papok" "papja" ;
|
lin priest_N = humanN (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 "" ;
|
||||||
@@ -272,7 +272,7 @@ lin priest_N = mkN "pap" "papot" "papok" "papja" ;
|
|||||||
-- --------
|
-- --------
|
||||||
-- -- Q - R
|
-- -- Q - R
|
||||||
--
|
--
|
||||||
lin queen_N = mkN "kírálynő" "kírálynőt" ;
|
lin queen_N = humanN (mkN "kírálynő" "kírálynőt") ;
|
||||||
lin question_N = mkN "kérdés" "kérdést" ;
|
lin question_N = mkN "kérdés" "kérdést" ;
|
||||||
lin radio_N = mkN "rádió" "rádiót" ;
|
lin radio_N = mkN "rádió" "rádiót" ;
|
||||||
lin rain_N = mkN "eső" "esőt" ;
|
lin rain_N = mkN "eső" "esőt" ;
|
||||||
@@ -363,7 +363,7 @@ lin table_N = mkN "asztal" "asztalt";
|
|||||||
lin tail_N = mkN "farok" "farkot";
|
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" "tanárt" ;
|
lin teacher_N = humanN (mkN "tanár" "tanárt") ;
|
||||||
lin television_N = mkN "tévé" "tévét" ; --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" ;
|
||||||
@@ -401,14 +401,14 @@ 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" "feleséget" ;
|
lin wife_N = humanN (mkN "feleség" "feleséget") ;
|
||||||
-- lin win_V2 = mkV2 "" ;
|
-- lin win_V2 = mkV2 "" ;
|
||||||
lin wind_N = mkN "szél" "szelet" ;
|
lin wind_N = mkN "szél" "szelet" ;
|
||||||
lin window_N = mkN "ablak" "ablakot" "ablakok" "ablaka" ;
|
lin window_N = mkN "ablak" "ablakot" "ablakok" "ablaka" ;
|
||||||
lin wine_N = mkN "bor" "bort";
|
lin wine_N = mkN "bor" "bort";
|
||||||
lin wing_N = mkN "szárny" "szárnyat";
|
lin wing_N = mkN "szárny" "szárnyat";
|
||||||
-- lin wipe_V2 = mkV2 "" ;
|
-- lin wipe_V2 = mkV2 "" ;
|
||||||
lin woman_N = mkN "nő" "nőt" ;
|
lin woman_N = humanN (mkN "nő" "nőt") ;
|
||||||
-- lin wonder_VQ = mkVQ "" ;
|
-- lin wonder_VQ = mkVQ "" ;
|
||||||
lin wood_N = mkN "fa" "fát"; --same as tree
|
lin wood_N = mkN "fa" "fát"; --same as tree
|
||||||
lin worm_N = mkN "féreg" "férget"; --also "kukac"
|
lin worm_N = mkN "féreg" "férget"; --also "kukac"
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
|
|
||||||
-- : NP -> RS -> NP ; -- Paris, which is here
|
-- : NP -> RS -> NP ; -- Paris, which is here
|
||||||
RelNP np rs = np ** {
|
RelNP np rs = np ** {
|
||||||
s = \\p,c => np.s ! p ! c ++ bindComma ++ rs.s ! np.agr.p2 ! c ;
|
s = \\p,c => np.s ! p ! c ++ bindComma ++ rs.s ! np.g ! np.agr.p2 ! c ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Determiners can form noun phrases directly.
|
-- Determiners can form noun phrases directly.
|
||||||
@@ -159,7 +159,7 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
-- : A -> Ord ;
|
-- : A -> Ord ;
|
||||||
OrdSuperl a = {
|
OrdSuperl a = {
|
||||||
s = \\n,c =>
|
s = \\n,c =>
|
||||||
let adj : Noun = (a ** {s = a.s ! Superl}) in
|
let adj : Noun = (a ** {s = a.s ! Superl; g=NonHuman}) in
|
||||||
caseFromStem glue adj c n ;
|
caseFromStem glue adj c n ;
|
||||||
n = Sg -- ?? is this meaningful?
|
n = Sg -- ?? is this meaningful?
|
||||||
} ;
|
} ;
|
||||||
@@ -220,7 +220,7 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
|
|
||||||
-- : CN -> RS -> CN ;
|
-- : CN -> RS -> CN ;
|
||||||
RelCN cn rs = cn ** {
|
RelCN cn rs = cn ** {
|
||||||
compl = \\n,c => cn.compl ! n ! c ++ rs.s ! n ! c
|
compl = \\n,c => cn.compl ! n ! c ++ rs.s ! cn.g ! n ! c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> Adv -> CN ;
|
-- : CN -> Adv -> CN ;
|
||||||
@@ -248,29 +248,20 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
--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
|
compl = \\n,c => cn.compl ! n ! c ++ np.s ! NoPoss ! Dat ++ np.postmod
|
||||||
-- } ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
||||||
-- PartNP cn np = cn ** {
|
-- PartNP cn np = cn ** {
|
||||||
-- } ;
|
-- } ;
|
||||||
|
|
||||||
{-
|
|
||||||
|
|
||||||
-- This is different from the partitive, as shown by many languages.
|
|
||||||
|
|
||||||
-- : Det -> NP -> NP ;
|
|
||||||
CountNP det np = np **
|
|
||||||
{ } ; -- Nonsense for DefArt or IndefArt
|
|
||||||
|
|
||||||
--3 Conjoinable determiners and ones with adjectives
|
--3 Conjoinable determiners and ones with adjectives
|
||||||
|
|
||||||
-- : DAP -> AP -> DAP ; -- the large (one)
|
-- : DAP -> AP -> DAP ; -- the large (one)
|
||||||
AdjDAP dap ap = dap ** { } ;
|
AdjDAP dap ap = dap ;
|
||||||
|
|
||||||
-- : Det -> DAP ; -- this (or that)
|
-- : Det -> DAP ; -- this (or that)
|
||||||
DetDAP det = det ;
|
DetDAP det = det ;
|
||||||
-}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
resource NounMorphoHun = ParamHun ** open Prelude, Predef in {
|
resource NounMorphoHun = ParamHun ** open Prelude, Predef in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Noun = {s : NumCaseStem => Str ; h : Harm} ;
|
Noun = {s : NumCaseStem => Str ; h : Harm ; g : Gender} ;
|
||||||
|
|
||||||
-- Paradigm functions
|
-- Paradigm functions
|
||||||
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
||||||
@@ -275,6 +275,7 @@ oper
|
|||||||
PossdSg_PossrSg1P2 => init possdSg_PossrSg1P2 ;
|
PossdSg_PossrSg1P2 => init possdSg_PossrSg1P2 ;
|
||||||
PossdPl => possdPl } ;
|
PossdPl => possdPl } ;
|
||||||
h = h ;
|
h = h ;
|
||||||
|
g = NonHuman
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -593,7 +594,7 @@ oper
|
|||||||
|
|
||||||
-- All other singular forms and stems
|
-- All other singular forms and stems
|
||||||
c => w + endCaseSg c ! h } ;
|
c => w + endCaseSg c ! h } ;
|
||||||
|
g = NonHuman
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ oper
|
|||||||
mkN : (unoka : Str) -> (testvér : N) -> N ; -- Compound noun. Use: `mkN "unoka" (mkN "testvér")` (would give wrong harmony with `mkN "unokatestvér"`)
|
mkN : (unoka : Str) -> (testvér : N) -> N ; -- Compound noun. Use: `mkN "unoka" (mkN "testvér")` (would give wrong harmony with `mkN "unokatestvér"`)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
humanN : N -> N = \n -> n ** {g = Human} ;
|
||||||
|
|
||||||
mkPN : overload {
|
mkPN : overload {
|
||||||
mkPN : Str -> PN ; -- Singular PN out of a string
|
mkPN : Str -> PN ; -- Singular PN out of a string
|
||||||
mkPN : Str -> Number -> PN -- PN with a given number
|
mkPN : Str -> Number -> PN -- PN with a given number
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ oper
|
|||||||
-- Nouns
|
-- Nouns
|
||||||
|
|
||||||
param
|
param
|
||||||
|
Gender = Human | NonHuman ;
|
||||||
|
|
||||||
NumCaseStem =
|
NumCaseStem =
|
||||||
SgNom | SgAccStem | SgSup -- These may use 2-3 different stems
|
SgNom | SgAccStem | SgSup -- These may use 2-3 different stems
|
||||||
|
|||||||
@@ -13,16 +13,30 @@ lin
|
|||||||
|
|
||||||
-- : RP ;
|
-- : RP ;
|
||||||
IdRP = {s =
|
IdRP = {s =
|
||||||
table {Sg => caseTable "ami" "amit" "aminek" -- nom, acc, dat
|
table {
|
||||||
"amibe" "amiben" "amiből" -- ill, ine, ela
|
Human =>
|
||||||
"amihez" "aminél" "amitől" -- all, ade, abl
|
table {Sg => caseTable "aki" "akit" "akinek" -- nom, acc, dat
|
||||||
"amire" "amin" "amiről" -- sub, sup, del
|
"akibe" "akiben" "akiből" -- ill, ine, ela
|
||||||
"amiért" "amivel" "amivé" ; -- cau, ins, tra
|
"akihez" "akinél" "akitől" -- all, ade, abl
|
||||||
Pl => caseTable "amik" "amiket" "amiknek" -- nom, acc, dat
|
"akire" "akin" "akiről" -- sub, sup, del
|
||||||
"amikbe" "amikben" "amikből" -- ill, ine, ela
|
"akiért" "akivel" "akivé" ; -- cau, ins, tra
|
||||||
"amikhez" "amiknél" "amiktől" -- all, ade, abl
|
Pl => caseTable "akik" "akiket" "akiknek" -- nom, acc, dat
|
||||||
"amikre" "amiken" "amikről" -- sub, sup, del
|
"akikbe" "akikben" "akikből" -- ill, ine, ela
|
||||||
"amikért" "amikkel" "amikké"}; -- cau, ins, tra
|
"akikhez" "akiknél" "akiktől" -- all, ade, abl
|
||||||
|
"akikre" "akiken" "akikről" -- sub, sup, del
|
||||||
|
"akikért" "akikkel" "akikké"} ; -- cau, ins, tra
|
||||||
|
NonHuman =>
|
||||||
|
table {Sg => caseTable "ami" "amit" "aminek" -- nom, acc, dat
|
||||||
|
"amibe" "amiben" "amiből" -- ill, ine, ela
|
||||||
|
"amihez" "aminél" "amitől" -- all, ade, abl
|
||||||
|
"amire" "amin" "amiről" -- sub, sup, del
|
||||||
|
"amiért" "amivel" "amivé" ; -- cau, ins, tra
|
||||||
|
Pl => caseTable "amik" "amiket" "amiknek" -- nom, acc, dat
|
||||||
|
"amikbe" "amikben" "amikből" -- ill, ine, ela
|
||||||
|
"amikhez" "amiknél" "amiktől" -- all, ade, abl
|
||||||
|
"amikre" "amiken" "amikről" -- sub, sup, del
|
||||||
|
"amikért" "amikkel" "amikké"} -- cau, ins, tra
|
||||||
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ oper
|
|||||||
CNoun : Type = Noun ** {
|
CNoun : Type = Noun ** {
|
||||||
compl : Number => Case => Str ;
|
compl : Number => Case => Str ;
|
||||||
postmod : Str ;
|
postmod : Str ;
|
||||||
|
g : Gender
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkCaseNoun : Str -> Number => Case => Str = \s ->
|
mkCaseNoun : Str -> Number => Case => Str = \s ->
|
||||||
@@ -75,6 +76,7 @@ oper
|
|||||||
agr : Person*Number ;
|
agr : Person*Number ;
|
||||||
objdef : ObjDef ;
|
objdef : ObjDef ;
|
||||||
empty : Str ; -- standard trick for pro-drop
|
empty : Str ; -- standard trick for pro-drop
|
||||||
|
g : Gender ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
NounPhrase : Type = BaseNP ** {
|
NounPhrase : Type = BaseNP ** {
|
||||||
@@ -86,6 +88,7 @@ oper
|
|||||||
s = \\_,_ => [] ;
|
s = \\_,_ => [] ;
|
||||||
agr = <P3,Sg> ;
|
agr = <P3,Sg> ;
|
||||||
objdef = Indef ;
|
objdef = Indef ;
|
||||||
|
g = NonHuman ;
|
||||||
postmod, empty = [] ;
|
postmod, empty = [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -604,16 +607,16 @@ oper
|
|||||||
|
|
||||||
-- Relative
|
-- Relative
|
||||||
|
|
||||||
RP : Type = {s : Number => Case => Str} ;
|
RP : Type = {s : Gender => Number => Case => Str} ;
|
||||||
RClause : Type = {s : Tense => Anteriority => Polarity => Number => Case => Str} ;
|
RClause : Type = {s : Tense => Anteriority => Polarity => Gender => Number => Case => Str} ;
|
||||||
|
|
||||||
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 -> {
|
||||||
s = \\t,a,p,n,c => let subjcase : Case = case vp.sc of {
|
s = \\t,a,p,g,n,c => let subjcase : Case = case vp.sc of {
|
||||||
SCNom => Nom ;
|
SCNom => Nom ;
|
||||||
SCDat => Dat }
|
SCDat => Dat }
|
||||||
in rp.s ! n ! subjcase
|
in rp.s ! g ! n ! subjcase
|
||||||
++ if_then_Pol p [] "nem"
|
++ if_then_Pol p [] "nem"
|
||||||
++ vp.obj -- ! <rp.agr.p1,n>
|
++ vp.obj -- ! <rp.agr.p1,n>
|
||||||
++ vp.adv
|
++ vp.adv
|
||||||
@@ -625,10 +628,11 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
||||||
s = \\t,a,p,n,c => let objcase : Case = case cls.c2 of {
|
s = \\t,a,p,g,n,c => let objcase : Case = case cls.c2 of {
|
||||||
Acc => c ;
|
Acc => c ;
|
||||||
_ => cls.c2 }
|
_ => cls.c2
|
||||||
in rp.s ! n ! objcase
|
}
|
||||||
|
in rp.s ! g ! n ! objcase
|
||||||
++ cls.s ! t ! a ! p
|
++ cls.s ! t ! a ! p
|
||||||
} ;
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ lin
|
|||||||
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
||||||
|
|
||||||
-- : Temp -> Pol -> RCl -> RS ;
|
-- : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl t p cl = {s = \\n,c => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! n ! c} ;
|
UseRCl t p cl = {s = \\g,n,c => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! g ! n ! c} ;
|
||||||
|
|
||||||
-- AdvS : Adv -> S -> S ; -- then I will go home
|
-- AdvS : Adv -> S -> S ; -- then I will go home
|
||||||
AdvS = advS "" ;
|
AdvS = advS "" ;
|
||||||
|
|||||||
@@ -121,14 +121,14 @@ lin under_Prep = nomAdp "alatt" ;
|
|||||||
-- Pron
|
-- Pron
|
||||||
|
|
||||||
-- Pronouns are closed class, no constructor in ParadigmsHun.
|
-- Pronouns are closed class, no constructor in ParadigmsHun.
|
||||||
i_Pron = pronTable ! <P1,Sg> ;
|
i_Pron = pronTable ! <P1,Sg> ** {g = Human} ;
|
||||||
youPol_Pron,
|
youPol_Pron,
|
||||||
youSg_Pron = pronTable ! <P2,Sg> ;
|
youSg_Pron = pronTable ! <P2,Sg> ** {g = Human} ;
|
||||||
he_Pron,
|
he_Pron,
|
||||||
she_Pron,
|
she_Pron = pronTable ! <P3,Sg> ** {g = Human} ;
|
||||||
it_Pron = pronTable ! <P3,Sg> ;
|
it_Pron = pronTable ! <P3,Sg> ;
|
||||||
we_Pron = pronTable ! <P1,Pl> ;
|
we_Pron = pronTable ! <P1,Pl> ** {g = Human} ;
|
||||||
youPl_Pron = pronTable ! <P2,Pl> ;
|
youPl_Pron = pronTable ! <P2,Pl> ** {g = Human} ;
|
||||||
they_Pron = pronTable ! <P3,Pl> ;
|
they_Pron = pronTable ! <P3,Pl> ;
|
||||||
|
|
||||||
--lin whatPl_IP = ;
|
--lin whatPl_IP = ;
|
||||||
|
|||||||
Reference in New Issue
Block a user