forked from GitHub/gf-rgl
support plural PNs
This commit is contained in:
@@ -100,7 +100,7 @@ concrete CatGer of Cat =
|
||||
N = ResGer.Noun ;
|
||||
N2 = ResGer.Noun ** {c2 : Preposition} ;
|
||||
N3 = ResGer.Noun ** {c2,c3 : Preposition} ;
|
||||
PN = {s : Case => Str; g : Gender} ;
|
||||
PN = {s : Case => Str; g : Gender; n : Number} ;
|
||||
|
||||
-- tense with possibility to choose conjunctive forms
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
||||
|
||||
UsePN pn = {
|
||||
s = \\c => usePrepC c (\k -> pn.s ! k) ;
|
||||
a = agrgP3 pn.g Sg ;
|
||||
a = agrgP3 pn.g pn.n ;
|
||||
-- isLight = True ; -- means: this is not a heavy NP, but comes before negation
|
||||
-- isPron = False ; -- HL 6/2019: to regulate Pron/NonPronNP order
|
||||
w = WLight ;
|
||||
|
||||
@@ -127,6 +127,7 @@ mkN : overload {
|
||||
|
||||
mkPN : overload {
|
||||
mkPN : Str -> PN ; -- regular name with genitive in "s", masculine
|
||||
mkPN : Str -> Number -> PN ; -- regular name with genitive in "s", masculine
|
||||
mkPN : Str -> Gender -> PN ; -- regular name with genitive in "s"
|
||||
|
||||
-- If only the genitive differs, two strings are needed.
|
||||
@@ -464,18 +465,19 @@ mkV2 : overload {
|
||||
mkN3 = \n,p,q -> n ** {c2 = p ; c3 = q ; lock_N3 = <>} ;
|
||||
|
||||
mk2PN = \karolus, karoli, g ->
|
||||
{s = table {Gen => karoli ; _ => karolus} ; g = g ; lock_PN = <>} ;
|
||||
{s = table {Gen => karoli ; _ => karolus} ; g = g ; n = Sg ; lock_PN = <>} ;
|
||||
regPN = \horst, g ->
|
||||
mk2PN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) g ;
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : Str -> PN = \s -> regPN s Masc ;
|
||||
mkPN : Str -> Number -> PN = \s,n -> regPN s Masc ** {n=n} ;
|
||||
mkPN : Str -> Gender -> PN = regPN ;
|
||||
mkPN : N -> PN = \n -> lin PN {s = n.s ! Sg; g = n.g} ;
|
||||
mkPN : N -> PN = \n -> lin PN {s = n.s ! Sg; g = n.g; n = Sg} ;
|
||||
mkPN : (nom,gen : Str) -> Gender -> PN = mk2PN ;
|
||||
mkPN : (nom,acc,dat,gen : Str) -> Gender -> PN = \nom,acc,dat,gen,g ->
|
||||
{s = table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
|
||||
g = g ; lock_PN = <>}
|
||||
g = g ; n = Sg ; lock_PN = <>}
|
||||
} ;
|
||||
|
||||
mk2PN : (karolus, karoli : Str) -> Gender -> PN ; -- karolus, karoli
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
concrete SymbolGer of Symbol = CatGer ** open Prelude, ResGer in {
|
||||
|
||||
lin
|
||||
SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||
IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||
FloatPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||
NumPN i = {s = i.s ! Neutr ; g = Neutr} ; --- c
|
||||
SymbPN i = {s = \\c => i.s ; g = Neutr ; n = Sg} ; --- c
|
||||
IntPN i = {s = \\c => i.s ; g = Neutr ; n = Sg} ; --- c
|
||||
FloatPN i = {s = \\c => i.s ; g = Neutr ; n = Sg} ; --- c
|
||||
NumPN i = {s = i.s ! Neutr ; g = Neutr ; n = Sg} ; --- c
|
||||
|
||||
CNIntNP cn i = {
|
||||
s = \\c => cn.s ! Weak ! Sg ! Nom ++ i.s ;
|
||||
|
||||
Reference in New Issue
Block a user