From 630bee9242786ac9be5c6d3505a5f1745abec2d4 Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 12 Dec 2013 18:46:48 +0000 Subject: [PATCH] started DocumentationFin --- lib/src/abstract/Documentation.gf | 14 +++ lib/src/english/DocumentationEng.gf | 4 +- lib/src/finnish/AllFin.gf | 1 - lib/src/finnish/AllFinAbs.gf | 1 - lib/src/finnish/DocumentationFin.gf | 151 ++++++++++++++++++++++++++++ lib/src/finnish/LangFin.gf | 5 +- 6 files changed, 170 insertions(+), 6 deletions(-) create mode 100644 lib/src/finnish/DocumentationFin.gf diff --git a/lib/src/abstract/Documentation.gf b/lib/src/abstract/Documentation.gf index 9277a058a..5321e0938 100644 --- a/lib/src/abstract/Documentation.gf +++ b/lib/src/abstract/Documentation.gf @@ -36,6 +36,19 @@ fun genitive_Parameter : Parameter ; dative_Parameter : Parameter ; + partitive_Parameter : Parameter ; -- Fin N + translative_Parameter : Parameter ; + essive_Parameter : Parameter ; + inessive_Parameter : Parameter ; + elative_Parameter : Parameter ; + illative_Parameter : Parameter ; + adessive_Parameter : Parameter ; + ablative_Parameter : Parameter ; + allative_Parameter : Parameter ; + abessive_Parameter : Parameter ; + comitative_Parameter : Parameter ; + instructive_Parameter : Parameter ; + imperative_Parameter : Parameter ; indicative_Parameter : Parameter ; conjunctive_Parameter : Parameter ; @@ -46,6 +59,7 @@ fun future_Parameter : Parameter ; conditional_Parameter : Parameter ; perfect_Parameter : Parameter ; + potential_Parameter : Parameter ; -- Fin V participle_Parameter : Parameter ; aux_verb_Parameter : Parameter ; diff --git a/lib/src/english/DocumentationEng.gf b/lib/src/english/DocumentationEng.gf index 449bc5bfd..035419c7f 100644 --- a/lib/src/english/DocumentationEng.gf +++ b/lib/src/english/DocumentationEng.gf @@ -20,14 +20,14 @@ lincat lin noun_Category = mkN "noun" ; - adjective_Category = mkN "adjektive" ; + adjective_Category = mkN "adjective" ; verb_Category = mkN "verb" ; adverb_Category = mkN "adverb" ; singular_Parameter = mkN "singular" ; plural_Parameter = mkN "plural" ; - masculine_Parameter = mkN "maskuline" ; + masculine_Parameter = mkN "masculine" ; feminine_Parameter = mkN "feminine" ; neuter_Parameter = mkN "neuter" ; diff --git a/lib/src/finnish/AllFin.gf b/lib/src/finnish/AllFin.gf index 15ce41d3c..62c7f86ed 100644 --- a/lib/src/finnish/AllFin.gf +++ b/lib/src/finnish/AllFin.gf @@ -2,6 +2,5 @@ concrete AllFin of AllFinAbs = LangFin - [SlashV2VNP,SlashVV, TFut], ---- to speed up linking; to remove spurious parses - ConstructionFin, ExtraFin - [ProDrop, ProDropPoss, S_OSV, S_VSO, S_ASV, AdvExistNP] -- to exclude spurious parses ** {} ; diff --git a/lib/src/finnish/AllFinAbs.gf b/lib/src/finnish/AllFinAbs.gf index e79cab11c..9aeee82f3 100644 --- a/lib/src/finnish/AllFinAbs.gf +++ b/lib/src/finnish/AllFinAbs.gf @@ -1,5 +1,4 @@ abstract AllFinAbs = Lang, - Construction, ExtraFinAbs ** {} ; diff --git a/lib/src/finnish/DocumentationFin.gf b/lib/src/finnish/DocumentationFin.gf new file mode 100644 index 000000000..4a34d4f6c --- /dev/null +++ b/lib/src/finnish/DocumentationFin.gf @@ -0,0 +1,151 @@ +--# -path=.:../abstract:../common + +concrete DocumentationFin of Documentation = CatFin ** open + ResFin, + StemFin, + ParadigmsFin, + (G = GrammarFin), + Prelude, + HTML +in { + + +lincat + Category = G.N ; + ParameterType = G.N ; + Parameter = G.N ; + + Heading = {s : Str} ; + Inflection = {s : Str} ; + + +lin + noun_Category = mkN "substantiivi" ; + adjective_Category = mkN "adjektiivi" ; + verb_Category = mkN "verbi" ; + adverb_Category = mkN "adverbi" ; + + singular_Parameter = mkN "yksikkö" ; + plural_Parameter = mkN "monikko" ; + + masculine_Parameter = mkN "maskuliini" ; + feminine_Parameter = mkN "feminiini" ; + neuter_Parameter = mkN "neutri" ; + + nominative_Parameter = mkN "nominatiivi" ; + genitive_Parameter = mkN "genetiivi" ; + dative_Parameter = mkN "datiivi" ; + accusative_Parameter = mkN "akkusatiivi" ; + + partitive_Parameter = mkN "partitiivi" ; + translative_Parameter = mkN "translatiivi" ; + essive_Parameter = mkN "essiivi" ; + inessive_Parameter = mkN "inessiivi" ; + elative_Parameter = mkN "elatiivi" ; + illative_Parameter = mkN "illatiivi" ; + adessive_Parameter = mkN "adessiivi" ; + ablative_Parameter = mkN "ablatiivi" ; + allative_Parameter = mkN "allatiivi" ; + abessive_Parameter = mkN "abessiivi" ; + comitative_Parameter = mkN "komitatiivi" ; + instructive_Parameter = mkN "instruktiivi" ; + + imperative_Parameter = mkN "imperatiivi" ; + indicative_Parameter = mkN "indikatiivi" ; + conjunctive_Parameter = mkN "konjunktiivi" ; + infinitive_Parameter = mkN "infinitiivi" ; + + present_Parameter = mkN "preesens" ; + past_Parameter = mkN "imperfekti" ; + future_Parameter = mkN "futuuri" ; + conditional_Parameter = mkN "konditionaali" ; + perfect_Parameter = mkN "perfekti" ; + potential_Parameter = mkN "potentiaali" ; + + participle_Parameter = mkN "partisiippi" ; + aux_verb_Parameter = mkN "apu" (mkN "verbi") ; + + positive_Parameter = mkN "positiivi" ; + comparative_Parameter = mkN "komparatiivi" ; + superlative_Parameter = mkN "superlatiivi" ; + predicative_Parameter = mkN "predikatiivi" ; + + nounHeading n = ss ((snoun2nounSep n).s ! NCase Sg Nom) ; + +oper + tdf : Str -> Str = \s -> td (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) ++ + heading2 (heading positive_Parameter) ++ + 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, InflectionV2 = \verb0 -> + let + verb = sverb2verbSep verb0 ; + vfin : 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) ++ + frameTable ( + tr (th "" ++ th (heading present_Parameter) ++ th (heading past_Parameter) ++ + th (heading conditional_Parameter) ++ th (heading potential_Parameter)) ++ + th (heading imperative_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))) + + } ; +{- + 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 diff --git a/lib/src/finnish/LangFin.gf b/lib/src/finnish/LangFin.gf index 3d95b1ef7..570361680 100644 --- a/lib/src/finnish/LangFin.gf +++ b/lib/src/finnish/LangFin.gf @@ -1,9 +1,10 @@ --# -path=.:../abstract:../common:../prelude concrete LangFin of Lang = --- GrammarFin - [SlashV2VNP,SlashVV], ---- to speed up compilation GrammarFin, - LexiconFin + LexiconFin, + ConstructionFin, + DocumentationFin ** { flags startcat = Phr ; unlexer = text ; lexer = finnish ;