diff --git a/lib/src/abstract/Terminology.gf b/lib/src/abstract/Terminology.gf index b4a7ea562..b0a8d9f43 100644 --- a/lib/src/abstract/Terminology.gf +++ b/lib/src/abstract/Terminology.gf @@ -24,6 +24,8 @@ fun person_ParameterType : ParameterType ; tense_ParameterType : ParameterType ; degree_ParameterType : ParameterType ; + finite_form_ParameterType : ParameterType ; -- needed in Fin V + nominal_form_ParameterType : ParameterType ; singular_Parameter : Parameter ; plural_Parameter : Parameter ; @@ -70,15 +72,18 @@ fun imperfect_Parameter : Parameter ; potential_Parameter : Parameter ; -- Fin V supine_Parameter : Parameter ; -- Swe V + simple_past_Parameter : Parameter ; -- Fre V participle_Parameter : Parameter ; aux_verb_Parameter : Parameter ; agent_Parameter : Parameter ; - positive_Parameter : Parameter ; + positive_Parameter : Parameter ; -- as degree of verbs comparative_Parameter : Parameter ; superlative_Parameter : Parameter ; predicative_Parameter : Parameter ; + negative_Parameter : Parameter ; + positivePol_Parameter : Parameter ; -- as opposed to negative, e.g. for verbs subject_Parameter : Parameter ; object_Parameter : Parameter ; @@ -87,17 +92,21 @@ fun person2_Parameter : Parameter ; person3_Parameter : Parameter ; + short_Parameter : Parameter ; -- short form of e.g. a Fin infinitive + long_Parameter : Parameter ; + finite_Modifier : Modifier ; transitive_Modifier : Modifier ; + nominal_Modifier : Modifier ; - nounHeading : N -> Heading ; + nounHeading : N -> Heading ; -- e.g. verb + nounPluralHeading : N -> Heading ; -- e.g. verbs + modNounHeading : A -> N -> Heading ; -- e.g. transitive verb -- 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/TerminologyEng.gf b/lib/src/english/TerminologyEng.gf index 48267eb38..f2ce03e14 100644 --- a/lib/src/english/TerminologyEng.gf +++ b/lib/src/english/TerminologyEng.gf @@ -21,8 +21,11 @@ lin adjective_Category = mkN "adjective" ; verb_Category = mkN "verb" ; adverb_Category = mkN "adverb" ; + preposition_Category = mkN "preposition" ; gender_ParameterType = mkN "Gender" ; + finite_form_ParameterType = mkN "finite form" ; + nominal_form_ParameterType = mkN "nominal form" ; singular_Parameter = mkN "singular" ; plural_Parameter = mkN "plural" ; @@ -36,10 +39,26 @@ lin genitive_Parameter = mkN "genitive" ; dative_Parameter = mkN "dative" ; accusative_Parameter = mkN "accusative" ; + + partitive_Parameter = mkN "partitive" ; + translative_Parameter = mkN "translative" ; + essive_Parameter = mkN "essive" ; + inessive_Parameter = mkN "inessive" ; + elative_Parameter = mkN "elative" ; + illative_Parameter = mkN "illative" ; + adessive_Parameter = mkN "adessive" ; + ablative_Parameter = mkN "ablative" ; + allative_Parameter = mkN "allative" ; + abessive_Parameter = mkN "abessive" ; + comitative_Parameter = mkN "comitative" ; + instructive_Parameter = mkN "instructive" ; + + active_Parameter = mkN "active" ; + passive_Parameter = mkN "passive" ; imperative_Parameter = mkN "imperative" ; indicative_Parameter = mkN "indicative" ; - conjunctive_Parameter = mkN "konjunctive" ; + conjunctive_Parameter = mkN "conjunctive" ; infinitive_Parameter = mkN "infinitive" ; definite_Parameter = mkN "definite" ; @@ -49,8 +68,12 @@ lin past_Parameter = mkN "past" ; future_Parameter = mkN "future" ; conditional_Parameter = mkN "conditional" ; + potential_Parameter = mkN "potential" ; perfect_Parameter = mkN "perfect" ; + imperfect_Parameter = mkN "imperfect" ; supine_Parameter = mkN "supine" ; + agent_Parameter = mkN "agent" ; + simple_past_Parameter = mkN "simple past" ; participle_Parameter = mkN "participle" ; aux_verb_Parameter = mkN "auxiliary" ; @@ -59,8 +82,13 @@ lin comparative_Parameter = mkN "comparative" ; superlative_Parameter = mkN "superlative" ; predicative_Parameter = mkN "predicative" ; + negative_Parameter = mkN "negative" ; + + short_Parameter = mkN "short" ; + long_Parameter = mkN "long" ; nounHeading n = ss (n.s ! Sg ! Nom) ; + nounPluralHeading n = ss (n.s ! Pl ! Nom) ; exampleGr_N = mkN "example" ; formGr_N = mkN "form" ; diff --git a/lib/src/finnish/DocumentationFin.gf b/lib/src/finnish/DocumentationFin.gf index 28e1f7fbb..719fe8277 100644 --- a/lib/src/finnish/DocumentationFin.gf +++ b/lib/src/finnish/DocumentationFin.gf @@ -1,170 +1,6 @@ --# -path=.:../abstract:../common -concrete DocumentationFin of Documentation = CatFin ** open - TerminologyFin, - ResFin, - StemFin, - ParadigmsFin, - (G = GrammarFin), - (S = SyntaxFin), - (L = LexiconFin), - Prelude, - HTML -in { +-- documentation of Finnish in Finnish: the default introduced in LangFin - -lincat - Inflection = {s : Str} ; - -oper - tdf : Str -> Str = \s -> td (intag "i" s) ; - tdf2 : Str -> Str = \s -> intagAttr "td" "rowspan=2" (intag "i" s) ; - heading : CatFin.N -> Str = \n -> (nounHeading n).s ; - - inflectionN : (NForm -> Str) -> Str = \nouns -> - frameTable ( - tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ - tr (th (heading nominative_Parameter) ++ tdf (nouns (NCase Sg Nom)) ++ tdf (nouns (NCase Pl Nom))) ++ - tr (th (heading genitive_Parameter) ++ tdf (nouns (NCase Sg Gen)) ++ tdf (nouns (NCase Pl Gen))) ++ - tr (th (heading partitive_Parameter) ++ tdf (nouns (NCase Sg Part)) ++ tdf (nouns (NCase Pl Part))) ++ - tr (th (heading translative_Parameter) ++ tdf (nouns (NCase Sg Transl)) ++ tdf (nouns (NCase Pl Transl))) ++ - tr (th (heading essive_Parameter) ++ tdf (nouns (NCase Sg Ess)) ++ tdf (nouns (NCase Pl Ess))) ++ - tr (th (heading inessive_Parameter) ++ tdf (nouns (NCase Sg Iness)) ++ tdf (nouns (NCase Pl Iness))) ++ - tr (th (heading elative_Parameter) ++ tdf (nouns (NCase Sg Elat)) ++ tdf (nouns (NCase Pl Elat))) ++ - tr (th (heading illative_Parameter) ++ tdf (nouns (NCase Sg Illat)) ++ tdf (nouns (NCase Pl Illat))) ++ - tr (th (heading adessive_Parameter) ++ tdf (nouns (NCase Sg Adess)) ++ tdf (nouns (NCase Pl Adess))) ++ - tr (th (heading ablative_Parameter) ++ tdf (nouns (NCase Sg Ablat)) ++ tdf (nouns (NCase Pl Ablat))) ++ - tr (th (heading allative_Parameter) ++ tdf (nouns (NCase Sg Allat)) ++ tdf (nouns (NCase Pl Allat))) ++ - tr (th (heading abessive_Parameter) ++ tdf (nouns (NCase Sg Abess)) ++ tdf (nouns (NCase Pl Abess))) ++ - tr (th (heading comitative_Parameter) ++ tdf "" ++ tdf (nouns (NComit))) ++ - tr (th (heading instructive_Parameter) ++ tdf "" ++ tdf (nouns (NInstruct))) - ) ; - -lin - InflectionN noun = { - s = heading1 (heading noun_Category) ++ - inflectionN (\nf -> (snoun2nounSep noun).s ! nf) - } ; - - InflectionA adj = { - s = heading1 (heading adjective_Category) ++ - inflectionN (\nf -> (snoun2nounSep {s = \\f => adj.s ! Posit ! sAN f ; h = adj.h}).s ! nf) ++ - heading2 (heading comparative_Parameter) ++ - inflectionN (\nf -> (snoun2nounSep {s = \\f => adj.s ! Compar ! sAN f ; h = adj.h}).s ! nf) ++ - heading2 (heading superlative_Parameter) ++ - inflectionN (\nf -> (snoun2nounSep {s = \\f => adj.s ! Superl ! sAN f ; h = adj.h}).s ! nf) - } ; - - - 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 : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ; - - inflectionVerb : Str -> CatFin.V -> {s : Str} = \ex,verb0 -> - let - verb = sverb2verbSep verb0 ; - vfin : ResFin.VForm -> Str = \f -> - verb.s ! f ; - gforms : Number -> Person -> Str = \n,p -> - tdf (vfin (Presn n p)) - ++ tdf (vfin (Impf n p)) --# notpresent - ++ tdf (vfin (Condit n p)) --# notpresent - ++ tdf (vfin (Potent n p)) --# notpresent - ; - in { - s = - heading1 (heading verb_Category) ++ - paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) ++ - heading2 "finiittimuodot" ++ --- - frameTable ( - tr (intagAttr "th" "rowspan=2" "" ++ - intagAttr "th" "colspan=2" (heading indicative_Parameter) ++ - th (heading conditional_Parameter) ++ th (heading potential_Parameter) ++ - th (heading imperative_Parameter)) ++ - tr ( th (heading present_Parameter) ++ th (heading past_Parameter) ++ - th (heading present_Parameter) ++ th (heading present_Parameter) ++ - th (heading present_Parameter)) ++ - tr (th "yks.1" ++ gforms Sg P1 ++ tdf "") ++ - tr (th "yks.2" ++ gforms Sg P2 ++ tdf (vfin (Imper Sg))) ++ - tr (th "yks.3" ++ gforms Sg P3 ++ tdf (vfin (ImperP3 Sg))) ++ - tr (th "mon.1" ++ gforms Pl P1 ++ tdf (vfin (ImperP1Pl))) ++ - tr (th "mon.2" ++ gforms Pl P2 ++ tdf (vfin (Imper Pl))) ++ - tr (th "mon.3" ++ gforms Pl P3 ++ tdf (vfin (ImperP3 Pl))) ++ - tr (th "pass." ++ tdf (vfin (PassPresn True)) ++ tdf (vfin (PassImpf True)) ++ --# notpresent - tdf (vfin (PassCondit True)) ++ tdf (vfin (PassPotent True)) ++ tdf (vfin (PassImper True))) ++ --# notpresent - tr (th "kielt.yks." ++ tdf2 (vfin (Imper Sg)) ++ tdf (vfin (PastPartAct (AN (NCase Sg Nom)))) - ++ tdf2 (vfin (Condit Sg P3)) ++ tdf2 (vfin (PotentNeg)) ++ tdf (vfin (Imper Sg)) --# notpresent - ) ++ - tr (th "kielt.mon." ++ tdf (vfin (PastPartAct (AN (NCase Pl Nom)))) ++ - tdf (vfin (ImpNegPl))) ++ - tr (th "kielt.pass." ++ tdf (vfin (PassPresn False)) - ++ tdf (vfin (PassImpf False)) ++ tdf (vfin (PassCondit False)) ++ tdf (vfin (PassPotent False))--# notpresent - ++ tdf (vfin (PassImper False))) - ) - ++ - heading2 "nominaalimuodot" ++ --- - frameTable ( - tr (intagAttr "th" "rowspan=15" (heading infinitive_Parameter) ++ - intagAttr "th" "rowspan=2" "1" ++ - th "lyhyt" ++ --- - tdf (vfin (Inf Inf1))) ++ - tr (th "pitkä" ++ --- - tdf (vfin (Inf Inf1Long) ++ BIND ++ "(ni)")) ++ - tr (intagAttr "th" "rowspan=2" ("2." ++ heading active_Parameter) ++ - th (heading inessive_Parameter) ++ - tdf (vfin (Inf Inf2Iness))) ++ - tr (th (heading instructive_Parameter) ++ - tdf (vfin (Inf Inf2Instr))) ++ - tr (th ("2." ++ heading passive_Parameter) ++ - th (heading inessive_Parameter) ++ - tdf (vfin (Inf Inf2InessPass))) ++ - - tr (intagAttr "th" "rowspan=7" "3." ++ - th (heading inessive_Parameter) ++ tdf (vfin (Inf Inf3Iness))) ++ - tr (th (heading elative_Parameter) ++ tdf (vfin (Inf Inf3Elat))) ++ - tr (th (heading illative_Parameter) ++ tdf (vfin (Inf Inf3Illat))) ++ - tr (th (heading adessive_Parameter) ++ tdf (vfin (Inf Inf3Adess))) ++ - tr (th (heading abessive_Parameter) ++ tdf (vfin (Inf Inf3Abess))) ++ - tr (th (heading instructive_Parameter) ++ tdf (vfin (Inf Inf3Instr))) ++ - tr (th (heading instructive_Parameter ++ "pass.") ++ tdf (vfin (Inf Inf3InstrPass))) ++ - - tr (intagAttr "th" "rowspan=2" "4." ++ - th (heading nominative_Parameter) ++ tdf (vfin (Inf Inf4Nom))) ++ - tr (th (heading partitive_Parameter) ++ tdf (vfin (Inf Inf4Part))) ++ - - tr (intagAttr "th" "colspan=2" "5." ++ tdf (vfin (Inf Inf5) ++ BIND ++ "(ni)")) ++ - - tr (intagAttr "th" "rowspan=5" (heading participle_Parameter) ++ - intagAttr "th" "rowspan=2" (heading present_Parameter) ++ - th (heading active_Parameter) ++ - tdf (vfin (PresPartAct (AN (NCase Sg Nom))))) ++ - tr (th (heading passive_Parameter) ++ - tdf (vfin (PresPartPass (AN (NCase Sg Nom))))) ++ - - tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ - th (heading active_Parameter) ++ - tdf (vfin (PastPartAct (AN (NCase Sg Nom))))) ++ - - tr (th (heading passive_Parameter) ++ - tdf (vfin (PastPartPass (AN (NCase Sg Nom))))) ++ - - tr (intagAttr "th" "colspan=2" (heading agent_Parameter) ++ - tdf (vfin (AgentPart (AN (NCase Sg Nom))))) - - ) - - } ; - -lin - InflectionPrep p = { - s = heading1 (heading preposition_Category) ++ - 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)) - } ; -} \ No newline at end of file +concrete DocumentationFin of Documentation = CatFin ** + DocumentationFinFunctor with (Terminology = TerminologyFin) ; diff --git a/lib/src/finnish/DocumentationFinEng.gf b/lib/src/finnish/DocumentationFinEng.gf new file mode 100644 index 000000000..d4bbda68f --- /dev/null +++ b/lib/src/finnish/DocumentationFinEng.gf @@ -0,0 +1,6 @@ +--# -path=.:../abstract:../common + +-- documentation of Finnish in English + +concrete DocumentationFinEng of Documentation = CatFin ** + DocumentationFinFunctor with (Terminology = TerminologyEng) ; diff --git a/lib/src/finnish/DocumentationFinFunctor.gf b/lib/src/finnish/DocumentationFinFunctor.gf new file mode 100644 index 000000000..656721412 --- /dev/null +++ b/lib/src/finnish/DocumentationFinFunctor.gf @@ -0,0 +1,176 @@ +--# -path=.:../abstract:../common + +incomplete concrete DocumentationFinFunctor of Documentation = CatFin ** open + Terminology, -- the interface + ResFin, + StemFin, + ParadigmsFin, + (G = GrammarFin), + (S = SyntaxFin), + (L = LexiconFin), + Prelude, + HTML +in { + + +lincat + Inflection = {s : Str} ; + +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 ; + + inflectionN : (NForm -> Str) -> Str = \nouns -> + frameTable ( + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ + tr (th (heading nominative_Parameter) ++ tdf (nouns (NCase Sg Nom)) ++ tdf (nouns (NCase Pl Nom))) ++ + tr (th (heading genitive_Parameter) ++ tdf (nouns (NCase Sg Gen)) ++ tdf (nouns (NCase Pl Gen))) ++ + tr (th (heading partitive_Parameter) ++ tdf (nouns (NCase Sg Part)) ++ tdf (nouns (NCase Pl Part))) ++ + tr (th (heading translative_Parameter) ++ tdf (nouns (NCase Sg Transl)) ++ tdf (nouns (NCase Pl Transl))) ++ + tr (th (heading essive_Parameter) ++ tdf (nouns (NCase Sg Ess)) ++ tdf (nouns (NCase Pl Ess))) ++ + tr (th (heading inessive_Parameter) ++ tdf (nouns (NCase Sg Iness)) ++ tdf (nouns (NCase Pl Iness))) ++ + tr (th (heading elative_Parameter) ++ tdf (nouns (NCase Sg Elat)) ++ tdf (nouns (NCase Pl Elat))) ++ + tr (th (heading illative_Parameter) ++ tdf (nouns (NCase Sg Illat)) ++ tdf (nouns (NCase Pl Illat))) ++ + tr (th (heading adessive_Parameter) ++ tdf (nouns (NCase Sg Adess)) ++ tdf (nouns (NCase Pl Adess))) ++ + tr (th (heading ablative_Parameter) ++ tdf (nouns (NCase Sg Ablat)) ++ tdf (nouns (NCase Pl Ablat))) ++ + tr (th (heading allative_Parameter) ++ tdf (nouns (NCase Sg Allat)) ++ tdf (nouns (NCase Pl Allat))) ++ + tr (th (heading abessive_Parameter) ++ tdf (nouns (NCase Sg Abess)) ++ tdf (nouns (NCase Pl Abess))) ++ + tr (th (heading comitative_Parameter) ++ tdf "" ++ tdf (nouns (NComit))) ++ + tr (th (heading instructive_Parameter) ++ tdf "" ++ tdf (nouns (NInstruct))) + ) ; + +lin + InflectionN noun = { + s = heading1 (heading noun_Category) ++ + inflectionN (\nf -> (snoun2nounSep noun).s ! nf) + } ; + + InflectionA adj = { + s = heading1 (heading adjective_Category) ++ + inflectionN (\nf -> (snoun2nounSep {s = \\f => adj.s ! Posit ! sAN f ; h = adj.h}).s ! nf) ++ + heading2 (heading comparative_Parameter) ++ + inflectionN (\nf -> (snoun2nounSep {s = \\f => adj.s ! Compar ! sAN f ; h = adj.h}).s ! nf) ++ + heading2 (heading superlative_Parameter) ++ + inflectionN (\nf -> (snoun2nounSep {s = \\f => adj.s ! Superl ! sAN f ; h = adj.h}).s ! nf) + } ; + + + 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 : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ; + + inflectionVerb : Str -> CatFin.V -> {s : Str} = \ex,verb0 -> + let + verb = sverb2verbSep verb0 ; + vfin : ResFin.VForm -> Str = \f -> + verb.s ! f ; + gforms : Number -> Person -> Str = \n,p -> + tdf (vfin (Presn n p)) + ++ tdf (vfin (Impf n p)) --# notpresent + ++ tdf (vfin (Condit n p)) --# notpresent + ++ tdf (vfin (Potent n p)) --# notpresent + ; + in { + s = + heading1 (heading verb_Category) ++ + paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) ++ + heading2 (nounPluralHeading finite_form_ParameterType).s ++ + frameTable ( + tr (intagAttr "th" "rowspan=2 colspan=2" "" ++ + intagAttr "th" "colspan=2" (heading indicative_Parameter) ++ + th (heading conditional_Parameter) ++ th (heading potential_Parameter) ++ + th (heading imperative_Parameter)) ++ + tr ( th (heading present_Parameter) ++ th (heading past_Parameter) ++ + th (heading present_Parameter) ++ th (heading present_Parameter) ++ + th (heading present_Parameter)) ++ + tr (intagAttr "th" "rowspan=3" (heading singular_Parameter) ++ + th "1.p" ++ gforms Sg P1 ++ tdf "") ++ + tr (th "2.p" ++ gforms Sg P2 ++ tdf (vfin (Imper Sg))) ++ + tr (th "3.p" ++ gforms Sg P3 ++ tdf (vfin (ImperP3 Sg))) ++ + tr (intagAttr "th" "rowspan=3" (heading plural_Parameter) ++ + th "1.p" ++ gforms Pl P1 ++ tdf (vfin (ImperP1Pl))) ++ + tr (th "2.p" ++ gforms Pl P2 ++ tdf (vfin (Imper Pl))) ++ + tr (th "3.p" ++ gforms Pl P3 ++ tdf (vfin (ImperP3 Pl))) ++ + tr (intagAttr "th" "colspan=2" (heading passive_Parameter) ++ + tdf (vfin (PassPresn True)) ++ tdf (vfin (PassImpf True)) ++ --# notpresent + tdf (vfin (PassCondit True)) ++ tdf (vfin (PassPotent True)) ++ tdf (vfin (PassImper True))) ++ --# notpresent + tr (intagAttr "th" "rowspan=3" (heading negative_Parameter) ++ + + th (heading singular_Parameter) + ++ tdf2 (vfin (Imper Sg)) ++ tdf (vfin (PastPartAct (AN (NCase Sg Nom)))) + ++ tdf2 (vfin (Condit Sg P3)) ++ tdf2 (vfin (PotentNeg)) ++ tdf (vfin (Imper Sg)) --# notpresent + ) ++ + tr ( th (heading plural_Parameter) ++ tdf (vfin (PastPartAct (AN (NCase Pl Nom)))) ++ + tdf (vfin (ImpNegPl))) ++ + tr ( th (heading passive_Parameter) ++ tdf (vfin (PassPresn False)) + ++ tdf (vfin (PassImpf False)) ++ tdf (vfin (PassCondit False)) ++ tdf (vfin (PassPotent False))--# notpresent + ++ tdf (vfin (PassImper False))) + ) + ++ + heading2 (nounPluralHeading nominal_form_ParameterType).s ++ --- + frameTable ( + tr (intagAttr "th" "rowspan=15" (heading infinitive_Parameter) ++ + intagAttr "th" "rowspan=2" "1" ++ + th (heading short_Parameter) ++ --- + tdf (vfin (Inf Inf1))) ++ + tr (th (heading long_Parameter) ++ --- + tdf (vfin (Inf Inf1Long) ++ BIND ++ "(ni)")) ++ + tr (intagAttr "th" "rowspan=2" ("2." ++ heading active_Parameter) ++ + th (heading inessive_Parameter) ++ + tdf (vfin (Inf Inf2Iness))) ++ + tr (th (heading instructive_Parameter) ++ + tdf (vfin (Inf Inf2Instr))) ++ + tr (th ("2." ++ heading passive_Parameter) ++ + th (heading inessive_Parameter) ++ + tdf (vfin (Inf Inf2InessPass))) ++ + + tr (intagAttr "th" "rowspan=7" "3." ++ + th (heading inessive_Parameter) ++ tdf (vfin (Inf Inf3Iness))) ++ + tr (th (heading elative_Parameter) ++ tdf (vfin (Inf Inf3Elat))) ++ + tr (th (heading illative_Parameter) ++ tdf (vfin (Inf Inf3Illat))) ++ + tr (th (heading adessive_Parameter) ++ tdf (vfin (Inf Inf3Adess))) ++ + tr (th (heading abessive_Parameter) ++ tdf (vfin (Inf Inf3Abess))) ++ + tr (th (heading instructive_Parameter) ++ tdf (vfin (Inf Inf3Instr))) ++ + tr (th (heading instructive_Parameter ++ "pass.") ++ tdf (vfin (Inf Inf3InstrPass))) ++ + + tr (intagAttr "th" "rowspan=2" "4." ++ + th (heading nominative_Parameter) ++ tdf (vfin (Inf Inf4Nom))) ++ + tr (th (heading partitive_Parameter) ++ tdf (vfin (Inf Inf4Part))) ++ + + tr (intagAttr "th" "colspan=2" "5." ++ tdf (vfin (Inf Inf5) ++ BIND ++ "(ni)")) ++ + + tr (intagAttr "th" "rowspan=5" (heading participle_Parameter) ++ + intagAttr "th" "rowspan=2" (heading present_Parameter) ++ + th (heading active_Parameter) ++ + tdf (vfin (PresPartAct (AN (NCase Sg Nom))))) ++ + tr (th (heading passive_Parameter) ++ + tdf (vfin (PresPartPass (AN (NCase Sg Nom))))) ++ + + tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ + th (heading active_Parameter) ++ + tdf (vfin (PastPartAct (AN (NCase Sg Nom))))) ++ + + tr (th (heading passive_Parameter) ++ + tdf (vfin (PastPartPass (AN (NCase Sg Nom))))) ++ + + tr (intagAttr "th" "colspan=2" (heading agent_Parameter) ++ + tdf (vfin (AgentPart (AN (NCase Sg Nom))))) + + ) + + } ; + +lin + InflectionPrep p = { + s = heading1 (heading preposition_Category) ++ + 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)) + } ; +} \ No newline at end of file diff --git a/lib/src/finnish/TerminologyFin.gf b/lib/src/finnish/TerminologyFin.gf index 3206431c9..cb5a21462 100644 --- a/lib/src/finnish/TerminologyFin.gf +++ b/lib/src/finnish/TerminologyFin.gf @@ -28,6 +28,9 @@ lin adverb_Category = mkN "adverbi" ; preposition_Category = mkN "prepositio" ; + finite_form_ParameterType = mkN "finiittimuoto" ; + nominal_form_ParameterType = mkN "nominaalimuoto" ; + singular_Parameter = mkN "yksikkö" ; plural_Parameter = mkN "monikko" ; @@ -76,10 +79,16 @@ lin comparative_Parameter = mkN "komparatiivi" ; superlative_Parameter = mkN "superlatiivi" ; predicative_Parameter = mkN "predikatiivi" ; + negative_Parameter = mkN "kielteinen" ; + positivePol_Parameter = mkN "myönteinen" ; + + long_Parameter = mkN "pitkä" ; + short_Parameter = mkN "lyhyt" ; finite_Modifier = mkA "finiittinen" ; nounHeading n = ss ((snoun2nounSep n).s ! NCase Sg Nom) ; + nounPluralHeading n = ss ((snoun2nounSep n).s ! NCase Pl Nom) ; formGF_N = mkN "muoto" ; exampleGr_N = mkN "esimerkki" ; diff --git a/lib/src/french/DocumentationFre.gf b/lib/src/french/DocumentationFre.gf index 9fd6e7cba..895c6a76e 100644 --- a/lib/src/french/DocumentationFre.gf +++ b/lib/src/french/DocumentationFre.gf @@ -1,120 +1,6 @@ --# -path=.:../abstract:../common -concrete DocumentationFre of Documentation = CatFre ** open - TerminologyFre, - ResFre, - CommonRomance, - ParadigmsFre, - (G = GrammarFre), - (S = SyntaxFre), - (L = LexiconFre), - Prelude, - HTML -in { +-- documentation of French in French: the default introduced in LangFre - -lincat - Inflection = {s : Str} ; - -oper - tdf : Str -> Str = \s -> td (intag "i" s) ; - heading : CatFre.N -> Str = \n -> (nounHeading n).s ; - - nounGender : CatFre.N -> Parameter = \n -> case n.g of { - Masc => masculine_Parameter ; - Fem => feminine_Parameter - } ; - -lin - InflectionN noun = { - s = heading1 (heading noun_Category) ++ - paragraph (intag "b" (heading (gender_ParameterType)) ++ ":" ++ heading (nounGender noun)) ++ - paragraph (frameTable ( - tr (th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ - tr (tdf (noun.s ! Sg) ++ tdf (noun.s ! Pl)) - )) - } ; - - InflectionA adj = { - s = heading1 (nounHeading adjective_Category).s ++ - frameTable ( - tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ - tr (th (heading masculine_Parameter) ++ tdf (adj.s ! Posit ! (AF Masc Sg)) ++ tdf (adj.s ! Posit ! (AF Masc Pl))) ++ - tr (th (heading feminine_Parameter) ++ tdf (adj.s ! Posit ! (AF Fem Sg)) ++ tdf (adj.s ! Posit ! (AF Fem Pl))) - ) - } ; - - 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 : CatFre.Cl -> Str = \cl -> - (S.mkUtt cl).s - ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent - ; - - inflectionVerb : Str -> CatFre.V -> {s : Str} = \ex,verb -> - let - vfin : CommonRomance.VF -> Str = \f -> - verb.s ! f ; - - gforms : Number -> Person -> Str = \n,p -> - tdf (vfin (VFin (VPres Indic) n p)) ++ - tdf (vfin (VFin (VPres Conjunct) n p)) - ++ tdf (vfin (VFin (VImperf Indic) n p)) --# notpresent - ++ tdf (vfin (VFin (VImperf Conjunct) n p)) --# notpresent - ; - - gforms2 : Number -> Person -> Str = \n,p -> --# notpresent - tdf (vfin (VFin VPasse n p)) ++ --# notpresent - tdf (vfin (VFin VFut n p)) ++ --# notpresent - tdf (vfin (VFin VCondit n p)) --# notpresent - ; --# notpresent - - ttable : (Number -> Person -> Str) -> Str -> Str = \forms, theadings -> - paragraph (frameTable ( - theadings ++ - tr (intagAttr "th" "rowspan=3" (heading singular_Parameter) ++ - th "1.p" ++ forms Sg P1) ++ - tr (th "2.p" ++ forms Sg P2) ++ - tr (th "3.p" ++ forms Sg P3) ++ - tr (intagAttr "th" "rowspan=3" (heading plural_Parameter) ++ - th "1.p" ++ forms Pl P1) ++ - tr (th "2.p" ++ forms Pl P2) ++ - tr (th "3.p" ++ forms Pl P3) - )) ; - - in { - s = - heading1 (heading verb_Category) - ++ paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) - ++ ttable gforms - (tr (intagAttr "th" "colspan=2 rowspan=2" "" - ++ intagAttr "th" "colspan=2" (heading present_Parameter) - ++ intagAttr "th" "colspan=2" (heading imperfect_Parameter) - ) ++ - tr ( th (heading indicative_Parameter) ++ th (heading conjunctive_Parameter) - ++ th (heading indicative_Parameter) ++ th (heading conjunctive_Parameter) - ) - ) - ++ ttable gforms2 --# notpresent - (tr (intagAttr "th" "colspan=2" "" ++ th "passé simple" ++ --# notpresent - th (heading future_Parameter) ++ th (heading conditional_Parameter))) --# notpresent - - ++ paragraph (frameTable ( - tr (intagAttr "th" "colspan=2" (heading infinitive_Parameter) ++ (tdf (vfin (VInfin False)))) ++ - tr (intagAttr "th" "rowspan=3" (heading imperative_Parameter) ++ th "sg.2.p" ++ (tdf (vfin (VImper SgP2)))) ++ - tr ( th "pl.1.p" ++ (tdf (vfin (VImper PlP1)))) ++ - tr ( th "pl.2.p" ++ (tdf (vfin (VImper PlP2)))) ++ - tr (intagAttr "th" "rowspan=2" (heading participle_Parameter) ++ - th (heading past_Parameter) ++ (tdf (vfin (VPart Masc Sg)))) ++ - tr ( th (heading present_Parameter) ++ (tdf (vfin VGer))) - ) - ) - } ; - -} \ No newline at end of file +concrete DocumentationFre of Documentation = CatFre ** + DocumentationFreFunctor with (Terminology = TerminologyFre) ; diff --git a/lib/src/french/DocumentationFreEng.gf b/lib/src/french/DocumentationFreEng.gf new file mode 100644 index 000000000..e6fdd1722 --- /dev/null +++ b/lib/src/french/DocumentationFreEng.gf @@ -0,0 +1,6 @@ +--# -path=.:../abstract:../common + +-- documentation of French in English + +concrete DocumentationFreEng of Documentation = CatFre ** + DocumentationFreFunctor with (Terminology = TerminologyEng) ; diff --git a/lib/src/french/DocumentationFreFunctor.gf b/lib/src/french/DocumentationFreFunctor.gf new file mode 100644 index 000000000..1823cb63d --- /dev/null +++ b/lib/src/french/DocumentationFreFunctor.gf @@ -0,0 +1,120 @@ +--# -path=.:../abstract:../common + +incomplete concrete DocumentationFreFunctor of Documentation = CatFre ** open + Terminology, -- the interface to be instantiated + ResFre, + CommonRomance, + ParadigmsFre, + (G = GrammarFre), + (S = SyntaxFre), + (L = LexiconFre), + Prelude, + HTML +in { + + +lincat + Inflection = {s : Str} ; + +oper + tdf : Str -> Str = \s -> td (intag "i" s) ; + heading : N -> Str = \n -> (nounHeading n).s ; + + nounGender : CatFre.N -> Parameter = \n -> case n.g of { + Masc => masculine_Parameter ; + Fem => feminine_Parameter + } ; + +lin + InflectionN noun = { + s = heading1 (heading noun_Category) ++ + paragraph (intag "b" (heading (gender_ParameterType)) ++ ":" ++ heading (nounGender noun)) ++ + paragraph (frameTable ( + tr (th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ + tr (tdf (noun.s ! Sg) ++ tdf (noun.s ! Pl)) + )) + } ; + + InflectionA adj = { + s = heading1 (nounHeading adjective_Category).s ++ + frameTable ( + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ + tr (th (heading masculine_Parameter) ++ tdf (adj.s ! Posit ! (AF Masc Sg)) ++ tdf (adj.s ! Posit ! (AF Masc Pl))) ++ + tr (th (heading feminine_Parameter) ++ tdf (adj.s ! Posit ! (AF Fem Sg)) ++ tdf (adj.s ! Posit ! (AF Fem Pl))) + ) + } ; + + 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 : CatFre.Cl -> Str = \cl -> + (S.mkUtt cl).s + ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent + ; + + inflectionVerb : Str -> CatFre.V -> {s : Str} = \ex,verb -> + let + vfin : CommonRomance.VF -> Str = \f -> + verb.s ! f ; + + gforms : Number -> Person -> Str = \n,p -> + tdf (vfin (VFin (VPres Indic) n p)) ++ + tdf (vfin (VFin (VPres Conjunct) n p)) + ++ tdf (vfin (VFin (VImperf Indic) n p)) --# notpresent + ++ tdf (vfin (VFin (VImperf Conjunct) n p)) --# notpresent + ; + + gforms2 : Number -> Person -> Str = \n,p -> --# notpresent + tdf (vfin (VFin VPasse n p)) ++ --# notpresent + tdf (vfin (VFin VFut n p)) ++ --# notpresent + tdf (vfin (VFin VCondit n p)) --# notpresent + ; --# notpresent + + ttable : (Number -> Person -> Str) -> Str -> Str = \forms, theadings -> + paragraph (frameTable ( + theadings ++ + tr (intagAttr "th" "rowspan=3" (heading singular_Parameter) ++ + th "1.p" ++ forms Sg P1) ++ + tr (th "2.p" ++ forms Sg P2) ++ + tr (th "3.p" ++ forms Sg P3) ++ + tr (intagAttr "th" "rowspan=3" (heading plural_Parameter) ++ + th "1.p" ++ forms Pl P1) ++ + tr (th "2.p" ++ forms Pl P2) ++ + tr (th "3.p" ++ forms Pl P3) + )) ; + + in { + s = + heading1 (heading verb_Category) + ++ paragraph (intag "b" (heading exampleGr_N ++ ":") ++ intag "i" ex) + ++ ttable gforms + (tr (intagAttr "th" "colspan=2 rowspan=2" "" + ++ intagAttr "th" "colspan=2" (heading present_Parameter) + ++ intagAttr "th" "colspan=2" (heading imperfect_Parameter) + ) ++ + tr ( th (heading indicative_Parameter) ++ th (heading conjunctive_Parameter) + ++ th (heading indicative_Parameter) ++ th (heading conjunctive_Parameter) + ) + ) + ++ ttable gforms2 --# notpresent + (tr (intagAttr "th" "colspan=2" "" ++ th (heading simple_past_Parameter) ++ --# notpresent + th (heading future_Parameter) ++ th (heading conditional_Parameter))) --# notpresent + + ++ paragraph (frameTable ( + tr (intagAttr "th" "colspan=2" (heading infinitive_Parameter) ++ (tdf (vfin (VInfin False)))) ++ + tr (intagAttr "th" "rowspan=3" (heading imperative_Parameter) ++ th "sg.2.p" ++ (tdf (vfin (VImper SgP2)))) ++ + tr ( th "pl.1.p" ++ (tdf (vfin (VImper PlP1)))) ++ + tr ( th "pl.2.p" ++ (tdf (vfin (VImper PlP2)))) ++ + tr (intagAttr "th" "rowspan=2" (heading participle_Parameter) ++ + th (heading past_Parameter) ++ (tdf (vfin (VPart Masc Sg)))) ++ + tr ( th (heading present_Parameter) ++ (tdf (vfin VGer))) + ) + ) + } ; + +} \ No newline at end of file diff --git a/lib/src/french/TerminologyFre.gf b/lib/src/french/TerminologyFre.gf index 63a09b230..9de9b6cd6 100644 --- a/lib/src/french/TerminologyFre.gf +++ b/lib/src/french/TerminologyFre.gf @@ -45,11 +45,12 @@ lin infinitive_Parameter = mkN "infinitif" ; present_Parameter = mkN "présent" ; - past_Parameter = mkN "passé simple" ; ---- + past_Parameter = mkN "passé" ; future_Parameter = mkN "futur" ; conditional_Parameter = mkN "conditionnel" ; perfect_Parameter = mkN "passé composé" ; ---- imperfect_Parameter = mkN "imparfait" ; + simple_past_Parameter = mkN "passé simple" ; ---- participle_Parameter = mkN "participe" ; aux_verb_Parameter = mkN "auxiliaire" ; diff --git a/lib/src/german/DocumentationGer.gf b/lib/src/german/DocumentationGer.gf index 2795cf939..d1bf8da54 100644 --- a/lib/src/german/DocumentationGer.gf +++ b/lib/src/german/DocumentationGer.gf @@ -1,118 +1,6 @@ --# -path=.:../abstract:../common -concrete DocumentationGer of Documentation = CatGer ** open - TerminologyGer, - ResGer, - ParadigmsGer, - (G = GrammarGer), - (S = SyntaxGer), - (L = LexiconGer), - Prelude, - HTML -in { +-- documentation of German in German: the default introduced in LangGer - -lincat - Inflection = {s : Str} ; - - -oper - tdf : Str -> Str = \s -> td (intag "i" s) ; - heading : N -> Str = \n -> (nounHeading n).s ; - - nounGender : CatGer.N -> Parameter = \n -> case n.g of { - Masc => masculine_Parameter ; - Fem => feminine_Parameter ; - Neutr => neuter_Parameter - } ; - -lin - InflectionN noun = { - s = heading1 (heading noun_Category) ++ - paragraph (intag "b" (heading (gender_ParameterType)) ++ ":" ++ heading (nounGender noun)) ++ - 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)) ++ - tr (th (heading dative_Parameter) ++ tdf (noun.s ! Sg ! Dat) ++ tdf (noun.s ! Pl ! Dat)) ++ - tr (th (heading accusative_Parameter) ++ tdf (noun.s ! Sg ! Acc) ++ tdf (noun.s ! Pl ! Acc)) - ) - } ; - - InflectionA adj = - let - gforms : Degree -> ResGer.Case -> Str = \d,c -> - tdf (adj.s ! d ! (AMod (GSg Masc) c)) ++ - tdf (adj.s ! d ! (AMod (GSg Fem) c)) ++ - tdf (adj.s ! d ! (AMod (GSg Neutr) c)) ++ - tdf (adj.s ! d ! (AMod GPl c)) ; - dtable : Parameter -> Degree -> Str = \s,d -> - paragraph (heading2 (heading s) ++ frameTable ( - tr (th [] ++ th (heading masculine_Parameter) ++ th (heading feminine_Parameter) ++ th (heading neuter_Parameter) ++ - th (heading plural_Parameter)) ++ - tr (th (heading nominative_Parameter) ++ gforms d Nom) ++ - tr (th (heading genitive_Parameter) ++ gforms d Gen) ++ - tr (th (heading dative_Parameter) ++ gforms d Dat) ++ - tr (th (heading accusative_Parameter) ++ gforms d Acc) ++ - tr (th (heading predicative_Parameter) ++ intagAttr "td" "colspan=4" (intag "i" (adj.s ! d ! APred))) - )) - in { - s = heading1 (nounHeading adjective_Category).s ++ - dtable positive_Parameter Posit ++ dtable comparative_Parameter Compar ++ dtable superlative_Parameter Superl ; - } ; - - 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 : CatGer.Cl -> Str = \cl -> - (S.mkUtt cl).s - ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent - ; - - inflectionVerb : Str -> CatGer.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"}))) - )) - } ; - -} \ No newline at end of file +concrete DocumentationGer of Documentation = CatGer ** + DocumentationGerFunctor with (Terminology = TerminologyGer) ; diff --git a/lib/src/german/DocumentationGerEng.gf b/lib/src/german/DocumentationGerEng.gf new file mode 100644 index 000000000..947d4bf23 --- /dev/null +++ b/lib/src/german/DocumentationGerEng.gf @@ -0,0 +1,6 @@ +--# -path=.:../abstract:../common + +-- documentation of German in English + +concrete DocumentationGerEng of Documentation = CatGer ** + DocumentationGerFunctor with (Terminology = TerminologyEng) ; diff --git a/lib/src/german/DocumentationGerFunctor.gf b/lib/src/german/DocumentationGerFunctor.gf new file mode 100644 index 000000000..00820b6b8 --- /dev/null +++ b/lib/src/german/DocumentationGerFunctor.gf @@ -0,0 +1,118 @@ +--# -path=.:../abstract:../common + +incomplete concrete DocumentationGerFunctor of Documentation = CatGer ** open + Terminology, -- the interface that generates different documentation languages + ResGer, + ParadigmsGer, + (G = GrammarGer), + (S = SyntaxGer), + (L = LexiconGer), + Prelude, + HTML +in { + + +lincat + Inflection = {s : Str} ; + + +oper + tdf : Str -> Str = \s -> td (intag "i" s) ; + heading : N -> Str = \n -> (nounHeading n).s ; + + nounGender : CatGer.N -> Parameter = \n -> case n.g of { + Masc => masculine_Parameter ; + Fem => feminine_Parameter ; + Neutr => neuter_Parameter + } ; + +lin + InflectionN noun = { + s = heading1 (heading noun_Category) ++ + paragraph (intag "b" (heading (gender_ParameterType)) ++ ":" ++ heading (nounGender noun)) ++ + 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)) ++ + tr (th (heading dative_Parameter) ++ tdf (noun.s ! Sg ! Dat) ++ tdf (noun.s ! Pl ! Dat)) ++ + tr (th (heading accusative_Parameter) ++ tdf (noun.s ! Sg ! Acc) ++ tdf (noun.s ! Pl ! Acc)) + ) + } ; + + InflectionA adj = + let + gforms : Degree -> ResGer.Case -> Str = \d,c -> + tdf (adj.s ! d ! (AMod (GSg Masc) c)) ++ + tdf (adj.s ! d ! (AMod (GSg Fem) c)) ++ + tdf (adj.s ! d ! (AMod (GSg Neutr) c)) ++ + tdf (adj.s ! d ! (AMod GPl c)) ; + dtable : Parameter -> Degree -> Str = \s,d -> + paragraph (heading2 (heading s) ++ frameTable ( + tr (th [] ++ th (heading masculine_Parameter) ++ th (heading feminine_Parameter) ++ th (heading neuter_Parameter) ++ + th (heading plural_Parameter)) ++ + tr (th (heading nominative_Parameter) ++ gforms d Nom) ++ + tr (th (heading genitive_Parameter) ++ gforms d Gen) ++ + tr (th (heading dative_Parameter) ++ gforms d Dat) ++ + tr (th (heading accusative_Parameter) ++ gforms d Acc) ++ + tr (th (heading predicative_Parameter) ++ intagAttr "td" "colspan=4" (intag "i" (adj.s ! d ! APred))) + )) + in { + s = heading1 (nounHeading adjective_Category).s ++ + dtable positive_Parameter Posit ++ dtable comparative_Parameter Compar ++ dtable superlative_Parameter Superl ; + } ; + + 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 : CatGer.Cl -> Str = \cl -> + (S.mkUtt cl).s + ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent + ; + + inflectionVerb : Str -> CatGer.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"}))) + )) + } ; + +} \ No newline at end of file