mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-21 00:52:51 -06:00
some more Finnish
This commit is contained in:
@@ -8,11 +8,11 @@ concrete ClauseFin of Clause = CategoriesFin **
|
|||||||
lin
|
lin
|
||||||
SPredV np v =
|
SPredV np v =
|
||||||
sats2clause (mkSats np v) ;
|
sats2clause (mkSats np v) ;
|
||||||
{-
|
---- SPredPassV subj v =
|
||||||
SPredPassV subj v =
|
---- sats2clause (mkSatsCopula subj (v.s ! VPart (pgen2gen subj.g) subj.n)) ;
|
||||||
sats2clause (mkSatsCopula subj (v.s ! VPart (pgen2gen subj.g) subj.n)) ;
|
|
||||||
SPredV2 np v y =
|
SPredV2 np v y =
|
||||||
sats2clause (mkSatsObject np v y) ;
|
sats2clause (mkSatsObject np v y) ;
|
||||||
|
{-
|
||||||
SPredV3 subj verb obj1 obj2 =
|
SPredV3 subj verb obj1 obj2 =
|
||||||
sats2clause (insertObject (mkSatsObject subj verb obj1) verb.c3 verb.s3 obj2) ;
|
sats2clause (insertObject (mkSatsObject subj verb obj1) verb.c3 verb.s3 obj2) ;
|
||||||
SPredReflV2 subj verb =
|
SPredReflV2 subj verb =
|
||||||
|
|||||||
@@ -963,7 +963,7 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
|||||||
(juosta + (a + "n"))
|
(juosta + (a + "n"))
|
||||||
juoksi
|
juoksi
|
||||||
(juoksi + "n")
|
(juoksi + "n")
|
||||||
(juoksi + "sin")
|
(juoksi + "si")
|
||||||
juossut
|
juossut
|
||||||
juostu
|
juostu
|
||||||
(init juossut + "n") ;
|
(init juossut + "n") ;
|
||||||
@@ -985,7 +985,7 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
|||||||
(juoda + (a + "n"))
|
(juoda + (a + "n"))
|
||||||
joi
|
joi
|
||||||
(joi + "n")
|
(joi + "n")
|
||||||
(joi + "sin")
|
(joi + "si")
|
||||||
(juo + "n" + u + "t")
|
(juo + "n" + u + "t")
|
||||||
(juo + "t" + u)
|
(juo + "t" + u)
|
||||||
(juo + "d" + u + "n") ;
|
(juo + "d" + u + "n") ;
|
||||||
@@ -1002,10 +1002,11 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
|||||||
let ei =
|
let ei =
|
||||||
mkVerb
|
mkVerb
|
||||||
"ei" "ei" "en" "eivät" "älkää"
|
"ei" "ei" "en" "eivät" "älkää"
|
||||||
"ei" "ei" "ei" "ei" "ei" "ei" "ei"
|
"ei" "e" "en" "e" "ei" "ei" "ei"
|
||||||
in
|
in
|
||||||
{s = table {
|
{s = table {
|
||||||
Imper Sg => "älä" ;
|
Imper Sg => "älä" ;
|
||||||
|
Impf n p | Cond n p => ei.s ! Pres n p ;
|
||||||
v => ei.s ! v
|
v => ei.s ! v
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:../abstract:../../prelude
|
--# -path=.:../abstract:../../prelude
|
||||||
|
|
||||||
concrete NumeralsFin of Numerals = open TypesFin, MorphoFin in {
|
concrete NumeralsFin of Numerals = open TypesFin, MorphoFin, ParadigmsFin in {
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Numeral, Sub1000000 = {s : NForm => Str ; n : Number} ;
|
Numeral, Sub1000000 = {s : NForm => Str ; n : Number} ;
|
||||||
@@ -13,7 +13,7 @@ lin
|
|||||||
"kaksien" "kaksia" "kaksiin" ;
|
"kaksien" "kaksia" "kaksiin" ;
|
||||||
n3 = mkSubst "a" "kolme" "kolme" "kolme" "kolmea" "kolmeen" "kolmi" "kolmi"
|
n3 = mkSubst "a" "kolme" "kolme" "kolme" "kolmea" "kolmeen" "kolmi" "kolmi"
|
||||||
"kolmien" "kolmia" "kolmiin" ;
|
"kolmien" "kolmia" "kolmiin" ;
|
||||||
n4 = regNoun "neljä" ;
|
n4 = regN "neljä" ;
|
||||||
n5 = reg3Noun "viisi" "viiden" "viisiä" ;
|
n5 = reg3Noun "viisi" "viiden" "viisiä" ;
|
||||||
n6 = reg3Noun "kuusi" "kuuden" "kuutta" ;
|
n6 = reg3Noun "kuusi" "kuuden" "kuutta" ;
|
||||||
n7 = mkSubst "ä" "seitsemän" "seitsemä" "seitsemä" "seitsemää"
|
n7 = mkSubst "ä" "seitsemän" "seitsemä" "seitsemä" "seitsemää"
|
||||||
|
|||||||
@@ -480,9 +480,10 @@ oper
|
|||||||
subj : Str ;
|
subj : Str ;
|
||||||
pred : Bool => SForm => {
|
pred : Bool => SForm => {
|
||||||
fin : Str ;
|
fin : Str ;
|
||||||
inf : Str
|
inf : Str ;
|
||||||
|
obj : Str -- object case depends on both
|
||||||
} ;
|
} ;
|
||||||
comp : Bool => Str
|
comp : Str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
sats2clause : Sats -> Clause = \sats ->
|
sats2clause : Sats -> Clause = \sats ->
|
||||||
@@ -492,11 +493,12 @@ oper
|
|||||||
pred = sats.pred ! b ! sf ;
|
pred = sats.pred ! b ! sf ;
|
||||||
fin = pred.fin ;
|
fin = pred.fin ;
|
||||||
inf = pred.inf ;
|
inf = pred.inf ;
|
||||||
comp = sats.comp ! b
|
obj = pred.obj ;
|
||||||
|
comp = sats.comp
|
||||||
in
|
in
|
||||||
case st of {
|
case st of {
|
||||||
SDecl => subj ++ fin ++ inf ++ comp ;
|
SDecl => subj ++ fin ++ inf ++ obj ++ comp ;
|
||||||
SQuest => questPart fin ++ subj ++ inf ++ comp
|
SQuest => questPart fin ++ subj ++ inf ++ obj ++ comp
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -504,12 +506,40 @@ oper
|
|||||||
|
|
||||||
mkSats : NounPhrase -> Verb -> Sats = \subj,verb ->
|
mkSats : NounPhrase -> Verb -> Sats = \subj,verb ->
|
||||||
{subj = subj.s ! NPCase Nom ; --- "minusta tulee poliisi"
|
{subj = subj.s ! NPCase Nom ; --- "minusta tulee poliisi"
|
||||||
pred = inflectVerb verb subj.n (np2Person subj.p) ;
|
pred = \\b,sf =>
|
||||||
comp = \\_ => []
|
inflectVerb verb subj.n (np2Person subj.p) b sf ** {obj = []} ;
|
||||||
|
comp = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
inflectVerb : Verb -> Number -> Person -> Bool => SForm => {fin, inf : Str} =
|
mkSatsObject : NounPhrase -> TransVerb -> NounPhrase -> Sats = \subj,verb,obj ->
|
||||||
\verb,n,p -> \\b,sf =>
|
insertObject (mkSats subj verb) verb.c verb.s3 verb.s4 obj ;
|
||||||
|
|
||||||
|
insertObject : Sats -> ComplCase -> Str -> Str -> NounPhrase -> Sats =
|
||||||
|
\sats, c, prep, postp, obj ->
|
||||||
|
{subj = sats.subj ;
|
||||||
|
pred = \\b,sf =>
|
||||||
|
let spred = sats.pred ! b ! sf in
|
||||||
|
{fin = spred.fin ;
|
||||||
|
inf = spred.inf ;
|
||||||
|
obj = spred.obj ++ prep ++ obj.s ! complCase b c sf ++ postp
|
||||||
|
} ;
|
||||||
|
comp = sats.comp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
complCase : Bool -> ComplCase -> SForm -> NPForm = \b,c,v -> case c of {
|
||||||
|
CCase k => NPCase k ;
|
||||||
|
CAcc => case b of {
|
||||||
|
True => case v of {
|
||||||
|
VFinite _ _ => NPAccGen ;
|
||||||
|
_ => NPAccNom
|
||||||
|
} ;
|
||||||
|
_ => NPCase Part
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
inflectVerb : Verb -> Number -> Person -> Bool -> SForm -> {fin, inf : Str} =
|
||||||
|
\verb,n,p,b,sf ->
|
||||||
let
|
let
|
||||||
vs = verb.s ;
|
vs = verb.s ;
|
||||||
olla = verbOlla.s ;
|
olla = verbOlla.s ;
|
||||||
@@ -538,40 +568,6 @@ oper
|
|||||||
VImperat => älä
|
VImperat => älä
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{-
|
|
||||||
predVerb : Verb -> VerbGroup = \walk ->
|
|
||||||
let {
|
|
||||||
noCompl : {s2 : VForm => Str} = {s2 = \\_ => []} ;
|
|
||||||
infCompl : {s2 : VForm => Str} = {s2 = table {
|
|
||||||
Imper Pl => walk.s ! ImpNegPl ;
|
|
||||||
_ => walk.s ! vFormNeg
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
in
|
|
||||||
nomVerbPhrase (walk ** noCompl) (verbEi ** infCompl) ;
|
|
||||||
|
|
||||||
predVerbPhrase : NounPhrase -> VerbPhrase -> Sentence = \jussi,uida ->
|
|
||||||
let {
|
|
||||||
p = np2Person jussi.p ;
|
|
||||||
c = complementCase True uida.c Inf --- True,Inf don't matter here
|
|
||||||
}
|
|
||||||
in
|
|
||||||
ss (jussi.s ! c ++ uida.s ! Pres jussi.n p ++ uida.s2 ! Pres jussi.n p) ;
|
|
||||||
|
|
||||||
|
|
||||||
oper
|
|
||||||
npForm2Case : Number -> NPForm -> Case = \n,f -> case f of {
|
|
||||||
NPCase c => c ;
|
|
||||||
NPAccNom => Nom ;
|
|
||||||
NPAccGen => case n of {
|
|
||||||
Sg => Gen ;
|
|
||||||
Pl => Nom
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
|
|
||||||
NounPhrase : Type = {s : NPForm => Str ; n : Number ; p : NPPerson} ;
|
|
||||||
-}
|
|
||||||
|
|
||||||
|
|
||||||
-- Verb phrases are discontinuous: the two parts of a verb phrase are
|
-- Verb phrases are discontinuous: the two parts of a verb phrase are
|
||||||
|
|||||||
Reference in New Issue
Block a user