From 475e1ea4d9ead99a7bda717c8be9db8a1eefa852 Mon Sep 17 00:00:00 2001 From: bjorn Date: Wed, 25 Jun 2008 17:30:50 +0000 Subject: [PATCH] Inflect German Numeral pot01 ("ein") in gender and case. Needed to get phrases such as "eine grosse Pizza" correct when "eine" is a Numeral rather than indef art. --- lib/resource-1.4/german/CatGer.gf | 4 ++-- lib/resource-1.4/german/MorphoGer.gf | 4 ++-- lib/resource-1.4/german/NounGer.gf | 18 +++++++++--------- lib/resource-1.4/german/NumeralGer.gf | 6 +++--- lib/resource-1.4/german/QuestionGer.gf | 2 +- lib/resource-1.4/german/ResGer.gf | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/resource-1.4/german/CatGer.gf b/lib/resource-1.4/german/CatGer.gf index b373df421..02e7db861 100644 --- a/lib/resource-1.4/german/CatGer.gf +++ b/lib/resource-1.4/german/CatGer.gf @@ -55,8 +55,8 @@ concrete CatGer of Cat = Quant = {s : Number => Gender => Case => Str ; a : Adjf} ; Art = {s : Bool => Number => Gender => Case => Str ; a : Adjf} ; Predet = {s : Number => Gender => Case => Str} ; - Num = {s : Str ; n : Number ; isNum : Bool} ; - Card = {s : Str ; n : Number} ; + Num = {s : Gender => Case => Str ; n : Number ; isNum : Bool} ; + Card = {s : Gender => Case => Str ; n : Number} ; Ord = {s : AForm => Str} ; -- Numeral diff --git a/lib/resource-1.4/german/MorphoGer.gf b/lib/resource-1.4/german/MorphoGer.gf index 2dad7f35b..b24c23b6f 100644 --- a/lib/resource-1.4/german/MorphoGer.gf +++ b/lib/resource-1.4/german/MorphoGer.gf @@ -71,7 +71,7 @@ oper cardOrd : Str -> Str -> CardOrd => Str = \drei,dritte -> table { - NCard => drei ; + NCard _ _ => drei ; NOrd a => (regA (init dritte)).s ! Posit ! a } ; @@ -90,7 +90,7 @@ oper regDigit : Str -> LinDigit = \vier -> mkDigit vier (vier + "zehn") (vier + "zig") (vier + "te") ; - invNum : CardOrd = NCard ; + invNum : CardOrd = NCard Masc Nom ; } ; diff --git a/lib/resource-1.4/german/NounGer.gf b/lib/resource-1.4/german/NounGer.gf index 4c8dc3551..b6e31d155 100644 --- a/lib/resource-1.4/german/NounGer.gf +++ b/lib/resource-1.4/german/NounGer.gf @@ -43,7 +43,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in { a = quant.a in { s = \\g,c => quant.s ! n ! g ! c ++ - num.s ++ ord.s ! agrAdj g (adjfCase a c) n c ; + num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ; n = n ; a = a } ; @@ -53,7 +53,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in { n = num.n ; a = quant.a in { - s = \\g,c => quant.s ! n ! g ! c ++ num.s ; + s = \\g,c => quant.s ! n ! g ! c ++ num.s!g!c ; n = n ; a = a } ; @@ -64,7 +64,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in { a = quant.a in { s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ - num.s ++ ord.s ! agrAdj g (adjfCase a c) n c ; + num.s!g!c ++ ord.s ! agrAdj g (adjfCase a c) n c ; n = n ; a = a } ; @@ -75,7 +75,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in { a = quant.a in { s = \\g,c => quant.s ! True ! n ! g ! c ++ - num.s ; + num.s!g!c ; n = n ; a = a } ; @@ -99,16 +99,16 @@ concrete NounGer of Noun = CatGer ** open ResGer, Prelude in { NumCard n = n ** {isNum = True} ; - NumPl = {s = []; n = Pl ; isNum = False} ; - NumSg = {s = []; n = Sg ; isNum = False} ; + NumPl = {s = \\g,c => []; n = Pl ; isNum = False} ; + NumSg = {s = \\g,c => []; n = Sg ; isNum = False} ; - NumDigits numeral = {s = numeral.s ! NCard; n = numeral.n } ; + NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ; - NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n } ; + NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ; - AdNum adn num = {s = adn.s ++ num.s; n = num.n } ; + AdNum adn num = {s = \\g,c => adn.s ++ num.s!g!c; n = num.n } ; OrdSuperl a = {s = a.s ! Superl} ; diff --git a/lib/resource-1.4/german/NumeralGer.gf b/lib/resource-1.4/german/NumeralGer.gf index 3cf608f64..f12280131 100644 --- a/lib/resource-1.4/german/NumeralGer.gf +++ b/lib/resource-1.4/german/NumeralGer.gf @@ -22,7 +22,7 @@ lin pot01 = { s = \\f => table { - NCard => "ein" ; ---- + NCard g c => "ein" + pronEnding ! GSg g ! c ; NOrd af => (regA "erst").s ! Posit ! af } ; n = Sg @@ -53,7 +53,7 @@ lin IDig d = d ; IIDig d i = { - s = \\o => d.s ! NCard ++ i.s ! o ; + s = \\o => d.s ! invNum ++ i.s ! o ; n = Pl } ; @@ -74,7 +74,7 @@ lin mkDig : Str -> TDigit = \c -> mk2Dig c (c + "e") ; mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> { - s = table {NCard => c ; NOrd _ => o} ; + s = table {NCard _ _ => c ; NOrd _ => o} ; n = n } ; diff --git a/lib/resource-1.4/german/QuestionGer.gf b/lib/resource-1.4/german/QuestionGer.gf index d52960680..d94742c5f 100644 --- a/lib/resource-1.4/german/QuestionGer.gf +++ b/lib/resource-1.4/german/QuestionGer.gf @@ -89,7 +89,7 @@ concrete QuestionGer of Question = CatGer ** open ResGer in { let n = num.n in { - s = \\g,c => idet.s ! n ! g ! c ++ num.s ; + s = \\g,c => idet.s ! n ! g ! c ++ num.s!g!c ; n = n } ; diff --git a/lib/resource-1.4/german/ResGer.gf b/lib/resource-1.4/german/ResGer.gf index 9df407b3d..219749b6f 100644 --- a/lib/resource-1.4/german/ResGer.gf +++ b/lib/resource-1.4/german/ResGer.gf @@ -87,7 +87,7 @@ resource ResGer = ParamX ** open Prelude in { --2 For $Numeral$ - CardOrd = NCard | NOrd AForm ; + CardOrd = NCard Gender Case | NOrd AForm ; DForm = DUnit | DTeen | DTen ; --2 Transformations between parameter types