1
0
forked from GitHub/gf-rgl

Documentation and Names in Danish

This commit is contained in:
Krasimir Angelov
2024-10-15 15:42:33 +02:00
parent e7a4b71160
commit 26e89421d3
6 changed files with 325 additions and 3 deletions

View File

@@ -1,3 +1,16 @@
--# -path=.:../danish:../scandinavian:../common:../abstract:../prelude --# -path=.:../danish:../scandinavian:../common:../abstract:../prelude
resource TryDan = SyntaxDan, LexiconDan, ParadigmsDan - [mkAdv] ; resource TryDan = SyntaxDan-[mkAdN], LexiconDan, ParadigmsDan - [mkAdv,mkAdN] **
open (P = ParadigmsDan) in {
oper
mkAdv = overload SyntaxDan {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
mkAdN = overload {
mkAdN : CAdv -> AdN = SyntaxDan.mkAdN ;
mkAdN : Str -> AdN = P.mkAdN ;
} ;
}

View File

@@ -0,0 +1,282 @@
concrete DocumentationDan of Documentation = CatDan ** open
ResDan,
CommonScand,
HTML
in {
flags coding=utf8 ;
lincat
Inflection = {t : Str; s1,s2 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
{-
-} --# notpresent
lin
InflectionN, InflectionN2, InflectionN3 = \noun -> {
t = "s" ;
s1 = heading1 ("Substantiv" ++ case noun.g of {
Utr => "(utrum)" ;
Neutr => "(neutr)"
}) ;
s2 = frameTable (
tr (intagAttr "th" "colspan=2" "" ++ th "obest" ++ th "best") ++
tr (intagAttr "th" "rowspan=2" "nom" ++
th "sg" ++ td (noun.s ! Sg ! Indef ! Nom) ++ td (noun.s ! Sg ! Def ! Nom)) ++
tr (th "pl" ++ td (noun.s ! Pl ! Indef ! Nom) ++ td (noun.s ! Pl ! Def ! Nom)) ++
tr (intagAttr "th" "rowspan=2" "gen" ++
th "sg" ++ td (noun.s ! Sg ! Indef ! Gen) ++ td (noun.s ! Sg ! Def ! Gen)) ++
tr (th "pl" ++ td (noun.s ! Pl ! Indef ! Gen) ++ td (noun.s ! Pl ! Def ! Gen))
)
} ;
InflectionLN = \n -> {
t = "nm" ;
s1 = heading1 ("Platsnamn" ++ case n.g of {
Utr => "(utr)" ;
Neutr => "(neutr)"
}) ;
s2 = frameTable (
tr (th "nom" ++ td (n.s ! Nom)) ++
tr (th "gen" ++ td (n.s ! Gen))
) ;
} ;
InflectionGN = \pn -> {
t = "fnm" ;
s1 = heading1 ("Förnamn" ++ case pn.g of {
Male => "(man)" ;
Female => "(kvinna)"
}) ;
s2 = frameTable (
tr (th "nom" ++ td (pn.s ! Nom)) ++
tr (th "gen" ++ td (pn.s ! Gen))
)
} ;
InflectionSN = \pn -> {
t = "enm" ;
s1 = heading1 "Efternamn" ;
s2 = frameTable (
tr (th "nom" ++ td (pn.s ! Male ! Nom)) ++
tr (th "gen" ++ td (pn.s ! Male ! Gen))
)
} ;
InflectionA, InflectionA2 = \adj -> {
t = "a" ;
s1 = heading1 "Adjektiv" ;
s2 = frameTable (
tr (intagAttr "th" "colspan=5" "nominativ") ++
tr (intagAttr "th" "colspan=2" "posit" ++
th "posit" ++
th "kompar" ++
th "superl") ++
caseInfl Nom ++
tr (intagAttr "th" "colspan=5" "genitiv") ++
caseInfl Nom
) ++
heading1 ("Adverb") ++
paragraph (adj.s ! AAdv) ;
} where {
caseInfl : Case -> Str = \c ->
tr (intagAttr "th" "rowspan=3" "obest" ++
th "utr" ++
td (adj.s ! (AF (APosit (Strong (GSg Utr))) c)) ++
intagAttr "td" "rowspan=5" (adj.s ! (AF ACompar c)) ++
intagAttr "td" "rowspan=3" (adj.s ! (AF (ASuperl SupStrong) c))) ++
tr (th "neut" ++
td (adj.s ! (AF (APosit (Strong (GSg Neutr))) c))) ++
tr (th "pl" ++
td (adj.s ! (AF (APosit (Strong GPl)) c))) ++
tr (intagAttr "th" "rowspan=2" "best" ++
th "sg" ++
td (adj.s ! (AF (APosit (Weak Sg)) c)) ++
intagAttr "td" "rowspan=2" (adj.s ! (AF (ASuperl SupWeak) c))) ++
tr (th "pl" ++
td (adj.s ! (AF (APosit (Weak Pl)) c))) ;
} ;
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
t = "adv" ;
s1 = heading1 "Adverb" ;
s2 = paragraph adv.s
} ;
InflectionPrep p = {
t = "prep" ;
s1 = heading1 "Preposition" ;
s2 = paragraph p.s
} ;
InflectionV v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part);
s2 = inflVerb v
} ;
InflectionV2 v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++ v.c2.s ++
pp "objekt") ;
s2 = inflVerb v
} ;
InflectionV3 v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ pp "arg1" ++
v.c3.s ++ pp "arg2") ;
s2 = inflVerb v
} ;
InflectionV2V v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ pp "objekt" ++
v.c3.s ++ pp "verb") ;
s2 = inflVerb v
} ;
InflectionV2S v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ pp "objekt" ++
conjThat ++ pp "mening") ;
s2 = inflVerb v
} ;
InflectionV2Q v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ pp "objekt" ++
pp "fråga") ;
s2 = inflVerb v
} ;
InflectionV2A v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ pp "objekt" ++
pp "adjektiv") ;
s2 = inflVerb v
} ;
InflectionVV v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
pp "verb") ;
s2 = inflVerb v
} ;
InflectionVS v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
conjThat ++ pp "mening") ;
s2 = inflVerb v
} ;
InflectionVQ v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
pp "fråga") ;
s2 = inflVerb v
} ;
InflectionVA v = {
t = "v" ;
s1 = heading1 "Verb" ++
paragraph (pp "subjekt" ++
v.s ! VI (VInfin Act) ++ v.part ++
pp "adjektiv") ;
s2 = inflVerb v
} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Exempel:</b>"++e.s++"</p>"};
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ paragraph e.s} ; -- explanation appended in a new paragraph
MkTag i = {s = i.t} ;
oper
inflVerb : Verb -> Str = \verb ->
frameTable (
tr (th "" ++ th "active" ++ th "passive") ++
tr (th "infitiv" ++ td (verb.s ! VI (VInfin Act)) ++ td (verb.s ! VI (VInfin Pass))) ++
tr (th "presens" ++ td (verb.s ! VF (VPres Act)) ++ td (verb.s ! VF (VPres Pass))) ++
tr (th "preteritum" ++ td (verb.s ! VF (VPret Act)) ++ td (verb.s ! VF (VPret Pass))) ++
tr (th "supinum" ++ td (verb.s ! VI (VSupin Act)) ++ td (verb.s ! VI (VSupin Pass))) ++
tr (th "imperativ" ++ td (verb.s ! VF (VImper Act)) ++ td (verb.s ! VF (VImper Pass)))
) ++
heading2 "Particip Presens" ++
frameTable (
tr (intagAttr "th" "colspan=2" "" ++ th "obest" ++ th "best") ++
tr (intagAttr "th" "rowspan=2" "nom" ++
th "sg" ++
td (verb.s ! VI (VPtPres Sg Indef Nom)) ++
td (verb.s ! VI (VPtPres Sg Def Nom))) ++
tr (th "pl" ++
td (verb.s ! VI (VPtPres Pl Indef Nom)) ++
td (verb.s ! VI (VPtPres Pl Def Nom))) ++
tr (intagAttr "th" "rowspan=2" "gen" ++
th "sg" ++
td (verb.s ! VI (VPtPres Sg Indef Gen)) ++
td (verb.s ! VI (VPtPres Sg Def Gen))) ++
tr (th "pl" ++
td (verb.s ! VI (VPtPres Pl Indef Gen)) ++
td (verb.s ! VI (VPtPres Pl Def Gen)))
) ++
heading2 "Particip Perfekt" ++
frameTable (
tr (intagAttr "th" "colspan=2" "" ++
th "nom" ++
th "gen") ++
tr (intagAttr "th" "rowspan=3" "obest" ++
th "utr" ++
td (verb.s ! VI (VPtPret (Strong (GSg Utr)) Nom)) ++
td (verb.s ! VI (VPtPret (Strong (GSg Utr)) Gen))) ++
tr (th "neut" ++
td (verb.s ! VI (VPtPret (Strong (GSg Neutr)) Nom)) ++
td (verb.s ! VI (VPtPret (Strong (GSg Neutr)) Gen))) ++
tr (th "pl" ++
td (verb.s ! VI (VPtPret (Strong GPl) Nom)) ++
td (verb.s ! VI (VPtPret (Strong GPl) Gen))) ++
tr (intagAttr "th" "rowspan=2" "best" ++
th "sg" ++
td (verb.s ! VI (VPtPret (Weak Sg) Nom)) ++
td (verb.s ! VI (VPtPret (Weak Sg) Gen))) ++
tr (th "pl" ++
td (verb.s ! VI (VPtPret (Weak Pl) Nom)) ++
td (verb.s ! VI (VPtPret (Weak Pl) Gen)))
) ;
pp : Str -> Str = \s -> "&lt;"+s+"&gt;";
{- --# notpresent
-}
}

View File

@@ -14,7 +14,8 @@ concrete GrammarDan of Grammar =
TextX - [Tense,Temp] , TextX - [Tense,Temp] ,
IdiomDan, IdiomDan,
StructuralDan, StructuralDan,
TenseDan TenseDan,
NamesDan
** { ** {
flags startcat = Phr ; unlexer = text ; lexer = text ; flags startcat = Phr ; unlexer = text ; lexer = text ;

View File

@@ -3,6 +3,7 @@
concrete LangDan of Lang = concrete LangDan of Lang =
GrammarDan, GrammarDan,
LexiconDan LexiconDan
,DocumentationDan --# notpresent
** { ** {
flags startcat = Phr ; unlexer = text ; lexer = text ; flags startcat = Phr ; unlexer = text ; lexer = text ;

2
src/danish/NamesDan.gf Normal file
View File

@@ -0,0 +1,2 @@
concrete NamesDan of Noun = CatDan ** NamesScand with
(ResScand = ResDan) ;

View File

@@ -144,7 +144,6 @@ oper
mkPN : N -> PN ; --% mkPN : N -> PN ; --%
} ; } ;
--2 Adjectives --2 Adjectives
-- The regular pattern works for many adjectives, e.g. those ending -- The regular pattern works for many adjectives, e.g. those ending
@@ -182,6 +181,7 @@ oper
-- Adverbs modifying adjectives and sentences can also be formed. -- Adverbs modifying adjectives and sentences can also be formed.
mkAdA : Str -> AdA ; -- modify adjective, e.g. "meget" mkAdA : Str -> AdA ; -- modify adjective, e.g. "meget"
mkAdN : Str -> AdN ;
--2 Verbs --2 Verbs
@@ -386,6 +386,7 @@ oper
mkAdv x = ss x ** {lock_Adv = <>} ; mkAdv x = ss x ** {lock_Adv = <>} ;
mkAdV x = ss x ** {lock_AdV = <>} ; mkAdV x = ss x ** {lock_AdV = <>} ;
mkAdA x = ss x ** {lock_AdA = <>} ; mkAdA x = ss x ** {lock_AdA = <>} ;
mkAdN x = ss x ** {lock_AdN = <>} ;
mk6V a b c d e f = mkVerb6 a b c d e f ** mk6V a b c d e f = mkVerb6 a b c d e f **
{part = [] ; vtype = VAct ; lock_V = <> ; isVaere = False} ; {part = [] ; vtype = VAct ; lock_V = <> ; isVaere = False} ;
@@ -491,6 +492,25 @@ oper
mk2PN : Str -> Gender -> PN ; mk2PN : Str -> Gender -> PN ;
nounPN : N -> PN ; nounPN : N -> PN ;
mkLN = overload {
mkLN : Str -> LN = \s -> lin LN (regPN s) ** {n=Sg}; -- default gender utrum
mkLN : Str -> Gender -> LN = \s,g -> lin LN (mk2PN s g) ** {n=Sg} ; -- set other gender
mkLN : Str -> Gender -> Number -> LN = \s,g,n -> lin LN (mk2PN s g) ** {n=n} ; -- set other gender and number
} ;
mkGN = overload {
mkGN : Str -> GN = \s -> lin GN {s = \\c => mkCase c s ; g = Male}; -- default gender utrum
mkGN : Str -> Sex -> GN = \s,g -> lin GN {s = \\c => mkCase c s ; g = g} ; -- set other gender
} ;
mkSN = overload {
mkSN : Str -> SN = \s -> lin SN {s = \\_,c => mkCase c s; pl = \\c => mkCase c s}; -- default gender utrum
mkSN : Str -> Str -> Str -> SN =
\male,female,pl -> lin SN {s = table {Male => \\c => mkCase c male;
Female => \\c => mkCase c female} ;
pl = \\c => mkCase c pl
} ;
} ;
mkA = overload { mkA = overload {
mkA : (fin : Str) -> A = regADeg ; mkA : (fin : Str) -> A = regADeg ;
mkA : (fin,fint : Str) -> A = mk2ADeg ; mkA : (fin,fint : Str) -> A = mk2ADeg ;
@@ -533,4 +553,7 @@ oper
mk2V2 : V -> Prep -> V2 ; mk2V2 : V -> Prep -> V2 ;
dirV2 : V -> V2 ; dirV2 : V -> V2 ;
mkInterj : Str -> Interj
= \s -> lin Interj {s = s} ;
} ; } ;