diff --git a/src/hungarian/AdjectiveHun.gf b/src/hungarian/AdjectiveHun.gf index 4a105d10..a9fdefd6 100644 --- a/src/hungarian/AdjectiveHun.gf +++ b/src/hungarian/AdjectiveHun.gf @@ -18,8 +18,12 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in { } ; -- : A2 -> NP -> AP ; -- married to her - ComplA2 a2 np = PositA a2 ** { - compl = \\n => applyAdp a2.c2 np ; + ComplA2 a2 np = let ap : AP = PositA a2 in ap ** { + s = case a2.isPost of {False => ap.s ; _ => \\_,_ => []} ; + compl = \\n => applyAdp a2.c2 np + ++ case a2.isPost of { + True => ap.s ! n ! Nom ; + False => [] } ; } ; -- : A2 -> AP ; -- married to itself diff --git a/src/hungarian/ParadigmsHun.gf b/src/hungarian/ParadigmsHun.gf index b382baf3..57c5101b 100644 --- a/src/hungarian/ParadigmsHun.gf +++ b/src/hungarian/ParadigmsHun.gf @@ -158,13 +158,13 @@ oper } ; 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 -> - lin A2 ((mkAdj s) ** {c2 = p}) ; + lin A2 ((mkAdj s) ** {c2 = p ; isPost = False}) ; mkA2 : Str -> Case -> A2 = \s,c -> - lin A2 ((mkAdj s) ** {c2 = casePrep c}) ; + lin A2 ((mkAdj s) ** {c2 = casePrep c ; isPost = False}) ; mkA2 : A -> Prep -> A2 = \a,p -> - lin A2 (a ** {c2 = p}) ; + lin A2 (a ** {c2 = p ; isPost = False}) ; } ; mkV = overload { diff --git a/src/hungarian/ResHun.gf b/src/hungarian/ResHun.gf index bbaabd65..441fb606 100644 --- a/src/hungarian/ResHun.gf +++ b/src/hungarian/ResHun.gf @@ -318,6 +318,7 @@ oper Adjective2 : Type = Adjective ** { c2 : Adposition ; + isPost : Bool ; -- put adjective past the thing it modifies } ; mkAdj : Str -> Adjective = \sgnom -> mkAdj2 sgnom (mkNoun sgnom) ;