diff --git a/lib/src/abstract/Documentation.gf b/lib/src/abstract/Documentation.gf index e5e9501c5..22771a59c 100644 --- a/lib/src/abstract/Documentation.gf +++ b/lib/src/abstract/Documentation.gf @@ -6,6 +6,7 @@ abstract Documentation = Cat ** { cat Inflection ; -- inflection table Document ; + Tag ; fun InflectionN : N -> Inflection ; @@ -29,5 +30,6 @@ fun fun MkDocument : String -> Inflection -> String -> Document ; + MkTag : Inflection -> Tag ; } diff --git a/lib/src/bulgarian/DocumentationBul.gf b/lib/src/bulgarian/DocumentationBul.gf index c7be5cfb0..2ad55392f 100644 --- a/lib/src/bulgarian/DocumentationBul.gf +++ b/lib/src/bulgarian/DocumentationBul.gf @@ -1,15 +1,16 @@ --# -path=.:../abstract:../common concrete DocumentationBul of Documentation = CatBul ** open ResBul, - SyntaxBul, HTML in { lincat - Inflection = {s1,s2,s3 : Str} ; + Inflection = {t : Str; s1,s2,s3 : Str} ; Document = {s : Str} ; + Tag = {s : Str} ; lin InflectionN n = { + t = "същ" ; s1= heading1 ("Съществително"++ case n.g of { AMasc Human => "(м.р.л.)" ; @@ -49,6 +50,7 @@ lin } ; InflectionN2,InflectionN3 = \n -> { + t = "същ" ; s1= heading1 ("Съществително "++ case n.g of { AMasc Human => "(м.р.л.)" ; @@ -71,6 +73,7 @@ lin } ; InflectionA, InflectionA2 = \a -> { + t = "пр" ; s1= heading1 ("Прилагателно") ; s2= frameTable ( tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++ @@ -93,20 +96,23 @@ lin } ; InflectionAdv = \adv -> { + t = "нар" ; s1= heading1 ("Наречие") ; s2= paragraph (adv.s) ; s3= "" } ; InflectionPrep = \prep -> { + t = "пр" ; s1= heading1 ("Предлог") ; s2= paragraph (prep.s) ; s3= "" } ; InflectionV v = { + t = "гл" ; s1= heading1 ("Глагол") ++ - "<подлог>" ++ + pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -117,8 +123,9 @@ lin } ; InflectionV2 v = { + t = "гл" ; s1= heading1 ("Глагол") ++ - "<подлог>" ++ + pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -126,14 +133,15 @@ lin } ++ v.s ! Imperf ! VPres Sg P3 ++ v.c2.s ++ - "<допълнение>"; + pp "допълнение"; s2= inflVerb v ; s3= "" } ; InflectionV3 v = { + t = "гл" ; s1= heading1 ("Глагол") ++ - "<подлог>" ++ + pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -141,15 +149,16 @@ lin } ++ v.s ! Imperf ! VPres Sg P3 ++ v.c2.s ++ - "<арг1>"++ + pp "арг1"++ v.c3.s ++ - "<арг2>"; + pp "арг2"; s2= inflVerb v ; s3= "" } ; InflectionV2V v = { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -157,15 +166,16 @@ lin } ++ v.s ! Imperf ! VPres Sg P3 ++ v.c2.s ++ - "<допълнение>"++ + pp "допълнение"++ v.c3.s ++ - "да" ++ "<глагол>"; + "да" ++ pp "глагол"; s2= inflVerb v ; s3= "" } ; InflectionV2S v = { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -173,15 +183,16 @@ lin } ++ v.s ! Imperf ! VPres Sg P3 ++ v.c2.s ++ - "<допълнение>"++ + pp "допълнение"++ v.c3.s ++ - "че" ++ "<изречение>"; + "че" ++ pp "изречение"; s2= inflVerb v ; s3= "" } ; InflectionV2Q v = { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -189,15 +200,16 @@ lin } ++ v.s ! Imperf ! VPres Sg P3 ++ v.c2.s ++ - "<допълнение>"++ + pp "допълнение"++ v.c3.s ++ - "<въпрос>"; + pp "въпрос"; s2= inflVerb v ; s3= "" } ; InflectionV2A v = { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -205,14 +217,15 @@ lin } ++ v.s ! Imperf ! VPres Sg P3 ++ v.c2.s ++ - "<допълнение>"++ - "<прилагателно>"; + pp "допълнение"++ + pp "прилагателно"; s2= inflVerb v ; s3= "" } ; InflectionVV = \v -> { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; @@ -220,48 +233,51 @@ lin } ++ v.s ! Imperf ! VPres Sg P3 ++ case v.typ of { - VVInf => "да" ++ "<глагол>"; - VVGerund => "<деепричастие>" + VVInf => "да" ++ pp "глагол"; + VVGerund => pp "деепричастие" }; s2= inflVerb v ; s3= "" } ; InflectionVS = \v -> { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; VPhrasal c => personalClitics ! c ! GSg Masc ! P3 } ++ v.s ! Imperf ! VPres Sg P3 ++ - "че" ++ "<изречение>"; + "че" ++ pp "изречение"; s2= inflVerb v ; s3= "" } ; InflectionVQ = \v -> { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; VPhrasal c => personalClitics ! c ! GSg Masc ! P3 } ++ v.s ! Imperf ! VPres Sg P3 ++ - "<въпрос>"; + pp "въпрос"; s2= inflVerb v ; s3= "" } ; InflectionVA = \v -> { - s1= "<подлог>" ++ + t = "гл" ; + s1= pp "подлог" ++ case v.vtype of { VNormal => "" ; VMedial c => reflClitics ! c ; VPhrasal c => personalClitics ! c ! GSg Masc ! P3 } ++ v.s ! Imperf ! VPres Sg P3 ++ - "<прилагателно>"; + pp "прилагателно"; s2= inflVerb v ; s3= "" } ; @@ -367,9 +383,12 @@ oper td (v.s ! aspect ! f (APl Def))) ) ; } ; - + + pp : Str -> Str = \s -> "<"+s+">"; + lin MkDocument b i e = {s = i.s1 ++ b.s ++ i.s2 ++ i.s3 ++ e.s} ; + MkTag i = {s = i.t} ; } diff --git a/lib/src/bulgarian/ParseBul.gf b/lib/src/bulgarian/ParseBul.gf index be5b94ee4..99c9844bd 100644 --- a/lib/src/bulgarian/ParseBul.gf +++ b/lib/src/bulgarian/ParseBul.gf @@ -1,4 +1,4 @@ ---# -path=alltenses:../english:../abstract +--# -path=alltenses:../english:../translator:../abstract concrete ParseBul of ParseEngAbs = TenseX - [IAdv, CAdv], CatBul, @@ -19,8 +19,8 @@ concrete ParseBul of ParseEngAbs = VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, ComplSlashPartLast, ClSlash, RCl, EmptyRelSlash], - - DictEngBul ** + DocumentationBul, + DictionaryBul ** open ResBul, Prelude in { flags diff --git a/lib/src/english/DocumentationEng.gf b/lib/src/english/DocumentationEng.gf index 30840606c..8cbb46bc3 100644 --- a/lib/src/english/DocumentationEng.gf +++ b/lib/src/english/DocumentationEng.gf @@ -1,7 +1,184 @@ --# -path=.:../abstract:../common +concrete DocumentationEng of Documentation = CatEng ** open + ResEng, + HTML in { --- documentation of English in English: the default introduced in LangEng +lincat + Inflection = {t : Str; s1,s2 : Str} ; + Document = {s : Str} ; + Tag = {s : Str} ; -concrete DocumentationEng of Documentation = CatEng ** - DocumentationEngFunctor with (Terminology = TerminologyEng) ; +lin + InflectionN, InflectionN2, InflectionN3 = \noun -> { + t = "n" ; + s1 = heading1 ("Noun" ++ case noun.g of { + Neutr => ""; + Masc => "(masc)"; + Fem => "(fem)" + }) ; + s2 = frameTable ( + tr (th "" ++ th "nom" ++ th "gen") ++ + tr (th "sg" ++ td (noun.s ! Sg ! Nom) ++ td (noun.s ! Sg ! Gen)) ++ + tr (th "pl" ++ td (noun.s ! Pl ! Nom) ++ td (noun.s ! Pl ! Gen)) + ) + } ; + InflectionA, InflectionA2 = \adj -> { + t = "a" ; + s1 = heading1 "Adjective" ; + s2 = frameTable ( + tr (th "" ++ th "nom" ++ th "gen") ++ + tr (th "posit" ++ td (adj.s ! AAdj Posit Nom) ++ td (adj.s ! AAdj Posit Gen)) ++ + tr (th "compar" ++ td (adj.s ! AAdj Compar Nom) ++ td (adj.s ! AAdj Compar Gen)) ++ + tr (th "superl" ++ td (adj.s ! AAdj Superl Nom) ++ td (adj.s ! AAdj Superl Gen)) + ) ++ + heading1 "Adverb" ++ + paragraph (adj.s ! AAdv) + } ; + + InflectionAdv = \adv -> { + t = "adv" ; + s1= heading1 "Adverb" ; + s2= paragraph (adv.s) ; + s3= "" + } ; + + InflectionPrep = \prep -> { + t = "prep" ; + s1= heading1 "Preposition" ; + s2= paragraph (prep.s) ; + s3= "" + } ; + + InflectionV v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ v.s ! VInf ++ v.p) ; + s2= inflVerb v + } ; + + InflectionV2 v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ v.c2 ++ + pp "object") ; + s2= inflVerb v + } ; + + InflectionV3 v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + v.c2 ++ pp "arg1" ++ + v.c3 ++ pp "arg2") ; + s2= inflVerb v + } ; + + InflectionV2V v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + v.c2 ++ pp "object" ++ + v.c3 ++ case v.typ of { + VVAux => pp "verb" ; + VVInf => "to" ++ pp "verb" ; + VVPresPart => pp "verb+ing" + }) ; + s2= inflVerb v + } ; + + InflectionV2S v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + v.c2 ++ pp "object" ++ + "that" ++ pp "sentence") ; + s2= inflVerb v + } ; + + InflectionV2Q v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + pp "question") ; + s2= inflVerb v + } ; + + InflectionV2A v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + v.c2 ++ pp "object" ++ + pp "adjective") ; + s2= inflVerb v + } ; + + InflectionVV v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VVF VInf ++ v.p ++ + case v.typ of { + VVAux => pp "verb" ; + VVInf => "to" ++ pp "verb" ; + VVPresPart => pp "verb+ing" + }) ; + s2= frameTable ( + tr (th "infitive" ++ td (v.s ! VVF VInf)) ++ + tr (th "present" ++ td (v.s ! VVF VPres ++ " " ++ v.s ! VVPresNeg)) ++ + tr (th "past" ++ td (v.s ! VVF VPast ++ " " ++ v.s ! VVPastNeg)) ++ --# notpresent + tr (th "past part." ++ td (v.s ! VVF VPPart)) ++ + tr (th "present part." ++ td (v.s ! VVF VPresPart)) + ) + } ; + + InflectionVS v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + "that" ++ pp "sentence") ; + s2= inflVerb v + } ; + + InflectionVQ v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + pp "question") ; + s2= inflVerb v + } ; + + InflectionVA v = { + t = "v" ; + s1= heading1 "Verb" ++ + paragraph (pp "subject" ++ + v.s ! VInf ++ v.p ++ + pp "adjective") ; + s2= inflVerb v + } ; + +oper + inflVerb : Verb -> Str = \verb -> + frameTable ( + tr (th "infitive" ++ td (verb.s ! VInf)) ++ + tr (th "present" ++ td (verb.s ! VPres)) ++ + tr (th "past" ++ td (verb.s ! VPast)) ++ --# notpresent + tr (th "past part." ++ td (verb.s ! VPPart)) ++ + tr (th "present part." ++ td (verb.s ! VPresPart)) + ) ; + + pp : Str -> Str = \s -> "<"+s+">"; + +lin + MkDocument b i e = {s = i.s1 ++ paragraph b.s ++ i.s2 ++ paragraph e.s} ; + MkTag i = {s = i.t} ; + +} diff --git a/lib/src/english/ParseEng.gf b/lib/src/english/ParseEng.gf index 7d265c864..1cd15f314 100644 --- a/lib/src/english/ParseEng.gf +++ b/lib/src/english/ParseEng.gf @@ -1,4 +1,4 @@ ---# -path=.:../abstract +--# -path=.:../abstract:../translator concrete ParseEng of ParseEngAbs = TenseX - [Pol, PNeg, PPos], @@ -23,7 +23,7 @@ concrete ParseEng of ParseEngAbs = ComplSlashPartLast, ClSlash, RCl, EmptyRelSlash, VS, V2S, ComplBareVS, SlashBareV2S], - DictEng ** + DictionaryEng ** open MorphoEng, ResEng, ParadigmsEng, (S = SentenceEng), (E = ExtraEng), Prelude in { flags @@ -156,68 +156,4 @@ lin PPos = {s = [] ; p = CPos} ; PNeg = {s = [] ; p = CNeg True} | {s = [] ; p = CNeg False} ; -lincat - Feat = Str; -lin FeatN, FeatN2 = \n -> - case n.g of { - Neutr => ""; - Masc => "(masc)"; - Fem => "(fem)" - }; - FeatV = \v -> - "" ++ - v.s ! VInf ++ v.p ; - FeatV2 = \v -> - "" ++ - v.s ! VInf ++ v.p ++ v.c2 ++ - ""; - FeatV3 = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - v.c2 ++ "" ++ - v.c3 ++ ""; - FeatV2V = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - v.c2 ++ "" ++ - v.c3 ++ case v.typ of { - VVAux => "" ; - VVInf => "to" ++ "" ; - VVPresPart => "" - }; - FeatV2S = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - v.c2 ++ "" ++ - "that" ++ ""; - FeatV2Q = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - v.c2 ++ "" ++ - "that" ++ ""; - FeatV2A = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - v.c2 ++ "" ++ - ""; - FeatVV = \v -> - "" ++ - v.s ! VVF VInf ++ v.p ++ - case v.typ of { - VVAux => "" ; - VVInf => "to" ++ "" ; - VVPresPart => "" - }; - FeatVS = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - "that" ++ ""; - FeatVQ = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - ""; - FeatVA = \v -> - "" ++ - v.s ! VInf ++ v.p ++ - ""; } diff --git a/lib/src/english/ParseEngAbs.gf b/lib/src/english/ParseEngAbs.gf index 8562664f4..fcea90840 100644 --- a/lib/src/english/ParseEngAbs.gf +++ b/lib/src/english/ParseEngAbs.gf @@ -19,7 +19,7 @@ abstract ParseEngAbs = Temp, Tense, Pol, Conj, VPS, ListVPS, S, Num, CN, RP, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, GenRP, VPI, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, ComplSlashPartLast, ClSlash, RCl, EmptyRelSlash, VS, V2S, ComplBareVS, SlashBareV2S], - DictEngAbs ** { + Dictionary ** { flags startcat=Phr; diff --git a/lib/src/finnish/DocumentationFinFunctor.gf b/lib/src/finnish/DocumentationFinFunctor.gf index a0f6eda0f..a20f9f845 100644 --- a/lib/src/finnish/DocumentationFinFunctor.gf +++ b/lib/src/finnish/DocumentationFinFunctor.gf @@ -14,165 +14,280 @@ in { lincat - Inflection = {s : Str} ; + Inflection = {t : Str; s1,s2 : Str} ; Document = {s : Str} ; - + Tag = {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) + InflectionN, InflectionN2, InflectionN3 = \noun -> { + t = "s" ; + s1 = heading1 (heading noun_Category) ; + s2 = inflNoun (\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) + InflectionA, InflectionA2 = \adj -> { + t = "a" ; + s1 = heading1 (heading adjective_Category) ; + s2 = inflNoun (\nf -> (snoun2nounSep {s = \\f => adj.s ! Posit ! sAN f ; h = adj.h}).s ! nf) ++ + heading2 (heading comparative_Parameter) ++ + inflNoun (\nf -> (snoun2nounSep {s = \\f => adj.s ! Compar ! sAN f ; h = adj.h}).s ! nf) ++ + heading2 (heading superlative_Parameter) ++ + inflNoun (\nf -> (snoun2nounSep {s = \\f => adj.s ! Superl ! sAN f ; h = adj.h}).s ! nf) } ; + InflectionAdv adv = { + t = "adv" ; + s1 = heading1 (heading adverb_Category) ; + s2 = paragraph adv.s + } ; - InflectionV v = inflectionVerb [] v ;----(verbExample (S.mkCl S.she_NP (lin V v))) v ; - InflectionV2 v = inflectionVerb [] v ;----(verbExample (S.mkCl S.she_NP (lin V2 v) S.something_NP)) (lin V v) ; - InflectionVV v = inflectionVerb [] v ;----(verbExample (S.mkCl S.she_NP (lin VV v) (S.mkVP (L.sleep_V)))) (lin V v) ; - InflectionV2V v = inflectionVerb [] v ;----(verbExample (S.mkCl S.she_NP (lin V2V v) S.we_NP (S.mkVP (L.sleep_V)))) (lin V v) ; + InflectionPrep p = { + t = "prep" ; + s1 = heading1 (heading preposition_Category) ; + s2 = paragraph ((S.mkAdv (lin Prep p) S.it_NP).s ++ ";" ++ (S.mkAdv (lin Prep p) S.we_NP).s) + } ; - MkDocument b i e = ss (paragraph b.s ++ i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph + InflectionV v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v)) ; + s2 = inflVerb v + } ; + + InflectionV2 v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.something_NP)) ; + s2 = inflVerb v + } ; + + InflectionV3 v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.something_NP S.something_NP)) ; + s2 = inflVerb v + } ; + + InflectionV2V v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (S.mkVP (L.sleep_V)))) ; + s2 = inflVerb v + } ; + + InflectionV2S v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin S (ss "...")))) ; + s2 = inflVerb v + } ; + + InflectionV2Q v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin QS (ss "...")))) ; + s2 = inflVerb v + } ; + + InflectionV2A v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.we_NP L.beautiful_A)) ; + s2 = inflVerb v + } ; + + InflectionVV v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v (S.mkVP (L.sleep_V)))) ; + s2 = inflVerb v + } ; + + InflectionVS v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v (lin S (ss "...")))) ; + s2 = inflVerb v + } ; + + InflectionVQ v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v (lin QS (ss "...")))) ; + s2 = inflVerb v + } ; + + InflectionVA v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v L.beautiful_A)) ; + s2 = inflVerb v + } ; oper verbExample : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ; - inflectionVerb : Str -> CatFin.V -> {s : Str} = \ex,verb0 -> + inflVerb : CatFin.V -> Str = \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 ++ + verb.s ! f ; + + nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 -> + (S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP (snoun2nounSep n2)))).s ; + in + heading3 (nounNounHeading present_Parameter indicative_Parameter) ++ 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) ++ + tr (th "" ++ + th (heading singular_Parameter) ++ + th (heading plural_Parameter) + ++ th (heading passive_Parameter) --# notpresent + ) ++ + tr (th "1.p" ++ td (vfin (Presn Sg P1)) ++ td (vfin (Presn Pl P1)) + ++ intagAttr "td" "rowspan=3" (vfin (PassPresn True)) --# notpresent + ) ++ + tr (th "2.p" ++ td (vfin (Presn Sg P2)) ++ td (vfin (Presn Pl P2))) ++ + tr (th "3.p" ++ td (vfin (Presn Sg P3)) ++ td (vfin (Presn Pl P3))) ++ + tr (th (heading negative_Parameter) ++ + intagAttr "td" "colspan=2 align=center" (vfin (Imper Sg)) ++ td (vfin (PassPresn False))) + ) ++ + heading3 (nounNounHeading past_Parameter indicative_Parameter) ++ + frameTable ( + tr (th "" ++ + th (heading singular_Parameter) ++ + th (heading plural_Parameter) + ++ th (heading passive_Parameter) --# notpresent + ) ++ + tr (th "1.p" ++ td (vfin (Impf Sg P1)) ++ td (vfin (Impf Pl P1)) + ++ intagAttr "td" "rowspan=3" (vfin (PassImpf True))) ++ + tr (th "2.p" ++ td (vfin (Impf Sg P2)) ++ td (vfin (Impf Pl P2))) ++ + tr (th "3.p" ++ td (vfin (Impf Sg P3)) ++ td (vfin (Impf Pl P3))) ++ + tr (th (heading negative_Parameter) ++ + td (vfin (PastPartAct (AN (NCase Sg Nom)))) ++ + td (vfin (PastPartAct (AN (NCase Pl Nom)))) ++ + td (vfin (PassImpf False))) + ) ++ + heading3 (nounNounHeading present_Parameter conditional_Parameter) ++ + frameTable ( + tr (th "" ++ + th (heading singular_Parameter) ++ + th (heading plural_Parameter) + ++ th (heading passive_Parameter) --# notpresent + ) ++ + tr (th "1.p" ++ td (vfin (Condit Sg P1)) ++ td (vfin (Condit Pl P1)) + ++ intagAttr "td" "rowspan=3" (vfin (PassCondit True)) --# notpresent + ) ++ + tr (th "2.p" ++ td (vfin (Condit Sg P2)) ++ td (vfin (Condit Pl P2))) ++ + tr (th "3.p" ++ td (vfin (Condit Sg P3)) ++ td (vfin (Condit Pl P3))) ++ + tr (th (heading negative_Parameter) ++ + intagAttr "td" "colspan=2 align=center" (vfin (Condit Sg P3)) ++ td (vfin (PassCondit False))) + ) ++ + heading3 (nounNounHeading present_Parameter potential_Parameter) ++ + frameTable ( + tr (th "" ++ + th (heading singular_Parameter) ++ + th (heading plural_Parameter) + ++ th (heading passive_Parameter) --# notpresent + ) ++ + tr (th "1.p" ++ td (vfin (Potent Sg P1)) ++ td (vfin (Potent Pl P1)) + ++ intagAttr "td" "rowspan=3" (vfin (PassPotent True)) --# notpresent + ) ++ + tr (th "2.p" ++ td (vfin (Potent Sg P2)) ++ td (vfin (Potent Pl P2))) ++ + tr (th "3.p" ++ td (vfin (Potent Sg P3)) ++ td (vfin (Potent Pl P3))) ++ + tr (th (heading negative_Parameter) ++ + intagAttr "td" "colspan=2 align=center" (vfin PotentNeg) ++ td (vfin (PassPotent False))) + ) ++ + heading3 (nounNounHeading present_Parameter imperative_Parameter) ++ + frameTable ( + tr (th "" ++ + th (heading singular_Parameter) ++ + th (heading plural_Parameter) + ++ th (heading passive_Parameter) --# notpresent + ) ++ + tr (th "1.p" ++ td "" ++ td (vfin ImperP1Pl) + ++ intagAttr "td" "rowspan=3" (vfin (PassImper True))) ++ + tr (th "2.p" ++ td (vfin (Imper Sg)) ++ td (vfin (Imper Pl))) ++ + tr (th "3.p" ++ td (vfin (ImperP3 Sg)) ++ td (vfin (ImperP3 Pl))) ++ + tr (th (heading negative_Parameter) ++ + td (vfin (Imper Sg)) ++ + td (vfin ImpNegPl) ++ + td (vfin (PassImper False))) + ) ++ + heading2 (nounPluralHeading nominal_form_ParameterType).s ++ + heading3 (heading infinitive_Parameter) ++ + frameTable ( + tr (intagAttr "th" "rowspan=2" "1" ++ + th (heading short_Parameter) ++ --- + td (vfin (Inf Inf1))) ++ + tr (th (heading long_Parameter) ++ --- + td (vfin (Inf Inf1Long) ++ BIND ++ "(ni)")) ++ + tr (intagAttr "th" "rowspan=2" ("2." ++ heading active_Parameter) ++ + th (heading inessive_Parameter) ++ + td (vfin (Inf Inf2Iness))) ++ + tr (th (heading instructive_Parameter) ++ + td (vfin (Inf Inf2Instr))) ++ + tr (th ("2." ++ heading passive_Parameter) ++ + th (heading inessive_Parameter) ++ + td (vfin (Inf Inf2InessPass))) ++ - 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) ++ td (vfin (Inf Inf3Iness))) ++ + tr (th (heading elative_Parameter) ++ td (vfin (Inf Inf3Elat))) ++ + tr (th (heading illative_Parameter) ++ td (vfin (Inf Inf3Illat))) ++ + tr (th (heading adessive_Parameter) ++ td (vfin (Inf Inf3Adess))) ++ + tr (th (heading abessive_Parameter) ++ td (vfin (Inf Inf3Abess))) ++ + tr (th (heading instructive_Parameter) ++ td (vfin (Inf Inf3Instr))) ++ + tr (th (heading instructive_Parameter ++ "pass.") ++ td (vfin (Inf Inf3InstrPass))) ++ - 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) ++ td (vfin (Inf Inf4Nom))) ++ + tr (th (heading partitive_Parameter) ++ td (vfin (Inf Inf4Part))) ++ - 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." ++ td (vfin (Inf Inf5) ++ BIND ++ "(ni)")) + ) ++ + heading3 (heading participle_Parameter) ++ + frameTable ( + tr (intagAttr "th" "rowspan=2" (heading present_Parameter) ++ + th (heading active_Parameter) ++ + td (vfin (PresPartAct (AN (NCase Sg Nom))))) ++ + tr (th (heading passive_Parameter) ++ + td (vfin (PresPartPass (AN (NCase Sg Nom))))) ++ - tr (intagAttr "th" "colspan=2" "5." ++ tdf (vfin (Inf Inf5) ++ BIND ++ "(ni)")) ++ + tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ + th (heading active_Parameter) ++ + td (vfin (PastPartAct (AN (NCase Sg Nom))))) ++ - 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 (th (heading passive_Parameter) ++ + td (vfin (PastPartPass (AN (NCase Sg Nom))))) ++ - tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++ - th (heading active_Parameter) ++ - tdf (vfin (PastPartAct (AN (NCase Sg Nom))))) ++ + tr (intagAttr "th" "colspan=2" (heading agent_Parameter) ++ + td (vfin (AgentPart (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))))) - - ) - - } ; + inflNoun : (NForm -> Str) -> Str = \nouns -> + frameTable ( + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ + tr (th (heading nominative_Parameter) ++ td (nouns (NCase Sg Nom)) ++ td (nouns (NCase Pl Nom))) ++ + tr (th (heading genitive_Parameter) ++ td (nouns (NCase Sg Gen)) ++ td (nouns (NCase Pl Gen))) ++ + tr (th (heading partitive_Parameter) ++ td (nouns (NCase Sg Part)) ++ td (nouns (NCase Pl Part))) ++ + tr (th (heading translative_Parameter) ++ td (nouns (NCase Sg Transl)) ++ td (nouns (NCase Pl Transl))) ++ + tr (th (heading essive_Parameter) ++ td (nouns (NCase Sg Ess)) ++ td (nouns (NCase Pl Ess))) ++ + tr (th (heading inessive_Parameter) ++ td (nouns (NCase Sg Iness)) ++ td (nouns (NCase Pl Iness))) ++ + tr (th (heading elative_Parameter) ++ td (nouns (NCase Sg Elat)) ++ td (nouns (NCase Pl Elat))) ++ + tr (th (heading illative_Parameter) ++ td (nouns (NCase Sg Illat)) ++ td (nouns (NCase Pl Illat))) ++ + tr (th (heading adessive_Parameter) ++ td (nouns (NCase Sg Adess)) ++ td (nouns (NCase Pl Adess))) ++ + tr (th (heading ablative_Parameter) ++ td (nouns (NCase Sg Ablat)) ++ td (nouns (NCase Pl Ablat))) ++ + tr (th (heading allative_Parameter) ++ td (nouns (NCase Sg Allat)) ++ td (nouns (NCase Pl Allat))) ++ + tr (th (heading abessive_Parameter) ++ td (nouns (NCase Sg Abess)) ++ td (nouns (NCase Pl Abess))) ++ + tr (th (heading comitative_Parameter) ++ td "" ++ td (nouns (NComit))) ++ + tr (th (heading instructive_Parameter) ++ td "" ++ td (nouns (NInstruct))) + ) ; 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)) - } ; + MkDocument b i e = ss (i.s1 ++ paragraph b.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph + MkTag i = ss (i.t) ; + } diff --git a/lib/src/finnish/TerminologyFin.gf b/lib/src/finnish/TerminologyFin.gf index cb5a21462..bdd59135a 100644 --- a/lib/src/finnish/TerminologyFin.gf +++ b/lib/src/finnish/TerminologyFin.gf @@ -93,4 +93,4 @@ lin formGF_N = mkN "muoto" ; exampleGr_N = mkN "esimerkki" ; -} \ No newline at end of file +} diff --git a/lib/src/finnish/stemmed/ParseFin.gf b/lib/src/finnish/stemmed/ParseFin.gf index 9174d1d36..37c3d83cd 100644 --- a/lib/src/finnish/stemmed/ParseFin.gf +++ b/lib/src/finnish/stemmed/ParseFin.gf @@ -1,4 +1,4 @@ ---# -path=.:..:../../abstract:../../common:../../api:../../english:../kotus +--# -path=.:..:../../abstract:../../common:../../api:../../english:../kotus:../../translator concrete ParseFin of ParseEngAbs = TenseX, ---- TODO add potential forms @@ -23,7 +23,7 @@ concrete ParseFin of ParseEngAbs = ExtraFin [NP, Quant, VPSlash, VP, Tense, GenNP, PassVPSlash, Voc, RP, GenRP, PassVPSlash, PassAgentVPSlash, Temp, Tense, Pol, Conj, VPS, ListVPS, S, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV] - , DictEngFin + , DictionaryFin ** open MorphoFin, ResFin, ParadigmsFin, SyntaxFin, StemFin, (E = ExtraFin), (G = GrammarFin), Prelude in { @@ -38,7 +38,7 @@ lin ---------------------- lin - ComplVV v ant pol vp = + {- ComplVV v ant pol vp = insertObj (\\_,b,a => infVPGen pol.p v.sc b a vp v.vi) (predSV {s = v.s ; @@ -49,7 +49,7 @@ lin h = v.h ; p = v.p } ) ; - +-} ---- what is this... myself_NP = mkPronounGen False "itse" "itsen" "itseä" "itsenä" "itseen" Sg P1 ** {isPron = True ; isNeg = False} ; @@ -104,10 +104,10 @@ lin isNeg = quant.isNeg } ; - SlashV2V v ant p vp = +{- SlashV2V v ant p vp = insertObj (\\_,b,a => infVP v.sc b a vp v.vi) (predSV v) ** {c2 = v.c2} ; ---- ---- insertObj (\\_,b,a => infVPGen p.p v.sc b a vp v.vi) (predSV v) ** {c2 = v.c2} ; - +-} CompS s = {s = \\_ => "että" ++ s.s} ; -- S -> Comp ---- what are these expected to do ? 29/3/2013 CompVP ant pol vp = {s = \\a => infVPGen pol.p vp.s.sc Pos a vp Inf1} ; -- VP -> Comp @@ -134,32 +134,14 @@ lin SlashVPIV2V v pol vpi = -- : V2V -> Pol -> VPI -> VPSlash ; insertObj (\\_,b,a => vpi.s ! v.vi) (predSV v) ** {c2 = v.c2} ; - VPSlashVS v vp = -- : VS -> VP -> VPSlash ; -- hän sanoo (minun) menevän (!) ---- menneen ? + {- VPSlashVS v vp = -- : VS -> VP -> VPSlash ; -- hän sanoo (minun) menevän (!) ---- menneen ? insertObj (\\_,b,a => infVP v.sc b a vp InfPresPart) (predSV v) ** {c2 = {c = NPCase Gen ; s = \\_ => [] ; h = Back ; isPre = True}} ; - + -} -- SlashSlashV2V v ant pol vps = -- : V2V -> Ant -> Pol -> VPSlash -> VPSlash ; --- not implemented in Eng so far -- insertObj (\\_,b,a => infVPGen pol.p v.sc b a vps v.vi) (predSV v) ** {c2 = v.c2} ; --- or vps.c2 ?? --in Verb, SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash ----- these will be obsolete -lincat - NDisplay = {s : NForm => Str} ; - ADisplay = {s : Degree => NForm => Str} ; - VDisplay = {s : VForm => Str} ; - -lin - DisplayN n = snoun2nounSep n ; - DisplayA a = { - s = table { - Posit => (snoun2nounSep {s = \\f => a.s ! Posit ! sAN f ; h = a.h}).s ; - Compar => (snoun2nounSep {s = \\f => a.s ! Compar ! sAN f ; h = a.h}).s ; - Superl => (snoun2nounSep {s = \\f => a.s ! Superl ! sAN f ; h = a.h}).s - } - } ; - - DisplayV v = sverb2verbSep v ; - } diff --git a/lib/src/french/DocumentationFreFunctor.gf b/lib/src/french/DocumentationFreFunctor.gf index 9fd1ba1be..7585ecd70 100644 --- a/lib/src/french/DocumentationFreFunctor.gf +++ b/lib/src/french/DocumentationFreFunctor.gf @@ -14,43 +14,122 @@ in { lincat - Inflection = {s : Str} ; + Inflection = {t : Str; s1,s2 : Str} ; Document = {s : Str} ; + Tag = {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)) - )) - } ; + InflectionN, InflectionN3, InflectionN3 = \noun -> { + t = "n" ; + s1 = heading1 (heading noun_Category ++ + case noun.g of { + Masc => "("+heading masculine_Parameter+")" ; + Fem => "("+heading feminine_Parameter+")" + }) ; + s2 = frameTable ( + tr (th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ + tr (td (noun.s ! Sg) ++ td (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))) + InflectionA, InflectionA2 = \adj -> { + t = "a" ; + s1 = heading1 (nounHeading adjective_Category).s ; + s2 = frameTable ( + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ + tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (AF Masc Sg)) ++ td (adj.s ! Posit ! (AF Masc Pl))) ++ + tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (AF Fem Sg)) ++ td (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) ; + } ; - MkDocument b i e = ss (paragraph e.s ++ i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph + InflectionAdv adv = { + t = "adv" ; + s1 = heading1 "Adverbe" ; + s2 = paragraph adv.s + } ; + + InflectionPrep p = { + t = "prep" ; + s1 = heading1 "Préposition" ; + s2 = paragraph p.s + } ; + + InflectionV v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v)) ; + s2 = inflVerb v + } ; + + InflectionV2 v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.something_NP)) ; + s2 = inflVerb v + } ; + + InflectionV3 v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.something_NP S.something_NP)) ; + s2 = inflVerb v + } ; + + InflectionV2V v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP (lin V2V v) S.we_NP (S.mkVP (L.sleep_V)))) ; + s2 = inflVerb v + } ; + + InflectionV2S v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + InflectionV2Q v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + InflectionV2A v = { + t = "v" ; + s1 = heading1 "Verb" ; + s2 = inflVerb v + } ; + + InflectionVV v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v (S.mkVP (L.sleep_V)))) ; + s2 = inflVerb v + } ; + + InflectionVS v = { + t = "v" ; + s1 = heading1 "Verb" ; + s2 = inflVerb v + } ; + + InflectionVQ v = { + t = "v" ; + s1 = heading1 "Verb" ; + s2 = inflVerb v + } ; + + InflectionVA v = { + t = "v" ; + s1 = heading1 "Verb" ; + s2 = inflVerb v + } ; + + MkDocument b i e = ss (i.s1 ++ paragraph b.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph + MkTag i = ss i.t ; oper verbExample : CatFre.Cl -> Str = \cl -> @@ -58,64 +137,76 @@ oper ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent ; - inflectionVerb : Str -> CatFre.V -> {s : Str} = \ex,verb -> + inflVerb : Verb -> Str = \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 - ; + ttable : TMood -> Str = \tense -> + frameTable ( + tr (th "" ++ + th (heading singular_Parameter) ++ + th (heading plural_Parameter)) ++ + tr (th "1.p" ++ + td (vfin (VFin tense Sg P1)) ++ + td (vfin (VFin tense Pl P1))) ++ + tr (th "2.p" ++ + td (vfin (VFin tense Sg P2)) ++ + td (vfin (VFin tense Pl P2))) ++ + tr (th "3.p" ++ + td (vfin (VFin tense Sg P3)) ++ + td (vfin (VFin tense Pl P3))) + ) ; - 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 ++ + ttable2 : (Mood -> TMood) -> Str = \f -> + frameTable ( + tr (intagAttr "th" "colspan=2" "" ++ + th (heading indicative_Parameter) ++ + th (heading conjunctive_Parameter)) ++ 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) ++ + th "1.p" ++ + td (vfin (VFin (f Indic) Sg P1)) ++ + td (vfin (VFin (f Conjunct) Sg P1))) ++ + tr (th "2.p" ++ + td (vfin (VFin (f Indic) Sg P2)) ++ + td (vfin (VFin (f Conjunct) Sg P2))) ++ + tr (th "3.p" ++ + td (vfin (VFin (f Indic) Sg P3)) ++ + td (vfin (VFin (f Conjunct) 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) - )) ; + th "1.p" ++ + td (vfin (VFin (f Indic) Pl P1)) ++ + td (vfin (VFin (f Conjunct) Pl P1))) ++ + tr (th "2.p" ++ + td (vfin (VFin (f Indic) Pl P2)) ++ + td (vfin (VFin (f Conjunct) Pl P2))) ++ + tr (th "3.p" ++ + td (vfin (VFin (f Indic) Pl P3)) ++ + td (vfin (VFin (f Conjunct) 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))) - ) - ) - } ; + in heading2 (heading present_Parameter) ++ + ttable2 VPres ++ + heading2 (heading imperfect_Parameter) ++ + ttable2 VImperf + ++ heading2 (heading simple_past_Parameter) ++ --# notpresent + ttable VPasse --# notpresent + ++ heading2 (heading future_Parameter) ++ --# notpresent + ttable VFut --# notpresent + ++ heading2 (heading conditional_Parameter) ++ --# notpresent + ttable VCondit --# notpresent + ++ heading2 (heading infinitive_Parameter) ++ + paragraph (vfin (VInfin False)) ++ + heading2 (heading imperative_Parameter) ++ + frameTable ( + tr (th "sg.2.p" ++ td (vfin (VImper SgP2))) ++ + tr (th "pl.1.p" ++ td (vfin (VImper PlP1))) ++ + tr (th "pl.2.p" ++ td (vfin (VImper PlP2))) + ) ++ + heading2 (heading participle_Parameter) ++ + frameTable ( + tr (th (heading past_Parameter) ++ td (vfin (VPart Masc Sg))) ++ + tr (th (heading present_Parameter) ++ td (vfin VGer)) + ) ; } diff --git a/lib/src/french/ParseFre.gf b/lib/src/french/ParseFre.gf index ba70fcb27..a19fc4a35 100644 --- a/lib/src/french/ParseFre.gf +++ b/lib/src/french/ParseFre.gf @@ -1,4 +1,4 @@ ---# -path=.:../english/:../abstract:../romance:alltenses +--# -path=.:../english/:../abstract:../romance:alltenses:../translator concrete ParseFre of ParseEngAbs = TenseFre, -- CatFre, @@ -21,7 +21,7 @@ concrete ParseFre of ParseEngAbs = VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, ClSlash, RCl, EmptyRelSlash], - DictEngFre ** + DictionaryFre ** open PhonoFre, MorphoFre, ResFre, CommonRomance, ParadigmsFre, SyntaxFre, Prelude, (G = GrammarFre) in { flags diff --git a/lib/src/german/DocumentationGerFunctor.gf b/lib/src/german/DocumentationGerFunctor.gf index dd079d1e1..b0fa52561 100644 --- a/lib/src/german/DocumentationGerFunctor.gf +++ b/lib/src/german/DocumentationGerFunctor.gf @@ -13,39 +13,38 @@ in { lincat - Inflection = {s : Str} ; + Inflection = {t : Str; s1,s2 : Str} ; Document = {s : Str} ; + Tag = {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 - } ; + heading : N -> Str = \n -> (nounHeading n).s ; 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)) - ) - } ; + InflectionN, InflectionN2, InflectionN3 = \noun -> { + t = "s" ; + s1 = heading1 (heading noun_Category ++ + case noun.g of { + Masc => "("+heading masculine_Parameter+")" ; + Fem => "("+heading feminine_Parameter+")" ; + Neutr => "("+heading neuter_Parameter+")" + }) ; + s2 = frameTable ( + tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++ + tr (th (heading nominative_Parameter) ++ td (noun.s ! Sg ! Nom) ++ td (noun.s ! Pl ! Nom)) ++ + tr (th (heading genitive_Parameter) ++ td (noun.s ! Sg ! Gen) ++ td (noun.s ! Pl ! Gen)) ++ + tr (th (heading dative_Parameter) ++ td (noun.s ! Sg ! Dat) ++ td (noun.s ! Pl ! Dat)) ++ + tr (th (heading accusative_Parameter) ++ td (noun.s ! Sg ! Acc) ++ td (noun.s ! Pl ! Acc)) + ) + } ; - InflectionA adj = + InflectionA, InflectionA2 = \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)) ; + td (adj.s ! d ! (AMod (GSg Masc) c)) ++ + td (adj.s ! d ! (AMod (GSg Fem) c)) ++ + td (adj.s ! d ! (AMod (GSg Neutr) c)) ++ + td (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) ++ @@ -54,24 +53,98 @@ lin 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))) + tr (th (heading predicative_Parameter) ++ intagAttr "td" "colspan=4" (adj.s ! d ! APred)) )) - in { - s = heading1 (nounHeading adjective_Category).s ++ - dtable positive_Parameter Posit ++ dtable comparative_Parameter Compar ++ dtable superlative_Parameter Superl ; - } ; + in { t = "a" ; + s1 = heading1 (nounHeading adjective_Category).s ; + s2 = 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) + InflectionAdv adv = { + t = "adverb" ; + s1 = heading1 (heading preposition_Category) ; + s2 = paragraph adv.s } ; - MkDocument b i e = ss (paragraph b.s ++ i.s ++ paragraph e.s) ; -- explanation appended in a new paragraph + InflectionPrep p = { + t = "präp" ; + s1 = heading1 (heading preposition_Category) ; + s2 = paragraph (S.mkAdv (lin Prep p) (S.mkNP S.a_Det L.computer_N)).s + } ; + + InflectionV v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v)) ; + s2 = inflVerb v + } ; + + InflectionV2 v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.something_NP)) ; + s2 = inflVerb v + } ; + + InflectionV3 v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP v S.something_NP S.something_NP)) ; + s2 = inflVerb v + } ; + + InflectionV2V v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP (lin V2V v) S.we_NP (S.mkVP (L.sleep_V)))) ; + s2 = inflVerb v + } ; + + InflectionV2S v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + InflectionV2Q v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + InflectionV2A v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + InflectionVV v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ++ + paragraph (verbExample (S.mkCl S.she_NP (lin VV v) (S.mkVP (L.sleep_V)))) ; + s2 = inflVerb v + } ; + + InflectionVS v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + InflectionVQ v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + InflectionVA v = { + t = "v" ; + s1 = heading1 (heading verb_Category) ; + s2 = inflVerb v + } ; + + MkDocument b i e = ss (i.s1 ++ paragraph b.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph + MkTag i = ss i.t ; oper verbExample : CatGer.Cl -> Str = \cl -> @@ -79,40 +152,34 @@ oper ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent ; - inflectionVerb : Str -> CatGer.V -> {s : Str} = \ex,verb -> + inflVerb : Verb -> Str = \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 + td (vfin (VFin False (VPresInd n p))) ++ + td (vfin (VFin False (VPresSubj n p))) + ++ td (vfin (VFin False (VImpfInd n p))) --# notpresent + ++ td (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"}))) - )) - } ; + in 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) + ) ++ + frameTable ( + tr (th (heading imperative_Parameter ++ "Sg.2") ++ td (vfin (VImper Sg))) ++ + tr (th (heading imperative_Parameter ++ "Pl.2") ++ td (vfin (VImper Pl))) ++ + tr (th (heading infinitive_Parameter) ++ td (verb.s ! (VInf False))) ++ + tr (th (heading present_Parameter ++ heading participle_Parameter) ++ td (verb.s ! (VPresPart APred))) ++ + tr (th (heading perfect_Parameter ++ heading participle_Parameter) ++ td (verb.s ! (VPastPart APred))) ++ + tr (th (heading aux_verb_Parameter) ++ td (case verb.aux of {VHaben => "haben" ; VSein => "sein"})) + ) ; } diff --git a/lib/src/german/ParseGer.gf b/lib/src/german/ParseGer.gf index af1cc5ce3..c2e031d31 100644 --- a/lib/src/german/ParseGer.gf +++ b/lib/src/german/ParseGer.gf @@ -1,4 +1,4 @@ ---# -path=alltenses:.:../english:../abstract +--# -path=alltenses:.:../english:../abstract:../translator concrete ParseGer of ParseEngAbs = TenseGer, NounGer - [PPartNP], @@ -20,7 +20,7 @@ concrete ParseGer of ParseEngAbs = VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, ClSlash, RCl, EmptyRelSlash], - DictEngGer ** + DictionaryGer ** open MorphoGer, ResGer, ParadigmsGer, SyntaxGer, Prelude, HTML in { flags literal=Symb ; coding = utf8 ; diff --git a/lib/src/swedish/DocumentationSwe.gf b/lib/src/swedish/DocumentationSwe.gf index ca793551e..e93f85ee5 100644 --- a/lib/src/swedish/DocumentationSwe.gf +++ b/lib/src/swedish/DocumentationSwe.gf @@ -1,6 +1,233 @@ ---# -path=.:../abstract:../common +concrete DocumentationSwe of Documentation = CatSwe ** open + ResSwe, + CommonScand, + HTML +in { --- documentation of Swedish in Swedish: the default introduced in LangSwe +lincat + Inflection = {t : Str; s1,s2 : Str} ; + Document = {s : Str} ; + Tag = {s : Str} ; -concrete DocumentationSwe of Documentation = CatSwe ** - DocumentationSweFunctor with (Terminology = TerminologySwe) ; +lin + InflectionN, InflectionN2, InflectionN3 = \noun -> { + t = "s" ; + s1 = heading1 ("Substantiv" ++ case noun.g of { + Utr => "(utr)" ; + Neutr => "(neutr)" + }) ; + s2 = frameTable ( + tr (intagAttr "th" "colspan=2" "" ++ th "obest" ++ th "best") ++ + tr (intagAttr "th" "rowspan=2" "nom" ++ + th "sg" ++ td (noun.s ! Sg ! Indef ! Nom) ++ td (noun.s ! Sg ! Def ! Nom)) ++ + tr (th "pl" ++ td (noun.s ! Pl ! Indef ! Nom) ++ td (noun.s ! Pl ! Def ! Nom)) ++ + tr (intagAttr "th" "rowspan=2" "gen" ++ + th "sg" ++ td (noun.s ! Sg ! Indef ! Gen) ++ td (noun.s ! Sg ! Def ! Gen)) ++ + tr (th "pl" ++ td (noun.s ! Pl ! Indef ! Gen) ++ td (noun.s ! Pl ! Def ! Gen)) + ) + } ; + + InflectionA, InflectionA2 = \adj -> { + t = "a" ; + s1 = heading1 "Adjektiv" ; + s2 = frameTable ( + tr (intagAttr "th" "colspan=5" "nominativ") ++ + tr (intagAttr "th" "colspan=2" "posit" ++ + th "posit" ++ + th "kompar" ++ + th "superl") ++ + caseInfl Nom ++ + tr (intagAttr "th" "colspan=5" "genitiv") ++ + caseInfl Nom + ) + } where { + caseInfl : Case -> Str = \c -> + tr (intagAttr "th" "rowspan=3" "obest" ++ + th "utr" ++ + td (adj.s ! (AF (APosit (Strong (GSg Utr))) c)) ++ + intagAttr "td" "rowspan=5" (adj.s ! (AF ACompar c)) ++ + intagAttr "td" "rowspan=3" (adj.s ! (AF (ASuperl SupStrong) c))) ++ + tr (th "neut" ++ + td (adj.s ! (AF (APosit (Strong (GSg Neutr))) c))) ++ + tr (th "pl" ++ + td (adj.s ! (AF (APosit (Strong GPl)) c))) ++ + tr (intagAttr "th" "rowspan=2" "best" ++ + th "sg" ++ + td (adj.s ! (AF (APosit (Weak Sg)) c)) ++ + intagAttr "td" "rowspan=2" (adj.s ! (AF (ASuperl SupWeak) c))) ++ + tr (th "pl" ++ + td (adj.s ! (AF (APosit (Weak Pl)) c))) ; + } ; + + InflectionAdv adv = { + t = "adv" ; + s1 = heading1 "Adverb" ; + s2 = paragraph adv.s + } ; + + InflectionPrep p = { + t = "prep" ; + s1 = heading1 "Preposition" ; + s2 = paragraph p.s + } ; + + InflectionV v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part); + s2 = inflVerb v + } ; + + InflectionV2 v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ v.c2.s ++ + pp "objekt") ; + s2 = inflVerb v + } ; + + InflectionV3 v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + v.c2.s ++ pp "arg1" ++ + v.c3.s ++ pp "arg2") ; + s2 = inflVerb v + } ; + + InflectionV2V v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + v.c2.s ++ pp "objekt" ++ + v.c3.s ++ pp "verb") ; + s2 = inflVerb v + } ; + + InflectionV2S v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + v.c2.s ++ pp "objekt" ++ + conjThat ++ pp "mening") ; + s2 = inflVerb v + } ; + + InflectionV2Q v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + v.c2.s ++ pp "objekt" ++ + pp "fråga") ; + s2 = inflVerb v + } ; + + InflectionV2A v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + v.c2.s ++ pp "objekt" ++ + pp "adjektiv") ; + s2 = inflVerb v + } ; + + InflectionVV v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + pp "verb") ; + s2 = inflVerb v + } ; + + InflectionVS v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + conjThat ++ pp "mening") ; + s2 = inflVerb v + } ; + + InflectionVQ v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + pp "fråga") ; + s2 = inflVerb v + } ; + + InflectionVA v = { + t = "v" ; + s1 = heading1 "Verb" ++ + paragraph (pp "subjekt" ++ + v.s ! VI (VInfin Act) ++ v.part ++ + pp "adjektiv") ; + s2 = inflVerb v + } ; + + MkDocument b i e = {s = i.s1 ++ paragraph b.s ++ i.s2 ++ paragraph e.s} ; -- explanation appended in a new paragraph + MkTag i = {s = i.t} ; + +oper + inflVerb : Verb -> Str = \verb -> + frameTable ( + tr (th "" ++ th "active" ++ th "passive") ++ + tr (th "infitiv" ++ td (verb.s ! VI (VInfin Act)) ++ td (verb.s ! VI (VInfin Pass))) ++ + tr (th "presens" ++ td (verb.s ! VF (VPres Act)) ++ td (verb.s ! VF (VPres Pass))) ++ + tr (th "preteritum" ++ td (verb.s ! VF (VPret Act)) ++ td (verb.s ! VF (VPret Pass))) ++ + tr (th "supinum" ++ td (verb.s ! VI (VSupin Act)) ++ td (verb.s ! VI (VSupin Pass))) ++ + tr (th "imperativ" ++ td (verb.s ! VF (VImper Act)) ++ td (verb.s ! VF (VImper Pass))) + ) ++ + heading2 "Particip Presens" ++ + frameTable ( + tr (intagAttr "th" "colspan=2" "" ++ th "obest" ++ th "best") ++ + tr (intagAttr "th" "rowspan=2" "nom" ++ + th "sg" ++ + td (verb.s ! VI (VPtPres Sg Indef Nom)) ++ + td (verb.s ! VI (VPtPres Sg Def Nom))) ++ + tr (th "pl" ++ + td (verb.s ! VI (VPtPres Pl Indef Nom)) ++ + td (verb.s ! VI (VPtPres Pl Def Nom))) ++ + tr (intagAttr "th" "rowspan=2" "gen" ++ + th "sg" ++ + td (verb.s ! VI (VPtPres Sg Indef Gen)) ++ + td (verb.s ! VI (VPtPres Sg Def Gen))) ++ + tr (th "pl" ++ + td (verb.s ! VI (VPtPres Pl Indef Gen)) ++ + td (verb.s ! VI (VPtPres Pl Def Gen))) + ) ++ + heading2 "Particip Perfekt" ++ + frameTable ( + tr (intagAttr "th" "colspan=2" "" ++ + th "nom" ++ + th "gen") ++ + tr (intagAttr "th" "rowspan=3" "obest" ++ + th "utr" ++ + td (verb.s ! VI (VPtPret (Strong (GSg Utr)) Nom)) ++ + td (verb.s ! VI (VPtPret (Strong (GSg Utr)) Gen))) ++ + tr (th "neut" ++ + td (verb.s ! VI (VPtPret (Strong (GSg Neutr)) Nom)) ++ + td (verb.s ! VI (VPtPret (Strong (GSg Neutr)) Gen))) ++ + tr (th "pl" ++ + td (verb.s ! VI (VPtPret (Strong GPl) Nom)) ++ + td (verb.s ! VI (VPtPret (Strong GPl) Gen))) ++ + tr (intagAttr "th" "rowspan=2" "best" ++ + th "sg" ++ + td (verb.s ! VI (VPtPret (Weak Sg) Nom)) ++ + td (verb.s ! VI (VPtPret (Weak Sg) Gen))) ++ + tr (th "pl" ++ + td (verb.s ! VI (VPtPret (Weak Pl) Nom)) ++ + td (verb.s ! VI (VPtPret (Weak Pl) Gen))) + ) ; + + pp : Str -> Str = \s -> "<"+s+">"; +} diff --git a/lib/src/swedish/ParseSwe.gf b/lib/src/swedish/ParseSwe.gf index 88e666d4c..79e8fe715 100644 --- a/lib/src/swedish/ParseSwe.gf +++ b/lib/src/swedish/ParseSwe.gf @@ -1,4 +1,4 @@ ---# -path=.:../english/:../scandinavian:alltenses:../abstract +--# -path=.:../english/:../scandinavian:alltenses:../abstract:../translator concrete ParseSwe of ParseEngAbs = TenseSwe, NounSwe - [PPartNP], @@ -20,7 +20,7 @@ concrete ParseSwe of ParseEngAbs = VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, ClSlash, RCl, EmptyRelSlash], - DictEngSwe ** + DictionarySwe ** open MorphoSwe, ResSwe, ParadigmsSwe, SyntaxSwe, CommonScand, (E = ExtraSwe), Prelude in { flags @@ -123,60 +123,4 @@ lin AdAdV = cc2 ; UttAdV adv = adv; - -lincat - Feat = Str; -lin FeatN2, FeatN = \n -> - case n.g of { - Utr => "(utr)" ; - Neutr => "(neutr)" - } ; - FeatV = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ; - FeatV2 = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ v.c2.s ++ - ""; - FeatV3 = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - v.c2.s ++ "" ++ - v.c3.s ++ ""; - FeatV2V = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - v.c2.s ++ "" ++ - v.c3.s ++ ""; - FeatV2S = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - v.c2.s ++ "" ++ - "that" ++ ""; - FeatV2Q = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - v.c2.s ++ "" ++ - "that" ++ ""; - FeatV2A = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - v.c2.s ++ "" ++ - ""; - FeatVV = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - "" ; - FeatVS = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - "that" ++ ""; - FeatVQ = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - ""; - FeatVA = \v -> - "" ++ - v.s ! VI (VInfin Act) ++ v.part ++ - ""; }