forked from GitHub/gf-rgl
(Dut) Remove MorphoDut + update change in other files
This commit is contained in:
@@ -400,7 +400,6 @@
|
||||
"CatDut",
|
||||
"ExtDut",
|
||||
"GrammarDut",
|
||||
"MorphoDut",
|
||||
"NumeralDut",
|
||||
"StructuralDut",
|
||||
"IdiomDut",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
concrete ExtraDut of ExtraDutAbs = CatDut **
|
||||
open ResDut, MorphoDut, Coordination, Prelude, IrregDut, (P = ParadigmsDut), NounDut in
|
||||
open ResDut, Coordination, Prelude, IrregDut, (P = ParadigmsDut), NounDut in
|
||||
{
|
||||
|
||||
flags coding=utf8 ;
|
||||
@@ -109,7 +109,7 @@ lin
|
||||
inf : Str = vp.inf.p1 ;
|
||||
extra : Str = vp.ext
|
||||
in
|
||||
lin NP (MorphoDut.mkNP (vp.s.s ! VInf ++ "van" ++ compl ++ inf ++ extra ) Utr Sg) ;
|
||||
lin NP (mkNP (vp.s.s ! VInf ++ "van" ++ compl ++ inf ++ extra ) Utr Sg) ;
|
||||
|
||||
|
||||
lin
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
concrete IdiomDut of Idiom = CatDut **
|
||||
open MorphoDut, (P = ParadigmsDut), IrregDut, Prelude in {
|
||||
open ResDut, (P = ParadigmsDut), IrregDut, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../common:../abstract
|
||||
|
||||
resource MakeStructuralDut = open CatDut, ParadigmsDut, MorphoDut, Prelude in
|
||||
resource MakeStructuralDut = open CatDut, ParadigmsDut, Prelude in
|
||||
{
|
||||
--{
|
||||
--
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
--# -path=.:../common:../../prelude
|
||||
--
|
||||
----1 A Simple Dutman Resource Morphology
|
||||
----
|
||||
---- Aarne Ranta & Harald Hammarström 2002 -- 2006
|
||||
----
|
||||
---- This resource morphology contains definitions needed in the resource
|
||||
---- syntax. To build a lexicon, it is better to use $ParadigmsDut$, which
|
||||
---- gives a higher-level access to this module.
|
||||
--
|
||||
resource MorphoDut = ResDut ** open Prelude, (Predef=Predef) in
|
||||
{
|
||||
flags coding=utf8 ;
|
||||
--{
|
||||
--
|
||||
-- flags optimize=all ;
|
||||
--
|
||||
--oper
|
||||
--
|
||||
---- For $StructuralDut$.
|
||||
--
|
||||
-- mkPrep : Str -> Case -> Preposition = \s,c ->
|
||||
-- {s = s ; c = c} ;
|
||||
--
|
||||
-- nameNounPhrase : {s : Case => Str} -> {s : Case => Str ; a : Agr} = \name ->
|
||||
-- name ** {a = agrP3 Sg} ;
|
||||
--
|
||||
-- detLikeAdj : Number -> Str ->
|
||||
-- {s,sp : Gender => Case => Str ; n : Number ; a : Adjf} = \n,dies ->
|
||||
-- {s,sp = appAdj (regA dies) ! n ; n = n ; a = Weak} ;
|
||||
--
|
||||
-- mkOrd : {s : Degree => AForm => Str} -> {s : AForm => Str} = \a ->
|
||||
-- {s = a.s ! Posit} ;
|
||||
--
|
||||
---- For $ParadigmsDut$.
|
||||
--
|
||||
-- genitS : Str -> Str = \hund -> case hund of {
|
||||
-- _ + ("el" | "en" | "er") => hund + "s" ;
|
||||
-- _ + ("s" | "ß" | "sch" | "st" | "x" | "z") => hund + "es" ;
|
||||
-- _ => hund + variants {"s" ; "es"}
|
||||
-- } ;
|
||||
-- pluralN : Str -> Str = \hund -> case hund of {
|
||||
-- _ + ("el" | "er" | "e") => hund + "n" ;
|
||||
-- _ + "en" => hund ;
|
||||
-- _ => hund + "en"
|
||||
-- } ;
|
||||
-- dativE : Str -> Str = \hund -> case hund of {
|
||||
-- _ + ("el" | "en" | "er" | "e") => hund ;
|
||||
-- _ => variants {hund ; hund + "e"}
|
||||
-- } ;
|
||||
--
|
||||
---- Duden, p. 119
|
||||
--
|
||||
-- verbT : Str -> Str = \v -> case v of {
|
||||
-- _ + ("t" | "d") => v + "et" ; -- gründen, reden, betten
|
||||
-- _ + ("ch" | "k" | "p" | "t" | "g" | "b" | "d" | "f" | "s") +
|
||||
-- ("m" | "n") => v + "et" ; -- atmen, widmen, öffnen, rechnen
|
||||
-- _ => v + "t" -- lernen, lärmen, qualmen etc
|
||||
-- } ;
|
||||
--
|
||||
-- verbST : Str -> Str = \v -> case v of {
|
||||
-- _ + ("s" | "ss" | "ß" | "sch" | "x" | "z") => v + "t" ;
|
||||
-- _ => v + "st"
|
||||
-- } ;
|
||||
--
|
||||
-- stemVerb : Str -> Str = \v -> case v of {
|
||||
-- _ + ("rn" | "ln") => init v ;
|
||||
-- _ => Predef.tk 2 v
|
||||
-- } ;
|
||||
--
|
||||
---- For $Numeral$.
|
||||
--
|
||||
-- LinDigit = {s : DForm => CardOrd => Str} ;
|
||||
--
|
||||
-- cardOrd : Str -> Str -> CardOrd => Str = \drei,dritte ->
|
||||
-- table {
|
||||
-- NCard _ _ => drei ;
|
||||
-- NOrd a => (regA (init dritte)).s ! Posit ! a
|
||||
-- } ;
|
||||
--
|
||||
-- cardReg : Str -> CardOrd => Str = \zehn ->
|
||||
-- cardOrd zehn (zehn + "te") ;
|
||||
--
|
||||
-- mkDigit : (x1,_,_,x4 : Str) -> LinDigit =
|
||||
-- \drei,dreizehn,dreissig,dritte ->
|
||||
-- {s = table {
|
||||
-- DUnit => cardOrd drei dritte ;
|
||||
-- DTeen => cardReg dreizehn ;
|
||||
-- DTen => cardOrd dreissig (dreissig + "ste")
|
||||
-- }
|
||||
-- } ;
|
||||
--
|
||||
-- regDigit : Str -> LinDigit = \vier ->
|
||||
-- mkDigit vier (vier + "zehn") (vier + "zig") (vier + "te") ;
|
||||
--
|
||||
-- invNum : CardOrd = NCard Masc Nom ;
|
||||
--
|
||||
--} ;
|
||||
--
|
||||
|
||||
}
|
||||
@@ -327,169 +327,14 @@ oper
|
||||
} ;
|
||||
mkmaxV3 : V -> Prep -> Prep -> V3 = \v,c,d -> lin V3 (v ** {c2 = <c,True> ; c3 = <d,True>}) ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----2 Definitions of paradigms
|
||||
----
|
||||
---- The definitions should not bother the user of the API. So they are
|
||||
---- hidden from the document.
|
||||
--
|
||||
--
|
||||
--
|
||||
-- Gender = MorphoDut.Gender ;
|
||||
-- Case = MorphoDut.Case ;
|
||||
-- Number = MorphoDut.Number ;
|
||||
-- masculine = Masc ;
|
||||
-- feminine = Fem ;
|
||||
-- neuter = Neutr ;
|
||||
-- nominative = Nom ;
|
||||
-- accusative = Acc ;
|
||||
-- dative = Dat ;
|
||||
-- genitive = Gen ;
|
||||
-- singular = Sg ;
|
||||
-- plural = Pl ;
|
||||
--
|
||||
-- mk6N a b c d e f g = MorphoDut.mkN a b c d e f g ** {lock_N = <>} ;
|
||||
--
|
||||
-- regN : Str -> N = \hund -> case hund of {
|
||||
-- _ + "e" => mk6N hund hund hund hund (hund + "n") (hund + "n") Fem ;
|
||||
-- _ + ("ion" | "ung") => mk6N hund hund hund hund (hund + "en") (hund + "en") Fem ;
|
||||
-- _ + ("er" | "en" | "el") => mk6N hund hund hund (genitS hund) hund (pluralN hund) Masc ;
|
||||
-- _ => mk6N hund hund hund (genitS hund) (hund + "e") (pluralN hund) Masc
|
||||
-- } ;
|
||||
--
|
||||
-- reg2N : (x1,x2 : Str) -> Gender -> N = \hund,hunde,g ->
|
||||
-- let
|
||||
-- hunds = genitS hund ;
|
||||
-- hundE = dativE hund ;
|
||||
-- hunden = pluralN hunde
|
||||
-- in
|
||||
-- case <hund,hunde,g> of { -- Duden p. 223
|
||||
-- <_,_ + ("e" | "er"), Masc | Neutr> => -- I,IV
|
||||
-- mk6N hund hund hundE hunds hunde hunden g ;
|
||||
-- <_ + ("el"|"er"|"en"),_ + ("el"|"er"|"en"), Masc | Neutr> => -- II
|
||||
-- mk6N hund hund hund hunds hunde hunden g ;
|
||||
-- <_,_ + "s", Masc | Neutr> => -- V
|
||||
-- mk6N hund hund hund (hund + "s") hunde hunde g ;
|
||||
-- <_,_ + "en", Masc> => -- VI
|
||||
-- mk6N hund hunde hunde hunde hunde hunde g ;
|
||||
-- <_,_ + ("e" | "er"), Fem> => -- VII,VIII
|
||||
-- mk6N hund hund hund hund hunde hunden g ;
|
||||
-- <_,_ + ("n" | "s"), Fem> => -- IX,X
|
||||
-- mk6N hund hund hund hund hunde hunde g ;
|
||||
-- _ => {s = (regN hund).s ; g = g ; lock_N = <>}
|
||||
-- } ;
|
||||
--
|
||||
-- mkN2 = overload {
|
||||
-- mkN2 : Str -> N2 = \s -> vonN2 (regN s) ;
|
||||
-- mkN2 : N -> N2 = vonN2 ;
|
||||
-- mkN2 : N -> Prep -> N2 = mmkN2
|
||||
-- } ;
|
||||
--
|
||||
--
|
||||
-- mmkN2 : N -> Prep -> N2 = \n,p -> n ** {c2 = p ; lock_N2 = <>} ;
|
||||
-- vonN2 : N -> N2 = \n -> n ** {c2 = {s = "von" ; c = dative} ; lock_N2 = <>} ;
|
||||
--
|
||||
-- mkN3 = \n,p,q -> n ** {c2 = p ; c3 = q ; lock_N3 = <>} ;
|
||||
--
|
||||
-- mk2PN = \karolus, karoli ->
|
||||
-- {s = table {Gen => karoli ; _ => karolus} ; lock_PN = <>} ;
|
||||
-- regPN = \horst ->
|
||||
-- mk2PN horst (ifTok Tok (Predef.dp 1 horst) "s" horst (horst + "s")) ;
|
||||
--
|
||||
-- mkPN = overload {
|
||||
-- mkPN : Str -> PN = regPN ;
|
||||
-- mkPN : (nom,gen : Str) -> PN = mk2PN ;
|
||||
-- mkPN : (nom,acc,dat,gen : Str) -> PN = \nom,acc,dat,gen ->
|
||||
-- {s = table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ; lock_PN = <>}
|
||||
-- } ;
|
||||
--
|
||||
-- mk2PN : (karolus, karoli : Str) -> PN ; -- karolus, karoli
|
||||
-- regPN : (Johann : Str) -> PN ;
|
||||
-- -- Johann, Johanns ; Johannes, Johannes
|
||||
--
|
||||
--
|
||||
-- mk3A : (gut,besser,beste : Str) -> A = \a,b,c ->
|
||||
-- let aa : Str = case a of {
|
||||
-- teu + "er" => teu + "r" ;
|
||||
-- mud + "e" => mud ;
|
||||
-- _ => a
|
||||
-- } in
|
||||
-- MorphoDut.mkA a aa b (init c) ** {lock_A = <>} ;
|
||||
-- mk4A : (gut,gute,besser,beste : Str) -> A = \a,aa,b,c ->
|
||||
-- MorphoDut.mkA a aa b (init c) ** {lock_A = <>} ;
|
||||
--
|
||||
-- regA : Str -> A = \a -> case a of {
|
||||
-- teu + "er" => mk3A a (teu + "rer") (teu + "reste") ;
|
||||
-- _ + "e" => mk3A a (a + "r") (a + "ste") ;
|
||||
-- _ => mk3A a (a + "er") (a + "este")
|
||||
-- } ;
|
||||
|
||||
invarA = \s -> lin A {s = \\_,_ => s} ; ---- comparison
|
||||
|
||||
mkA2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
|
||||
mkAdv s = {s = s ; lock_Adv = <>} ;
|
||||
--
|
||||
-- mkPrep s c = {s = s ; c = c ; lock_Prep = <>} ;
|
||||
|
||||
noPrep = nomergePrep [] ;
|
||||
-- datPrep = mkPrep [] dative ;
|
||||
-- genPrep = mkPrep [] genitive ;
|
||||
-- von_Prep = mkPrep "von" dative ;
|
||||
-- zu_Prep = mkPrep "zu" dative ;
|
||||
--
|
||||
-- mk6V geben gibt gib gab gaebe gegeben =
|
||||
-- let
|
||||
-- geb = stemVerb geben ;
|
||||
-- gebe = geb + "e" ;
|
||||
-- gibst = verbST (init gibt) ;
|
||||
-- gebt = verbT geb ;
|
||||
-- gabst = verbST gab ;
|
||||
-- gaben = pluralN gab ;
|
||||
-- gabt = verbT gab
|
||||
-- in
|
||||
-- MorphoDut.mkV
|
||||
-- geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben
|
||||
-- [] VHaben ** {lock_V = <>} ;
|
||||
--
|
||||
-- regV fragen =
|
||||
-- let
|
||||
-- frag = stemVerb fragen ;
|
||||
-- fragt = verbT frag ;
|
||||
-- fragte = fragt + "e" ;
|
||||
-- gefragt = "ge" + fragt ;
|
||||
-- in
|
||||
-- mk6V fragen fragt (frag + "e") fragte fragte gefragt ;
|
||||
--
|
||||
-- irregV singen singt sang saenge gesungen =
|
||||
-- let
|
||||
-- sing = stemVerb singen ;
|
||||
-- in
|
||||
-- mk6V singen singt sing sang saenge gesungen ;
|
||||
--
|
||||
-- prefixV p v = MorphoDut.prefixV p v ** {lock_V = v.lock_V} ;
|
||||
--
|
||||
-- habenV v =
|
||||
-- {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = v.vtype} ;
|
||||
-- seinV v =
|
||||
-- {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein ; vtype = v.vtype} ;
|
||||
-- reflV v c =
|
||||
-- {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben ; vtype = VRefl c} ;
|
||||
--
|
||||
-- no_geV v = let vs = v.s in {
|
||||
-- s = table {
|
||||
-- p@(VPastPart _) => Predef.drop 2 (vs ! p) ;
|
||||
-- p => vs ! p
|
||||
-- } ;
|
||||
-- prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux ; vtype = v.vtype
|
||||
-- } ;
|
||||
--
|
||||
-- haben_V = MorphoDut.haben_V ** {lock_V = <>} ;
|
||||
-- sein_V = MorphoDut.sein_V ** {lock_V = <>} ;
|
||||
-- werden_V = MorphoDut.werden_V ** {lock_V = <>} ;
|
||||
--
|
||||
|
||||
prepV2 : V -> Prep -> V2 ;
|
||||
prepV2 v c = lin V2 (v ** {c2 = <c,True>}) ; --if it has prep, needed for word order (place of negation)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--# -path=.:../abstract
|
||||
|
||||
concrete ExtensionsDut of Extensions =
|
||||
CatDut ** open MorphoDut, ResDut, ParadigmsDut, SyntaxDut, (E = ExtraDut), (G = GrammarDut), Prelude in {
|
||||
CatDut ** open ResDut, ParadigmsDut, SyntaxDut, (E = ExtraDut), (G = GrammarDut), Prelude in {
|
||||
|
||||
flags literal=Symb ; coding = utf8 ;
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ concrete TranslateDut of Translate =
|
||||
, WithoutVP, InOrderToVP, ByVP
|
||||
],
|
||||
DictionaryDut **
|
||||
open MorphoDut, ResDut, ParadigmsDut, SyntaxDut, (E = ExtraDut), Prelude in {
|
||||
open ResDut, ParadigmsDut, SyntaxDut, (E = ExtraDut), Prelude in {
|
||||
|
||||
flags
|
||||
literal=Symb ;
|
||||
|
||||
Reference in New Issue
Block a user