1
0
forked from GitHub/gf-core

smart paradigms for Fre irregular verbs, not perfect yet; removed some variants from Fre conjugations

This commit is contained in:
aarne
2011-09-23 14:21:56 +00:00
parent 0715bd811c
commit 8d661c0fd8
2 changed files with 67 additions and 10 deletions

View File

@@ -372,7 +372,7 @@ oper
table {
Inf => tenir ;
Indi Presn Sg p => tien + affpres ! p ;
Indi Presn Pl P3 => tienn + affixPlOns ! P3 ;
Indi Presn Pl P3 => tienn + "ent" ;
Indi Presn Pl p => ten + affixPlOns ! p ;
Indi Imparf n p => ten + affixImparf ! n ! p ;
Indi Passe n p => t + affpasse.ps ! n ! p ;
@@ -398,7 +398,49 @@ oper
\tien, ten, tienn, t, tiendr, tenu, tenir ->
\affpres, affpasse ->
verbAffixes tien ten tienn t tiendr tienn ten
(tien + affpres ! P1) tenu (tenu+"s") tenir affpres affpasse ;
(tien + affpres ! P1) tenu
(case tenu of {_ +"s" => tenu ; _ => tenu + "s"}) tenir affpres affpasse ;
-- make this into a smart paradigm
mkVerb7 : (tenir,tiens,tenons,tiennent,tint,tiendra,tenu : Str) -> Verbe =
\tenir,tiens,tenons,tiennent,tint,tiendra,tenu ->
let
affpres : Affixe = case tiens of {
_ + "e" => lesAffixes "e" "es" "e" ;
_ + "ds" => lesAffixes "s" "s" [] ;
_ + "ts" => lesAffixes "s" "s" [] ;
_ + s@("s" | "x") => lesAffixes s s "t"
} ;
affpasse : AffixPasse * Int = case tint of {
_ + "a" => <affixPasseA,1> ;
_ + "it" => <affixPasseI,2> ;
_ + "ut" => <affixPasseU,2> ;
_ + "nt" => <affixPasse "in" "în",3> ;
_ => Predef.error ("cannot form past tense from" ++ tint)
} ;
in verbHabituel
(Predef.tk 1 tiens)
(Predef.tk 3 tenons)
(Predef.tk 3 tiennent)
(Predef.tk affpasse.p2 tint)
(Predef.tk 1 tiendra)
tenu
tenir
affpres
affpasse.p1 ;
AffixPasse : Type = {ps : Number => Affixe ; si : Number => Affixe} ;
affixPasse : (_,_ : Str) -> AffixPasse = \i, î ->
{ps = affixPasseS i î ; si = affixSImparfSse i î} ;
affixPasseA : AffixPasse = {ps = affixPasseAi ; si = affixSImparfSse "a" "â"} ;
affixPasseI : AffixPasse = affixPasse "i" "î" ;
affixPasseU : AffixPasse = affixPasse "u" "û" ;
--3 The first conjugation
--
@@ -610,10 +652,13 @@ oper
} in
table {
Indi Presn Sg p => fa + "u" + affixSgX ! p ;
Subjo SPres n p => fa + variants {"illiss" ; "ill"} + affixSPres ! n ! p ;
Indi Futur n p => variants {tfa ! Indi Futur n p ; faudr + affixFutur ! n ! p} ;
Condi n p => variants {tfa ! Condi n p ; faudr + affixImparf ! n ! p} ;
Subjo SPres n p => fa + "ill" + affixSPres ! n ! p ;
Indi Futur n p => faudr + affixFutur ! n ! p ;
Condi n p => faudr + affixImparf ! n ! p ;
---v Subjo SPres n p => fa + variants {"illiss" ; "ill"} + affixSPres ! n ! p ;
---v Indi Futur n p => variants {tfa ! Indi Futur n p ; faudr + affixFutur ! n ! p} ;
---v Condi n p => variants {tfa ! Condi n p ; faudr + affixImparf ! n ! p} ;
Imper _ => nonExist ;
p => tfa ! p
@@ -743,7 +788,8 @@ oper
tpouvoir = auxConj3usX "eu" "ouv" "euv" "" "ourr" "uiss" "uiss" "ouv"
} in
table {
Indi Presn Sg P1 => p + variants {"eux" ; "uis"} ;
Indi Presn Sg P1 => p + "eux" ;
---v Indi Presn Sg P1 => p + variants {"eux" ; "uis"} ;
t => p + tpouvoir ! t
} ;
@@ -825,7 +871,8 @@ oper
tassoir = auxConj3is "oi" "oy" "oi" "" "oir" "is" "is"
} in
table {
Inf => ass + variants {"oir" ; "eoir"} ;
Inf => ass + "eoir" ;
---v Inf => ass + variants {"oir" ; "eoir"} ;
t => ass + tassoir ! t
} ;
@@ -876,7 +923,8 @@ oper
e = Predef.tk 5 choir ;
tchoir =
auxConj3usS "choi" "choy" "choi" "ch"
(variants {"choir" ; "cherr"}) "choi" "choy" "ch"
"cherr" "choi" "choy" "ch"
---v (variants {"choir" ; "cherr"}) "choi" "choy" "ch"
} in
\\p => e + tchoir ! p ;
@@ -885,7 +933,8 @@ oper
table {
Indi _ _ P1 => nonExist ;
Indi _ _ P2 => nonExist ;
Indi Presn Pl P3 => Predef.tk 3 échoir + variants {"oient" ; "éent"} ;
Indi Presn Pl P3 => Predef.tk 3 échoir + "éent" ;
---v Indi Presn Pl P3 => Predef.tk 3 échoir + variants {"oient" ; "éent"} ;
Subjo _ _ P1 => nonExist ;
Subjo _ _ P2 => nonExist ;
Condi _ P1 => nonExist ;

View File

@@ -213,6 +213,10 @@ oper
mkV : (finir : Str) -> V ; -- regular 1/2/3 conjugation
mkV : (jeter,jette,jettera : Str) -> V ; -- 1st conjugation variations
-- Here is a worst-case paradigm.
mkV : (tenir,tiens,tenons,tiennent,tint,tiendra,tenu : Str) -> V ;
-- The $IrregFre$ list gives some verbs as two-place. These verbs can be
-- reused as one-place verbs.
@@ -429,7 +433,11 @@ oper
mkV = overload {
mkV : Str -> V = regV ;
mkV : (jeter,jette,jettera : Str) -> V = reg3V ;
mkV : V2 -> V = v2V
mkV : V2 -> V = v2V ;
mkV : (tenir,tiens,tenons,tiennent,tint,tiendra,tenu : Str) -> V
= \tenir,tiens,tenons,tiennent,tint,tiendra,tenu ->
{s = vvf (mkVerb7 tenir tiens tenons tiennent tint tiendra tenu) ; vtyp = VHabere ; lock_V = <>} ;
} ;
regV : Str -> V ;