From 02f8015213dd8ed08b3174b605b71222dc7f28a7 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 11 Feb 2020 13:30:38 +0100 Subject: [PATCH 1/3] (Jpn) Export Animacy from ResJpn --- src/japanese/ParadigmsJpn.gf | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/japanese/ParadigmsJpn.gf b/src/japanese/ParadigmsJpn.gf index 79a4f7e27..80888a4d2 100644 --- a/src/japanese/ParadigmsJpn.gf +++ b/src/japanese/ParadigmsJpn.gf @@ -5,38 +5,42 @@ flags coding = utf8 ; oper - VerbGroup : Type ; + VerbGroup : Type ; -- Parameter for mkV* gr1 : VerbGroup ; -- Basic form ends in -u, consonant stem. gr2 : VerbGroup ; -- Basic form ends in -iru/-eru, vowel stem. suru : VerbGroup ; -- Irregular: kuru kuru : VerbGroup ; -- Irregular: suru + Animacy : Type ; -- Parameter for mkN* + animate : Animacy ; + inanimate : Animacy ; + mkN = overload { mkN : (man : Str) -> N -- Inanimate noun. Counter is つ and not replaceable. = \n -> lin N (regNoun n Inanim "つ" False True) ; ---- AR 15/11/2014 - mkN : (man : Str) -> (anim : Animateness) -> N -- Animacy given as argument. Counter is つ and not replaceable. + mkN : (man : Str) -> (anim : Animacy) -> N -- Animacy given as argument. Counter is つ and not replaceable. = \n,a -> lin N (regNoun n a "つ" False True) ; - mkN : (kane,okane : Str) -> (anim : Animateness) -> N -- Style variation (plain, respectful) and animacy given. Counter is つ and not replaceable. + mkN : (kane,okane : Str) -> (anim : Animacy) -> N -- Style variation (plain, respectful) and animacy given. Counter is つ and not replaceable. = \kane,okane,a -> lin N (styleNoun kane okane a "つ" False True) ; - mkN : (man : Str) -> (anim : Animateness) -> (counter : Str) -> (counterReplace : Bool) -> N -- No style variation. Arguments are animacy, counter and whether counter is replaceable. + mkN : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> N -- No style variation. Arguments are animacy, counter and whether counter is replaceable. = \n,a,c,b -> lin N (regNoun n a c b False) ; - mkN : (man : Str) -> (anim : Animateness) -> (counter : Str) -> (counterReplace : Bool) -> + mkN : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> (men : Str) -> N -- Like previous, but unpredictable plural. = \n,a,c,b,pl -> lin N (numberNoun n a c b pl False) ; - mkN : (kane,okane : Str) -> (anim : Animateness) -> (counter : Str) -> + mkN : (kane,okane : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> N -- Style variation, animacy, counter and whether counter is replaceable. = \kane,okane,a,c,b -> lin N (styleNoun kane okane a c b False) ; - mkN : (tsuma,okusan : Str) -> (anim : Animateness) -> (counter : Str) -> + mkN : (tsuma,okusan : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> (tsumatachi : Str) -> N -- Worst case paradigm: style variation, animacy, counter, whether counter is replaceable and unpredictable plural. = \tsuma,okusan,a,c,b,tsumatachi -> lin N (mkNoun tsuma okusan tsumatachi tsumatachi a c b False) } ; - mkN2 : (man : Str) -> (anim : Animateness) -> (counter : Str) -> (counterReplace : Bool) -> + mkN2 : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> (men : Str) -> (prep : Str) -> N2 = \n,a,c,b,pl,pr -> lin N2 (numberNoun n a c b pl False) ** {prep = pr ; object = \\st => []} ; - mkN3 : (distance : Str) -> (prep1: Str) -> (prep2: Str) -> (anim : Animateness) -> N3 + mkN3 : (distance : Str) -> (prep1: Str) -> (prep2: Str) -> (anim : Animacy) -> N3 = \n,p1,p2,a -> lin N3 (regNoun n a "つ" False True) ** {prep1 = p1; prep2 = p2} ; mkPN = overload { @@ -47,9 +51,9 @@ oper } ; mkPron = overload { - mkPron : (kare : Str) -> (Pron1Sg : Bool) -> (anim : Animateness) -> Pron + mkPron : (kare : Str) -> (Pron1Sg : Bool) -> (anim : Animacy) -> Pron = \kare,b,a -> lin Pron (regPron kare b a) ; - mkPron : (boku,watashi : Str) -> (Pron1Sg : Bool) -> (anim : Animateness) -> Pron + mkPron : (boku,watashi : Str) -> (Pron1Sg : Bool) -> (anim : Animacy) -> Pron = \boku,watashi,b,a -> lin Pron (stylePron boku watashi b a) } ; @@ -130,6 +134,10 @@ oper --. -- Hidden definitions + Animacy : Type = ResJpn.Animateness ; + animate : Animacy = ResJpn.Anim ; + inanimate : Animacy = ResJpn.Inanim ; + VerbGroup : Type = ResJpn.VerbGroup ; gr1 : VerbGroup = Gr1 ; gr2 : VerbGroup = Gr2 ; From 75a5ea0cf10bc064b39ef592b44152456a71438b Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 11 Feb 2020 13:41:55 +0100 Subject: [PATCH 2/3] (Jpn) Fix formatting issues in ParadigmsJpn, for producing API docs. --- src/japanese/ParadigmsJpn.gf | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/japanese/ParadigmsJpn.gf b/src/japanese/ParadigmsJpn.gf index 80888a4d2..445f05105 100644 --- a/src/japanese/ParadigmsJpn.gf +++ b/src/japanese/ParadigmsJpn.gf @@ -24,20 +24,16 @@ oper = \kane,okane,a -> lin N (styleNoun kane okane a "つ" False True) ; mkN : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> N -- No style variation. Arguments are animacy, counter and whether counter is replaceable. = \n,a,c,b -> lin N (regNoun n a c b False) ; - mkN : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> - (men : Str) -> N -- Like previous, but unpredictable plural. + mkN : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> (men : Str) -> N -- Like previous, but unpredictable plural. = \n,a,c,b,pl -> lin N (numberNoun n a c b pl False) ; - mkN : (kane,okane : Str) -> (anim : Animacy) -> (counter : Str) -> - (counterReplace : Bool) -> N -- Style variation, animacy, counter and whether counter is replaceable. + mkN : (kane,okane : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> N -- Style variation, animacy, counter and whether counter is replaceable. = \kane,okane,a,c,b -> lin N (styleNoun kane okane a c b False) ; - mkN : (tsuma,okusan : Str) -> (anim : Animacy) -> (counter : Str) -> - (counterReplace : Bool) -> (tsumatachi : Str) -> N -- Worst case paradigm: style variation, animacy, counter, whether counter is replaceable and unpredictable plural. + mkN : (tsuma,okusan : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> (tsumatachi : Str) -> N -- Worst case paradigm: style variation, animacy, counter, whether counter is replaceable and unpredictable plural. = \tsuma,okusan,a,c,b,tsumatachi -> lin N (mkNoun tsuma okusan tsumatachi tsumatachi a c b False) } ; - mkN2 : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> - (men : Str) -> (prep : Str) -> N2 = \n,a,c,b,pl,pr -> + mkN2 : (man : Str) -> (anim : Animacy) -> (counter : Str) -> (counterReplace : Bool) -> (men : Str) -> (prep : Str) -> N2 = \n,a,c,b,pl,pr -> lin N2 (numberNoun n a c b pl False) ** {prep = pr ; object = \\st => []} ; mkN3 : (distance : Str) -> (prep1: Str) -> (prep2: Str) -> (anim : Animacy) -> N3 @@ -58,14 +54,17 @@ oper } ; mkA = overload { - mkA : (ookina : Str) -> A = \a -> lin A (regAdj a) ; - mkA : (kekkonshiteiru,kikonno : Str) -> A = \pred,attr -> lin A (VerbalA pred attr) + mkA : (ookina : Str) -> A -- One form for both predicative and attribute + = \a -> lin A (regAdj a) ; + mkA : (kekkonshiteiru,kikonno : Str) -> A -- Verbal adjective, arguments are predicative and attributive + = \pred,attr -> lin A (VerbalA pred attr) } ; mkA2 = overload { - mkA2 : (yasui : Str) -> (prep : Str) -> A2 = \a,p -> lin A2 (regAdj a) ** {prep = p} ; - mkA2 : (pred : Str) -> (attr : Str) -> (prep : Str) -> A2 = - \pred,attr,pr -> lin A2 (VerbalA pred attr) ** {prep = pr} + mkA2 : (yasui : Str) -> (prep : Str) -> A2 -- 2-place adjective. Arguments: adjective (same for predicative and attributive) and object marker. + = \a,p -> lin A2 (regAdj a) ** {prep = p} ; + mkA2 : (pred : Str) -> (attr : Str) -> (prep : Str) -> A2 -- Predicative, attributive and object marker. + = \pred,attr,pr -> lin A2 (VerbalA pred attr) ** {prep = pr} } ; mkV = overload { From cefb149530244a3432796f530269971aa1165877 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 11 Feb 2020 15:28:19 +0100 Subject: [PATCH 3/3] (Jpn) Fix bug in DetCN: missing cn.s when counterReplace=True --- src/japanese/NounJpn.gf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/japanese/NounJpn.gf b/src/japanese/NounJpn.gf index a3e12c2cf..0c4ad21a5 100644 --- a/src/japanese/NounJpn.gf +++ b/src/japanese/NounJpn.gf @@ -10,7 +10,8 @@ flags coding = utf8 ; True => case cn.hasAttr of { True => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive ++ "の" ++ cn.s ! det.n ! st ; - False => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive + False => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive + ++ cn.s ! det.n ! st } ; False => case of { => cn.object ! st ++ det.quant ! st ++ det.num ++ "個" ++ det.postpositive