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