From ced38d5f9f6439e4e5b036f6e5b588a6dd126839 Mon Sep 17 00:00:00 2001 From: aarne Date: Sat, 14 Dec 2013 09:21:15 +0000 Subject: [PATCH] refactored Documentation to Terminology and Documentation proper. This makes it possible to functorize the display of tables, for instance show Swedish inflection tables with headings in English terminology. Carried out the functorization in Eng and Swe, other languages coming soon. --- lib/src/abstract/Documentation.gf | 91 ---------- lib/src/abstract/Terminology.gf | 103 ++++++++++++ lib/src/english/DocumentationEng.gf | 110 +----------- lib/src/english/DocumentationEngFunctor.gf | 64 +++++++ lib/src/english/DocumentationEngSwe.gf | 6 + lib/src/english/TerminologyEng.gf | 69 ++++++++ lib/src/finnish/DocumentationFin.gf | 81 +-------- lib/src/finnish/TerminologyFin.gf | 87 ++++++++++ lib/src/french/DocumentationFre.gf | 62 +------ lib/src/french/TerminologyFre.gf | 66 ++++++++ lib/src/german/DocumentationGer.gf | 56 +------ lib/src/german/TerminologyGer.gf | 64 +++++++ lib/src/swedish/DocumentationSwe.gf | 185 +-------------------- lib/src/swedish/DocumentationSweEng.gf | 6 + lib/src/swedish/DocumentationSweFunctor.gf | 123 ++++++++++++++ lib/src/swedish/TerminologySwe.gf | 76 +++++++++ 16 files changed, 685 insertions(+), 564 deletions(-) create mode 100644 lib/src/abstract/Terminology.gf create mode 100644 lib/src/english/DocumentationEngFunctor.gf create mode 100644 lib/src/english/DocumentationEngSwe.gf create mode 100644 lib/src/english/TerminologyEng.gf create mode 100644 lib/src/finnish/TerminologyFin.gf create mode 100644 lib/src/french/TerminologyFre.gf create mode 100644 lib/src/german/TerminologyGer.gf create mode 100644 lib/src/swedish/DocumentationSweEng.gf create mode 100644 lib/src/swedish/DocumentationSweFunctor.gf create mode 100644 lib/src/swedish/TerminologySwe.gf diff --git a/lib/src/abstract/Documentation.gf b/lib/src/abstract/Documentation.gf index 714b8e7b7..6d961f9c1 100644 --- a/lib/src/abstract/Documentation.gf +++ b/lib/src/abstract/Documentation.gf @@ -4,94 +4,9 @@ abstract Documentation = Cat ** { -- AR 12/12/2013 under LGPL/BSD cat - Category ; -- name of category e.g. "noun" - ParameterType ; -- name of parameter type e.g. "number" - Parameter ; -- name of parameter e.g. "plural" - - Heading ; -- grammatical term used as heading e.g. "Noun" ---- TODO capitalization Inflection ; -- inflection table - Modifier ; -- e.g. finite, transitive fun - noun_Category : Category ; - adjective_Category : Category ; - verb_Category : Category ; - adverb_Category : Category ; - preposition_Category : Category ; - - number_ParameterType : ParameterType ; - gender_ParameterType : ParameterType ; - case_ParameterType : ParameterType ; - person_ParameterType : ParameterType ; - tense_ParameterType : ParameterType ; - degree_ParameterType : ParameterType ; - - singular_Parameter : Parameter ; - plural_Parameter : Parameter ; - - definite_Parameter : Parameter ; - indefinite_Parameter : Parameter ; - - masculine_Parameter : Parameter ; - feminine_Parameter : Parameter ; - neuter_Parameter : Parameter ; - uter_Parameter : Parameter ; -- the Swedish/Dutch non-neuter gender - - nominative_Parameter : Parameter ; - accusative_Parameter : Parameter ; - genitive_Parameter : Parameter ; - dative_Parameter : Parameter ; - - partitive_Parameter : Parameter ; -- Fin N - translative_Parameter : Parameter ; - essive_Parameter : Parameter ; - inessive_Parameter : Parameter ; - elative_Parameter : Parameter ; - illative_Parameter : Parameter ; - adessive_Parameter : Parameter ; - ablative_Parameter : Parameter ; - allative_Parameter : Parameter ; - abessive_Parameter : Parameter ; - comitative_Parameter : Parameter ; - instructive_Parameter : Parameter ; - - imperative_Parameter : Parameter ; - indicative_Parameter : Parameter ; - conjunctive_Parameter : Parameter ; - infinitive_Parameter : Parameter ; - - active_Parameter : Parameter ; - passive_Parameter : Parameter ; - - present_Parameter : Parameter ; - past_Parameter : Parameter ; - future_Parameter : Parameter ; - conditional_Parameter : Parameter ; - perfect_Parameter : Parameter ; - imperfect_Parameter : Parameter ; - potential_Parameter : Parameter ; -- Fin V - - participle_Parameter : Parameter ; - aux_verb_Parameter : Parameter ; - agent_Parameter : Parameter ; - - positive_Parameter : Parameter ; - comparative_Parameter : Parameter ; - superlative_Parameter : Parameter ; - predicative_Parameter : Parameter ; - - subject_Parameter : Parameter ; - object_Parameter : Parameter ; - - person1_Parameter : Parameter ; - person2_Parameter : Parameter ; - person3_Parameter : Parameter ; - - finite_Modifier : Modifier ; - transitive_Modifier : Modifier ; - - nounHeading : N -> Heading ; - InflectionN : N -> Inflection ; InflectionN2 : N2 -> Inflection ; InflectionN3 : N3 -> Inflection ; @@ -112,11 +27,5 @@ fun ExplainInflection : String -> Inflection -> Inflection ; --- generic grammar terms - - exampleGr_N : N ; -- example of a rule, category, etc - formGr_N : N ; -- inflectional form - shortGr_A : A ; -- short form of e.g. a Fin infinitive, or short vowel (may have to be split) - longGr_A : A ; -- long form of e.g. a Fin infinitive, or long vowel (may have to be split) } \ No newline at end of file diff --git a/lib/src/abstract/Terminology.gf b/lib/src/abstract/Terminology.gf new file mode 100644 index 000000000..b4a7ea562 --- /dev/null +++ b/lib/src/abstract/Terminology.gf @@ -0,0 +1,103 @@ +abstract Terminology = Cat ** { + +-- grammatical terminology for documenting for the library, for instance, inflection tables +-- AR 12/12/2013 under LGPL/BSD + +cat + Category ; -- name of category e.g. "noun" + ParameterType ; -- name of parameter type e.g. "number" + Parameter ; -- name of parameter e.g. "plural" + + Heading ; -- grammatical term used as heading e.g. "Noun" ---- TODO capitalization + Modifier ; -- e.g. finite, transitive + +fun + noun_Category : Category ; + adjective_Category : Category ; + verb_Category : Category ; + adverb_Category : Category ; + preposition_Category : Category ; + + number_ParameterType : ParameterType ; + gender_ParameterType : ParameterType ; + case_ParameterType : ParameterType ; + person_ParameterType : ParameterType ; + tense_ParameterType : ParameterType ; + degree_ParameterType : ParameterType ; + + singular_Parameter : Parameter ; + plural_Parameter : Parameter ; + + definite_Parameter : Parameter ; + indefinite_Parameter : Parameter ; + + masculine_Parameter : Parameter ; + feminine_Parameter : Parameter ; + neuter_Parameter : Parameter ; + uter_Parameter : Parameter ; -- the Swedish/Dutch non-neuter gender + + nominative_Parameter : Parameter ; + accusative_Parameter : Parameter ; + genitive_Parameter : Parameter ; + dative_Parameter : Parameter ; + + partitive_Parameter : Parameter ; -- Fin N + translative_Parameter : Parameter ; + essive_Parameter : Parameter ; + inessive_Parameter : Parameter ; + elative_Parameter : Parameter ; + illative_Parameter : Parameter ; + adessive_Parameter : Parameter ; + ablative_Parameter : Parameter ; + allative_Parameter : Parameter ; + abessive_Parameter : Parameter ; + comitative_Parameter : Parameter ; + instructive_Parameter : Parameter ; + + imperative_Parameter : Parameter ; + indicative_Parameter : Parameter ; + conjunctive_Parameter : Parameter ; + infinitive_Parameter : Parameter ; + + active_Parameter : Parameter ; + passive_Parameter : Parameter ; + + present_Parameter : Parameter ; + past_Parameter : Parameter ; + future_Parameter : Parameter ; + conditional_Parameter : Parameter ; + perfect_Parameter : Parameter ; + imperfect_Parameter : Parameter ; + potential_Parameter : Parameter ; -- Fin V + supine_Parameter : Parameter ; -- Swe V + + participle_Parameter : Parameter ; + aux_verb_Parameter : Parameter ; + agent_Parameter : Parameter ; + + positive_Parameter : Parameter ; + comparative_Parameter : Parameter ; + superlative_Parameter : Parameter ; + predicative_Parameter : Parameter ; + + subject_Parameter : Parameter ; + object_Parameter : Parameter ; + + person1_Parameter : Parameter ; + person2_Parameter : Parameter ; + person3_Parameter : Parameter ; + + finite_Modifier : Modifier ; + transitive_Modifier : Modifier ; + + nounHeading : N -> Heading ; + + +-- generic grammar terms + + exampleGr_N : N ; -- example of a rule, category, etc + formGr_N : N ; -- inflectional form + shortGr_A : A ; -- short form of e.g. a Fin infinitive, or short vowel (may have to be split) + longGr_A : A ; -- long form of e.g. a Fin infinitive, or long vowel (may have to be split) + +} \ No newline at end of file diff --git a/lib/src/english/DocumentationEng.gf b/lib/src/english/DocumentationEng.gf index f751caad9..30840606c 100644 --- a/lib/src/english/DocumentationEng.gf +++ b/lib/src/english/DocumentationEng.gf @@ -1,111 +1,7 @@ --# -path=.:../abstract:../common -concrete DocumentationEng of Documentation = CatEng ** open - ResEng, - ParadigmsEng, - (G = GrammarEng), - (S = SyntaxEng), - (L = LexiconEng), - Prelude, - HTML -in { +-- documentation of English in English: the default introduced in LangEng +concrete DocumentationEng of Documentation = CatEng ** + DocumentationEngFunctor with (Terminology = TerminologyEng) ; -lincat - Category = G.N ; - ParameterType = G.N ; - Parameter = G.N ; - - Heading = {s : Str} ; - Inflection = {s : Str} ; - - -lin - noun_Category = mkN "noun" ; - adjective_Category = mkN "adjective" ; - verb_Category = mkN "verb" ; - adverb_Category = mkN "adverb" ; - - singular_Parameter = mkN "singular" ; - plural_Parameter = mkN "plural" ; - - masculine_Parameter = mkN "masculine" ; - feminine_Parameter = mkN "feminine" ; - neuter_Parameter = mkN "neuter" ; - - nominative_Parameter = mkN "nominative" ; - genitive_Parameter = mkN "genitive" ; - dative_Parameter = mkN "dative" ; - accusative_Parameter = mkN "accusative" ; - - imperative_Parameter = mkN "imperative" ; - indicative_Parameter = mkN "indicative" ; - conjunctive_Parameter = mkN "konjunctive" ; - infinitive_Parameter = mkN "infinitive" ; - - present_Parameter = mkN "present" ; - past_Parameter = mkN "past" ; - future_Parameter = mkN "future" ; - conditional_Parameter = mkN "conditional" ; - perfect_Parameter = mkN "perfect" ; - - participle_Parameter = mkN "participle" ; - aux_verb_Parameter = mkN "auxiliary" ; - - positive_Parameter = mkN "positive" ; - comparative_Parameter = mkN "comparative" ; - superlative_Parameter = mkN "superlative" ; - predicative_Parameter = mkN "predicative" ; - - nounHeading n = ss (n.s ! Sg ! Nom) ; - -oper - tdf : Str -> Str = \s -> td (intag "i" s) ; - heading : N -> Str = \n -> (nounHeading n).s ; -lin - InflectionN noun = { - s = heading1 (heading noun_Category) ++ frameTable ( - tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ - tr (th (heading nominative_Parameter) ++ tdf (noun.s ! Sg ! Nom) ++ tdf (noun.s ! Pl ! Nom)) ++ - tr (th (heading genitive_Parameter) ++ tdf (noun.s ! Sg ! Gen) ++ tdf (noun.s ! Pl ! Gen)) - ) - } ; - - InflectionA adj = { - s = heading1 (heading adjective_Category) ++ - frameTable ( - tr (th (heading positive_Parameter) ++ tdf (adj.s ! AAdj Posit Nom)) ++ - tr (th (heading comparative_Parameter) ++ tdf (adj.s ! AAdj Compar Nom)) ++ - tr (th (heading superlative_Parameter) ++ tdf (adj.s ! AAdj Superl Nom)) ++ - tr (th (heading adverb_Category) ++ tdf (adj.s ! AAdv)) - ) - } ; - - InflectionV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V v))) v ; - InflectionV2 v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2 v) S.something_NP)) (lin V v) ; ---- InflectionVV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin VV v) (S.mkVP (L.sleep_V)))) (lin V v) ; - InflectionV2V v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2V v) S.we_NP (S.mkVP (L.sleep_V)))) (lin V v) ; - - ExplainInflection e i = ss (i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph - -oper - verbExample : Cl -> Str = \cl -> (S.mkUtt cl).s ; - - inflectionVerb : Str -> V -> {s : Str} = \ex,verb -> { - s = heading1 (heading verb_Category) ++ - paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) ++ - frameTable ( - tr (th (heading infinitive_Parameter) ++ tdf (verb.s ! VInf)) ++ - tr (th (heading present_Parameter) ++ tdf (verb.s ! VPres)) ++ - tr (th (heading past_Parameter) ++ tdf (verb.s ! VPast)) ++ --# notpresent - tr (th (heading past_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! VPPart)) ++ - tr (th (heading present_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! VPresPart)) - ) - } ; - -lin - exampleGr_N = mkN "example" ; - formGr_N = mkN "form" ; - - -} \ No newline at end of file diff --git a/lib/src/english/DocumentationEngFunctor.gf b/lib/src/english/DocumentationEngFunctor.gf new file mode 100644 index 000000000..fbd5b6067 --- /dev/null +++ b/lib/src/english/DocumentationEngFunctor.gf @@ -0,0 +1,64 @@ +--# -path=.:../abstract:../common + +-- documentation of English in any language instantiating Terminology + +incomplete concrete DocumentationEngFunctor of Documentation = CatEng ** open + Terminology, + ResEng, + ParadigmsEng, + (G = GrammarEng), + (S = SyntaxEng), + (L = LexiconEng), + Prelude, + HTML +in { + + +lincat + Inflection = {s : Str} ; + +oper + tdf : Str -> Str = \s -> td (intag "i" s) ; + heading : N -> Str = \n -> (nounHeading n).s ; +lin + InflectionN noun = { + s = heading1 (heading noun_Category) ++ frameTable ( + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ + tr (th (heading nominative_Parameter) ++ tdf (noun.s ! Sg ! Nom) ++ tdf (noun.s ! Pl ! Nom)) ++ + tr (th (heading genitive_Parameter) ++ tdf (noun.s ! Sg ! Gen) ++ tdf (noun.s ! Pl ! Gen)) + ) + } ; + + InflectionA adj = { + s = heading1 (heading adjective_Category) ++ + frameTable ( + tr (th (heading positive_Parameter) ++ tdf (adj.s ! AAdj Posit Nom)) ++ + tr (th (heading comparative_Parameter) ++ tdf (adj.s ! AAdj Compar Nom)) ++ + tr (th (heading superlative_Parameter) ++ tdf (adj.s ! AAdj Superl Nom)) ++ + tr (th (heading adverb_Category) ++ tdf (adj.s ! AAdv)) + ) + } ; + + InflectionV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V v))) v ; + InflectionV2 v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2 v) S.something_NP)) (lin V v) ; +--- InflectionVV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin VV v) (S.mkVP (L.sleep_V)))) (lin V v) ; + InflectionV2V v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2V v) S.we_NP (S.mkVP (L.sleep_V)))) (lin V v) ; + + ExplainInflection e i = ss (i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph + +oper + verbExample : CatEng.Cl -> Str = \cl -> (S.mkUtt cl).s ; + + inflectionVerb : Str -> CatEng.V -> {s : Str} = \ex,verb -> { + s = heading1 (heading verb_Category) ++ + paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) ++ + frameTable ( + tr (th (heading infinitive_Parameter) ++ tdf (verb.s ! VInf)) ++ + tr (th (heading present_Parameter) ++ tdf (verb.s ! VPres)) ++ + tr (th (heading past_Parameter) ++ tdf (verb.s ! VPast)) ++ --# notpresent + tr (th (heading past_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! VPPart)) ++ + tr (th (heading present_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! VPresPart)) + ) + } ; + +} \ No newline at end of file diff --git a/lib/src/english/DocumentationEngSwe.gf b/lib/src/english/DocumentationEngSwe.gf new file mode 100644 index 000000000..3c9a6f38a --- /dev/null +++ b/lib/src/english/DocumentationEngSwe.gf @@ -0,0 +1,6 @@ +--# -path=.:../abstract:../common + +-- documentation of English in Swedish + +concrete DocumentationEngSwe of Documentation = CatEng ** + DocumentationEngFunctor with (Terminology = TerminologySwe) ; diff --git a/lib/src/english/TerminologyEng.gf b/lib/src/english/TerminologyEng.gf new file mode 100644 index 000000000..48267eb38 --- /dev/null +++ b/lib/src/english/TerminologyEng.gf @@ -0,0 +1,69 @@ +--# -path=.:../abstract:../common + +concrete TerminologyEng of Terminology = CatEng ** open + ResEng, + ParadigmsEng, + (G = GrammarEng), + (S = SyntaxEng), + (L = LexiconEng), + Prelude +in { + + +lincat + Category = G.N ; + ParameterType = G.N ; + Parameter = G.N ; + Modifier = G.A ; + +lin + noun_Category = mkN "noun" ; + adjective_Category = mkN "adjective" ; + verb_Category = mkN "verb" ; + adverb_Category = mkN "adverb" ; + + gender_ParameterType = mkN "Gender" ; + + singular_Parameter = mkN "singular" ; + plural_Parameter = mkN "plural" ; + + masculine_Parameter = mkN "masculine" ; + feminine_Parameter = mkN "feminine" ; + neuter_Parameter = mkN "neuter" ; + uter_Parameter = mkN "uter" ; + + nominative_Parameter = mkN "nominative" ; + genitive_Parameter = mkN "genitive" ; + dative_Parameter = mkN "dative" ; + accusative_Parameter = mkN "accusative" ; + + imperative_Parameter = mkN "imperative" ; + indicative_Parameter = mkN "indicative" ; + conjunctive_Parameter = mkN "konjunctive" ; + infinitive_Parameter = mkN "infinitive" ; + + definite_Parameter = mkN "definite" ; + indefinite_Parameter = mkN "indefinite" ; + + present_Parameter = mkN "present" ; + past_Parameter = mkN "past" ; + future_Parameter = mkN "future" ; + conditional_Parameter = mkN "conditional" ; + perfect_Parameter = mkN "perfect" ; + supine_Parameter = mkN "supine" ; + + participle_Parameter = mkN "participle" ; + aux_verb_Parameter = mkN "auxiliary" ; + + positive_Parameter = mkN "positive" ; + comparative_Parameter = mkN "comparative" ; + superlative_Parameter = mkN "superlative" ; + predicative_Parameter = mkN "predicative" ; + + nounHeading n = ss (n.s ! Sg ! Nom) ; + + exampleGr_N = mkN "example" ; + formGr_N = mkN "form" ; + + +} \ No newline at end of file diff --git a/lib/src/finnish/DocumentationFin.gf b/lib/src/finnish/DocumentationFin.gf index cabd15381..28e1f7fbb 100644 --- a/lib/src/finnish/DocumentationFin.gf +++ b/lib/src/finnish/DocumentationFin.gf @@ -1,6 +1,7 @@ --# -path=.:../abstract:../common concrete DocumentationFin of Documentation = CatFin ** open + TerminologyFin, ResFin, StemFin, ParadigmsFin, @@ -13,79 +14,12 @@ in { lincat - Category = G.N ; - ParameterType = G.N ; - Parameter = G.N ; - Modifier = G.A ; - - Heading = {s : Str} ; Inflection = {s : Str} ; - -lin - noun_Category = mkN "substantiivi" ; - adjective_Category = mkN "adjektiivi" ; - verb_Category = mkN "verbi" ; - adverb_Category = mkN "adverbi" ; - preposition_Category = mkN "prepositio" ; - - singular_Parameter = mkN "yksikkö" ; - plural_Parameter = mkN "monikko" ; - - masculine_Parameter = mkN "maskuliini" ; - feminine_Parameter = mkN "feminiini" ; - neuter_Parameter = mkN "neutri" ; - - nominative_Parameter = mkN "nominatiivi" ; - genitive_Parameter = mkN "genetiivi" ; - dative_Parameter = mkN "datiivi" ; - accusative_Parameter = mkN "akkusatiivi" ; - - partitive_Parameter = mkN "partitiivi" ; - translative_Parameter = mkN "translatiivi" ; - essive_Parameter = mkN "essiivi" ; - inessive_Parameter = mkN "inessiivi" ; - elative_Parameter = mkN "elatiivi" ; - illative_Parameter = mkN "illatiivi" ; - adessive_Parameter = mkN "adessiivi" ; - ablative_Parameter = mkN "ablatiivi" ; - allative_Parameter = mkN "allatiivi" ; - abessive_Parameter = mkN "abessiivi" ; - comitative_Parameter = mkN "komitatiivi" ; - instructive_Parameter = mkN "instruktiivi" ; - - active_Parameter = mkN "aktiivi" ; - passive_Parameter = mkN "passiivi" ; - - imperative_Parameter = mkN "imperatiivi" ; - indicative_Parameter = mkN "indikatiivi" ; - conjunctive_Parameter = mkN "konjunktiivi" ; - infinitive_Parameter = mkN "infinitiivi" ; - - present_Parameter = mkN "preesens" ; - past_Parameter = mkN "imperfekti" ; - future_Parameter = mkN "futuuri" ; - conditional_Parameter = mkN "konditionaali" ; - perfect_Parameter = mkN "perfekti" ; - potential_Parameter = mkN "potentiaali" ; - - participle_Parameter = mkN "partisiippi" ; - aux_verb_Parameter = mkN "apu" (mkN "verbi") ; - agent_Parameter = mkN "agentti" ; - - positive_Parameter = mkN "positiivi" ; - comparative_Parameter = mkN "komparatiivi" ; - superlative_Parameter = mkN "superlatiivi" ; - predicative_Parameter = mkN "predikatiivi" ; - - finite_Modifier = mkA "finiittinen" ; - - nounHeading n = ss ((snoun2nounSep n).s ! NCase Sg Nom) ; - oper tdf : Str -> Str = \s -> td (intag "i" s) ; tdf2 : Str -> Str = \s -> intagAttr "td" "rowspan=2" (intag "i" s) ; - heading : N -> Str = \n -> (nounHeading n).s ; + heading : CatFin.N -> Str = \n -> (nounHeading n).s ; inflectionN : (NForm -> Str) -> Str = \nouns -> frameTable ( @@ -130,12 +64,12 @@ lin ExplainInflection e i = ss (i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph oper - verbExample : Cl -> Str = \cl -> (S.mkUtt cl).s ; + verbExample : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ; - inflectionVerb : Str -> V -> {s : Str} = \ex,verb0 -> + inflectionVerb : Str -> CatFin.V -> {s : Str} = \ex,verb0 -> let verb = sverb2verbSep verb0 ; - vfin : VForm -> Str = \f -> + vfin : ResFin.VForm -> Str = \f -> verb.s ! f ; gforms : Number -> Person -> Str = \n,p -> tdf (vfin (Presn n p)) @@ -233,9 +167,4 @@ lin paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ((S.mkAdv (lin Prep p) S.it_NP).s ++ ";" ++ (S.mkAdv (lin Prep p) S.we_NP).s)) } ; - - - formGF_N = mkN "muoto" ; - exampleGr_N = mkN "esimerkki" ; - } \ No newline at end of file diff --git a/lib/src/finnish/TerminologyFin.gf b/lib/src/finnish/TerminologyFin.gf new file mode 100644 index 000000000..3206431c9 --- /dev/null +++ b/lib/src/finnish/TerminologyFin.gf @@ -0,0 +1,87 @@ +--# -path=.:../abstract:../common + +concrete TerminologyFin of Terminology = CatFin ** open + ResFin, + StemFin, + ParadigmsFin, + (G = GrammarFin), + (S = SyntaxFin), + (L = LexiconFin), + Prelude, + HTML +in { + + +lincat + Category = G.N ; + ParameterType = G.N ; + Parameter = G.N ; + Modifier = G.A ; + + Heading = {s : Str} ; + + +lin + noun_Category = mkN "substantiivi" ; + adjective_Category = mkN "adjektiivi" ; + verb_Category = mkN "verbi" ; + adverb_Category = mkN "adverbi" ; + preposition_Category = mkN "prepositio" ; + + singular_Parameter = mkN "yksikkö" ; + plural_Parameter = mkN "monikko" ; + + masculine_Parameter = mkN "maskuliini" ; + feminine_Parameter = mkN "feminiini" ; + neuter_Parameter = mkN "neutri" ; + + nominative_Parameter = mkN "nominatiivi" ; + genitive_Parameter = mkN "genetiivi" ; + dative_Parameter = mkN "datiivi" ; + accusative_Parameter = mkN "akkusatiivi" ; + + partitive_Parameter = mkN "partitiivi" ; + translative_Parameter = mkN "translatiivi" ; + essive_Parameter = mkN "essiivi" ; + inessive_Parameter = mkN "inessiivi" ; + elative_Parameter = mkN "elatiivi" ; + illative_Parameter = mkN "illatiivi" ; + adessive_Parameter = mkN "adessiivi" ; + ablative_Parameter = mkN "ablatiivi" ; + allative_Parameter = mkN "allatiivi" ; + abessive_Parameter = mkN "abessiivi" ; + comitative_Parameter = mkN "komitatiivi" ; + instructive_Parameter = mkN "instruktiivi" ; + + active_Parameter = mkN "aktiivi" ; + passive_Parameter = mkN "passiivi" ; + + imperative_Parameter = mkN "imperatiivi" ; + indicative_Parameter = mkN "indikatiivi" ; + conjunctive_Parameter = mkN "konjunktiivi" ; + infinitive_Parameter = mkN "infinitiivi" ; + + present_Parameter = mkN "preesens" ; + past_Parameter = mkN "imperfekti" ; + future_Parameter = mkN "futuuri" ; + conditional_Parameter = mkN "konditionaali" ; + perfect_Parameter = mkN "perfekti" ; + potential_Parameter = mkN "potentiaali" ; + + participle_Parameter = mkN "partisiippi" ; + aux_verb_Parameter = mkN "apu" (mkN "verbi") ; + agent_Parameter = mkN "agentti" ; + + positive_Parameter = mkN "positiivi" ; + comparative_Parameter = mkN "komparatiivi" ; + superlative_Parameter = mkN "superlatiivi" ; + predicative_Parameter = mkN "predikatiivi" ; + + finite_Modifier = mkA "finiittinen" ; + + nounHeading n = ss ((snoun2nounSep n).s ! NCase Sg Nom) ; + + formGF_N = mkN "muoto" ; + exampleGr_N = mkN "esimerkki" ; + +} \ No newline at end of file diff --git a/lib/src/french/DocumentationFre.gf b/lib/src/french/DocumentationFre.gf index 4d82f61a5..9fd6e7cba 100644 --- a/lib/src/french/DocumentationFre.gf +++ b/lib/src/french/DocumentationFre.gf @@ -1,6 +1,7 @@ --# -path=.:../abstract:../common concrete DocumentationFre of Documentation = CatFre ** open + TerminologyFre, ResFre, CommonRomance, ParadigmsFre, @@ -13,60 +14,13 @@ in { lincat - Category = G.N ; - ParameterType = G.N ; - Parameter = G.N ; - - Heading = {s : Str} ; Inflection = {s : Str} ; - -lin - noun_Category = mkN "nom" ; - adjective_Category = mkN "adjectif" ; - verb_Category = mkN "verbe" masculine ; - - gender_ParameterType = mkN "genre" masculine ; - - singular_Parameter = mkN "singulier" ; - plural_Parameter = mkN "pluriel" ; - - masculine_Parameter = mkN "masculin" ; - feminine_Parameter = mkN "féminin" ; - neuter_Parameter = mkN "neutre" ; - - nominative_Parameter = mkN "nominatif" ; - genitive_Parameter = mkN "génitif" ; - dative_Parameter = mkN "datif" ; - accusative_Parameter = mkN "accusativ" ; - - imperative_Parameter = mkN "impératif" ; - indicative_Parameter = mkN "indicatif" ; - conjunctive_Parameter = mkN "subjonctif" ; - infinitive_Parameter = mkN "infinitif" ; - - present_Parameter = mkN "présent" ; - past_Parameter = mkN "passé simple" ; ---- - future_Parameter = mkN "futur" ; - conditional_Parameter = mkN "conditionnel" ; - perfect_Parameter = mkN "passé composé" ; ---- - imperfect_Parameter = mkN "imparfait" ; - - participle_Parameter = mkN "participe" ; - aux_verb_Parameter = mkN "auxiliaire" ; - - positive_Parameter = mkN "positif" ; - comparative_Parameter = mkN "comparatif" ; - superlative_Parameter = mkN "superlatif" ; - predicative_Parameter = mkN "prédicatif" ; - - nounHeading n = ss (n.s ! Sg) ; - oper tdf : Str -> Str = \s -> td (intag "i" s) ; - heading : N -> Str = \n -> (nounHeading n).s ; + heading : CatFre.N -> Str = \n -> (nounHeading n).s ; - nounGender : N -> Parameter = \n -> case n.g of { + nounGender : CatFre.N -> Parameter = \n -> case n.g of { Masc => masculine_Parameter ; Fem => feminine_Parameter } ; @@ -98,14 +52,14 @@ lin ExplainInflection e i = ss (i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph oper - verbExample : Cl -> Str = \cl -> + verbExample : CatFre.Cl -> Str = \cl -> (S.mkUtt cl).s ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent ; - inflectionVerb : Str -> V -> {s : Str} = \ex,verb -> + inflectionVerb : Str -> CatFre.V -> {s : Str} = \ex,verb -> let - vfin : VF -> Str = \f -> + vfin : CommonRomance.VF -> Str = \f -> verb.s ! f ; gforms : Number -> Person -> Str = \n,p -> @@ -163,8 +117,4 @@ oper ) } ; - lin - exampleGr_N = mkN "exemple" masculine ; - - } \ No newline at end of file diff --git a/lib/src/french/TerminologyFre.gf b/lib/src/french/TerminologyFre.gf new file mode 100644 index 000000000..63a09b230 --- /dev/null +++ b/lib/src/french/TerminologyFre.gf @@ -0,0 +1,66 @@ +--# -path=.:../abstract:../common + +concrete TerminologyFre of Terminology = CatFre ** open + ResFre, + CommonRomance, + ParadigmsFre, + (G = GrammarFre), + (S = SyntaxFre), + (L = LexiconFre), + Prelude + +in { + + +lincat + Category = G.N ; + ParameterType = G.N ; + Parameter = G.N ; + + Heading = {s : Str} ; + + +lin + noun_Category = mkN "nom" ; + adjective_Category = mkN "adjectif" ; + verb_Category = mkN "verbe" masculine ; + + gender_ParameterType = mkN "genre" masculine ; + + singular_Parameter = mkN "singulier" ; + plural_Parameter = mkN "pluriel" ; + + masculine_Parameter = mkN "masculin" ; + feminine_Parameter = mkN "féminin" ; + neuter_Parameter = mkN "neutre" ; + + nominative_Parameter = mkN "nominatif" ; + genitive_Parameter = mkN "génitif" ; + dative_Parameter = mkN "datif" ; + accusative_Parameter = mkN "accusativ" ; + + imperative_Parameter = mkN "impératif" ; + indicative_Parameter = mkN "indicatif" ; + conjunctive_Parameter = mkN "subjonctif" ; + infinitive_Parameter = mkN "infinitif" ; + + present_Parameter = mkN "présent" ; + past_Parameter = mkN "passé simple" ; ---- + future_Parameter = mkN "futur" ; + conditional_Parameter = mkN "conditionnel" ; + perfect_Parameter = mkN "passé composé" ; ---- + imperfect_Parameter = mkN "imparfait" ; + + participle_Parameter = mkN "participe" ; + aux_verb_Parameter = mkN "auxiliaire" ; + + positive_Parameter = mkN "positif" ; + comparative_Parameter = mkN "comparatif" ; + superlative_Parameter = mkN "superlatif" ; + predicative_Parameter = mkN "prédicatif" ; + + nounHeading n = ss (n.s ! Sg) ; + + exampleGr_N = mkN "exemple" masculine ; + +} \ No newline at end of file diff --git a/lib/src/german/DocumentationGer.gf b/lib/src/german/DocumentationGer.gf index 52ae66472..2795cf939 100644 --- a/lib/src/german/DocumentationGer.gf +++ b/lib/src/german/DocumentationGer.gf @@ -1,6 +1,7 @@ --# -path=.:../abstract:../common concrete DocumentationGer of Documentation = CatGer ** open + TerminologyGer, ResGer, ParadigmsGer, (G = GrammarGer), @@ -12,60 +13,14 @@ in { lincat - Category = G.N ; - ParameterType = G.N ; - Parameter = G.N ; - - Heading = {s : Str} ; Inflection = {s : Str} ; -lin - noun_Category = mkN "Substantiv" ; - adjective_Category = mkN "Adjektiv" ; - verb_Category = mkN "Verb" ; - preposition_Category = mkN "Präposition" ; - - gender_ParameterType = mkN "Geschlecht" ; - - singular_Parameter = mkN "Singular" ; - plural_Parameter = mkN "Plural" ; - - masculine_Parameter = mkN "Maskulinum" ; - feminine_Parameter = mkN "Femininum" ; - neuter_Parameter = mkN "Neutrum" ; - - nominative_Parameter = mkN "Nominativ" ; - genitive_Parameter = mkN "Genitiv" ; - dative_Parameter = mkN "Dativ" ; - accusative_Parameter = mkN "Akkusativ" ; - - imperative_Parameter = mkN "Imperativ" ; - indicative_Parameter = mkN "Indikativ" ; - conjunctive_Parameter = mkN "Konjunktiv" ; - infinitive_Parameter = mkN "Infinitiv" ; - - present_Parameter = mkN "Präsens" ; - past_Parameter = mkN "Präteritum" ; - future_Parameter = mkN "Futur" ; - conditional_Parameter = mkN "Konditional" ; - perfect_Parameter = mkN "Perfekt" ; - - participle_Parameter = mkN "Partizip" ; - aux_verb_Parameter = mkN "Hilfsverb" ; - - positive_Parameter = mkN "Positiv" ; - comparative_Parameter = mkN "Komparativ" ; - superlative_Parameter = mkN "Superlativ" ; - predicative_Parameter = mkN "Prädikativ" ; - - nounHeading n = ss (n.s ! Sg ! Nom) ; - oper tdf : Str -> Str = \s -> td (intag "i" s) ; heading : N -> Str = \n -> (nounHeading n).s ; - nounGender : N -> Parameter = \n -> case n.g of { + nounGender : CatGer.N -> Parameter = \n -> case n.g of { Masc => masculine_Parameter ; Fem => feminine_Parameter ; Neutr => neuter_Parameter @@ -119,12 +74,12 @@ lin ExplainInflection e i = ss (i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph oper - verbExample : Cl -> Str = \cl -> + verbExample : CatGer.Cl -> Str = \cl -> (S.mkUtt cl).s ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent ; - inflectionVerb : Str -> V -> {s : Str} = \ex,verb -> + inflectionVerb : Str -> CatGer.V -> {s : Str} = \ex,verb -> let vfin : VForm -> Str = \f -> verb.s ! f ++ verb.prefix ; @@ -160,7 +115,4 @@ oper )) } ; - lin - exampleGr_N = mkN "Beispiel" "Beispiele" neuter ; - } \ No newline at end of file diff --git a/lib/src/german/TerminologyGer.gf b/lib/src/german/TerminologyGer.gf new file mode 100644 index 000000000..8283ca56c --- /dev/null +++ b/lib/src/german/TerminologyGer.gf @@ -0,0 +1,64 @@ +--# -path=.:../abstract:../common + +concrete TerminologyGer of Terminology = CatGer ** open + ResGer, + ParadigmsGer, + (G = GrammarGer), + (S = SyntaxGer), + (L = LexiconGer), + Prelude +in { + + +lincat + Category = G.N ; + ParameterType = G.N ; + Parameter = G.N ; + + Heading = {s : Str} ; + + +lin + noun_Category = mkN "Substantiv" ; + adjective_Category = mkN "Adjektiv" ; + verb_Category = mkN "Verb" ; + preposition_Category = mkN "Präposition" ; + + gender_ParameterType = mkN "Geschlecht" ; + + singular_Parameter = mkN "Singular" ; + plural_Parameter = mkN "Plural" ; + + masculine_Parameter = mkN "Maskulinum" ; + feminine_Parameter = mkN "Femininum" ; + neuter_Parameter = mkN "Neutrum" ; + + nominative_Parameter = mkN "Nominativ" ; + genitive_Parameter = mkN "Genitiv" ; + dative_Parameter = mkN "Dativ" ; + accusative_Parameter = mkN "Akkusativ" ; + + imperative_Parameter = mkN "Imperativ" ; + indicative_Parameter = mkN "Indikativ" ; + conjunctive_Parameter = mkN "Konjunktiv" ; + infinitive_Parameter = mkN "Infinitiv" ; + + present_Parameter = mkN "Präsens" ; + past_Parameter = mkN "Präteritum" ; + future_Parameter = mkN "Futur" ; + conditional_Parameter = mkN "Konditional" ; + perfect_Parameter = mkN "Perfekt" ; + + participle_Parameter = mkN "Partizip" ; + aux_verb_Parameter = mkN "Hilfsverb" ; + + positive_Parameter = mkN "Positiv" ; + comparative_Parameter = mkN "Komparativ" ; + superlative_Parameter = mkN "Superlativ" ; + predicative_Parameter = mkN "Prädikativ" ; + + nounHeading n = ss (n.s ! Sg ! Nom) ; + + exampleGr_N = mkN "Beispiel" "Beispiele" neuter ; + +} \ No newline at end of file diff --git a/lib/src/swedish/DocumentationSwe.gf b/lib/src/swedish/DocumentationSwe.gf index 65e55af90..ca793551e 100644 --- a/lib/src/swedish/DocumentationSwe.gf +++ b/lib/src/swedish/DocumentationSwe.gf @@ -1,185 +1,6 @@ --# -path=.:../abstract:../common -concrete DocumentationSwe of Documentation = CatSwe ** open - ResSwe, - CommonScand, - ParadigmsSwe, - (G = GrammarSwe), - (S = SyntaxSwe), - (L = LexiconSwe), - Prelude, - HTML -in { +-- documentation of Swedish in Swedish: the default introduced in LangSwe - -lincat - Category = G.N ; - ParameterType = G.N ; - Parameter = G.N ; - - Heading = {s : Str} ; - Inflection = {s : Str} ; - - -lin - noun_Category = mkN "substantiv" ; - adjective_Category = mkN "adjektiv" ; - verb_Category = mkN "verb" ; - preposition_Category = mkN "preposition" ; - - gender_ParameterType = mkN "genus" ; - - singular_Parameter = mkN "singular" ; - plural_Parameter = mkN "plural" ; - - definite_Parameter = mkN "bestämd" ; - indefinite_Parameter = mkN "obestämd" ; - - masculine_Parameter = mkN "maskulin" ; - feminine_Parameter = mkN "feminin" ; - neuter_Parameter = mkN "neutrum" ; - uter_Parameter = mkN "utrum" ; - - nominative_Parameter = mkN "nominativ" ; - genitive_Parameter = mkN "genitiv" ; - dative_Parameter = mkN "dativ" ; - accusative_Parameter = mkN "akkusativ" ; - - imperative_Parameter = mkN "imperativ" ; - indicative_Parameter = mkN "indikativ" ; - conjunctive_Parameter = mkN "konjunktiv" ; - infinitive_Parameter = mkN "infinitiv" ; - - present_Parameter = mkN "presens" ; - past_Parameter = mkN "preteritum" ; - future_Parameter = mkN "futur" ; - conditional_Parameter = mkN "konditionalis" ; - perfect_Parameter = mkN "perfekt" ; - - participle_Parameter = mkN "partisip" ; - aux_verb_Parameter = mkN "hjälpverb" ; - - positive_Parameter = mkN "positiv" ; - comparative_Parameter = mkN "komparativ" ; - superlative_Parameter = mkN "superlativ" ; - predicative_Parameter = mkN "predikativ" ; - - nounHeading n = ss (n.s ! Sg ! Indef ! Nom) ; - -oper - tdf : Str -> Str = \s -> td (intag "i" s) ; - heading : N -> Str = \n -> (nounHeading n).s ; - - nounGender : N -> Parameter = \n -> case n.g of { - Utr => uter_Parameter ; - Neutr => neuter_Parameter - } ; - -lin - InflectionN noun = { - s = heading1 (heading noun_Category) ++ - paragraph (intag "b" (heading (gender_ParameterType)) ++ ":" ++ heading (nounGender noun) ++ ";" ++ - intag "i" (S.mkUtt (S.mkNP S.a_Det noun)).s) ++ - frameTable ( - tr (intagAttr "th" "colspan=2" "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ - tr (intagAttr "th" "rowspan=2" (heading nominative_Parameter) ++ - th (heading indefinite_Parameter) ++ tdf (noun.s ! Sg ! Indef ! Nom) ++ tdf (noun.s ! Pl ! Indef ! Nom)) ++ - tr (th (heading definite_Parameter) ++ tdf (noun.s ! Sg ! Def ! Nom) ++ tdf (noun.s ! Pl ! Def ! Nom)) ++ - tr (intagAttr "th" "rowspan=2" (heading genitive_Parameter) ++ - th (heading indefinite_Parameter) ++ tdf (noun.s ! Sg ! Indef ! Gen) ++ tdf (noun.s ! Pl ! Indef ! Gen)) ++ - tr (th (heading definite_Parameter) ++ tdf (noun.s ! Sg ! Def ! Gen) ++ tdf (noun.s ! Pl ! Def ! Gen)) - ) - } ; - - InflectionA adj = - let - gforms : Case -> Str = \c -> - tdf (adj.s ! (AF (APosit (Strong (GSg Utr))) c)) ++ - tdf (adj.s ! (AF (APosit (Strong (GSg Neutr))) c)) ++ - tdf (adj.s ! (AF (APosit (Strong GPl)) c)) ++ - tdf (adj.s ! (AF (APosit (Weak Sg)) c)) ; - in - { - s = heading1 (nounHeading adjective_Category).s ++ - frameTable ( - tr (intagAttr "th" "colspan=2" [] ++ - th (heading uter_Parameter) ++ th (heading neuter_Parameter) ++ - th (heading plural_Parameter) ++ th (heading definite_Parameter)) ++ - tr (intagAttr "th" "rowspan=2" (heading positive_Parameter) ++ - th (heading nominative_Parameter) ++ gforms Nom) ++ - tr ( th (heading genitive_Parameter) ++ gforms Gen) ++ - tr (intagAttr "th" "rowspan=2" (heading comparative_Parameter) ++ - th (heading nominative_Parameter) ++ intagAttr "td" "colspan=4" (intag "i" (adj.s ! AF ACompar Nom))) ++ - tr ( th (heading genitive_Parameter) ++ intagAttr "td" "colspan=4" (intag "i" (adj.s ! AF ACompar Gen))) ++ - tr (intagAttr "th" "rowspan=2" (heading superlative_Parameter) ++ - th (heading nominative_Parameter) ++ - intagAttr "td" "colspan=3" (intag "i" (adj.s ! AF (ASuperl SupStrong) Nom)) ++ - tdf (adj.s ! AF (ASuperl SupWeak) Nom)) ++ - tr ( th (heading genitive_Parameter) ++ - intagAttr "td" "colspan=3" (intag "i" (adj.s ! AF (ASuperl SupStrong) Gen)) ++ - tdf (adj.s ! AF (ASuperl SupWeak) Gen)) - ) - - } ; - -{- - InflectionV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V v))) v ; - InflectionV2 v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2 v) S.something_NP)) (lin V v) ; - InflectionVV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin VV v) (S.mkVP (L.sleep_V)))) (lin V v) ; - InflectionV2V v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2V v) S.we_NP (S.mkVP (L.sleep_V)))) (lin V v) ; - - InflectionPrep p = { - s = heading1 (heading preposition_Category) ++ - paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" (S.mkAdv (lin Prep p) (S.mkNP S.a_Det L.computer_N)).s) - } ; - - ExplainInflection e i = ss (i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph - -oper - verbExample : Cl -> Str = \cl -> - (S.mkUtt cl).s - ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent - ; - - inflectionVerb : Str -> V -> {s : Str} = \ex,verb -> - let - vfin : VForm -> Str = \f -> - verb.s ! f ++ verb.prefix ; - gforms : Number -> Person -> Str = \n,p -> - tdf (vfin (VFin False (VPresInd n p))) ++ - tdf (vfin (VFin False (VPresSubj n p))) - ++ tdf (vfin (VFin False (VImpfInd n p))) --# notpresent - ++ tdf (vfin (VFin False (VImpfSubj n p))) --# notpresent - ; - in { - s = - heading1 (heading verb_Category) ++ - paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) ++ - paragraph (frameTable ( - tr (th "" ++ intagAttr "th" "colspan=2" (heading present_Parameter) ++ intagAttr "th" "colspan=2" (heading past_Parameter)) ++ - tr (th "" ++ th (heading indicative_Parameter) ++ th (heading conjunctive_Parameter ++ "I") ++ - th (heading indicative_Parameter) ++ th (heading conjunctive_Parameter ++ "II")) ++ - tr (th "Sg.1" ++ gforms Sg P1) ++ - tr (th "Sg.2" ++ gforms Sg P2) ++ - tr (th "Sg.3" ++ gforms Sg P3) ++ - tr (th "Pl.1" ++ gforms Pl P1) ++ - tr (th "Pl.2" ++ gforms Pl P2) ++ - tr (th "Pl.3" ++ gforms Pl P3) - )) ++ - paragraph ( - frameTable ( - tr (th (heading imperative_Parameter ++ "Sg.2") ++ tdf (vfin (VImper Sg))) ++ - tr (th (heading imperative_Parameter ++ "Pl.2") ++ tdf (vfin (VImper Pl))) ++ - tr (th (heading infinitive_Parameter) ++ tdf (verb.s ! (VInf False))) ++ - tr (th (heading present_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! (VPresPart APred))) ++ - tr (th (heading perfect_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! (VPastPart APred))) ++ - tr (th (heading aux_verb_Parameter) ++ td (intag "i" (case verb.aux of {VHaben => "haben" ; VSein => "sein"}))) - )) - } ; - --} - - lin - exampleGr_N = mkN "exempel" "exempel" ; - -} \ No newline at end of file +concrete DocumentationSwe of Documentation = CatSwe ** + DocumentationSweFunctor with (Terminology = TerminologySwe) ; diff --git a/lib/src/swedish/DocumentationSweEng.gf b/lib/src/swedish/DocumentationSweEng.gf new file mode 100644 index 000000000..010607509 --- /dev/null +++ b/lib/src/swedish/DocumentationSweEng.gf @@ -0,0 +1,6 @@ +--# -path=.:../abstract:../common + +-- documentation of Swedish in English + +concrete DocumentationSweEng of Documentation = CatSwe ** + DocumentationSweFunctor with (Terminology = TerminologyEng) ; diff --git a/lib/src/swedish/DocumentationSweFunctor.gf b/lib/src/swedish/DocumentationSweFunctor.gf new file mode 100644 index 000000000..28584117a --- /dev/null +++ b/lib/src/swedish/DocumentationSweFunctor.gf @@ -0,0 +1,123 @@ +--# -path=.:../abstract:../common + +-- generic documentation: varying the Terminology interface gives documentation of Swe in different languages + +incomplete concrete DocumentationSweFunctor of Documentation = CatSwe ** open + Terminology, -- as interface + ResSwe, + CommonScand, + ParadigmsSwe, + (G = GrammarSwe), + (S = SyntaxSwe), + (L = LexiconSwe), + Prelude, + HTML +in { + + +lincat + Inflection = {s : Str} ; + +oper + tdf : Str -> Str = \s -> td (intag "i" s) ; + heading : N -> Str = \n -> (nounHeading n).s ; + + nounGender : CatSwe.N -> Parameter = \n -> case n.g of { + Utr => uter_Parameter ; + Neutr => neuter_Parameter + } ; + +lin + InflectionN noun = { + s = heading1 (heading noun_Category) ++ + paragraph (intag "b" (heading (gender_ParameterType)) ++ ":" ++ heading (nounGender noun) ++ ";" ++ + intag "i" (S.mkUtt (S.mkNP S.a_Det noun)).s) ++ + frameTable ( + tr (intagAttr "th" "colspan=2" "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ + tr (intagAttr "th" "rowspan=2" (heading nominative_Parameter) ++ + th (heading indefinite_Parameter) ++ tdf (noun.s ! Sg ! Indef ! Nom) ++ tdf (noun.s ! Pl ! Indef ! Nom)) ++ + tr (th (heading definite_Parameter) ++ tdf (noun.s ! Sg ! Def ! Nom) ++ tdf (noun.s ! Pl ! Def ! Nom)) ++ + tr (intagAttr "th" "rowspan=2" (heading genitive_Parameter) ++ + th (heading indefinite_Parameter) ++ tdf (noun.s ! Sg ! Indef ! Gen) ++ tdf (noun.s ! Pl ! Indef ! Gen)) ++ + tr (th (heading definite_Parameter) ++ tdf (noun.s ! Sg ! Def ! Gen) ++ tdf (noun.s ! Pl ! Def ! Gen)) + ) + } ; + + InflectionA adj = + let + gforms : Case -> Str = \c -> + tdf (adj.s ! (AF (APosit (Strong (GSg Utr))) c)) ++ + tdf (adj.s ! (AF (APosit (Strong (GSg Neutr))) c)) ++ + tdf (adj.s ! (AF (APosit (Strong GPl)) c)) ++ + tdf (adj.s ! (AF (APosit (Weak Sg)) c)) ; + in + { + s = heading1 (nounHeading adjective_Category).s ++ + frameTable ( + tr (intagAttr "th" "colspan=2" [] ++ + th (heading uter_Parameter) ++ th (heading neuter_Parameter) ++ + th (heading plural_Parameter) ++ th (heading definite_Parameter)) ++ + tr (intagAttr "th" "rowspan=2" (heading positive_Parameter) ++ + th (heading nominative_Parameter) ++ gforms Nom) ++ + tr ( th (heading genitive_Parameter) ++ gforms Gen) ++ + tr (intagAttr "th" "rowspan=2" (heading comparative_Parameter) ++ + th (heading nominative_Parameter) ++ intagAttr "td" "colspan=4" (intag "i" (adj.s ! AF ACompar Nom))) ++ + tr ( th (heading genitive_Parameter) ++ intagAttr "td" "colspan=4" (intag "i" (adj.s ! AF ACompar Gen))) ++ + tr (intagAttr "th" "rowspan=2" (heading superlative_Parameter) ++ + th (heading nominative_Parameter) ++ + intagAttr "td" "colspan=3" (intag "i" (adj.s ! AF (ASuperl SupStrong) Nom)) ++ + tdf (adj.s ! AF (ASuperl SupWeak) Nom)) ++ + tr ( th (heading genitive_Parameter) ++ + intagAttr "td" "colspan=3" (intag "i" (adj.s ! AF (ASuperl SupStrong) Gen)) ++ + tdf (adj.s ! AF (ASuperl SupWeak) Gen)) + ) + + } ; + + InflectionV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V v))) v ; + InflectionV2 v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2 v) S.something_NP)) (lin V v) ; + InflectionVV v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin VV v) (S.mkVP (L.sleep_V)))) (lin V v) ; + InflectionV2V v = inflectionVerb (verbExample (S.mkCl S.she_NP (lin V2V v) S.we_NP (S.mkVP (L.sleep_V)))) (lin V v) ; + + InflectionPrep p = { + s = heading1 (heading preposition_Category) ++ + paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" (S.mkAdv (lin Prep p) (S.mkNP S.a_Det L.computer_N)).s) + } ; + + ExplainInflection e i = ss (i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph + +oper + verbExample : Cl -> Str = \cl -> + (S.mkUtt cl).s + ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent + ; + + inflectionVerb : Str -> CatSwe.V -> {s : Str} = \ex,verb -> + let + vfin : VForm -> Str = \f -> + verb.s ! f ; + gforms : Voice -> Str = \v -> + tdf (vfin (VI (VInfin v))) + ++ tdf (vfin (VF (VPres v))) + ++ tdf (vfin (VF (VPret v))) --# notpresent + ++ tdf (vfin (VI (VSupin v))) --# notpresent + ++ tdf (vfin (VF (VImper v))) + ; + in { + s = + heading1 (heading verb_Category) ++ + paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) ++ + paragraph (frameTable ( + tr (th "" ++ th (heading infinitive_Parameter) ++ th (heading present_Parameter) ++ + th (heading past_Parameter) ++ th (heading supine_Parameter) ++ th (heading imperative_Parameter)) ++ + tr (th (heading active_Parameter) ++ gforms Act) ++ + tr (th (heading passive_Parameter) ++ gforms Pass) + )) ++ + paragraph ( + frameTable ( + tr (th (heading present_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! (VI (VPtPres Sg Indef Nom)))) ++ + tr (th (heading perfect_Parameter ++ heading participle_Parameter) ++ tdf (verb.s ! (VI (VPtPret (Strong (GSg Utr)) Nom)))) + )) + } ; + +} \ No newline at end of file diff --git a/lib/src/swedish/TerminologySwe.gf b/lib/src/swedish/TerminologySwe.gf new file mode 100644 index 000000000..278203a2a --- /dev/null +++ b/lib/src/swedish/TerminologySwe.gf @@ -0,0 +1,76 @@ +--# -path=.:../abstract:../common + +concrete TerminologySwe of Terminology = CatSwe ** open + ResSwe, + CommonScand, + ParadigmsSwe, + (G = GrammarSwe), + (S = SyntaxSwe), + (L = LexiconSwe), + Prelude, + HTML +in { + + +lincat + Category = G.N ; + ParameterType = G.N ; + Parameter = G.N ; + + Heading = {s : Str} ; + + +lin + noun_Category = mkN "substantiv" ; + adjective_Category = mkN "adjektiv" ; + verb_Category = mkN "verb" ; + adverb_Category = mkN "adverb" ; + preposition_Category = mkN "preposition" ; + + gender_ParameterType = mkN "genus" ; + + singular_Parameter = mkN "singular" ; + plural_Parameter = mkN "plural" ; + + definite_Parameter = mkN "bestämd" ; + indefinite_Parameter = mkN "obestämd" ; + + masculine_Parameter = mkN "maskulin" ; + feminine_Parameter = mkN "feminin" ; + neuter_Parameter = mkN "neutrum" ; + uter_Parameter = mkN "utrum" ; + + nominative_Parameter = mkN "nominativ" ; + genitive_Parameter = mkN "genitiv" ; + dative_Parameter = mkN "dativ" ; + accusative_Parameter = mkN "akkusativ" ; + + imperative_Parameter = mkN "imperativ" ; + indicative_Parameter = mkN "indikativ" ; + conjunctive_Parameter = mkN "konjunktiv" ; + infinitive_Parameter = mkN "infinitiv" ; + + active_Parameter = mkN "aktiv" ; + passive_Parameter = mkN "passiv" ; + + present_Parameter = mkN "presens" ; + past_Parameter = mkN "preteritum" ; + future_Parameter = mkN "futur" ; + conditional_Parameter = mkN "konditionalis" ; + perfect_Parameter = mkN "perfekt" ; + supine_Parameter = mkN "supinum" ; + + participle_Parameter = mkN "particip" ; + aux_verb_Parameter = mkN "hjälpverb" ; + + positive_Parameter = mkN "positiv" ; + comparative_Parameter = mkN "komparativ" ; + superlative_Parameter = mkN "superlativ" ; + predicative_Parameter = mkN "predikativ" ; + + nounHeading n = ss (n.s ! Sg ! Indef ! Nom) ; + + lin + exampleGr_N = mkN "exempel" "exempel" ; + +} \ No newline at end of file