diff --git a/lib/src/french/BeschFre.gf b/lib/src/french/BeschFre.gf index 2d05b5b4a..f5921258e 100644 --- a/lib/src/french/BeschFre.gf +++ b/lib/src/french/BeschFre.gf @@ -231,43 +231,22 @@ oper v_besch101 : Str -> VerbeN = \s -> mkNV (conj s) ; --- to do _ => conj1aimer parler } ; -{- - let - e = last (Predef.tk 4 parler) ; - c = last (Predef.tk 3 parler) ; - verb_é = pbool2bool (occur "é" (e + last (Predef.tk 3 parler))) ; - verb_e = andB (pbool2bool (occur e "e")) (pbool2bool (occur c "cmnprsv")) - in - case Predef.dp 4 parler of { - "éger" => conj1assiéger parler ; - "eler" => conj1jeter parler ; - "eter" => conj1jeter parler ; - _ => case verb_é of { - True => conj1céder parler ; - _ => case verb_e of { ----- True => conj1peser parler ; - False | _ => case Predef.dp 3 parler of { - "cer" => conj1placer parler ; - "ger" => conj1manger parler ; - "yer" => conj1payer parler ; - _ => case Predef.dp 2 parler of { - "ir" => conj2finir parler ; - "re" => conj3rendre parler ; - _ => conj1aimer parler - } - } - } - } - } ; --} - -- The following can be more reliable. + mkVerb2Reg : Str -> Str -> Verbe = \jeter,jette -> case of { + <_ + "er", _ + "e"> => auxConj1 (Predef.tk 2 jeter) (Predef.tk 1 jette) + (jette + "r") ; + <_ + "oir", _ > => conj3cevoir jeter ; + <_ + "ir", _ + "it"> => conj2finir jeter ; + <_ + "ir", _ > => conj3sentir jeter ; + _ => mkVerbReg jeter + } ; + mkVerb3Reg : Str -> Str -> Str -> Verbe = \jeter,jette,jettera -> - auxConj1 - (Predef.tk 2 jeter) - (Predef.tk 1 jette) - (Predef.tk 1 jettera) ; + case jeter of { + _ + "er" => auxConj1 (Predef.tk 2 jeter) (Predef.tk 1 jette) (Predef.tk 1 jettera) ; + _ => mkVerb2Reg jeter jette + } ; --3 The second conjugation -- diff --git a/lib/src/french/ParadigmsFre.gf b/lib/src/french/ParadigmsFre.gf index 0a6918d87..5e30d38cf 100644 --- a/lib/src/french/ParadigmsFre.gf +++ b/lib/src/french/ParadigmsFre.gf @@ -216,6 +216,7 @@ oper mkV : overload { mkV : (finir : Str) -> V ; -- regular 1/2/3 conjugation + mkV : (jeter,jette : Str) -> V ; -- 1st and 2nd conjugation variations mkV : (jeter,jette,jettera : Str) -> V ; -- 1st conjugation variations -- Here is a paradigm that works for most irregular verbs. @@ -442,6 +443,8 @@ oper mkV = overload { mkV : Str -> V = regV ; + mkV : (jeter,jette : Str) -> V = + \x,y -> let v = vvf (mkVerb2Reg x y) in {s = v ; vtyp = VHabere ; lock_V = <>} ; mkV : (jeter,jette,jettera : Str) -> V = reg3V ; mkV : V2 -> V = v2V ; mkV : (tenir,tiens,tenons,tiennent,tint,tiendra,tenu : Str) -> V