mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-27 11:56:29 -06:00
Synchronized remote master; then pulled and resolved conflicts
This commit is contained in:
+57
-11
@@ -39,6 +39,9 @@ oper
|
||||
feminine : Gender ;
|
||||
neuter : Gender ;
|
||||
|
||||
male : Sex ;
|
||||
female : Sex ;
|
||||
|
||||
-- To abstract over case names, we define the following.
|
||||
|
||||
Case : Type ;
|
||||
@@ -121,6 +124,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.
|
||||
@@ -137,7 +141,26 @@ mkN : overload {
|
||||
|
||||
} ;
|
||||
|
||||
-- To extract the number of a noun phrase --never used in RGL
|
||||
|
||||
mkGN : overload {
|
||||
mkGN : Str -> Sex -> GN ; -- regular name with genitive in "s"
|
||||
mkGN : (nom,gen : Str) -> Sex -> GN ; -- name with other genitive
|
||||
mkGN : (nom,acc,dat,gen : Str) -> Sex -> GN ; -- name with all case forms
|
||||
} ;
|
||||
|
||||
mkSN : overload {
|
||||
mkSN : Str -> GN ; -- regular name with genitive in "s", masculine
|
||||
|
||||
-- If only the genitive differs, two strings are needed.
|
||||
|
||||
mkSN : (nom,gen : Str) -> GN ; -- name with other genitive
|
||||
|
||||
-- In the worst case, all four forms are needed.
|
||||
|
||||
mkSN : (nom,acc,dat,gen : Str) -> GN ; -- name with all case forms
|
||||
} ;
|
||||
|
||||
-- To extract the number of a noun phrase
|
||||
|
||||
-- ifPluralNP : NP -> Bool
|
||||
-- = \np -> case (numberAgr np.a) of {Sg => False ; Pl => True} ;
|
||||
@@ -367,10 +390,8 @@ mkV2 : overload {
|
||||
masculine = Masc ;
|
||||
feminine = Fem ;
|
||||
neuter = Neutr ;
|
||||
nominative = Nom ;
|
||||
accusative = Acc ;
|
||||
dative = Dat ;
|
||||
genitive = Gen ;
|
||||
male = Male ;
|
||||
female = Female ;
|
||||
|
||||
singular = Sg ;
|
||||
plural = Pl ;
|
||||
@@ -457,24 +478,46 @@ 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
|
||||
regPN : (Johann : Str) -> Gender -> PN ;
|
||||
-- Johann, Johanns ; Johannes, Johannes
|
||||
|
||||
mkGN = overload {
|
||||
mkGN : Str -> Sex -> GN = \nom,g -> lin GN {s = (regPN nom (sex2gender g)).s; g = g} ; -- regular name with genitive in "s"
|
||||
mkGN : (nom,gen : Str) -> Sex -> GN = \nom,gen,g -> lin GN {s = (mk2PN nom gen (sex2gender g)).s; g = g} ; -- name with other genitive
|
||||
mkGN : (nom,acc,dat,gen : Str) -> Sex -> GN = \nom,acc,dat,gen,g ->
|
||||
{s = table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
|
||||
g = g ; lock_GN = <>}
|
||||
} ;
|
||||
|
||||
mkSN = overload {
|
||||
mkSN : Str -> SN = \s -> lin SN {s = \\_ => (regPN s Masc).s} ; -- regular name with genitive in "s", masculine
|
||||
|
||||
-- If only the genitive differs, two strings are needed.
|
||||
|
||||
mkSN : (nom,gen : Str) -> SN = \nom,gen -> lin SN {s = \\_ => (mk2PN nom gen Masc).s} ; -- name with other genitive
|
||||
|
||||
-- In the worst case, all four forms are needed.
|
||||
|
||||
mkSN : (nom,acc,dat,gen : Str) -> SN = \nom,acc,dat,gen ->
|
||||
{s = \\_ => table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
|
||||
lock_SN = <>}
|
||||
} ;
|
||||
|
||||
mk3A : (gut,besser,beste : Str) -> A = \a,b,c ->
|
||||
let aa : Str = case a of {
|
||||
@@ -536,11 +579,12 @@ mkV2 : overload {
|
||||
gabst = verbST gab ;
|
||||
gaben = pluralN gab ;
|
||||
gabt = verbT gab
|
||||
in
|
||||
MorphoGer.mkV
|
||||
in case geben of {
|
||||
_ + "n" => MorphoGer.mkV
|
||||
geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben
|
||||
[] VHaben ** {lock_V = <>} ;
|
||||
|
||||
_ => Predef.error (geben + ": invalid infinitive form, should end with 'n'")
|
||||
} ;
|
||||
regV fragen =
|
||||
let
|
||||
frag = stemVerb fragen ;
|
||||
@@ -726,4 +770,6 @@ mkV2 : overload {
|
||||
mkV2 : V -> Case -> V2 = \v,c -> prepV2 v (mkPrep c) ;
|
||||
} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user