completed Documentation modules for English, Swedish, Bulgarian, German, Finnish, French. The examples for Finnish, German and French could still be improved. The old parsing grammars are now restored. The new Translation grammar still don't have statistical model.

This commit is contained in:
kr.angelov
2014-02-21 16:31:50 +00:00
parent 014f4e1e11
commit dc19edc05d
15 changed files with 1037 additions and 477 deletions

View File

@@ -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 ;
}

View File

@@ -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 -> "&lt;"+s+"&gt;";
lin
MkDocument b i e = {s = i.s1 ++ b.s ++ i.s2 ++ i.s3 ++ e.s} ;
MkTag i = {s = i.t} ;
}

View File

@@ -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

View File

@@ -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 ++ "&#160;" ++ v.s ! VVPresNeg)) ++
tr (th "past" ++ td (v.s ! VVF VPast ++ "&#160;" ++ 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 -> "&lt;"+s+"&gt;";
lin
MkDocument b i e = {s = i.s1 ++ paragraph b.s ++ i.s2 ++ paragraph e.s} ;
MkTag i = {s = i.t} ;
}

View File

@@ -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 ->
"<subject>" ++
v.s ! VInf ++ v.p ;
FeatV2 = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++ v.c2 ++
"<object>";
FeatV3 = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
v.c2 ++ "<arg1>" ++
v.c3 ++ "<arg2>";
FeatV2V = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
v.c2 ++ "<object>" ++
v.c3 ++ case v.typ of {
VVAux => "<verb>" ;
VVInf => "to" ++ "<verb>" ;
VVPresPart => "<verb+ing>"
};
FeatV2S = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
v.c2 ++ "<object>" ++
"that" ++ "<sentence>";
FeatV2Q = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
v.c2 ++ "<object>" ++
"that" ++ "<question>";
FeatV2A = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
v.c2 ++ "<object>" ++
"<adjective>";
FeatVV = \v ->
"<subject>" ++
v.s ! VVF VInf ++ v.p ++
case v.typ of {
VVAux => "<verb>" ;
VVInf => "to" ++ "<verb>" ;
VVPresPart => "<verb+ing>"
};
FeatVS = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
"that" ++ "<sentence>";
FeatVQ = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
"<question>";
FeatVA = \v ->
"<subject>" ++
v.s ! VInf ++ v.p ++
"<adjective>";
}

View File

@@ -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;

View File

@@ -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) ;
}

View File

@@ -93,4 +93,4 @@ lin
formGF_N = mkN "muoto" ;
exampleGr_N = mkN "esimerkki" ;
}
}

View File

@@ -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 ;
}

View File

@@ -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))
) ;
}

View File

@@ -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

View File

@@ -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"}))
) ;
}

View File

@@ -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 ;

View File

@@ -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 -> "&lt;"+s+"&gt;";
}

View File

@@ -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 ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ;
FeatV2 = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++ v.c2.s ++
"<object>";
FeatV3 = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ "<arg1>" ++
v.c3.s ++ "<arg2>";
FeatV2V = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ "<object>" ++
v.c3.s ++ "<verb>";
FeatV2S = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ "<object>" ++
"that" ++ "<sentence>";
FeatV2Q = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ "<object>" ++
"that" ++ "<question>";
FeatV2A = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
v.c2.s ++ "<object>" ++
"<adjective>";
FeatVV = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
"<verb>" ;
FeatVS = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
"that" ++ "<sentence>";
FeatVQ = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
"<question>";
FeatVA = \v ->
"<subject>" ++
v.s ! VI (VInfin Act) ++ v.part ++
"<adjective>";
}