summaryrefslogtreecommitdiff
path: root/deprecated/old-lib/resource/french
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2009-12-09 09:47:16 +0000
committeraarne <aarne@chalmers.se>2009-12-09 09:47:16 +0000
commitc8ceed08efcc0bdc1fcbd89bce643d9f52f0991b (patch)
tree5f0b314341c129eba1bc67b8b887fb8a4486fad8 /deprecated/old-lib/resource/french
parent101df06f6c8380328d4266adadac3ab6d1bac0b3 (diff)
moving a few things to deprecated
Diffstat (limited to 'deprecated/old-lib/resource/french')
-rw-r--r--deprecated/old-lib/resource/french/AdjectiveFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/AdverbFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/AllFre.gf7
-rw-r--r--deprecated/old-lib/resource/french/AllFreAbs.gf5
-rw-r--r--deprecated/old-lib/resource/french/BeschFre.gf102
-rw-r--r--deprecated/old-lib/resource/french/CatFre.gf4
-rw-r--r--deprecated/old-lib/resource/french/CompatibilityFre.gf11
-rw-r--r--deprecated/old-lib/resource/french/ConjunctionFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/DiffFre.gf213
-rw-r--r--deprecated/old-lib/resource/french/ExtraFre.gf60
-rw-r--r--deprecated/old-lib/resource/french/ExtraFreAbs.gf34
-rw-r--r--deprecated/old-lib/resource/french/ExtraRomanceFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/GrammarFre.gf21
-rw-r--r--deprecated/old-lib/resource/french/IdiomFre.gf45
-rw-r--r--deprecated/old-lib/resource/french/IrregFre.gf395
-rw-r--r--deprecated/old-lib/resource/french/IrregFreAbs.gf391
-rw-r--r--deprecated/old-lib/resource/french/LangFre.gf10
-rw-r--r--deprecated/old-lib/resource/french/LexiconFre.gf367
-rw-r--r--deprecated/old-lib/resource/french/MorphoFre.gf1238
-rw-r--r--deprecated/old-lib/resource/french/NounFre.gf4
-rw-r--r--deprecated/old-lib/resource/french/NumeralFre.gf148
-rw-r--r--deprecated/old-lib/resource/french/ParadigmsFre.gf447
-rw-r--r--deprecated/old-lib/resource/french/PhonoFre.gf28
-rw-r--r--deprecated/old-lib/resource/french/PhraseFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/QuestionFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/RelativeFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/ResFre.gf13
-rw-r--r--deprecated/old-lib/resource/french/SentenceFre.gf2
-rw-r--r--deprecated/old-lib/resource/french/StructuralFre.gf153
-rw-r--r--deprecated/old-lib/resource/french/VerbFre.gf4
30 files changed, 3716 insertions, 0 deletions
diff --git a/deprecated/old-lib/resource/french/AdjectiveFre.gf b/deprecated/old-lib/resource/french/AdjectiveFre.gf
new file mode 100644
index 000000000..28ff535b9
--- /dev/null
+++ b/deprecated/old-lib/resource/french/AdjectiveFre.gf
@@ -0,0 +1,2 @@
+concrete AdjectiveFre of Adjective = CatFre ** AdjectiveRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/AdverbFre.gf b/deprecated/old-lib/resource/french/AdverbFre.gf
new file mode 100644
index 000000000..0fcc12dca
--- /dev/null
+++ b/deprecated/old-lib/resource/french/AdverbFre.gf
@@ -0,0 +1,2 @@
+concrete AdverbFre of Adverb = CatFre ** AdverbRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/AllFre.gf b/deprecated/old-lib/resource/french/AllFre.gf
new file mode 100644
index 000000000..32f20cd4c
--- /dev/null
+++ b/deprecated/old-lib/resource/french/AllFre.gf
@@ -0,0 +1,7 @@
+--# -path=.:../romance:../abstract:../common:prelude
+
+concrete AllFre of AllFreAbs =
+ LangFre,
+ IrregFre,
+ ExtraFre
+ ** {} ;
diff --git a/deprecated/old-lib/resource/french/AllFreAbs.gf b/deprecated/old-lib/resource/french/AllFreAbs.gf
new file mode 100644
index 000000000..474168d53
--- /dev/null
+++ b/deprecated/old-lib/resource/french/AllFreAbs.gf
@@ -0,0 +1,5 @@
+abstract AllFreAbs =
+ Lang,
+ IrregFreAbs,
+ ExtraFreAbs
+ ** {} ;
diff --git a/deprecated/old-lib/resource/french/BeschFre.gf b/deprecated/old-lib/resource/french/BeschFre.gf
new file mode 100644
index 000000000..9903e07ec
--- /dev/null
+++ b/deprecated/old-lib/resource/french/BeschFre.gf
@@ -0,0 +1,102 @@
+resource BeschFre = open Prelude, MorphoFre in {
+
+flags optimize=noexpand ; -- faster and smaller than =all
+
+oper VerbeN = {s : VF => Str} ;
+oper mkNV : Verbe -> VerbeN = \ve -> {s = vvf ve} ;
+
+oper conj : Str -> Verbe = conj1aimer ; --- temp. default
+
+oper v_nancy100inf : Str -> VerbeN = \ve -> {s = table {
+ VInfin _ => ve ;
+ _ => nonExist
+ }
+} ;
+
+
+oper v_besch1 : Str -> VerbeN = \s -> mkNV (conjAvoir s) ;
+oper v_besch2 : Str -> VerbeN = \s -> mkNV (conjÊtre s) ;
+-- 3-5 not used
+oper v_besch6 : Str -> VerbeN = \s -> mkNV (conj1aimer s) ;
+oper v_besch7 : Str -> VerbeN = \s -> mkNV (conj1placer s) ;
+oper v_besch8 : Str -> VerbeN = \s -> mkNV (conj1manger s) ;
+oper v_besch9 : Str -> VerbeN = \s -> mkNV (conj1peser s) ;
+oper v_besch10 : Str -> VerbeN = \s -> mkNV (conj1céder s) ;
+oper v_besch11 : Str -> VerbeN = \s -> mkNV (conj1jeter s) ;
+oper v_besch12 : Str -> VerbeN = \s -> mkNV (conj1jeter s) ;
+oper v_besch13 : Str -> VerbeN = \s -> mkNV (conj1aimer s) ;
+oper v_besch14 : Str -> VerbeN = \s -> mkNV (conj1assiéger s) ;
+oper v_besch15 : Str -> VerbeN = \s -> mkNV (conj1aimer s) ; --- ?
+oper v_besch16 : Str -> VerbeN = \s -> mkNV (conj1payer s) ;
+oper v_besch17 : Str -> VerbeN = \s -> mkNV (conj1payer s) ;
+oper v_besch18 : Str -> VerbeN = \s -> mkNV (conj1envoyer s) ;
+oper v_besch19 : Str -> VerbeN = \s -> mkNV (conj2finir s) ;
+oper v_besch20 : Str -> VerbeN = \s -> mkNV (conj2haïr s) ;
+-- oper v_besch21 : Str -> VerbeN = \s -> mkNV (conj s) ; -- not used
+oper v_besch22 : Str -> VerbeN = \s -> mkNV (conj3aller s) ;
+oper v_besch23 : Str -> VerbeN = \s -> mkNV (conj3tenir s) ;
+oper v_besch24 : Str -> VerbeN = \s -> mkNV (conj3quérir s) ;
+oper v_besch25 : Str -> VerbeN = \s -> mkNV (conj3sentir s) ;
+oper v_besch26 : Str -> VerbeN = \s -> mkNV (conj3vêtir s) ;
+oper v_besch27 : Str -> VerbeN = \s -> mkNV (conj3couvrir s) ;
+oper v_besch28 : Str -> VerbeN = \s -> mkNV (conj3cueillir s) ;
+oper v_besch29 : Str -> VerbeN = \s -> mkNV (conj3assaillir s) ;
+oper v_besch30 : Str -> VerbeN = \s -> mkNV (conj3faillir s) ;
+oper v_besch31 : Str -> VerbeN = \s -> mkNV (conj3bouillir s) ;
+oper v_besch32 : Str -> VerbeN = \s -> mkNV (conj3dormir s) ;
+oper v_besch33 : Str -> VerbeN = \s -> mkNV (conj3courir s) ;
+oper v_besch34 : Str -> VerbeN = \s -> mkNV (conj3mourir s) ;
+oper v_besch35 : Str -> VerbeN = \s -> mkNV (conj3sentir s) ;
+oper v_besch36 : Str -> VerbeN = \s -> mkNV (conj3fuir s) ;
+oper v_besch37 : Str -> VerbeN = \s -> mkNV (conj3ouïr s) ;
+oper v_besch38 : Str -> VerbeN = \s -> mkNV (conj3cevoir s) ;
+oper v_besch39 : Str -> VerbeN = \s -> mkNV (conj3voir s) ;
+oper v_besch40 : Str -> VerbeN = \s -> mkNV (conj3pourvoir s) ;
+oper v_besch41 : Str -> VerbeN = \s -> mkNV (conj3savoir s) ;
+oper v_besch42 : Str -> VerbeN = \s -> mkNV (conj3devoir s) ;
+oper v_besch43 : Str -> VerbeN = \s -> mkNV (conj3pouvoir s) ;
+oper v_besch44 : Str -> VerbeN = \s -> mkNV (conj3mouvoir s) ;
+oper v_besch45 : Str -> VerbeN = \s -> mkNV (conj3pleuvoir s) ;
+oper v_besch46 : Str -> VerbeN = \s -> mkNV (conj3falloir s) ;
+oper v_besch47 : Str -> VerbeN = \s -> mkNV (conj3valoir s) ;
+oper v_besch48 : Str -> VerbeN = \s -> mkNV (conj3vouloir s) ;
+oper v_besch49 : Str -> VerbeN = \s -> mkNV (conj3asseoir s) ;
+oper v_besch50 : Str -> VerbeN = \s -> mkNV (conj3messeoir s) ; --- ?
+oper v_besch51 : Str -> VerbeN = \s -> mkNV (conj3surseoir s) ;
+oper v_besch52 : Str -> VerbeN = \s -> mkNV (conj3choir s) ;
+oper v_besch53 : Str -> VerbeN = \s -> mkNV (conj3rendre s) ;
+oper v_besch54 : Str -> VerbeN = \s -> mkNV (conj3prendre s) ;
+oper v_besch55 : Str -> VerbeN = \s -> mkNV (conj3battre s) ;
+oper v_besch56 : Str -> VerbeN = \s -> mkNV (conj3mettre s) ;
+oper v_besch57 : Str -> VerbeN = \s -> mkNV (conj3peindre s) ;
+oper v_besch58 : Str -> VerbeN = \s -> mkNV (conj3joindre s) ;
+oper v_besch59 : Str -> VerbeN = \s -> mkNV (conj3craindre s) ;
+oper v_besch60 : Str -> VerbeN = \s -> mkNV (conj3vaincre s) ;
+oper v_besch61 : Str -> VerbeN = \s -> mkNV (conj3traire s) ;
+oper v_besch62 : Str -> VerbeN = \s -> mkNV (conj3faire s) ;
+oper v_besch63 : Str -> VerbeN = \s -> mkNV (conj3plaire s) ;
+oper v_besch64 : Str -> VerbeN = \s -> mkNV (conj3connaître s) ;
+oper v_besch65 : Str -> VerbeN = \s -> mkNV (conj3naître s) ;
+oper v_besch66 : Str -> VerbeN = \s -> mkNV (conj3paître s) ;
+oper v_besch67 : Str -> VerbeN = \s -> mkNV (conj3croître s) ;
+oper v_besch68 : Str -> VerbeN = \s -> mkNV (conj3croire s) ;
+oper v_besch69 : Str -> VerbeN = \s -> mkNV (conj3boire s) ;
+oper v_besch70 : Str -> VerbeN = \s -> mkNV (conj3clore s) ;
+oper v_besch71 : Str -> VerbeN = \s -> mkNV (conj3conclure s) ;
+oper v_besch72 : Str -> VerbeN = \s -> mkNV (conj3absoudre s) ;
+oper v_besch73 : Str -> VerbeN = \s -> mkNV (conj3coudre s) ;
+oper v_besch74 : Str -> VerbeN = \s -> mkNV (conj3moudre s) ;
+oper v_besch75 : Str -> VerbeN = \s -> mkNV (conj3suivre s) ;
+oper v_besch76 : Str -> VerbeN = \s -> mkNV (conj3vivre s) ;
+oper v_besch77 : Str -> VerbeN = \s -> mkNV (conj3lire s) ;
+oper v_besch78 : Str -> VerbeN = \s -> mkNV (conj3dire s) ;
+oper v_besch79 : Str -> VerbeN = \s -> mkNV (conj3rire s) ;
+oper v_besch80 : Str -> VerbeN = \s -> mkNV (conj3écrire s) ;
+oper v_besch81 : Str -> VerbeN = \s -> mkNV (conj3confire s) ;
+oper v_besch82 : Str -> VerbeN = \s -> mkNV (conj3cuire s) ;
+
+-- 83-99 not used
+
+oper v_besch100 : Str -> VerbeN = \s -> mkNV (conj s) ; --- to do
+oper v_besch101 : Str -> VerbeN = \s -> mkNV (conj s) ; --- to do
+}
diff --git a/deprecated/old-lib/resource/french/CatFre.gf b/deprecated/old-lib/resource/french/CatFre.gf
new file mode 100644
index 000000000..2daa7decc
--- /dev/null
+++ b/deprecated/old-lib/resource/french/CatFre.gf
@@ -0,0 +1,4 @@
+--# -path=.:../romance:../common:../abstract:../common:prelude
+
+concrete CatFre of Cat = CommonX - [Tense,TPres,TPast,TFut,TCond] ** CatRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/CompatibilityFre.gf b/deprecated/old-lib/resource/french/CompatibilityFre.gf
new file mode 100644
index 000000000..89680f533
--- /dev/null
+++ b/deprecated/old-lib/resource/french/CompatibilityFre.gf
@@ -0,0 +1,11 @@
+--# -path=.:../romance:../abstract:../common
+
+concrete CompatibilityFre of Compatibility = CatFre ** open Prelude, CommonRomance in {
+
+-- from Noun 19/4/2008
+
+lin
+ NumInt n = {s = \\_ => n.s ; isNum = True ; n = Pl} ;
+ OrdInt n = {s = \\_ => n.s ++ "."} ; ---
+
+}
diff --git a/deprecated/old-lib/resource/french/ConjunctionFre.gf b/deprecated/old-lib/resource/french/ConjunctionFre.gf
new file mode 100644
index 000000000..8397e141f
--- /dev/null
+++ b/deprecated/old-lib/resource/french/ConjunctionFre.gf
@@ -0,0 +1,2 @@
+concrete ConjunctionFre of Conjunction = CatFre ** ConjunctionRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/DiffFre.gf b/deprecated/old-lib/resource/french/DiffFre.gf
new file mode 100644
index 000000000..37026a754
--- /dev/null
+++ b/deprecated/old-lib/resource/french/DiffFre.gf
@@ -0,0 +1,213 @@
+--# -path=.:../romance:../abstract:../common:prelude
+
+instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in {
+
+ flags optimize=noexpand ; coding=utf8 ;
+-- flags optimize=all ;
+
+ param
+ Prepos = P_de | P_a | PNul ;
+ VType = VHabere | VEsse | VRefl ;
+
+ oper
+ dative : Case = CPrep P_a ;
+ genitive : Case = CPrep P_de ;
+
+ prepCase : Case -> Str = \c -> case c of {
+ Nom => [] ;
+ Acc => [] ;
+ CPrep P_a => "à" ;
+ CPrep P_de => elisDe ;
+ CPrep PNul => []
+ } ;
+
+ artDef : Gender -> Number -> Case -> Str = \g,n,c ->
+ case <g,n,c> of {
+ <Masc,Sg, CPrep P_de> => pre {"du" ; ["de l'"] / voyelle} ;
+ <Masc,Sg, CPrep P_a> => pre {"au" ; ["à l'"] / voyelle} ;
+ <Masc,Sg, _> => elisLe ;
+ <Fem, Sg, _> => prepCase c ++ elisLa ;
+ <_, Pl, CPrep P_de> => "des" ;
+ <_, Pl, CPrep P_a> => "aux" ;
+ <_, Pl, _ > => "les"
+ } ;
+
+-- In these two, "de de/du/des" becomes "de".
+
+ artIndef = \g,n,c -> case <n,c> of {
+ <Sg,_> => prepCase c ++ genForms "un" "une" ! g ;
+ <Pl,CPrep P_de> => elisDe ;
+ _ => prepCase c ++ "des"
+ } ;
+
+ possCase = \_,_,c -> prepCase c ;
+
+ partitive = \g,c -> case c of {
+ CPrep P_de => elisDe ;
+ _ => prepCase c ++ artDef g Sg (CPrep P_de)
+ } ;
+
+ conjunctCase : NPForm -> NPForm = \c -> case c of {
+ Aton k => Ton k ;
+ _ => c
+ } ;
+
+ auxVerb : VType -> (VF => Str) = \vtyp -> case vtyp of {
+ VHabere => avoir_V.s ;
+ _ => copula.s
+ } ;
+
+ partAgr : VType -> VPAgr = \vtyp -> case vtyp of {
+ VHabere => vpAgrNone ;
+ _ => VPAgrSubj
+ } ;
+
+ vpAgrClit : Agr -> VPAgr = \a ->
+ VPAgrClit a.g a.n ;
+
+---- pronArg = pronArgGen Neg ; --- takes more space and time
+
+ pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str * Bool =
+ \n,p,acc,dat ->
+ let
+ pacc = case acc of {
+ CRefl => <case p of {
+ P3 => elision "s" ; --- use of reflPron incred. expensive
+ _ => argPron Fem n p Acc
+ },True> ;
+ CPron ag an ap => <argPron ag an ap Acc,True> ;
+ _ => <[],False>
+ } ;
+ in
+ case dat of {
+ CPron ag an ap => let pdat = argPron ag an ap dative in case ap of {
+ P3 => <pacc.p1 ++ pdat,[],True> ;
+ _ => <pdat ++ pacc.p1,[],True>
+ } ;
+ _ => <pacc.p1, [],pacc.p2>
+ } ;
+
+ infForm _ _ _ _ = True ;
+
+-- Positive polarity is used in the imperative: stressed for 1st and
+-- 2nd persons.
+
+ pronArgGen : Polarity -> Number -> Person -> CAgr -> CAgr -> Str * Str =
+ \b,n,p,acc,dat ->
+ let
+ cas : Person -> Case -> Case = \pr,c -> case <pr,b> of {
+ <P1 | P2, Pos> => CPrep P_de ; --- encoding in argPron
+ _ => c
+ } ;
+ pacc = case acc of {
+ CRefl => case p of {
+ P3 => elision "s" ; --- use of reflPron incred. expensive
+ _ => argPron Fem n p (cas p Acc)
+ } ;
+ CPron ag an ap => argPron ag an ap (cas ap Acc) ;
+ _ => []
+ } ;
+ pdat = case dat of {
+ CPron ag an ap => argPron ag an ap (cas ap dative) ;
+ _ => []
+ } ;
+ in
+ case dat of {
+ CPron _ _ P3 => <pacc ++ pdat,[]> ;
+ _ => <pdat ++ pacc, []>
+ } ;
+
+ mkImperative b p vp = {
+ s = \\pol,aag =>
+ let
+ num = if_then_else Number b Pl aag.n ;
+ agr = {g = aag.g ; n = num ; p = p} ;
+ verb = (vp.s ! VPImperat).fin ! agr ;
+ neg = vp.neg ! pol ;
+ hascl = (pronArg agr.n agr.p vp.clAcc vp.clDat).p3 ;
+ clpr = pronArgGen pol agr.n agr.p vp.clAcc vp.clDat ;
+ compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
+ in
+ case pol of {
+ Pos => verb ++ if_then_Str hascl "-" [] ++ clpr.p1 ++ compl ;
+ Neg => neg.p1 ++ clpr.p1 ++ verb ++ compl
+ }
+ } ;
+
+
+ negation : Polarity => (Str * Str) = table {
+ Pos => <[],[]> ;
+ Neg => <elisNe,"pas">
+ } ;
+
+ conjThan = elisQue ;
+ conjThat = elisQue ;
+
+ subjIf = "si" ; --- s'
+
+ clitInf _ cli inf = cli ++ inf ;
+
+ relPron : Bool => AAgr => Case => Str = \\b,a,c =>
+ let
+ lequel = artDef a.g a.n c + quelPron ! a
+ in
+ case b of {
+ False => case c of {
+ Nom => "qui" ;
+ Acc => elisQue ;
+ CPrep P_de => "dont" ;
+ _ => lequel
+ } ;
+ _ => lequel
+ } ;
+
+ pronSuch : AAgr => Str = aagrForms "tel" "telle" "tels" "telles" ;
+
+ quelPron : AAgr => Str = aagrForms "quel" "quelle" "quels" "quelles" ;
+
+ partQIndir = "ce" ; --- only for qui,que: elision "c" ;
+
+ reflPron : Number -> Person -> Case -> Str = \n,p,c ->
+ let pron = argPron Fem n p c in
+ case <p,c> of {
+ <P3, Acc | CPrep P_a> => elision "s" ;
+ <P3, _> => prepCase c ++ "soi" ;
+ _ => pron
+ } ;
+
+ argPron : Gender -> Number -> Person -> Case -> Str =
+ let
+ cases : (x,y : Str) -> Case -> Str = \me,moi,c -> case c of {
+ Acc | CPrep P_a => me ;
+ _ => moi
+ } ;
+ cases3 : (x,y,z : Str) -> Case -> Str = \les,leur,eux,c -> case c of {
+ Acc => les ;
+ CPrep P_a => leur ;
+ _ => eux
+ } ;
+ in
+ \g,n,p -> case <g,n,p> of {
+ <_,Sg,P1> => cases (elision "m") "moi" ;
+ <_,Sg,P2> => cases (elision "t") "toi" ;
+ <_,Pl,P1> => \_ -> "nous" ;
+ <_,Pl,P2> => \_ -> "vous" ;
+ <Fem,Sg,P3> => cases3 elisLa "lui" "elle" ;
+ <_,Sg,P3> => cases3 (elision "l") "lui" "lui" ;
+ <Fem,Pl,P3> => cases3 "les" "leur" "elles" ;
+ <_,Pl,P3> => cases3 "les" "leur" "eux"
+ } ;
+
+ vRefl : VType = VRefl ;
+ isVRefl : VType -> Bool = \ty -> case ty of {
+ VRefl => True ;
+ _ => False
+ } ;
+
+ auxPassive : Verb = copula ;
+
+ copula : Verb = {s = table VF ["être";"être";"suis";"es";"est";"sommes";"êtes";"sont";"sois";"sois";"soit";"soyons";"soyez";"soient";"étais";"étais";"était";"étions";"étiez";"étaient";"fusse";"fusses";"fût";"fussions";"fussiez";"fussent";"fus";"fus";"fut";"fûmes";"fûtes";"furent";"serai";"seras";"sera";"serons";"serez";"seront";"serais";"serais";"serait";"serions";"seriez";"seraient";"sois";"soyons";"soyez";"été";"étés";"étée";"étées";"étant"]; vtyp=VHabere} ;
+
+ avoir_V : Verb = {s=table VF ["avoir";"avoir";"ai";"as";"a";"avons";"avez";"ont";"aie";"aies";"ait";"ayons";"ayez";"aient";"avais";"avais";"avait";"avions";"aviez";"avaient";"eusse";"eusses";"eût";"eussions";"eussiez";"eussent";"eus";"eus";"eut";"eûmes";"eûtes";"eurent";"aurai";"auras";"aura";"aurons";"aurez";"auront";"aurais";"aurais";"aurait";"aurions";"auriez";"auraient";"aie";"ayons";"ayez";"eu";"eus";"eue";"eues";"ayant"];vtyp=VHabere};
+
+}
diff --git a/deprecated/old-lib/resource/french/ExtraFre.gf b/deprecated/old-lib/resource/french/ExtraFre.gf
new file mode 100644
index 000000000..1877d8334
--- /dev/null
+++ b/deprecated/old-lib/resource/french/ExtraFre.gf
@@ -0,0 +1,60 @@
+concrete ExtraFre of ExtraFreAbs = ExtraRomanceFre **
+ open CommonRomance, PhonoFre, MorphoFre, ParadigmsFre, ParamX, ResFre in {
+
+ lin
+ EstcequeS qs = {s = "est-ce" ++ elisQue ++ qs.s ! Indic} ;
+ EstcequeIAdvS idet qs = {s = idet.s ++ "est-ce" ++ elisQue ++ qs.s ! Indic} ;
+
+ QueestcequeIP = {
+ s = table {
+ c => prepQue c ++ "est-ce" ++ caseQue c
+ } ;
+ a = aagr Fem Pl
+ } ;
+
+ QuiestcequeIP = {
+ s = table {
+ c => prepQue c ++ "qui" ++ "est-ce" ++ caseQue c
+ } ;
+ a = aagr Fem Pl
+ } ;
+
+ i8fem_Pron = mkPronoun
+ (elision "j") (elision "m") (elision "m") "moi" "mon" (elisPoss "m") "mes"
+ Fem Sg P1 ;
+ these8fem_NP = makeNP ["celles-ci"] Fem Pl ;
+ they8fem_Pron = mkPronoun
+ "elles" "les" "leur" "eux" "leur" "leur" "leurs"
+ Fem Pl P3 ;
+ this8fem_NP = pn2np (mkPN ["celle-ci"] Fem) ;
+ those8fem_NP = makeNP ["celles-là"] Fem Pl ;
+ we8fem_Pron = mkPronoun "nous" "nous" "nous" "nous" "notre" "notre" "nos"
+ Fem Pl P1 ;
+ whoPl8fem_IP =
+ {s = \\c => artDef a.g a.n c + quelPron ! a ; a = a}
+ where {a = aagr Fem Sg} ;
+ whoSg8fem_IP =
+ {s = \\c => artDef a.g a.n c + quelPron ! a ; a = a}
+ where {a = aagr Fem Pl} ;
+
+ youSg8fem_Pron = mkPronoun
+ "tu" (elision "t") (elision "t") "toi" "ton" (elisPoss "t") "tes"
+ Fem Sg P2 ;
+ youPl8fem_Pron,
+ youPol8fem_Pron =
+ mkPronoun
+ "vous" "vous" "vous" "vous" "votre" "votre" "vos"
+ Fem Pl P2 ;
+
+ oper
+ prepQue : Case -> Str = \c -> case c of {
+ Nom | Acc => elisQue ;
+ _ => prepCase c ++ "qui" ---
+ } ;
+ caseQue : Case -> Str = \c -> case c of {
+ Nom => "qui" ;
+ _ => elisQue
+ } ;
+
+
+}
diff --git a/deprecated/old-lib/resource/french/ExtraFreAbs.gf b/deprecated/old-lib/resource/french/ExtraFreAbs.gf
new file mode 100644
index 000000000..33f518ab7
--- /dev/null
+++ b/deprecated/old-lib/resource/french/ExtraFreAbs.gf
@@ -0,0 +1,34 @@
+-- Structures special for French. These are not implemented in other
+-- Romance languages.
+
+abstract ExtraFreAbs = ExtraRomanceAbs ** {
+
+-- Notice: only direct (main-clause) questions are generated, and needed.
+
+ fun
+ EstcequeS : S -> Utt ; -- est-ce qu'il pleut
+ EstcequeIAdvS : IAdv -> S -> Utt ; -- où est-ce qu'il pleut
+
+-- These also generate indirect (subordinate) questions.
+
+ QueestcequeIP : IP ; -- qu'est-ce (que/qui)
+ QuiestcequeIP : IP ; -- qu'est-ce (que/qui)
+
+-- Feminine variants of pronouns (those in $Structural$ are
+-- masculine, which is the default when gender is unknown).
+
+ i8fem_Pron : Pron ;
+ these8fem_NP : NP ;
+ they8fem_Pron : Pron ;
+ this8fem_NP : NP ;
+ those8fem_NP : NP ;
+
+ we8fem_Pron : Pron ;
+ whoPl8fem_IP : IP ;
+ whoSg8fem_IP : IP ;
+
+ youSg8fem_Pron : Pron ;
+ youPl8fem_Pron : Pron ;
+ youPol8fem_Pron : Pron ;
+
+}
diff --git a/deprecated/old-lib/resource/french/ExtraRomanceFre.gf b/deprecated/old-lib/resource/french/ExtraRomanceFre.gf
new file mode 100644
index 000000000..ba7d7b160
--- /dev/null
+++ b/deprecated/old-lib/resource/french/ExtraRomanceFre.gf
@@ -0,0 +1,2 @@
+concrete ExtraRomanceFre of ExtraRomanceAbs = CatFre ** ExtraRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/GrammarFre.gf b/deprecated/old-lib/resource/french/GrammarFre.gf
new file mode 100644
index 000000000..698cea528
--- /dev/null
+++ b/deprecated/old-lib/resource/french/GrammarFre.gf
@@ -0,0 +1,21 @@
+--# -path=.:../romance:../abstract:../common:prelude
+
+concrete GrammarFre of Grammar =
+ NounFre,
+ VerbFre,
+ AdjectiveFre,
+ AdverbFre,
+ NumeralFre,
+ SentenceFre,
+ QuestionFre,
+ RelativeFre,
+ ConjunctionFre,
+ PhraseFre,
+ TextX - [Tense,TPres,TPast,TFut,TCond],
+ IdiomFre,
+ StructuralFre
+ ** {
+
+flags startcat = Phr ; unlexer = text ; lexer = text ;
+
+} ;
diff --git a/deprecated/old-lib/resource/french/IdiomFre.gf b/deprecated/old-lib/resource/french/IdiomFre.gf
new file mode 100644
index 000000000..bb38c8774
--- /dev/null
+++ b/deprecated/old-lib/resource/french/IdiomFre.gf
@@ -0,0 +1,45 @@
+concrete IdiomFre of Idiom = CatFre **
+ open (P = ParamX), PhonoFre, MorphoFre, ParadigmsFre, Prelude in {
+
+ flags optimize=all_subs ;
+
+ lin
+ ImpersCl vp = mkClause "il" True (agrP3 Masc Sg) vp ;
+ GenericCl vp = mkClause "on" True (agrP3 Masc Sg) vp ;
+
+ ExistNP np =
+ mkClause "il" True (agrP3 Masc Sg)
+ (insertClit2 "y" (insertComplement (\\_ => np.s ! Ton Acc) (predV avoir_V))) ;
+
+ ExistIP ip = {
+ s = \\t,a,p,_ =>
+ ip.s ! Nom ++
+ (mkClause "il" True (agrP3 Masc Sg)
+ (insertClit2 "y" (predV avoir_V))).s
+ ! DDir ! t ! a ! p ! Indic ---- DInv
+ } ;
+
+ CleftNP np rs = mkClause elisCe True (agrP3 Masc Sg)
+ (insertComplement (\\_ => rs.s ! Indic ! np.a)
+ (insertComplement (\\_ => np.s ! Ton rs.c) (predV copula))) ;
+
+ CleftAdv ad s = mkClause elisCe True (agrP3 Masc Sg)
+ (insertComplement (\\_ => conjThat ++ s.s ! Indic)
+ (insertComplement (\\_ => ad.s) (predV copula))) ;
+
+
+ ProgrVP vp =
+ insertComplement
+ (\\a => "en" ++ "train" ++ elisDe ++ infVP vp a)
+ (predV copula) ;
+
+ ImpPl1 vpr = let vp = useVP vpr in {s =
+ (mkImperative False P1 vp).s ! Pos ! {n = Pl ; g = Masc} --- fem
+ } ;
+
+ oper
+ elisCe = elision "c" ;
+
+}
+
+
diff --git a/deprecated/old-lib/resource/french/IrregFre.gf b/deprecated/old-lib/resource/french/IrregFre.gf
new file mode 100644
index 000000000..748cb4361
--- /dev/null
+++ b/deprecated/old-lib/resource/french/IrregFre.gf
@@ -0,0 +1,395 @@
+--# -path=.:../romance:../common:../abstract:../../prelude
+
+-- Irregular verbs from Nancy, based on a list from Sylvain Pogodalla, 25/11/2004
+-- Translated to GF by Aarne Ranta
+-- added extracted subcat information 29/11
+
+concrete IrregFre of IrregFreAbs = CatFre **
+ open DiffFre, MorphoFre, BeschFre, Prelude in {
+
+ flags optimize=values ;
+
+-- all verbs in classes with "er" and "finir" are omitted
+
+lin
+ abattre_V2 = v_besch55 "abattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ absoudre_V2 = v_besch72 "absoudre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ abstenir_V = v_besch23 "abstenir" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ abstraire_V2 = v_besch61 "abstraire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ accourir_V = v_besch33 "accourir" ** {vtyp = VHabere ; lock_V = <>} ;
+ accroître_V2 = v_besch73 "accroître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ accueillir_V2 = v_besch28 "accueillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ acquérir_V2 = v_besch24 "acquérir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ adjoindre_V2 = v_besch58 "adjoindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ admettre_V2 = v_besch56 "admettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ advenir_V = v_besch23 "advenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ aller_V = v_besch22 "aller" ** {vtyp = VEsse ; lock_V = <>} ;
+ apercevoir_V2 = v_besch38 "apercevoir" ** {vtyp = VRefl ; lock_V2 = <> ; c2 = complGen} ;
+ apparaître_V = v_besch64 "apparaître" ** {vtyp = VHabere ; lock_V = <>} ;
+ appartenir_V2 = v_besch23 "appartenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ appendre_V2 = v_besch53 "appendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ apprendre_V2 = v_besch54 "apprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ assaillir_V2 = v_besch29 "assaillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ asseoir_V2 = v_besch49 "asseoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ astreindre_V2 = v_besch57 "astreindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ atteindre_V2 = v_besch57 "atteindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ attendre_V2 = v_besch53 "attendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ avoir_V2 = v_besch1 "avoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ battre_V2 = v_besch55 "battre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ boire_V2 = v_besch69 "boire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ bouillir_V2 = v_besch31 "bouillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ braire_V = v_besch61 "braire" ** {vtyp = VHabere ; lock_V = <>} ;
+ ceindre_V2 = v_besch57 "ceindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ choir_V = v_besch52 "choir" ** {vtyp = VEsse ; lock_V = <>} ;
+ circonscrire_V2 = v_besch80 "circonscrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ circonvenir_V2 = v_besch23 "circonvenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ clore_V2 = v_besch70 "clore" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ combattre_V2 = v_besch55 "combattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ commettre_V2 = v_besch56 "commettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ comparaître_V2 = v_besch64 "comparaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ complaire_V2 = v_besch63 "complaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ comprendre_V2 = v_besch54 "comprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ compromettre_V2 = v_besch56 "compromettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ concevoir_V2 = v_besch38 "concevoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ conclure_V2 = v_besch71 "conclure" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ concourir_V2 = v_besch33 "concourir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ condescendre_V2 = v_besch53 "condescendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ conduire_V2 = v_besch82 "conduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ confire_V2 = v_besch81 "confire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ confondre_V2 = v_besch53 "confondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ conjoindre_V2 = v_besch58 "conjoindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ connaître_V2 = v_besch64 "connaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ conquérir_V2 = v_besch24 "conquérir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ consentir_V2 = v_besch25 "consentir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ construire_V2 = v_besch82 "construire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ contenir_V2 = v_besch23 "contenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ contraindre_V2 = v_besch59 "contraindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ contrebattre_V2 = v_besch55 "contrebattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ contredire_V2 = v_besch78 "contredire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ contrefaire_V2 = v_besch62 "contrefaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ contrevenir_V2 = v_besch23 "contrevenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ convaincre_V2 = v_besch60 "convaincre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ convenir_V2 = v_besch23 "convenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ correspondre_V2 = v_besch53 "correspondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ corrompre_V2 = v_besch53 "corrompre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ coudre_V2 = v_besch73 "coudre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ courir_V2 = v_besch33 "courir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ couvrir_V2 = v_besch27 "couvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ craindre_V2 = v_besch59 "craindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ croire_V2 = v_besch68 "croire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ croître_V = v_besch67 "croître" ** {vtyp = VEsse ; lock_V = <>} ;
+ cueillir_V2 = v_besch28 "cueillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ cuire_V2 = v_besch82 "cuire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ débattre_V2 = v_besch55 "débattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ débouillir_V2 = v_besch31 "débouillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ décevoir_V2 = v_besch38 "décevoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ déchoir_V2 = v_besch52 "déchoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ déclore_V2 = v_besch70 "déclore" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ décommettre_V2 = v_besch56 "décommettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ déconfire_V2 = v_besch81 "déconfire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ découdre_V2 = v_besch73 "découdre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ découvrir_V2 = v_besch27 "découvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ décrire_V2 = v_besch80 "décrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ décroître_V2 = v_besch67 "décroître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ décuire_V2 = v_besch82 "décuire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ déduire_V2 = v_besch82 "déduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ défaillir_V = v_besch30 "défaillir" ** {vtyp = VHabere ; lock_V = <>} ;
+ défaire_V2 = v_besch62 "défaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ défendre_V2 = v_besch53 "défendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ démentir_V2 = v_besch25 "démentir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ démettre_V2 = v_besch56 "démettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ démordre_V = v_besch53 "démordre" ** {vtyp = VHabere ; lock_V = <>} ;
+ départir_V2 = v_besch25 "départir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ dépeindre_V2 = v_besch57 "dépeindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ dépendre_V2 = v_besch53 "dépendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ déplaire_V = v_besch63 "déplaire" ** {vtyp = VHabere ; lock_V = <>} ;
+ dépourvoir_V2 = v_besch40 "dépourvoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ déprendre_V2 = v_besch54 "déprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ désapprendre_V2 = v_besch54 "désapprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ descendre_V2 = v_besch53 "descendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ desservir_V2 = v_besch35 "desservir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ déteindre_V2 = v_besch57 "déteindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ détendre_V2 = v_besch53 "détendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ détenir_V2 = v_besch23 "détenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ détordre_V2 = v_besch53 "détordre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ détruire_V2 = v_besch82 "détruire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ devenir_V = v_besch23 "devenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ dévêtir_V2 = v_besch26 "dévêtir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ devoir_V2 = v_besch42 "devoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ dire_V2 = v_besch78 "dire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ disconvenir_V2 = v_besch23 "disconvenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ discourir_V2 = v_besch33 "discourir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ disjoindre_V2 = v_besch58 "disjoindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ disparaître_V2 = v_besch64 "disparaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ dissoudre_V2 = v_besch72 "dissoudre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ distendre_V2 = v_besch53 "distendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ distordre_V2 = v_besch53 "distordre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ distraire_V2 = v_besch61 "distraire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ dormir_V2 = v_besch32 "dormir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ ébattre_V = v_besch55 "ébattre" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ échoir_V2 = v_besch52 "échoir" ** {vtyp = VEsse ; lock_V2 = <> ; c2 = complDat} ;
+ éclore_V2 = v_besch70 "éclore" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ éconduire_V2 = v_besch82 "éconduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ écrire_V2 = v_besch80 "écrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ élire_V2 = v_besch77 "élire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ embatre_V2 = v_besch55 "embatre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ embattre_V2 = v_besch55 "embattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ emboire_V = v_besch69 "emboire" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ émettre_V2 = v_besch56 "émettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ émoudre_V2 = v_besch74 "émoudre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ émouvoir_V2 = v_besch44 "émouvoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ empreindre_V2 = v_besch57 "empreindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ enceindre_V2 = v_besch57 "enceindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ enclore_V2 = v_besch70 "enclore" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ encourir_V2 = v_besch33 "encourir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ endormir_V2 = v_besch32 "endormir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ enduire_V2 = v_besch82 "enduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ enfreindre_V2 = v_besch57 "enfreindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ enfuir_V = v_besch36 "enfuir" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ enjoindre_V2 = v_besch58 "enjoindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ enquérir_V = v_besch24 "enquérir" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ entendre_V2 = v_besch53 "entendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ entr'apercevoir_V = v_besch38 "entr'apercevoir" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ entrebattre_V = v_besch55 "entrebattre" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ entre_détruire_V = v_besch82 "entre-détruire" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ entre_haïr_V = v_besch20 "entre-haïr" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ entremettre_V = v_besch56 "entremettre" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ entre_nuire_V = v_besch82 "entre-nuire" ** {vtyp = VHabere ; lock_V = <>} ;
+ entreprendre_V2 = v_besch54 "entreprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ entretenir_V2 = v_besch23 "entretenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ entrevoir_V2 = v_besch39 "entrevoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ entrouvrir_V2 = v_besch27 "entrouvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ envoyer_V2 = v_besch18 "envoyer" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ épandre_V2 = v_besch53 "épandre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ éperdre_V = v_besch53 "éperdre" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ éprendre_V = v_besch54 "éprendre" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ équivaloir_V2 = v_besch47 "équivaloir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ éteindre_V2 = v_besch57 "éteindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ étendre_V2 = v_besch53 "étendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ étreindre_V2 = v_besch57 "étreindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ être_V = v_besch2 "être" ** {vtyp = VHabere ; lock_V = <>} ;
+ exclure_V2 = v_besch71 "exclure" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ extraire_V2 = v_besch61 "extraire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ faillir_V2 = v_besch30 "faillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ faire_V2 = v_besch62 "faire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ falloir_V = v_besch46 "falloir" ** {vtyp = VHabere ; lock_V = <>} ;
+ feindre_V2 = v_besch57 "feindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ fendre_V2 = v_besch53 "fendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ fondre_V2 = v_besch53 "fondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ forfaire_V2 = v_besch62 "forfaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ foutre_V2 = v_besch53 "foutre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ frire_V2 = v_besch81 "frire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ fuir_V2 = v_besch36 "fuir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ geindre_V2 = v_besch57 "geindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ gésir_V2 = mkNV (conj3gésir "gésir") ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ haïr_V2 = v_besch20 "haïr" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ inclure_V2 = v_besch71 "inclure" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ induire_V2 = v_besch82 "induire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ inscrire_V2 = v_besch80 "inscrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ instruire_V2 = v_besch82 "instruire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ interdire_V2 = v_besch78 "interdire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ interrompre_V2 = v_besch53 "interrompre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ intervenir_V = v_besch23 "intervenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ introduire_V2 = v_besch82 "introduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ joindre_V2 = v_besch58 "joindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ lire_V2 = v_besch77 "lire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ luire_V = v_besch82 "luire" ** {vtyp = VHabere ; lock_V = <>} ;
+ mainmettre_V2 = v_besch56 "mainmettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ maintenir_V2 = v_besch23 "maintenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ méconnaître_V2 = v_besch64 "méconnaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ mécroire_V2 = v_besch68 "mécroire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ médire_V2 = v_besch78 "médire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ mentir_V2 = v_besch25 "mentir" ** {vtyp = VEsse ; lock_V2 = <> ; c2 = complDat} ;
+ méprendre_V2 = v_besch54 "méprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ messeoir_V2 = v_besch50 "messeoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ mettre_V2 = v_besch56 "mettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ mévendre_V2 = v_besch53 "mévendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ mordre_V2 = v_besch53 "mordre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ morfondre_V = v_besch53 "morfondre" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ moudre_V2 = v_besch74 "moudre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ mourir_V = v_besch34 "mourir" ** {vtyp = VEsse ; lock_V = <>} ;
+ mouvoir_V2 = v_besch44 "mouvoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ naître_V = v_besch65 "naître" ** {vtyp = VEsse ; lock_V = <>} ;
+ nuire_V2 = v_besch82 "nuire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ obtenir_V2 = v_besch23 "obtenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ obvenir_V = v_besch23 "obvenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ occlure_V2 = v_besch71 "occlure" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ offrir_V2 = v_besch27 "offrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ oindre_V2 = v_besch58 "oindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ omettre_V2 = v_besch56 "omettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ ouïr_V2 = v_besch37 "ouïr" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ ouvrir_V2 = v_besch27 "ouvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ paître_V2 = v_besch66 "paître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ paître_V = v_besch66 "paître" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ paraître_V = v_besch64 "paraître" ** {vtyp = VHabere ; lock_V = <>} ;
+ parcourir_V2 = v_besch33 "parcourir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ parfondre_V2 = v_besch53 "parfondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ partir_V = v_besch25 "partir" ** {vtyp = VEsse ; lock_V = <>} ;
+ parvenir_V = v_besch23 "parvenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ peindre_V2 = v_besch57 "peindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ pendre_V2 = v_besch53 "pendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ percevoir_V2 = v_besch38 "percevoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ perdre_V2 = v_besch53 "perdre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ permettre_V2 = v_besch56 "permettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ plaindre_V2 = v_besch59 "plaindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ plaire_V2 = v_besch63 "plaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ pleuvoir_V = v_besch45 "pleuvoir" ** {vtyp = VHabere ; lock_V = <>} ;
+ poindre_V2 = v_besch58 "poindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ pondre_V2 = v_besch53 "pondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ pourfendre_V2 = v_besch53 "pourfendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ poursuivre_V2 = v_besch75 "poursuivre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ pourvoir_V2 = v_besch40 "pourvoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ pouvoir_V = v_besch43 "pouvoir" ** {vtyp = VHabere ; lock_V = <>} ;
+ prédire_V2 = v_besch78 "prédire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ prendre_V2 = v_besch54 "prendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ prescrire_V2 = v_besch80 "prescrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ pressentir_V2 = v_besch25 "pressentir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ prétendre_V2 = v_besch53 "prétendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ prévaloir_V2 = v_besch47 "prévaloir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ prévenir_V2 = v_besch23 "prévenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ prévoir_V2 = v_besch39 "prévoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ produire_V2 = v_besch82 "produire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ promettre_V2 = v_besch56 "promettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ promouvoir_V2 = v_besch44 "promouvoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ proscrire_V2 = v_besch80 "proscrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ provenir_V = v_besch23 "provenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ rabattre_V2 = v_besch55 "rabattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ raire_V2 = v_besch61 "raire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rapprendre_V2 = v_besch54 "rapprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rasseoir_V2 = v_besch49 "rasseoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ réadmettre_V2 = v_besch56 "réadmettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ réapparaître_V = v_besch64 "réapparaître" ** {vtyp = VHabere ; lock_V = <>} ;
+ réapprendre_V2 = v_besch54 "réapprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rebattre_V2 = v_besch55 "rebattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ recevoir_V2 = v_besch38 "recevoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ recomparaître_V2 = v_besch64 "recomparaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reconduire_V2 = v_besch82 "reconduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reconnaître_V2 = v_besch64 "reconnaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reconquérir_V2 = v_besch24 "reconquérir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reconstruire_V2 = v_besch82 "reconstruire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ recoudre_V2 = v_besch73 "recoudre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ recourir_V2 = v_besch33 "recourir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ recouvrir_V2 = v_besch27 "recouvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ récrire_V2 = v_besch80 "récrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ recroître_V2 = v_besch67 "recroître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ recueillir_V2 = v_besch28 "recueillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ recuire_V2 = v_besch82 "recuire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ redécouvrir_V2 = v_besch27 "redécouvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ redéfaire_V2 = v_besch62 "redéfaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ redescendre_V2 = v_besch53 "redescendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ redevenir_V = v_besch23 "redevenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ redevoir_V2 = v_besch42 "redevoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ redire_V2 = v_besch78 "redire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ réduire_V2 = v_besch82 "réduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ réécrire_V2 = v_besch80 "réécrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ réélire_V2 = v_besch77 "réélire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ réentendre_V2 = v_besch53 "réentendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ refaire_V2 = v_besch62 "refaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ refendre_V2 = v_besch53 "refendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ refondre_V2 = v_besch53 "refondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ réinscrire_V2 = v_besch80 "réinscrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ réintroduire_V2 = v_besch82 "réintroduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rejoindre_V2 = v_besch58 "rejoindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ relire_V2 = v_besch77 "relire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reluire_V2 = v_besch82 "reluire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ remettre_V2 = v_besch56 "remettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ remordre_V2 = v_besch53 "remordre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ remoudre_V2 = v_besch74 "remoudre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ renaître_V2 = v_besch65 "renaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rendormir_V2 = v_besch32 "rendormir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rendre_V2 = v_besch53 "rendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rentraire_V2 = v_besch61 "rentraire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rentrouvrir_V2 = v_besch27 "rentrouvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ renvoyer_V2 = v_besch18 "renvoyer" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ repaître_V2 = v_besch66 "repaître" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ répandre_V2 = v_besch53 "répandre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reparaître_V = v_besch64 "reparaître" ** {vtyp = VEsse ; lock_V = <>} ;
+ repartir_V = v_besch25 "repartir" ** {vtyp = VEsse ; lock_V = <>} ;
+ repeindre_V2 = v_besch57 "repeindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rependre_V2 = v_besch53 "rependre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ repentir_V = v_besch25 "repentir" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ reperdre_V2 = v_besch53 "reperdre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ repleuvoir_V = v_besch45 "repleuvoir" ** {vtyp = VHabere ; lock_V = <>} ;
+ répondre_V2 = v_besch53 "répondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reprendre_V2 = v_besch54 "reprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reproduire_V2 = v_besch82 "reproduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ requérir_V2 = v_besch24 "requérir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ résoudre_V2 = mkNV (conj3résoudre "résoudre") ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ ressentir_V2 = v_besch25 "ressentir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ resservir_V2 = v_besch35 "resservir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ ressortir_V = v_besch25 "ressortir" ** {vtyp = VEsse ; lock_V = <>} ;
+ ressouvenir_V = v_besch23 "ressouvenir" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ restreindre_V2 = v_besch57 "restreindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ reteindre_V2 = v_besch57 "reteindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retendre_V2 = v_besch53 "retendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retenir_V2 = v_besch23 "retenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retondre_V2 = v_besch53 "retondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retordre_V2 = v_besch53 "retordre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retraduire_V2 = v_besch82 "retraduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retraire_V2 = v_besch61 "retraire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retranscrire_V2 = v_besch80 "retranscrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ retransmettre_V2 = v_besch56 "retransmettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rétreindre_V2 = v_besch57 "rétreindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ revaloir_V2 = v_besch47 "revaloir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ revendre_V2 = v_besch53 "revendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ revenir_V = v_besch23 "revenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ revêtir_V2 = v_besch26 "revêtir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ revivre_V2 = v_besch76 "revivre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ revoir_V2 = v_besch39 "revoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ revouloir_V2 = v_besch48 "revouloir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rire_V2 = v_besch79 "rire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complGen} ;
+ rompre_V2 = v_besch53 "rompre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ rouvrir_V2 = v_besch27 "rouvrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ saillir_V2 = v_besch29 "saillir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ satisfaire_V2 = v_besch62 "satisfaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ savoir_V2 = v_besch41 "savoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ secourir_V2 = v_besch33 "secourir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ séduire_V2 = v_besch82 "séduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ sentir_V2 = v_besch25 "sentir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ seoir_V = v_besch50 "seoir" ** {vtyp = VHabere ; lock_V = <>} ;
+ servir_V2 = v_besch35 "servir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ sortir_V = v_besch25 "sortir" ** {vtyp = VHabere ; lock_V = <>} ;
+ soubattre_V2 = v_besch55 "soubattre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ souffrir_V2 = v_besch27 "souffrir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ soumettre_V2 = v_besch56 "soumettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ sourire_V2 = v_besch79 "sourire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ souscrire_V2 = v_besch80 "souscrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ sous_entendre_V2 = v_besch53 "sous-entendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ sous_tendre_V2 = v_besch53 "sous-tendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ soustraire_V2 = v_besch61 "soustraire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ soutenir_V2 = v_besch23 "soutenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ souvenir_V = v_besch23 "souvenir" ** {vtyp = VHabere ; lock_V = <> ; c2 = complAcc} ;
+ subvenir_V2 = v_besch23 "subvenir" ** {vtyp = VEsse ; lock_V2 = <> ; c2 = complDat} ;
+ suffire_V2 = v_besch81 "suffire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ suivre_V2 = v_besch75 "suivre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ surfaire_V2 = v_besch62 "surfaire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ surprendre_V2 = v_besch54 "surprendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ surproduire_V2 = v_besch82 "surproduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ surseoir_V2 = v_besch51 "surseoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ surtondre_V2 = v_besch53 "surtondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ survenir_V = v_besch23 "survenir" ** {vtyp = VEsse ; lock_V = <>} ;
+ survivre_V2 = v_besch76 "survivre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ suspendre_V2 = v_besch53 "suspendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ taire_V2 = v_besch63 "taire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ teindre_V2 = v_besch57 "teindre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ tendre_V2 = v_besch53 "tendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ tenir_V2 = v_besch23 "tenir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complDat} ;
+ tondre_V2 = v_besch53 "tondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ tordre_V2 = v_besch53 "tordre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ traduire_V2 = v_besch82 "traduire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ traire_V2 = v_besch61 "traire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ transcrire_V2 = v_besch80 "transcrire" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ transmettre_V2 = v_besch56 "transmettre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ transparaître_V = v_besch64 "transparaître" ** {vtyp = VHabere ; lock_V = <>} ;
+ tréfondre_V2 = v_besch53 "tréfondre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ tressaillir_V = v_besch29 "tressaillir" ** {vtyp = VHabere ; lock_V = <>} ;
+ vaincre_V2 = v_besch60 "vaincre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ valoir_V2 = v_besch47 "valoir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ vendre_V2 = v_besch53 "vendre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ venir_V = v_besch23 "venir" ** {vtyp = VEsse ; lock_V = <>} ;
+ vêtir_V2 = v_besch26 "vêtir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ vivre_V2 = v_besch76 "vivre" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ voir_V2 = v_besch39 "voir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+ vouloir_V2 = v_besch48 "vouloir" ** {vtyp = VHabere ; lock_V2 = <> ; c2 = complAcc} ;
+
+}
diff --git a/deprecated/old-lib/resource/french/IrregFreAbs.gf b/deprecated/old-lib/resource/french/IrregFreAbs.gf
new file mode 100644
index 000000000..f82d7c0a0
--- /dev/null
+++ b/deprecated/old-lib/resource/french/IrregFreAbs.gf
@@ -0,0 +1,391 @@
+--# -path=.:../romance:../abstract:../../prelude
+
+-- Irregular verbs from Nancy, based on a list from Sylvain Pogodalla, 25/11/2004
+-- Translated to GF by Aarne Ranta
+-- added extracted subcat information 29/11
+
+abstract IrregFreAbs = Cat ** {
+
+-- all verbs in classes with "er" and "ir" like "finir" are omitted
+
+fun
+ abattre_V2 : V2 ;
+ absoudre_V2 : V2 ;
+ abstenir_V : V ;
+ abstraire_V2 : V2 ;
+ accourir_V : V ;
+ accroître_V2 : V2 ;
+ accueillir_V2 : V2 ;
+ acquérir_V2 : V2 ;
+ adjoindre_V2 : V2 ;
+ admettre_V2 : V2 ;
+ advenir_V : V ;
+ aller_V : V ;
+ apercevoir_V2 : V2 ;
+ apparaître_V : V ;
+ appartenir_V2 : V2 ;
+ appendre_V2 : V2 ;
+ apprendre_V2 : V2 ;
+ assaillir_V2 : V2 ;
+ asseoir_V2 : V2 ;
+ astreindre_V2 : V2 ;
+ atteindre_V2 : V2 ;
+ attendre_V2 : V2 ;
+ avoir_V2 : V2 ;
+ battre_V2 : V2 ;
+ boire_V2 : V2 ;
+ bouillir_V2 : V2 ;
+ braire_V : V ;
+ ceindre_V2 : V2 ;
+ choir_V : V ;
+ circonscrire_V2 : V2 ;
+ circonvenir_V2 : V2 ;
+ clore_V2 : V2 ;
+ combattre_V2 : V2 ;
+ commettre_V2 : V2 ;
+ comparaître_V2 : V2 ;
+ complaire_V2 : V2 ;
+ comprendre_V2 : V2 ;
+ compromettre_V2 : V2 ;
+ concevoir_V2 : V2 ;
+ conclure_V2 : V2 ;
+ concourir_V2 : V2 ;
+ condescendre_V2 : V2 ;
+ conduire_V2 : V2 ;
+ confire_V2 : V2 ;
+ confondre_V2 : V2 ;
+ conjoindre_V2 : V2 ;
+ connaître_V2 : V2 ;
+ conquérir_V2 : V2 ;
+ consentir_V2 : V2 ;
+ construire_V2 : V2 ;
+ contenir_V2 : V2 ;
+ contraindre_V2 : V2 ;
+ contrebattre_V2 : V2 ;
+ contredire_V2 : V2 ;
+ contrefaire_V2 : V2 ;
+ contrevenir_V2 : V2 ;
+ convaincre_V2 : V2 ;
+ convenir_V2 : V2 ;
+ correspondre_V2 : V2 ;
+ corrompre_V2 : V2 ;
+ coudre_V2 : V2 ;
+ courir_V2 : V2 ;
+ couvrir_V2 : V2 ;
+ craindre_V2 : V2 ;
+ croire_V2 : V2 ;
+ croître_V : V ;
+ cueillir_V2 : V2 ;
+ cuire_V2 : V2 ;
+ débattre_V2 : V2 ;
+ débouillir_V2 : V2 ;
+ décevoir_V2 : V2 ;
+ déchoir_V2 : V2 ;
+ déclore_V2 : V2 ;
+ décommettre_V2 : V2 ;
+ déconfire_V2 : V2 ;
+ découdre_V2 : V2 ;
+ découvrir_V2 : V2 ;
+ décrire_V2 : V2 ;
+ décroître_V2 : V2 ;
+ décuire_V2 : V2 ;
+ déduire_V2 : V2 ;
+ défaillir_V : V ;
+ défaire_V2 : V2 ;
+ défendre_V2 : V2 ;
+ démentir_V2 : V2 ;
+ démettre_V2 : V2 ;
+ démordre_V : V ;
+ départir_V2 : V2 ;
+ dépeindre_V2 : V2 ;
+ dépendre_V2 : V2 ;
+ déplaire_V : V ;
+ dépourvoir_V2 : V2 ;
+ déprendre_V2 : V2 ;
+ désapprendre_V2 : V2 ;
+ descendre_V2 : V2 ;
+ desservir_V2 : V2 ;
+ déteindre_V2 : V2 ;
+ détendre_V2 : V2 ;
+ détenir_V2 : V2 ;
+ détordre_V2 : V2 ;
+ détruire_V2 : V2 ;
+ devenir_V : V ;
+ dévêtir_V2 : V2 ;
+ devoir_V2 : V2 ;
+ dire_V2 : V2 ;
+ disconvenir_V2 : V2 ;
+ discourir_V2 : V2 ;
+ disjoindre_V2 : V2 ;
+ disparaître_V2 : V2 ;
+ dissoudre_V2 : V2 ;
+ distendre_V2 : V2 ;
+ distordre_V2 : V2 ;
+ distraire_V2 : V2 ;
+ dormir_V2 : V2 ;
+ ébattre_V : V ;
+ échoir_V2 : V2 ;
+ éclore_V2 : V2 ;
+ éconduire_V2 : V2 ;
+ écrire_V2 : V2 ;
+ élire_V2 : V2 ;
+ embatre_V2 : V2 ;
+ embattre_V2 : V2 ;
+ emboire_V : V ;
+ émettre_V2 : V2 ;
+ émoudre_V2 : V2 ;
+ émouvoir_V2 : V2 ;
+ empreindre_V2 : V2 ;
+ enceindre_V2 : V2 ;
+ enclore_V2 : V2 ;
+ encourir_V2 : V2 ;
+ endormir_V2 : V2 ;
+ enduire_V2 : V2 ;
+ enfreindre_V2 : V2 ;
+ enfuir_V : V ;
+ enjoindre_V2 : V2 ;
+ enquérir_V : V ;
+ entendre_V2 : V2 ;
+ entr'apercevoir_V : V ;
+ entrebattre_V : V ;
+ entre_détruire_V : V ;
+ entre_haïr_V : V ;
+ entremettre_V : V ;
+ entre_nuire_V : V ;
+ entreprendre_V2 : V2 ;
+ entretenir_V2 : V2 ;
+ entrevoir_V2 : V2 ;
+ entrouvrir_V2 : V2 ;
+ envoyer_V2 : V2 ;
+ épandre_V2 : V2 ;
+ éperdre_V : V ;
+ éprendre_V : V ;
+ équivaloir_V2 : V2 ;
+ éteindre_V2 : V2 ;
+ étendre_V2 : V2 ;
+ étreindre_V2 : V2 ;
+ être_V : V ;
+ exclure_V2 : V2 ;
+ extraire_V2 : V2 ;
+ faillir_V2 : V2 ;
+ faire_V2 : V2 ;
+ falloir_V : V ;
+ feindre_V2 : V2 ;
+ fendre_V2 : V2 ;
+ fondre_V2 : V2 ;
+ forfaire_V2 : V2 ;
+ foutre_V2 : V2 ;
+ frire_V2 : V2 ;
+ fuir_V2 : V2 ;
+ geindre_V2 : V2 ;
+ gésir_V2 : V2 ;
+ haïr_V2 : V2 ;
+ inclure_V2 : V2 ;
+ induire_V2 : V2 ;
+ inscrire_V2 : V2 ;
+ instruire_V2 : V2 ;
+ interdire_V2 : V2 ;
+ interrompre_V2 : V2 ;
+ intervenir_V : V ;
+ introduire_V2 : V2 ;
+ joindre_V2 : V2 ;
+ lire_V2 : V2 ;
+ luire_V : V ;
+ mainmettre_V2 : V2 ;
+ maintenir_V2 : V2 ;
+ méconnaître_V2 : V2 ;
+ mécroire_V2 : V2 ;
+ médire_V2 : V2 ;
+ mentir_V2 : V2 ;
+ méprendre_V2 : V2 ;
+ messeoir_V2 : V2 ;
+ mettre_V2 : V2 ;
+ mévendre_V2 : V2 ;
+ mordre_V2 : V2 ;
+ morfondre_V : V ;
+ moudre_V2 : V2 ;
+ mourir_V : V ;
+ mouvoir_V2 : V2 ;
+ naître_V : V ;
+ nuire_V2 : V2 ;
+ obtenir_V2 : V2 ;
+ obvenir_V : V ;
+ occlure_V2 : V2 ;
+ offrir_V2 : V2 ;
+ oindre_V2 : V2 ;
+ omettre_V2 : V2 ;
+ ouïr_V2 : V2 ;
+ ouvrir_V2 : V2 ;
+ paître_V2 : V2 ;
+ paître_V : V ;
+ paraître_V : V ;
+ parcourir_V2 : V2 ;
+ parfondre_V2 : V2 ;
+ partir_V : V ;
+ parvenir_V : V ;
+ peindre_V2 : V2 ;
+ pendre_V2 : V2 ;
+ percevoir_V2 : V2 ;
+ perdre_V2 : V2 ;
+ permettre_V2 : V2 ;
+ plaindre_V2 : V2 ;
+ plaire_V2 : V2 ;
+ pleuvoir_V : V ;
+ poindre_V2 : V2 ;
+ pondre_V2 : V2 ;
+ pourfendre_V2 : V2 ;
+ poursuivre_V2 : V2 ;
+ pourvoir_V2 : V2 ;
+ pouvoir_V : V ;
+ prédire_V2 : V2 ;
+ prendre_V2 : V2 ;
+ prescrire_V2 : V2 ;
+ pressentir_V2 : V2 ;
+ prétendre_V2 : V2 ;
+ prévaloir_V2 : V2 ;
+ prévenir_V2 : V2 ;
+ prévoir_V2 : V2 ;
+ produire_V2 : V2 ;
+ promettre_V2 : V2 ;
+ promouvoir_V2 : V2 ;
+ proscrire_V2 : V2 ;
+ provenir_V : V ;
+ rabattre_V2 : V2 ;
+ raire_V2 : V2 ;
+ rapprendre_V2 : V2 ;
+ rasseoir_V2 : V2 ;
+ réadmettre_V2 : V2 ;
+ réapparaître_V : V ;
+ réapprendre_V2 : V2 ;
+ rebattre_V2 : V2 ;
+ recevoir_V2 : V2 ;
+ recomparaître_V2 : V2 ;
+ reconduire_V2 : V2 ;
+ reconnaître_V2 : V2 ;
+ reconquérir_V2 : V2 ;
+ reconstruire_V2 : V2 ;
+ recoudre_V2 : V2 ;
+ recourir_V2 : V2 ;
+ recouvrir_V2 : V2 ;
+ récrire_V2 : V2 ;
+ recroître_V2 : V2 ;
+ recueillir_V2 : V2 ;
+ recuire_V2 : V2 ;
+ redécouvrir_V2 : V2 ;
+ redéfaire_V2 : V2 ;
+ redescendre_V2 : V2 ;
+ redevenir_V : V ;
+ redevoir_V2 : V2 ;
+ redire_V2 : V2 ;
+ réduire_V2 : V2 ;
+ réécrire_V2 : V2 ;
+ réélire_V2 : V2 ;
+ réentendre_V2 : V2 ;
+ refaire_V2 : V2 ;
+ refendre_V2 : V2 ;
+ refondre_V2 : V2 ;
+ réinscrire_V2 : V2 ;
+ réintroduire_V2 : V2 ;
+ rejoindre_V2 : V2 ;
+ relire_V2 : V2 ;
+ reluire_V2 : V2 ;
+ remettre_V2 : V2 ;
+ remordre_V2 : V2 ;
+ remoudre_V2 : V2 ;
+ renaître_V2 : V2 ;
+ rendormir_V2 : V2 ;
+ rendre_V2 : V2 ;
+ rentraire_V2 : V2 ;
+ rentrouvrir_V2 : V2 ;
+ renvoyer_V2 : V2 ;
+ repaître_V2 : V2 ;
+ répandre_V2 : V2 ;
+ reparaître_V : V ;
+ repartir_V : V ;
+ repeindre_V2 : V2 ;
+ rependre_V2 : V2 ;
+ repentir_V : V ;
+ reperdre_V2 : V2 ;
+ repleuvoir_V : V ;
+ répondre_V2 : V2 ;
+ reprendre_V2 : V2 ;
+ reproduire_V2 : V2 ;
+ requérir_V2 : V2 ;
+ résoudre_V2 : V2 ;
+ ressentir_V2 : V2 ;
+ resservir_V2 : V2 ;
+ ressortir_V : V ;
+ ressouvenir_V : V ;
+ restreindre_V2 : V2 ;
+ reteindre_V2 : V2 ;
+ retendre_V2 : V2 ;
+ retenir_V2 : V2 ;
+ retondre_V2 : V2 ;
+ retordre_V2 : V2 ;
+ retraduire_V2 : V2 ;
+ retraire_V2 : V2 ;
+ retranscrire_V2 : V2 ;
+ retransmettre_V2 : V2 ;
+ rétreindre_V2 : V2 ;
+ revaloir_V2 : V2 ;
+ revendre_V2 : V2 ;
+ revenir_V : V ;
+ revêtir_V2 : V2 ;
+ revivre_V2 : V2 ;
+ revoir_V2 : V2 ;
+ revouloir_V2 : V2 ;
+ rire_V2 : V2 ;
+ rompre_V2 : V2 ;
+ rouvrir_V2 : V2 ;
+ saillir_V2 : V2 ;
+ satisfaire_V2 : V2 ;
+ savoir_V2 : V2 ;
+ secourir_V2 : V2 ;
+ séduire_V2 : V2 ;
+ sentir_V2 : V2 ;
+ seoir_V : V ;
+ servir_V2 : V2 ;
+ sortir_V : V ;
+ soubattre_V2 : V2 ;
+ souffrir_V2 : V2 ;
+ soumettre_V2 : V2 ;
+ sourire_V2 : V2 ;
+ souscrire_V2 : V2 ;
+ sous_entendre_V2 : V2 ;
+ sous_tendre_V2 : V2 ;
+ soustraire_V2 : V2 ;
+ soutenir_V2 : V2 ;
+ souvenir_V : V ;
+ subvenir_V2 : V2 ;
+ suffire_V2 : V2 ;
+ suivre_V2 : V2 ;
+ surfaire_V2 : V2 ;
+ surprendre_V2 : V2 ;
+ surproduire_V2 : V2 ;
+ surseoir_V2 : V2 ;
+ surtondre_V2 : V2 ;
+ survenir_V : V ;
+ survivre_V2 : V2 ;
+ suspendre_V2 : V2 ;
+ taire_V2 : V2 ;
+ teindre_V2 : V2 ;
+ tendre_V2 : V2 ;
+ tenir_V2 : V2 ;
+ tondre_V2 : V2 ;
+ tordre_V2 : V2 ;
+ traduire_V2 : V2 ;
+ traire_V2 : V2 ;
+ transcrire_V2 : V2 ;
+ transmettre_V2 : V2 ;
+ transparaître_V : V ;
+ tréfondre_V2 : V2 ;
+ tressaillir_V : V ;
+ vaincre_V2 : V2 ;
+ valoir_V2 : V2 ;
+ vendre_V2 : V2 ;
+ venir_V : V ;
+ vêtir_V2 : V2 ;
+ vivre_V2 : V2 ;
+ voir_V2 : V2 ;
+ vouloir_V2 : V2 ;
+}
diff --git a/deprecated/old-lib/resource/french/LangFre.gf b/deprecated/old-lib/resource/french/LangFre.gf
new file mode 100644
index 000000000..eee63e930
--- /dev/null
+++ b/deprecated/old-lib/resource/french/LangFre.gf
@@ -0,0 +1,10 @@
+--# -path=.:../romance:../abstract:../common
+
+concrete LangFre of Lang =
+ GrammarFre,
+ LexiconFre
+ ** {
+
+flags startcat = Phr ; unlexer = text ; lexer = text ;
+
+} ;
diff --git a/deprecated/old-lib/resource/french/LexiconFre.gf b/deprecated/old-lib/resource/french/LexiconFre.gf
new file mode 100644
index 000000000..d7f7baf6f
--- /dev/null
+++ b/deprecated/old-lib/resource/french/LexiconFre.gf
@@ -0,0 +1,367 @@
+--# -path=.:../romance:../common:../abstract:../../prelude
+
+concrete LexiconFre of Lexicon = CatFre **
+ open (M = MorphoFre), ParadigmsFre, IrregFre in {
+
+flags
+ optimize=values ;
+
+lin
+ airplane_N = regGenN "avion" masculine ;
+ answer_V2S = mkV2S (v2V répondre_V2) dative ;
+ apartment_N = regGenN "apartement" masculine ;
+ apple_N = regGenN "pomme" feminine ;
+ art_N = regGenN "art" feminine ;
+ ask_V2Q = mkV2Q (regV "demander") dative ;
+ baby_N = regGenN "bébé" masculine ;
+ bad_A = prefA (mkADeg (regA "mauvais") (regA "pire")) ;
+ bank_N = regGenN "banque" feminine ;
+ beautiful_A = prefA (regA "joli") ; ---- beau
+ become_VA = mkVA devenir_V ;
+ beer_N = regGenN "bière" feminine ;
+ beg_V2V = mkV2V (regV "demander") accusative dative ;
+ big_A = prefA (regA "grand") ;
+ bike_N = regGenN "vélo" masculine ;
+ bird_N = regGenN "oiseau" masculine ;
+ black_A = regA "noir" ;
+ blue_A = regA "bleu" ;
+ boat_N = regGenN "bateau" masculine ;
+ book_N = regGenN "livre" masculine ;
+ boot_N = regGenN "botte" feminine ;
+ boss_N = regGenN "chef" masculine ;
+ boy_N = regGenN "garçon" masculine ;
+ bread_N = regGenN "pain" masculine ;
+ break_V2 = dirV2 (regV "casser") ;
+ broad_A = regA "large" ;
+ brother_N2 = deN2 (regGenN "frère" masculine) ;
+ brown_A = regA "brun" ;
+ butter_N = regGenN "beurre" masculine ;
+ buy_V2 = dirV2 (reg3V "acheter" "achète" "achètera") ;
+ camera_N = compN (regGenN "appareil" masculine) ["de photo"] ;
+ cap_N = regGenN "casquette" feminine ;
+ car_N = regGenN "voiture" feminine ;
+ carpet_N = regGenN "tapis" masculine ;
+ cat_N = regGenN "chat" masculine ;
+ ceiling_N = regGenN "plafond" masculine ;
+ chair_N = regGenN "chaise" feminine ;
+ cheese_N = regGenN "fromage" masculine ;
+ child_N = regGenN "enfant" masculine ;
+ church_N = regGenN "église" feminine ;
+ city_N = regGenN "ville" feminine ;
+ clean_A = regA "propre" ;
+ clever_A = regA "sage" ; ----
+ close_V2 = dirV2 (regV "fermer") ;
+ coat_N = regGenN "manteau" masculine ;
+ cold_A = regA "froid" ;
+ come_V = venir_V ;
+ computer_N = regGenN "ordinateur" masculine ;
+ country_N = regGenN "pays" masculine ;
+ cousin_N = regGenN "cousin" masculine ; ---- cousine
+ cow_N = regGenN "vache" feminine ;
+ die_V = mourir_V ;
+ dirty_A = regA "sale" ;
+ distance_N3 = mkN3 (regGenN "distance" feminine) genitive dative ;
+ doctor_N = regGenN "médecin" masculine ;
+ dog_N = regGenN "chien" masculine ;
+ door_N = regGenN "porte" feminine ;
+ drink_V2 = boire_V2 ;
+ easy_A2V = mkA2V (regA "facile") dative genitive ;
+ eat_V2 = dirV2 (regV "manger") ;
+ empty_A = regA "vide" ;
+ enemy_N = regGenN "ennemi" masculine ;
+ factory_N = regGenN "usine" feminine ;
+ father_N2 = deN2 (regGenN "père" masculine) ;
+ fear_VS = mkVS (v2V craindre_V2) ;
+ fear_V2 = dirV2 (v2V craindre_V2) ;
+ find_V2 = dirV2 (regV "trouver") ;
+ fish_N = regGenN "poisson" masculine ;
+ floor_N = regGenN "plancher" masculine ;
+ forget_V2 = dirV2 (regV "oublier") ;
+ fridge_N = regGenN "frigo" masculine ;
+ friend_N = regGenN "ami" masculine ;
+ fruit_N = regGenN "fruit" masculine ;
+ fun_AV = mkAV (regA "marrant") genitive ;
+ garden_N = regGenN "jardin" masculine ;
+ girl_N = regGenN "fille" feminine ;
+ glove_N = regGenN "gant" masculine ;
+ gold_N = regGenN "or" masculine ;
+ good_A = prefA (mkADeg (mkA "bon" "bonne" "bons" "bien")
+ (mkA "meilleur" "meilleure" "meilleurs" "mieux")) ;
+ go_V = aller_V ;
+ green_A = regA "vert" ;
+ harbour_N = regGenN "port" masculine ;
+ hate_V2 = haïr_V2 ;
+ hat_N = regGenN "chapeau" masculine ;
+ have_V2 = avoir_V2 ;
+ hear_V2 = entendre_V2 ;
+ hill_N = regGenN "colline" feminine ;
+ hope_VS = mkVS (reg3V "espérer" "espère" "espérera") ;
+ horse_N = regGenN "cheval" masculine ;
+ hot_A = regA "chaud" ;
+ house_N = regGenN "maison" feminine ;
+ important_A = regA "important" ;
+ industry_N = regGenN "industrie" feminine ;
+ iron_N = regGenN "fer" masculine ;
+ king_N = regGenN "roi" masculine ;
+ know_V2 = connaître_V2 ; ---- savoir_V2 : VS
+ lake_N = regGenN "lac" masculine ;
+ lamp_N = regGenN "lampe" feminine ;
+ learn_V2 = apprendre_V2 ;
+ leather_N = regGenN "cuir" masculine ;
+ leave_V2 = dirV2 (regV "quitter") ;
+ like_V2 = dirV2 (regV "aimer") ;
+ listen_V2 = dirV2 (regV "écouter") ;
+ live_V = v2V vivre_V2 ;
+ long_A = compADeg (mkA "long" "longue" "longs" "longuement") ;
+ lose_V2 = perdre_V2 ;
+ love_N = regGenN "amour" masculine ;
+ love_V2 = dirV2 (regV "aimer") ;
+ man_N = regGenN "homme" masculine ;
+ married_A2 = mkA2 (regA "marié") dative ;
+ meat_N = regGenN "viande" feminine ;
+ milk_N = regGenN "lait" masculine ;
+ moon_N = regGenN "lune" feminine ;
+ mother_N2 = deN2 (regGenN "mère" feminine) ;
+ mountain_N = regGenN "montagne" feminine ;
+ music_N = regGenN "musique" feminine ;
+ narrow_A = regA "étroit" ;
+ new_A = prefA (compADeg (mkA "nouveau" "nouvelle" "nouveaux" "nouvellement")) ;
+ newspaper_N = regGenN "journal" masculine ;
+ oil_N = regGenN "huile" feminine ;
+ old_A =
+ prefA (compADeg (mkA "vieux" "vieille" "vieux" "vieillement")) ; ---- vieil
+ open_V2 = ouvrir_V2 ;
+ paint_V2A = mkV2A (v2V peindre_V2) accusative (mkPrep "en") ;
+ paper_N = regGenN "papier" masculine ;
+ paris_PN = mkPN "Paris" masculine ;
+ peace_N = regGenN "paix" feminine ;
+ pen_N = regGenN "stylo" masculine ;
+ planet_N = regGenN "planète" feminine ;
+ plastic_N = regGenN "plastic" masculine ;
+ play_V2 = dirV2 (regV "jouer") ;
+ policeman_N = regGenN "policier" masculine ;
+ priest_N = regGenN "prêtre" masculine ;
+ probable_AS = mkAS (regA "probable") ;
+ queen_N = regGenN "reine" feminine ;
+ radio_N = regGenN "radio" feminine ;
+ rain_V0 = mkV0 (pleuvoir_V) ;
+ read_V2 = lire_V2 ;
+ red_A = regA "rouge" ;
+ religion_N = regGenN "religion" feminine ;
+ restaurant_N = regGenN "restaurant" masculine ;
+ river_N = regGenN "rivière" feminine ;
+ rock_N = regGenN "rocher" masculine ;
+ roof_N = regGenN "toit" masculine ;
+ rubber_N = regGenN "caoutchuc" masculine ;
+ run_V = v2V courir_V2 ;
+ say_VS = mkVS (v2V dire_V2) ;
+ school_N = regGenN "école" feminine ;
+ science_N = regGenN "science" feminine ;
+ sea_N = regGenN "mer" feminine ;
+ seek_V2 = dirV2 (regV "chercher") ;
+ see_V2 = voir_V2 ;
+ sell_V3 = dirV3 (v2V vendre_V2) dative ;
+ send_V3 = dirV3 (v2V envoyer_V2) dative ;
+ sheep_N = regGenN "mouton" masculine ;
+ ship_N = regGenN "bateau" masculine ;
+ shirt_N = regGenN "chemise" feminine ;
+ shoe_N = regGenN "chaussure" feminine ;
+ shop_N = regGenN "magasin" masculine ;
+ short_A = regA "court" ; ---- bref
+ silver_N = regGenN "argent" masculine ;
+ sister_N = regGenN "soeur" feminine ;
+ sleep_V = v2V dormir_V2 ;
+ small_A = prefA (regA "petit") ;
+ snake_N = regGenN "serpent" masculine ;
+ sock_N = regGenN "chaussette" feminine ;
+ speak_V2 = dirV2 (regV "parler") ;
+ star_N = regGenN "étoile" feminine ;
+ steel_N = regGenN "acier" masculine ;
+ stone_N = regGenN "pierre" feminine ;
+ stove_N = regGenN "four" masculine ;
+ student_N = regGenN "étudiant" masculine ;
+ stupid_A = regA "stupide" ;
+ sun_N = regGenN "soleil" masculine ;
+ switch8off_V2 = éteindre_V2 ;
+ switch8on_V2 = dirV2 (regV "allumer") ; ----
+ table_N = regGenN "table" feminine ;
+ talk_V3 = mkV3 (regV "parler") dative genitive ;
+ teacher_N = regGenN "professeur" masculine ;
+ teach_V2 = dirV2 (regV "enseigner") ;
+ television_N = regGenN "télévision" feminine ;
+ thick_A = compADeg (mkA "épais" "épaisse" "épais" "épaissement") ;
+ thin_A = regA "fin" ;
+ train_N = regGenN "train" masculine ;
+ travel_V = regV "voyager" ;
+ tree_N = regGenN "arbre" masculine ;
+ ---- trousers_N = regGenN "pantalon" masculine ;
+ ugly_A = regA "laide" ;
+ understand_V2 = comprendre_V2 ;
+ university_N = regGenN "université" feminine ;
+ village_N = regGenN "village" masculine ;
+ wait_V2 = attendre_V2 ; ---- dative?
+ walk_V = regV "marcher" ;
+ warm_A = regA "chaud" ;
+ war_N = regGenN "guerre" masculine ;
+ watch_V2 = dirV2 (regV "regarder") ;
+ water_N = regGenN "eau" feminine ;
+ white_A = compADeg (mkA "blanc" "blanche" "blancs" "blanchement") ;
+ window_N = regGenN "fenêtre" feminine ;
+ wine_N = regGenN "vin" masculine ;
+ win_V2 = dirV2 (regV "gagner") ; ---- vaincre
+ woman_N = regGenN "femme" feminine ;
+ wonder_VQ = mkVQ (reflV (regV "étonner")) ;
+ wood_N = regGenN "bois" masculine ;
+ write_V2 = écrire_V2 ;
+ yellow_A = regA "jaune" ;
+ young_A = prefA (regA "jeune") ;
+
+ do_V2 = faire_V2 ;
+ now_Adv = mkAdv "maintenant" ;
+ already_Adv = mkAdv "déjà" ;
+ song_N = regGenN "chanson" feminine ;
+ add_V3 = dirV3 (regV "ajouter") dative ;
+ number_N = regGenN "nombre" masculine ; ---- numéro
+ put_V2 = mettre_V2 ;
+ stop_V = reflV (regV "arrêter") ;
+ jump_V = regV "sauter" ;
+
+ left_Ord = M.mkOrd (regA "gauche") ;
+ right_Ord = M.mkOrd (regA "droite") ;
+ far_Adv = mkAdv "loin" ;
+ correct_A = regA "correct" ;
+ dry_A = (mkA "sec" "sèche" "secs" "sèches") ;
+ dull_A = regA "émoussé" ;
+ full_A = regA "plein" ;
+ heavy_A = regA "lourd" ;
+ near_A = regA "proche" ;
+ rotten_A = regA "pourri" ;
+ round_A = regA "rond" ;
+ sharp_A = regA "tranchant" ;
+ smooth_A = regA "lisse" ;
+ straight_A = regA "droite" ;
+ wet_A = regA "mouillé" ;
+ wide_A = regA "large" ;
+ animal_N = regN "animal" ;
+ ashes_N = regGenN "cendre" masculine ;
+ back_N = regN "dos" ;
+ bark_N = regN "écorce" ;
+ belly_N = regGenN "ventre" masculine ;
+ blood_N = regN "sang" ;
+ bone_N = regN "os" ;
+ breast_N = regN "sein" ; --- poitrine
+ cloud_N = regGenN "nuage" masculine ;
+ day_N = regN "jour" ;
+ dust_N = regN "poussière" ;
+ ear_N = regN "oreille" ;
+ earth_N = regN "terre" ;
+ egg_N = regN "oeuf" ;
+ eye_N = mkN "oeil" "yeux" masculine ;
+ fat_N = regN "graisse" ;
+ feather_N = regN "plume" ;
+ fingernail_N = regGenN "ongle" masculine ;
+ fire_N = regN "feu" ;
+ flower_N = regGenN "fleur" feminine ;
+ fog_N = regN "brouillard" ;
+ foot_N = regN "pied" ;
+ forest_N = regGenN "forêt" feminine ;
+ grass_N = regN "herbe" ;
+ guts_N = regN "entraille" ;
+ hair_N = regN "cheveu" ;
+ hand_N = regGenN "main" feminine ;
+ head_N = regN "tête" ;
+ heart_N = regN "coeur" ;
+ horn_N = regGenN "corne" masculine ;
+ husband_N = regN "mari" ;
+ ice_N = regN "glace" ;
+ knee_N = regN "genou" ;
+ leaf_N = regN "feuille" ;
+ leg_N = regN "jambe" ;
+ liver_N = regGenN "foie" masculine ;
+ louse_N = regN "pou" ;
+ mouth_N = regN "bouche" ;
+ name_N = regN "nom" ;
+ neck_N = mkN "cou" "cous" masculine ;
+ night_N = regGenN "nuit" feminine ;
+ nose_N = regN "nez" ;
+ person_N = regN "personne" ;
+ rain_N = regN "pluie" ;
+ road_N = regN "route" ;
+ root_N = regN "racine" ;
+ rope_N = regN "corde" ;
+ salt_N = regN "sel" ;
+ sand_N = regGenN "sable" masculine ;
+ seed_N = regN "graine" ;
+ skin_N = regN "peau" ;
+ sky_N = mkN "ciel" "cieux" masculine ;
+ smoke_N = regN "fumée" ;
+ snow_N = regN "neige" ;
+ stick_N = regN "bâton" ;
+ tail_N = regN "queue" ;
+ tongue_N = regN "langue" ;
+ tooth_N = regGenN "dent" feminine ;
+ wife_N = regN "femme" ;
+ wind_N = regN "vent" ;
+ wing_N = regN "aile" ;
+ worm_N = regN "ver" ;
+ year_N = regN "an" ; --- année
+ bite_V2 = mordre_V2 ;
+ blow_V = regV "souffler" ;
+ breathe_V = regV "respirer" ;
+ burn_V = regV "brûler" ;
+ count_V2 = dirV2 (regV "conter") ;
+ cut_V2 = dirV2 (regV "tailler") ;
+ dig_V = regV "creuser" ;
+ fall_V = regV "tomber" ;
+ fight_V2 = dirV2 (regV "lutter") ;
+ float_V = regV "flotter" ;
+ flow_V = regV "couler" ;
+ fly_V = regV "voler" ;
+ freeze_V = reg3V "geler" "gèle" "gèlera" ;
+ give_V3 = dirdirV3 (regV "donner") ;
+ hit_V2 = dirV2 (regV "frapper") ;
+ hunt_V2 = dirV2 (regV "chasser") ;
+ kill_V2 = dirV2 (regV "tuer") ;
+ laugh_V = rire_V2 ;
+ lie_V = reflV (v2V étendre_V2) ;
+ play_V = regV "jouer" ;
+ pull_V2 = dirV2 (regV "tirer") ;
+ push_V2 = dirV2 (regV "pousser") ;
+ rub_V2 = dirV2 (regV "frotter") ;
+ scratch_V2 = dirV2 (regV "gratter") ;
+ sew_V = coudre_V2 ;
+ sing_V = regV "chanter" ;
+ sit_V = reflV (v2V asseoir_V2) ;
+ smell_V = v2V ( sentir_V2) ;
+ spit_V = regV "cracher" ;
+ squeeze_V2 = dirV2 (regV "serrer") ;
+ stab_V2 = dirV2 (regV "poignarder") ;
+ stand_V = reflV (reg3V "lever" "lève" "lèvera") ;
+ suck_V2 = dirV2 (regV "sucer") ;
+ swell_V = regV "gonfler" ;
+ swim_V = regV "nager" ;
+ think_V = regV "penser" ;
+ throw_V2 = dirV2 (regV "jeter") ;
+ tie_V2 = dirV2 (regV "lier") ;
+ turn_V = regV "tourner" ;
+ vomit_V = regV "vomir" ;
+ wash_V2 = dirV2 (regV "laver") ;
+ wipe_V2 = dirV2 (regV "essuyer") ;
+
+ hold_V2 = tenir_V2 ;
+ split_V2 = fendre_V2 ;
+ sit_V = reflV (v2V asseoir_V2) ;
+
+ grammar_N = regN "grammaire" ;
+ language_N = regN "langue" ;
+ rule_N = regN "règle" ;
+
+ john_PN = regPN "Jean" ;
+ question_N = regN "question" ;
+ ready_A = regA "prêt" ;
+ reason_N = regGenN "raison" feminine ;
+ today_Adv = mkAdv "aujourd'hui" ;
+ uncertain_A = regA "incertain" ;
+
+
+} ;
diff --git a/deprecated/old-lib/resource/french/MorphoFre.gf b/deprecated/old-lib/resource/french/MorphoFre.gf
new file mode 100644
index 000000000..586755249
--- /dev/null
+++ b/deprecated/old-lib/resource/french/MorphoFre.gf
@@ -0,0 +1,1238 @@
+--# -path=.:../romance:../common:../../prelude
+
+--1 A Simple French Resource Morphology
+--
+-- Aarne Ranta 2002 -- 2005
+--
+-- This resource morphology contains definitions needed in the resource
+-- syntax. To build a lexicon, it is better to use $ParadigmsFre$, which
+-- gives a higher-level access to this module.
+
+resource MorphoFre = CommonRomance, ResFre **
+ open PhonoFre, Prelude, Predef in {
+
+flags optimize=noexpand ;
+
+--2 Front vowels
+--
+-- In verb conjugation, we will need the concept of frontal vowel.
+
+oper
+ voyelleFront : Strs = strs {"e" ; "i" ; "y" ; "é" ; "è"} ;
+ preVoyelleFront : (_,_ : Str) -> Str = \t,u -> pre {t ; u / voyelleFront} ;
+
+
+--2 Nouns
+--
+-- The following macro is useful for creating the forms of number-dependent
+-- tables, such as common nouns.
+
+ numForms : Str -> Str -> Number => Str = \bon,bons ->
+ table {Sg => bon ; Pl => bons} ;
+
+-- For example, the regular noun forms are defined as follows:
+
+ nomReg : Str -> Number => Str = \bu -> numForms bu (bu + "s") ;
+
+-- Common nouns are inflected in number and have an inherent gender.
+
+ CNom = {s : Number => Str ; g : Gender} ;
+
+ mkCNom : (Number => Str) -> Gender -> CNom = \mecmecs,gen ->
+ {s = mecmecs ; g = gen} ;
+
+ mkCNomIrreg : Str -> Str -> Gender -> CNom = \mec,mecs ->
+ mkCNom (numForms mec mecs) ;
+
+ mkCNomReg : Str -> Gender -> CNom = \mec ->
+ mkCNom (nomReg mec) ;
+
+ mkCNomNiveau : Str -> Gender -> CNom = \niveau ->
+ mkCNomIrreg niveau (niveau + "x") ;
+
+ mkCNomCheval : Str -> Gender -> CNom = \cheval ->
+ let {cheva = Predef.tk 1 cheval} in
+ mkCNomIrreg cheval (cheva + "ux") ;
+
+ mkCNomInvar : Str -> Gender -> CNom = \cas ->
+ mkCNomIrreg cas cas ;
+
+ mkNomReg : Str -> Gender -> CNom = \cas ->
+ let cass = case Predef.dp 2 cas of {
+ "al" => init cas + "ux" ;
+ "au" => cas + "x" ;
+ "eu" => cas + "x" ;
+ "ou" => cas + "x" ;
+ _ => case last cas of {
+ "s" => cas ;
+ "x" => cas ;
+ "z" => cas ;
+ _ => cas + "s"
+ }
+ }
+ in mkCNomIrreg cas cass ;
+
+
+--2 Adjectives
+--
+-- Adjectives are conveniently seen as gender-dependent nouns.
+-- Here are some patterns. First one that describes the worst case.
+
+ mkAdj : (_,_,_,_ : Str) -> Adj = \vieux,vieuxs,vieille,vieillement ->
+ {s = table {
+ AF Masc n => numForms vieux vieuxs ! n ;
+ AF Fem n => nomReg vieille ! n ;
+ AA => vieillement
+ }
+ } ;
+
+-- Then the regular and invariant patterns.
+
+ adjReg : Str -> Gender => Number => Str = \bu -> table {
+ Masc => (mkNomReg bu Masc).s ;
+ Fem => nomReg (case last bu of {
+ "e" => bu ;
+ _ => bu + "e"
+ })
+ } ;
+
+ adjInvar : Str -> Gender => Number => Str = \bien ->
+ \\_,_ => bien ;
+
+-- Adjectives themselves are records. Here the most common cases:
+
+ adjGrand : Str -> Adj = \grand ->
+ let grande = case last grand of {
+ "e" => grand ;
+ _ => grand + "e"
+ }
+ in
+ mkAdj grand (grand + "s") grande (grande + "ment") ;
+
+-- Masculine form used for adverbial; also covers "carré".
+
+ adjJoli : Str -> Adj = \joli ->
+ mkAdj joli (joli + "s") (joli + "e") (joli + "ment") ;
+
+ adjHeureux : Str -> Adj = \heureux ->
+ let {heureu = Predef.tk 1 heureux} in
+ mkAdj heureux heureux (heureu+"se") (heureu+"sement") ;
+
+ adjBanal : Str -> Adj = \banal ->
+ let {bana = Predef.tk 1 banal} in
+ mkAdj banal (bana + "ux") (banal+"e") (banal+"ement") ;
+
+ adjJeune : Str -> Adj = \jeune ->
+ mkAdj jeune (jeune+"s") jeune (jeune+"ment") ;
+
+ adjIndien : Str -> Adj = \indien ->
+ mkAdj indien (indien+"s") (indien+"ne") (indien+"nement") ;
+
+ adjFrancais : Str -> Adj = \francais ->
+ mkAdj francais francais (francais+"e") (francais+"ement") ;
+
+ adjCher : Str -> Adj = \cher ->
+ let {ch = Predef.tk 2 cher} in
+ mkAdj cher (cher + "s") (ch + "ère") (ch + "èrement") ;
+
+ mkAdjReg : Str -> Adj = \creux ->
+ case Predef.dp 3 creux of {
+ "eux" => adjHeureux creux ;
+ _ => case Predef.dp 2 creux of {
+ "al" => adjBanal creux ;
+ "en" => adjIndien creux ;
+ "on" => adjIndien creux ;
+ "er" => adjCher creux ;
+ _ => case Predef.dp 1 creux of {
+ "s" => adjFrancais creux ;
+ "x" => adjFrancais creux ;
+ "e" => adjJeune creux ;
+ "é" => adjJoli creux ;
+ "i" => adjJoli creux ;
+ _ => adjGrand creux
+ }
+ }
+ } ;
+
+
+--2 Personal pronouns
+--
+-- All the eight personal pronouns can be built by the following macro.
+-- The use of "en" as atonic genitive is debatable.
+
+ mkPronoun : (_,_,_,_,_,_,_ : Str) ->
+ Gender -> Number -> Person -> Pronoun =
+ \il,le,lui,Lui,son,sa,ses,g,n,p ->
+ {s = table {
+ Ton x => prepCase x ++ Lui ;
+ Aton Nom => il ;
+ Aton Acc => le ;
+ Aton (CPrep P_de) => "en" ; --- hmm
+ Aton (CPrep _) => lui ;
+ Poss Masc Sg => son ;
+ Poss Fem Sg => sa ;
+ Poss _ Pl => ses
+ } ;
+ a = {g = g ; n = n ; p = p} ;
+ hasClit = True
+ } ;
+
+ elisPoss : Str -> Str = \s ->
+ pre {s + "a" ; s + "on" / voyelle} ;
+
+
+--2 Determiners
+--
+-- Determiners, traditionally called indefinite pronouns, are inflected
+-- in gender and number. It is usually enough to give the two singular
+-- forms to form the plurals.
+
+ pronForms : Str -> Str -> Gender -> Number -> Str = \tel,telle,g,n -> case g of {
+ Masc => nomReg tel ! n ;
+ Fem => nomReg telle ! n
+ } ;
+
+-- The following macro generates the phrases "est-ce que", "est-ce qu'",
+-- and "est-ce qui" (the last one used e.g. in "qu'est-ce qui").
+
+ estCeQue : Case -> Str = \c ->
+ "est-ce" ++ case c of {
+ Nom => "qui" ;
+ Acc => elisQue ;
+ _ => nonExist --- dont?
+ } ;
+
+
+--2 Verbs
+
+--3 Parameters
+
+-- The full conjunction is a table on $VForm$, as in "Bescherelle".
+
+param
+ Temps = Presn | Imparf | Passe | Futur ;
+ TSubj = SPres | SImparf ;
+ TPart = PPres | PPasse Gender Number ;
+ VForm = Inf
+ | Indi Temps Number Person
+ | Condi Number Person
+ | Subjo TSubj Number Person
+ | Imper NumPersI
+ | Part TPart ;
+
+-- This is a conversion to the type in $CommonRomance$.
+
+oper
+ vvf : (VForm => Str) -> (VF => Str) = \aller -> table {
+ VInfin _ => aller ! Inf ;
+ VFin (VPres Indic) n p => aller ! Indi Presn n p ;
+ VFin (VPres Subjunct) n p => aller ! Subjo SPres n p ;
+ VFin (VImperf Indic) n p => aller ! Indi Imparf n p ; --# notpresent
+ VFin (VImperf Subjunct) n p => aller ! Subjo SImparf n p ; --# notpresent
+ VFin VPasse n p => aller ! Indi Passe n p ; --# notpresent
+ VFin VFut n p => aller ! Indi Futur n p ; --# notpresent
+ VFin VCondit n p => aller ! Condi n p ; --# notpresent
+ VImper np => aller ! Imper np ;
+ VPart g n => aller ! Part (PPasse g n) ;
+ VGer => aller ! Part PPres -- *en* allant
+ } ;
+
+-- We very often form the verb stem by dropping out the infinitive ending.
+
+ troncVerb : Tok -> Tok = Predef.tk 2 ;
+
+
+--3 Affixes
+--
+-- It is convenient to have sets of affixes as data objects.
+
+ Affixe : Type = Person => Str ;
+
+ lesAffixes : (_,_,_ : Str) -> Affixe = \x,y,z -> table {
+ P1 => x ;
+ P2 => y ;
+ P3 => z
+ } ;
+
+-- Much of variation can be described in terms of affix sets:
+
+ affixSgE : Affixe = lesAffixes "e" "es" "e" ;
+
+ affixSgS : Affixe = lesAffixes "s" "s" "t" ;
+
+ affixSgSsansT : Affixe = lesAffixes "s" "s" [] ;
+
+ affixSgX : Affixe = lesAffixes "x" "x" "t" ;
+
+ affixPlOns : Affixe = lesAffixes "ons" "ez" "ent" ;
+
+ affixSgAi : Affixe = lesAffixes "ai" "as" "a" ;
+
+ affixSgAis : Affixe = \\p => "ai" + affixSgS ! p ;
+
+ affixPlIons : Affixe = table {
+ P3 => "aient" ;
+ p => "i" + affixPlOns ! p
+ } ;
+
+-- Often affix sets come in pairs, for the singular and the plural.
+
+ affixImparf : Number => Affixe = table {
+ Sg => affixSgAis ;
+ Pl => affixPlIons
+ } ;
+
+ affixFutur : Number => Affixe = table {
+ Sg => affixSgAi ;
+ Pl => table {
+ P3 => "ont" ;
+ p => affixPlOns ! p
+ }
+ } ;
+
+ affixSPres : Number => Affixe = table {
+ Sg => affixSgE ;
+ Pl => table {
+ P3 => "ent" ;
+ p => affixPlIons ! p
+ }
+ } ;
+
+ affixPlMes : (_,_ : Str) -> Affixe =
+ \è, â -> lesAffixes (â + "mes") (â + "tes") (è + "rent") ;
+
+ affixPasseAi : Number => Affixe = table {
+ Sg => affixSgAi ;
+ Pl => affixPlMes "è" "â"
+ } ;
+
+ affixPasseS : (i,î : Str) -> Number => Affixe = \i,î -> table {
+ Sg => table {p => i + affixSgS ! p} ;
+ Pl => affixPlMes i î
+ } ;
+
+ affixSImparfSse : (i,î : Str) -> Number => Affixe = \i,î -> table {
+ Sg => table {
+ P3 => î + "t" ;
+ p => i + "ss" + affixSgE ! p
+ } ;
+ Pl => table {p => i + "ss" + affixSPres ! Pl ! p}
+ } ;
+
+ 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" "û" ;
+
+ affixPasseNonExist : AffixPasse =
+ let {aff : Number => Affixe =
+ table {_ => lesAffixes nonExist nonExist nonExist}} in
+ {ps = aff ; si = aff} ;
+
+ affixImper : NumPersI => Str = table {
+ SgP2 => "e" ;
+ PlP1 => "ons" ;
+ PlP2 => "ez"
+ } ;
+
+ formesPresAi : (v,all : Str) -> Number => Affixe = \v,all -> table {
+ Sg => \\p => v + affixSgAi ! p ;
+ Pl => table {
+ P3 => v + "ont" ;
+ p => all + affixPlOns ! p
+ }
+ } ;
+
+--3 Macros for the complete conjugation type
+--
+-- The type $VForm$ has 55 forms, as defined in $types.Fra.gf$.
+-- The worst-case macro takes 11 stems and two affix sets.
+-- (We will actually never need all of these at the same time.)
+
+ Verbe : Type = VForm => Str ;
+
+ verbAffixes :
+ (a,b,c,d,e,f,g,h,i,j,k : Str) -> Affixe -> AffixPasse -> Verbe =
+ \tien, ten, tienn, t, tiendr, soi, soy, soie, tenu, tenus, tenir ->
+ \affpres, affpasse ->
+ table {
+ Inf => tenir ;
+ Indi Presn Sg p => tien + affpres ! p ;
+ Indi Presn Pl P3 => tienn + affixPlOns ! P3 ;
+ Indi Presn Pl p => ten + affixPlOns ! p ;
+ Indi Imparf n p => ten + affixImparf ! n ! p ;
+ Indi Passe n p => t + affpasse.ps ! n ! p ;
+ Indi Futur n p => tiendr + affixFutur ! n ! p ;
+ Condi n p => tiendr + affixImparf ! n ! p ;
+ Subjo SPres Sg p => soi + affixSPres ! Sg ! p ;
+ Subjo SPres Pl P3 => soi + "ent" ;
+ Subjo SPres Pl p => soy + affixSPres ! Pl ! p ;
+ Subjo SImparf n p => t + affpasse.si ! n ! p ;
+ Imper SgP2 => soie ;
+ Imper p => soy + affixImper ! p ;
+ Part PPres => ten + "ant" ;
+ Part (PPasse Masc Sg) => tenu ;
+ Part (PPasse Fem Sg) => tenu + "e" ;
+ Part (PPasse Masc Pl) => tenus ;
+ Part (PPasse Fem Pl) => tenu + "es"
+ } ;
+
+-- Almost always seven stems are more than enough.
+
+ verbHabituel :
+ (a,b,c,d,e,f,g : Str) -> Affixe -> AffixPasse -> Verbe =
+ \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 ;
+
+--3 The first conjugation
+--
+-- There is quite some phonologically explained variation in the first conjugation.
+-- The worst case has three different stems.
+
+ auxConj1 : Str -> Str -> Str -> Verbe = \jet, jett, jeter ->
+ verbHabituel jett jet jett jet jeter (jet+"é") (jet+"er") affixSgE affixPasseA ;
+
+ conj1aimer : Str -> Verbe = \aimer ->
+ let {aim = troncVerb aimer} in
+ auxConj1 aim aim aimer ;
+
+ conj1céder : Str -> Verbe = \céder ->
+ let {
+ ced = troncVerb céder ;
+ d = Predef.dp 1 ced ;
+ c = Predef.tk 2 ced ;
+ cèd = c + "è" + d ;
+ céd = c + "é" + d
+ }
+ in auxConj1 céd cèd céder ;
+
+ conj1peser : Str -> Verbe = \céder -> ---- ? a verifier
+ let {
+ ced = troncVerb céder ;
+ d = Predef.dp 1 ced ;
+ c = Predef.tk 2 ced ;
+ cèd = c + "è" + d ;
+ céd = c + "e" + d
+ }
+ in auxConj1 céd cèd céder ;
+
+ conj1jeter : Str -> Verbe = \jeter ->
+ let {
+ jet = troncVerb jeter ;
+ jett = jet + Predef.dp 1 jet
+ }
+ in auxConj1 jet jett (jett + "er") ;
+
+ conj1placer : Str -> Verbe = \placer ->
+ let {
+ pla = Predef.tk 3 placer ;
+ plac = preVoyelleFront (pla+"ç") (pla+"c")
+ } in
+ auxConj1 plac plac placer ;
+
+ conj1manger : Str -> Verbe = \manger ->
+ let {
+ mang = Predef.tk 2 manger ;
+ mange = preVoyelleFront (mang+"e") mang
+ } in
+ auxConj1 mange mange manger ;
+
+ conj1assiéger : Str -> Verbe = \assiéger ->
+ let {assi = Predef.tk 4 assiéger} in
+ auxConj1 (preVoyelleFront (assi+"ége") (assi+"ég")) (assi+"èg") assiéger ;
+
+ conj1payer : Str -> Verbe = \payer ->
+ let {pa = Predef.tk 3 payer} in
+ auxConj1 (pa + "y") (pa + "i") (pa + "ier") ;
+
+ conj1envoyer : Str -> Verbe = \envoyer ->
+ let {renv = Predef.tk 4 envoyer} in
+ auxConj1 (renv + "oy") (renv + "oi") (renv + "err") ;
+
+-- This is a collective dispatcher.
+
+ mkVerbReg : Str -> Verbe = \parler ->
+ case parler of {
+ _ + "ir" => conj2finir parler ;
+ _ + "re" => conj3rendre parler ;
+ _ + "éger" => conj1assiéger parler ;
+ _ + ("eler" | "eter") => conj1jeter parler ;
+ _ + "éder" => conj1céder parler ;
+ _ + "cer" => conj1placer parler ;
+ _ + "ger" => conj1manger parler ;
+ _ + "yer" => conj1payer parler ;
+ _ => 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.
+
+ mkVerb3Reg : Str -> Str -> Str -> Verbe = \jeter,jette,jettera ->
+ auxConj1
+ (Predef.tk 2 jeter)
+ (Predef.tk 1 jette)
+ (Predef.tk 1 jettera) ;
+
+--3 The second conjugation
+--
+-- There are just two different cases.
+
+ conj2finir : Str -> Verbe = \finir ->
+ let {
+ fin = troncVerb finir ;
+ fini = fin + "i" ;
+ finiss = fin + "iss"
+ } in
+ verbHabituel fini finiss finiss fin finir fini finir affixSgS affixPasseI ;
+
+ conj2haïr : Str -> Verbe = \haïr ->
+ let {ha = troncVerb haïr ;
+ hai = ha + "i" ;
+ haï = ha + "ï" ;
+ haiss = ha + "ïss"
+ } in
+ verbHabituel hai haiss haiss ha haïr haï haïr affixSgS (affixPasse "ï" "ï") ;
+
+
+--3 The third conjugation
+--
+-- This group is very heterogeneous. Most verbs have "re" in the infinitive,
+-- but the first example does not!
+
+ conj3tenir : Str -> Verbe = \tenir ->
+ let {t = Predef.tk 4 tenir} in
+ verbHabituel
+ (t+"ien") (t+"en") (t+"ienn") t (t+"iendr") (t+"enu") tenir
+ affixSgS (affixPasse "in" "în") ;
+
+-- Many verbs have "is" in the past participle. But there is so much variation
+-- that the worst-case macro needs seven forms.
+
+ auxConj3is : (_,_,_,_,_,_,_ : Str) -> Verbe =
+ \quier, quér, quièr, qu, querr, quis, quiss ->
+ verbAffixes
+ quier quér quièr qu querr quièr quér
+ (quier + "s") quis quiss (quér + "ir") affixSgS affixPasseI ;
+
+ auxConj3ir : (_,_,_ : Str) -> Verbe = \sen, sent, i ->
+ auxConj3is sen sent sent sent (sent+"ir") (sent+i) (sent+i+"s") ;
+
+ conj3quérir : Str -> Verbe = \quérir ->
+ let {qu = Predef.tk 4 quérir} in
+ auxConj3is (qu+"ier") (qu+"ér") (qu+"ièr") qu (qu+"err") (qu+"is") (qu+"is") ;
+
+ conj3sentir : Str -> Verbe = \sentir ->
+ let {
+ sent = troncVerb sentir ;
+ sen = Predef.tk 1 sent
+ } in
+ auxConj3ir sen sent "i" ;
+
+ conj3vêtir : Str -> Verbe = \vêtir ->
+ let {
+ s = Predef.tk 5 vêtir ;
+ vet = auxConj3ir "vêt" "vêt" "u"
+ } in
+ table {
+ Indi Presn Sg P3 => s + "vêt" ;
+ p => s + vet ! p
+ };
+
+ auxConj3vrir : (_,_,_ : Str) -> Verbe = \ouvr, i, ouvert ->
+ verbAffixes
+ ouvr ouvr ouvr ouvr (ouvr + i + "r") ouvr ouvr
+ (ouvr + "e") ouvert (ouvert + "s") (ouvr + "ir") affixSgE affixPasseI ;
+
+ conj3couvrir : Str -> Verbe = \couvrir ->
+ let {couv = Predef.tk 3 couvrir} in
+ auxConj3vrir (couv+"r") "i" (couv+"ert") ;
+
+ conj3cueillir : Str -> Verbe = \cueillir ->
+ let {cueill = troncVerb cueillir} in
+ auxConj3vrir cueill "e" (cueill + "i") ;
+
+ conj3assaillir : Str -> Verbe = \assaillir ->
+ let {assaill = troncVerb assaillir} in
+ auxConj3vrir assaill "i" (assaill + "i") ;
+
+-- The verb "faillir" has lots of alternatives forms.
+
+ conj3faillir : Str -> Verbe = \faillir ->
+ let {
+ fa = Predef.tk 5 faillir ;
+ faudr = fa + "udr" ;
+ tfa = conj3assaillir faillir
+ } 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} ;
+
+ Imper _ => nonExist ;
+ p => tfa ! p
+ };
+
+ conj3bouillir : Str -> Verbe = \bouillir ->
+ let {
+ bou = Predef.tk 5 bouillir ;
+ tbou = conj3assaillir bouillir
+ } in
+ table {
+ Indi Presn Sg p => bou + affixSgS ! p ;
+ Imper SgP2 => bou + "s" ;
+ p => tbou ! p
+ };
+
+-- Notice that here we don't need another conjugation, as Bescherelle does.
+
+ conj3dormir : Str -> Verbe = conj3sentir ;
+
+-- The verbs "mourir" and "courir" have much in common, except the first two
+-- persons in the present indicative singular, and the past participles.
+
+ auxConj3ourir : (_,_,_ : Str) -> Verbe = \meur, mour, mort ->
+ verbAffixes
+ meur mour meur mour (mour + "r") meur mour
+ (meur + "s") mort (mort + "s") (mour + "ir") affixSgS affixPasseU ;
+
+ conj3courir : Str -> Verbe = \courir ->
+ let {cour = troncVerb courir} in
+ auxConj3ourir cour cour (cour + "u") ;
+
+ conj3mourir : Str -> Verbe = \mourir ->
+ let {m = Predef.tk 5 mourir} in
+ auxConj3ourir (m + "eur") (m + "our") (m + "ort") ;
+
+-- A little auxiliary to cover "fuir" and "ouïr".
+-- *N.B.* some alternative forms for "ouïr" are still missing.
+
+ auxConj3ui : AffixPasse -> (_,_,_ : Str) -> Verbe = \affpasse, o, ou, ouï ->
+ let {oi : Str = o + "i" ; oy : Str = o + "y" ; ouïr : Str = ouï + "r"} in
+ verbHabituel oi oy oi ou ouïr ouï ouïr affixSgS affpasse ;
+
+ conj3fuir : Str -> Verbe = \fuir ->
+ let {fu = troncVerb fuir} in
+ auxConj3ui affixPasseI fu fu (fu + "i") ;
+
+ conj3ouïr : Str -> Verbe = \ouir ->
+ let {o = Predef.tk 3 ouir} in
+ auxConj3ui (affixPasse "ï" "ï") o (o + "u") (o + "uï") ;
+
+-- The verb "gésir" lacks many forms.
+
+ conj3gésir : Str -> Verbe = \gésir ->
+ let {g = Predef.tk 4 gésir} in
+ table {
+ Inf => g + "ésir" ;
+ Indi Presn Sg p => g + lesAffixes "is" "is" "ît" ! p ;
+ Indi Presn Pl p => g + "is" + affixPlOns ! p ;
+ Indi Imparf n p => g + "is" + affixImparf ! n ! p ;
+ Part PPres => g + "isant" ;
+ _ => nonExist
+ } ;
+
+-- Here is an auxiliary for a large, and heterogeneous, group of verbs whose
+-- infinitive ends in "oir". It has two special cases, depending on the ending
+-- of the first two persions in the present indicative singular.
+
+ auxConj3oir : Affixe -> AffixPasse -> (_,_,_,_,_,_,_,_ : Str) -> Verbe =
+ \affpres, affpasse ->
+ \peu, pouv, peuv, p, pourr, veuill, voul, v ->
+ let {pu : Str = p + "u"} in
+ verbAffixes
+ peu pouv peuv p pourr veuill voul (peu+affpres!P1) pu (pu+"s") (v+"oir")
+ affpres affpasse ;
+
+ auxConj3usX : (_,_,_,_,_,_,_,_ : Str) -> Verbe =
+ auxConj3oir affixSgX affixPasseU ;
+ auxConj3usS : (_,_,_,_,_,_,_,_ : Str) -> Verbe =
+ auxConj3oir affixSgS affixPasseU ;
+
+ conj3cevoir : Str -> Verbe = \cevoir ->
+ let {re = Predef.tk 6 cevoir} in
+ auxConj3usS (re+"çoi") (re+"cev") (re+"çoiv") (re+"ç")
+ (re+"cevr") (re+"çoiv") (re+"cev") (re+"cev") ;
+
+ conj3voir : Str -> Verbe = \voir ->
+ let {
+ v = Predef.tk 3 voir ;
+ voi = v + "oi"
+ } in
+ auxConj3oir
+ affixSgS affixPasseI voi (v + "oy") voi v (v + "err") voi (v + "oy") v ;
+
+ conj3pourvoir : Str -> Verbe = \pourvoir ->
+ let {
+ pourv = Predef.tk 3 pourvoir ;
+ pourvoi = pourv + "oi" ;
+ pourvoy = pourv + "oy"
+ } in
+ auxConj3usS pourvoi pourvoy pourvoi pourv pourvoir pourvoi pourvoy pourv ;
+
+ conj3savoir : Str -> Verbe = \savoir ->
+ let {
+ s = Predef.tk 5 savoir ;
+ tsavoir = auxConj3usS "ai" "av" "av" "" "aur" "ach" "ach" "av"
+ } in
+ table {
+ Imper p => s + "ach" + affixImper ! p ;
+ Part PPres => s + "achant" ;
+ p => s + tsavoir ! p
+ } ;
+
+ conj3devoir : Str -> Verbe = \devoir ->
+ let {
+ s = Predef.tk 6 devoir ;
+ tdevoir = auxConj3usS "doi" "dev" "doiv" "d" "devr" "doiv" "dev" "dev"
+ } in
+ table {
+ Part (PPasse Masc Sg) => s + "dû" ;
+ p => s + tdevoir ! p
+ } ;
+
+ conj3pouvoir : Str -> Verbe = \pouvoir ->
+ let {
+ p = Predef.tk 6 pouvoir ;
+ tpouvoir = auxConj3usX "eu" "ouv" "euv" "" "ourr" "uiss" "uiss" "ouv"
+ } in
+ table {
+ Indi Presn Sg P1 => p + variants {"eux" ; "uis"} ;
+ t => p + tpouvoir ! t
+ } ;
+
+ conj3mouvoir : Str -> Verbe = \mouvoir ->
+ let {
+ s = Predef.tk 7 mouvoir ;
+ mu = adjReg "mû" ;
+ tmouvoir = auxConj3usS "meu" "mouv" "meuv" "m" "mouvr" "meuv" "mouv" "mouv"
+ } in
+ table {
+ Part (PPasse g n) => s + mu ! g ! n ;
+ p => s + tmouvoir ! p
+ } ;
+
+ auxConj3seul3sg : (_,_,_,_,_ : Str) -> Verbe =
+ \faut, fall, pl, faudr, faill -> table {
+ Inf => fall + "oir" ;
+ Indi Presn Sg P3 => faut ;
+ Indi Imparf Sg P3 => fall + "ait" ;
+ Indi Passe Sg P3 => pl + "ut" ;
+ Indi Futur Sg P3 => faudr + "a" ;
+ Condi Sg P3 => faudr + "ait" ;
+ Subjo SPres Sg P3 => faill + "e" ;
+ Subjo SImparf Sg P3 => pl + "ût" ;
+ Part PPres => fall + "ant" ;
+ Part (PPasse g n) => adjReg (pl + "u") ! g ! n ;
+ _ => nonExist
+ } ;
+
+ conj3pleuvoir : Str -> Verbe = \pleuvoir ->
+ let {
+ pleuv = Predef.tk 3 pleuvoir ;
+ pl = Predef.tk 3 pleuv
+ } in
+ auxConj3seul3sg (pl + "eut") pleuv pl (pleuv + "r") pleuv ;
+
+ conj3falloir : Str -> Verbe = \falloir ->
+ let {
+ fa = Predef.tk 5 falloir ;
+ fau = fa + "u" ;
+ fall = Predef.tk 3 falloir
+ } in
+ auxConj3seul3sg (fau + "t") fall fall (fau + "dr") (fa + "ill") ;
+
+ conj3valoir : Str -> Verbe = \valoir ->
+ let {
+ va = Predef.tk 4 valoir ;
+ val = va + "l"
+ } in
+ auxConj3usX (va + "u") val val val (va + "udr") (va + "ill") val val ;
+
+ conj3vouloir : Str -> Verbe = \vouloir ->
+ let {
+ v = Predef.tk 6 vouloir ;
+ vo = v + "o" ;
+ voul = vo + "ul" ;
+ veul = v + "eul"
+ } in
+ auxConj3usX (v + "eu") voul veul voul (vo + "udr") (v + "euill") voul voul ;
+
+-- The following two are both "asseoir" in the Bescherelle, which however
+-- points out that the latter conjugation has an infinitive form without "e"
+-- since the orthographic rectifications of 1990.
+
+ conj3asseoir : Str -> Verbe = \asseoir ->
+ let {
+ ass = Predef.tk 4 asseoir ;
+ tasseoir = auxConj3is "ied" "ey" "ey" "" "iér" "is" "is"
+ } in
+ table {
+ Inf => ass + "eoir" ;
+ Indi Presn Sg P3 => ass + "ied" ;
+ t => ass + tasseoir ! t
+ } ;
+
+ conj3assoir : Str -> Verbe = \assoir ->
+ let {
+ ass = Predef.tk 3 assoir ;
+ tassoir = auxConj3is "oi" "oy" "oi" "" "oir" "is" "is"
+ } in
+ table {
+ Inf => ass + variants {"oir" ; "eoir"} ;
+ t => ass + tassoir ! t
+ } ;
+
+ conj3seoir : Str -> Verbe = \seoir ->
+ let {
+ s = Predef.tk 4 seoir ;
+ tseoir = conj3asseoir seoir
+ } in
+ table {
+ Indi Presn Pl P3 => s + "iéent" ;
+ Indi _ _ P1 => nonExist ;
+ Indi _ _ P2 => nonExist ;
+ Indi Passe _ _ => nonExist ;
+ Condi _ P1 => nonExist ;
+ Condi _ P2 => nonExist ;
+ Subjo SPres Sg P3 => s + "iée" ;
+ Subjo SPres Pl P3 => s + "iéent" ;
+ Subjo _ _ _ => nonExist ;
+ Imper _ => nonExist ;
+ Part PPres => s + "éant" ;
+ t => tseoir ! t
+ } ;
+
+-- Here we don't need a new conjugation.
+
+ conj3messeoir : Str -> Verbe = \messeoir ->
+ let {tmesseoir = conj3seoir messeoir} in
+ table {
+ Part (PPasse _ _) => nonExist ;
+ p => tmesseoir ! p
+ } ;
+
+ conj3surseoir : Str -> Verbe = \surseoir ->
+ let {
+ surs = Predef.tk 4 surseoir ;
+ tsurseoir = auxConj3is "oi" "oy" "oi" "" "eoir" "is" "is"
+ } in
+ table {
+ Inf => surseoir ;
+ t => surs + tsurseoir ! t
+ } ;
+
+-- Here we interpolate and include the imperfect and subjunctive forms,
+-- which Bescherelle leaves out.
+
+ conj3choir : Str -> Verbe = \choir ->
+ let {
+ e = Predef.tk 5 choir ;
+ tchoir =
+ auxConj3usS "choi" "choy" "choi" "ch"
+ (variants {"choir" ; "cherr"}) "choi" "choy" "ch"
+ } in
+ \\p => e + tchoir ! p ;
+
+ conj3échoir : Str -> Verbe = \échoir ->
+ let {techoir = conj3choir échoir} in
+ table {
+ Indi _ _ P1 => nonExist ;
+ Indi _ _ P2 => nonExist ;
+ Indi Presn Pl P3 => Predef.tk 3 échoir + variants {"oient" ; "éent"} ;
+ Subjo _ _ P1 => nonExist ;
+ Subjo _ _ P2 => nonExist ;
+ Condi _ P1 => nonExist ;
+ Condi _ P2 => nonExist ;
+ Imper _ => nonExist ;
+ Part PPres => Predef.tk 3 échoir + "éant" ;
+ t => techoir ! t
+ } ;
+
+-- Verbs with the infinitive ending "re" are a major group within the third
+-- conjugation. The worst-case macro takes 2 sets of affixes and 7 stems.
+
+ auxConj3re : Affixe -> AffixPasse -> (_,_,_,_,_,_,_ : Str) -> Verbe =
+ \affpr, affp -> \prend, pren, prenn, pr, prendr, pris, priss ->
+ verbAffixes prend pren prenn pr prendr prenn pren
+ (prend + affpr ! P1) pris priss (prendr + "e") affpr affp ;
+
+ auxConj3tre : (_,_ : Str) -> Verbe = \bat, batt ->
+ auxConj3re affixSgSsansT affixPasseI
+ bat batt batt batt (batt + "r") (batt + "u") (batt + "us") ;
+
+ conj3rendre : Str -> Verbe = \rendre ->
+ let {rend = troncVerb rendre} in
+ auxConj3tre rend rend ;
+
+ conj3battre : Str -> Verbe = \battre ->
+ let {bat = Predef.tk 3 battre} in
+ auxConj3tre bat (bat + "t") ;
+
+ conj3prendre : Str -> Verbe = \prendre ->
+ let {pr = Predef.tk 5 prendre} in
+ auxConj3re
+ affixSgSsansT affixPasseI (pr + "end") (pr + "en")
+ (pr + "enn") pr (pr + "endr") (pr + "is") (pr + "is") ;
+
+ conj3mettre : Str -> Verbe = \mettre ->
+ let {m = Predef.tk 5 mettre ; met = m + "et"} in
+ auxConj3re
+ affixSgSsansT affixPasseI met (met + "t")
+ (met + "t") m (met + "tr") (m + "is") (m + "is") ;
+
+ conj3peindre : Str -> Verbe = \peindre ->
+ let {pe = Predef.tk 5 peindre ; peign = pe + "ign"} in
+ auxConj3re
+ affixSgS affixPasseI
+ (pe + "in") peign peign peign (pe + "indr") (pe + "int") (pe + "ints") ;
+
+-- We don't need a separate conjugation for "joindre" and "craindre".
+
+ conj3joindre = conj3peindre ;
+
+ conj3craindre = conj3peindre ;
+
+ conj3vaincre : Str -> Verbe = \vaincre ->
+ let {
+ vainc = troncVerb vaincre ;
+ vainqu = Predef.tk 1 vainc + "qu"
+ } in
+ auxConj3re
+ affixSgSsansT affixPasseI
+ vainc vainqu vainqu vainqu (vainc + "r") (vainc + "u") (vainc + "us") ;
+
+ conj3traire : Str -> Verbe = \traire ->
+ let {
+ tra = Predef.tk 3 traire ;
+ trai = tra + "i" ;
+ tray = tra + "y"
+ } in
+ auxConj3re
+ affixSgS affixPasseNonExist
+ trai tray trai [] (trai + "r") (trai + "t") (trai + "ts") ;
+
+-- The verb "faire" has a great many irregularities. Following Bescherelle,
+-- we have left out the plural 2nd person variant "faisez", which is a
+-- 'grossier barbarisme'.
+
+ conj3faire : Str -> Verbe = \faire ->
+ let {
+ fai = troncVerb faire ;
+ fais = fai + "s" ;
+ f = Predef.tk 2 fai ;
+ tfaire = auxConj3re
+ affixSgS affixPasseI
+ fai fais (f + "ass") f (f + "er") (fai + "t") (fai + "ts")
+ } in
+ table {
+ Inf => faire ;
+ Indi Presn Pl P2 => fai + "tes" ;
+ Indi Presn Pl P3 => f + "ont" ;
+ Subjo SPres Pl p => f + "ass" + affixSPres ! Pl ! p ;
+ Imper PlP2 => fai + "tes" ;
+ t => tfaire ! t
+ } ;
+
+ auxConj3oire : (_,_,_,_ : Str) -> Verbe = \boi, buv, boiv, b ->
+ auxConj3re
+ affixSgS affixPasseU boi buv boiv b (boi + "r") (b + "u") (b + "us") ;
+
+ auxConj3ît : Verbe -> Str -> Verbe = \conj,plaît ->
+ table {
+ Indi Presn Sg P3 => plaît ;
+ t => conj ! t
+ } ;
+
+ conj3plaire : Str -> Verbe = \plaire ->
+ let {
+ pl = Predef.tk 4 plaire ;
+ tplaire = auxConj3oire (pl + "ai") (pl + "ais") (pl + "ais") pl
+ } in
+ auxConj3ît tplaire (pl + "aît") ;
+
+ conj3connaître : Str -> Verbe = \connaître ->
+ let {
+ conn = Predef.tk 5 connaître ;
+ connaiss = conn + "aiss" ;
+ tconnaitre =
+ auxConj3re
+ affixSgS affixPasseU (conn + "ai") connaiss connaiss
+ conn (conn + "aîtr") (conn + "u") (conn + "us")
+ } in
+ auxConj3ît tconnaitre (conn + "aît") ;
+
+ conj3naître : Str -> Verbe = \naître ->
+ let {
+ n = Predef.tk 5 naître ;
+ tnaitre = auxConj3re
+ affixSgS affixPasseI
+ (n + "ai") (n + "aiss") (n + "aiss") (n + "aqu")
+ (n + "aîtr") (n + "é") (n + "és")
+ } in
+ auxConj3ît tnaitre (n + "aît") ;
+
+-- The conjugation of "paître" is defective in a curious way, especially
+-- if compared with "repaître". According to Bescherelle, the invariable
+-- past participle is only used as a term of "fauconnerie" (one would expect it
+-- to be defective rather than invariable).
+
+ conj3paître : Str -> Verbe = \paître ->
+ let {tpaitre = conj3connaître paître} in
+ table {
+ Indi Passe _ _ => nonExist ;
+ Subjo SImparf _ _ => nonExist ;
+ Part (PPasse _ _) => Predef.tk 5 paître + "u" ;
+ p => tpaitre ! p
+ } ;
+
+ conj3repaître = conj3connaître ;
+
+ conj3croître : Str -> Verbe = \croître ->
+ let {cr = Predef.tk 5 croître} in
+ auxConj3re
+ affixSgS (affixPasse "û" "û") (cr + "oî") (cr + "oiss")
+ (cr + "oiss") cr (cr + "oîtr") (cr + "û") (cr + "ûs") ;
+
+ conj3croire : Str -> Verbe = \croire ->
+ let {cr = Predef.tk 4 croire} in
+ auxConj3oire (cr + "oi") (cr + "oy") (cr + "oi") cr ;
+
+ conj3boire : Str -> Verbe = \boire ->
+ let {b = Predef.tk 4 boire} in
+ auxConj3oire (b + "oi") (b + "uv") (b + "oiv") b ;
+
+-- The verb "clore" shows a systematic absence of past forms,
+-- including the imperfect indicative. What is more capricious, is the absence
+-- of the plural first and second persons in the present indicative and
+-- the imperative.
+
+ conj3clore : Str -> Verbe = \clore ->
+ let {
+ clo = troncVerb clore ;
+ clos = clo + "s" ;
+ tclore = auxConj3re
+ affixSgS affixPasseNonExist clo clos clos
+ nonExist (clo + "r") clos clos
+ } in
+ table {
+ Indi Presn Sg P3 => Predef.tk 1 clo + "ôt" ;
+ Indi Presn Pl P1 => nonExist ;
+ Indi Presn Pl P2 => nonExist ;
+ Indi Imparf _ _ => nonExist ;
+ Imper PlP1 => nonExist ;
+ Imper PlP2 => nonExist ;
+ t => tclore ! t
+ } ;
+
+ conj3conclure : Str -> Verbe = \conclure ->
+ let {
+ conclu = troncVerb conclure ;
+ concl = Predef.tk 1 conclu
+ } in
+ auxConj3re
+ affixSgS affixPasseU
+ conclu conclu conclu concl (conclu + "r") conclu (conclu + "s") ;
+
+ conj3absoudre : Str -> Verbe = \absoudre ->
+ let {
+ abso = Predef.tk 4 absoudre ;
+ tabsoudre = conj3résoudre absoudre
+ } in
+ table {
+ Indi Passe _ _ => nonExist ;
+ Subjo SImparf _ _ => nonExist ;
+ Part (PPasse Masc _) => abso + "us" ;
+ Part (PPasse Fem n) => nomReg (abso + "ute") ! n ;
+ p => tabsoudre ! p
+ } ;
+
+ conj3résoudre : Str -> Verbe = \résoudre ->
+ let {reso = Predef.tk 4 résoudre} in
+ auxConj3re
+ affixSgS affixPasseU (reso + "u") (reso + "lv") (reso + "lv")
+ (reso + "l") (reso + "udr") (reso + "lu") (reso + "lus") ;
+
+ conj3coudre : Str -> Verbe = \coudre ->
+ let {
+ cou = Predef.tk 3 coudre ;
+ cous = cou + "s"
+ } in
+ auxConj3re
+ affixSgSsansT affixPasseI
+ (cou +"d") cous cous cous (cou + "dr") (cous + "u") (cous + "us") ;
+
+ conj3moudre : Str -> Verbe = \moudre ->
+ let {
+ mou = Predef.tk 3 moudre ;
+ moul = mou + "l"
+ } in
+ auxConj3re
+ affixSgSsansT affixPasseU
+ (mou + "d") moul moul moul (mou + "dr") (moul + "u") (moul + "us") ;
+
+ conj3suivre : Str -> Verbe = \suivre ->
+ let {
+ suiv = troncVerb suivre ;
+ sui = Predef.tk 1 suiv ;
+ suivi = suiv + "i"
+ } in
+ auxConj3re
+ affixSgS affixPasseI sui suiv suiv suiv (suiv + "r") suivi (suivi+"s") ;
+
+ conj3vivre : Str -> Verbe = \vivre ->
+ let {
+ viv = troncVerb vivre ;
+ vi = Predef.tk 1 viv ;
+ véc = Predef.tk 1 vi + "éc"
+ } in
+ auxConj3re
+ affixSgS affixPasseU vi viv viv véc (viv + "r") (véc + "u") (véc + "us") ;
+
+ conj3lire : Str -> Verbe = \lire ->
+ let {
+ li = troncVerb lire ;
+ lis = li + "s" ;
+ l = Predef.tk 1 li
+ } in
+ auxConj3re affixSgS affixPasseU li lis lis l (li + "r") (l + "u") (l + "us") ;
+
+ conj3dire : Str -> Verbe = \dire ->
+ let {
+ di = troncVerb dire ;
+ dis = di + "s" ;
+ dit = di + "t" ;
+ d = Predef.tk 1 di ;
+ tdire = auxConj3re
+ affixSgS affixPasseI di dis dis d (di + "r") dit (dit+"s")
+ } in
+ table {
+ Indi Presn Pl P2 => di + "tes" ;
+ Imper PlP2 => di + "tes" ;
+ t => tdire ! t
+ } ;
+
+ conj3rire : Str -> Verbe = \rire ->
+ let {
+ ri = troncVerb rire ;
+ r = Predef.tk 1 ri
+ } in
+ auxConj3re affixSgS affixPasseI ri ri ri r (ri + "r") ri (ri+"s") ;
+
+ auxConj3scrire : (_,_,_,_: Str) -> Verbe = \ecri, ecriv, ecrivi, ecrit ->
+ auxConj3re
+ affixSgS affixPasseI ecri ecriv ecriv ecrivi (ecri + "r") ecrit (ecrit+"s") ;
+
+ conj3écrire : Str -> Verbe = \écrire ->
+ let {écri = troncVerb écrire} in
+ auxConj3scrire écri (écri + "v") (écri + "v") (écri + "t") ;
+
+ conj3confire : Str -> Verbe = \confire ->
+ let {confi = troncVerb confire} in
+ auxConj3scrire confi (confi + "s") (Predef.tk 1 confi) (confi + "t") ;
+
+ conj3cuire : Str -> Verbe = \cuire ->
+ let {cui = troncVerb cuire} in
+ auxConj3scrire cui (cui + "s") (cui + "s") (cui + "t") ;
+
+
+--3 Very irregular verbs
+--
+-- Here we cannot do even with the 'worst case macro'.
+
+ conj3aller : Str -> Verbe = \aller ->
+ let {
+ s = Predef.tk 5 aller ;
+ pres = formesPresAi "v" "all" ;
+ taller = verbHabituel
+ "all" "all" "aill" "all" "ir" "allé" "aller"
+ affixSgS affixPasseA
+ } in
+ table {
+ Indi Presn Sg P1 => s + "vais" ;
+ Indi Presn n p => s + pres ! n ! p ;
+ Indi Imparf n p => s + "all" + affixImparf ! n ! p ;
+ Imper SgP2 => s + "va" ;
+ t => s + taller ! t
+ } ;
+
+ conjÊtre : Str -> Verbe = \etre ->
+ let {
+ s = Predef.tk 4 etre ;
+ sg = lesAffixes "suis" "es" "est" ;
+ pl = lesAffixes "sommes" "êtes" "sont" ;
+ tetre = verbHabituel
+ "soi" "soy" "soi" "f" "ser" "été" "être" affixSgS affixPasseU
+ } in
+ table {
+ Indi Presn Sg p => s + sg ! p ;
+ Indi Presn Pl p => s + pl ! p ;
+ Indi Imparf n p => s + "ét" + affixImparf ! n ! p ;
+ Subjo SPres Sg p => s + "soi" + affixSgS ! p ;
+ Subjo SPres Pl P3 => s + "soient" ;
+ Subjo SPres Pl p => s + "soy" + affixPlOns ! p ;
+ Part PPres => s + "étant" ;
+ t => s + tetre ! t
+ } ;
+
+ conjAvoir : Str -> Verbe = \avoir ->
+ let {
+ s = Predef.tk 5 avoir ;
+ pres = formesPresAi [] "av" ;
+ tavoir = verbHabituel
+ "ai" "ay" "ai" "e" "aur" "eu" "avoir" affixSgS affixPasseU
+ } in
+ table {
+ Indi Presn n p => s + pres ! n ! p ;
+ Indi Imparf n p => s + "av" + affixImparf ! n ! p ;
+ Subjo SPres Sg P3 => s + "ait" ;
+ Subjo SPres Pl P3 => s + "aient" ;
+ Subjo SPres Pl p => s + "ay" + affixPlOns ! p ;
+ Imper SgP2 => s + "aie" ;
+ t => s + tavoir ! t
+ } ;
+
+--- for Numerals
+
+param DForm = unit | teen | jten | ten | tenplus ;
+param Place = indep | attr ;
+
+}
diff --git a/deprecated/old-lib/resource/french/NounFre.gf b/deprecated/old-lib/resource/french/NounFre.gf
new file mode 100644
index 000000000..e79ca7477
--- /dev/null
+++ b/deprecated/old-lib/resource/french/NounFre.gf
@@ -0,0 +1,4 @@
+--# -path=.:romance:abstract:../common:prelude
+
+concrete NounFre of Noun = CatFre ** NounRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/NumeralFre.gf b/deprecated/old-lib/resource/french/NumeralFre.gf
new file mode 100644
index 000000000..23a8ab43d
--- /dev/null
+++ b/deprecated/old-lib/resource/french/NumeralFre.gf
@@ -0,0 +1,148 @@
+concrete NumeralFre of Numeral = CatFre **
+ open CommonRomance, ResRomance, MorphoFre, Prelude in {
+
+-- originally written in 1998, automatically translated to current notation...
+-- last modified 24/1/2006, adding ordinals
+
+-- Auxiliaries
+
+oper
+ digitPl : {s : DForm => Str; inh : DForm ; n : Number} ->
+ {s : CardOrd => DForm => Str ; inh : DForm ; n : Number} = \d -> {
+ s = \\co,df => let ds = d.s ! df in
+ case co of {
+ NCard _ => ds ;
+ NOrd _ _ => case last ds of {
+ "q" => "uième" ;
+ "e" => init ds + "ième" ;
+ _ => ds + "ième"
+ }
+ } ;
+ inh = d.inh ; n = d.n
+ } ;
+
+ cardOrd : CardOrd -> Str -> Str -> Str = \co, x,y -> case co of {
+ NCard _ => x ;
+ NOrd _ _ => y
+ } ;
+
+lincat
+ Digit = {s : CardOrd => DForm => Str ; inh : DForm ; n : Number} ;
+ Sub10 = {s : CardOrd => {p1 : DForm ; p2 : Place} => Str ; inh : Number} ;
+ Sub100 = {s : CardOrd => Place => Str ; n : Number} ;
+ Sub1000 = {s : CardOrd => Place => Str ; n : Number} ;
+ Sub1000000 = {s : CardOrd => Str ; n : Number} ;
+
+lin num x0 = x0 ;
+
+lin n2 =
+ digitPl {inh = unit ; n = Sg ; s = table {unit => "deux" ; teen => "douze" ; jten => "vingt" ; ten => "vingt" ; tenplus => "vingt"}} ;
+lin n3 =
+ digitPl {inh = unit ; n = Sg ; s = table {unit => "trois" ; teen => "treize" ; jten => "trente" ; ten => "trente" ; tenplus => "trente"}} ;
+lin n4 =
+ digitPl {inh = unit ; n = Sg ; s = table {unit => "quatre" ; teen => "quatorze" ; jten => "quarante" ; ten => "quarante" ; tenplus => "quarante"}} ;
+lin n5 =
+ digitPl {inh = unit ; n = Sg ; s = table {unit => "cinq" ; teen => "quinze" ; jten => "cinquante" ; ten => "cinquante" ; tenplus => "cinquante"}} ;
+lin n6 =
+ digitPl {inh = unit ; n = Sg ; s = table {unit => "six" ; teen => "seize" ; jten => "soixante" ; ten => "soixante" ; tenplus => "soixante"}} ;
+lin n7 =
+ digitPl {inh = teen ; n = Sg ; s = table {unit => "sept" ; teen => "dix-sept" ; jten => "soixante-dix" ; ten => "soixante-dix" ; tenplus => "soixante"}} ;
+lin n8 =
+ digitPl {inh = unit ; n = Pl ; s = table {unit => "huit" ; teen => "dix-huit" ; jten => "quatre-vingts" ; ten => "quatre-vingt" ; tenplus => "quatre-vingt"}} ;
+lin n9 =
+ digitPl {inh = teen ; n = Pl ; s = table {unit => "neuf" ; teen => "dix-neuf" ; jten => "quatre-vingt-dix" ; ten => "quatre-vingt-dix" ; tenplus => "quatre-vingt"}} ;
+
+lin pot01 =
+ {inh = Sg ; s = \\g => let dix = cardOrd g "dix" "dixième" in table {
+ {p1 = unit ; p2 = indep} => cardOrd g "un" "unième" ; {p1 = unit ; p2 = attr} => [] ; {p1 = teen ;
+ p2 = indep} => cardOrd g "onze" "onzième" ; {p1 = teen ; p2 = attr} => [] ; {p1 = jten ;
+ p2 = indep} => dix ; {p1 = jten ; p2 = attr} => [] ; {p1 = ten ;
+ p2 = indep} => dix ; {p1 = ten ; p2 = attr} => [] ; {p1 = tenplus
+ ; p2 = indep} => dix ; {p1 = tenplus ; p2 = attr} => []} ; n = Sg} ;
+lin pot0 d =
+ {inh = Pl ; s = \\g => table {{p1 = unit ; p2 = indep} => d.s ! g ! unit
+ ; {p1 = unit ; p2 = attr} => d.s ! g ! unit ; {p1 = teen ; p2 = indep}
+ => d.s ! g ! teen ; {p1 = teen ; p2 = attr} => d.s ! g ! teen ; {p1 = jten ;
+ p2 = indep} => d.s ! g ! jten ; {p1 = jten ; p2 = attr} => d.s ! g ! jten ;
+ {p1 = ten ; p2 = indep} => d.s ! g ! ten ; {p1 = ten ; p2 = attr} => d.s
+ ! g ! ten ; {p1 = tenplus ; p2 = indep} => d.s ! g ! tenplus ; {p1 = tenplus
+ ; p2 = attr} => d.s ! g ! tenplus} ; n = Pl} ;
+
+lin pot110 =
+ {s = \\g => table {_ => cardOrd g "dix" "dixième"} ; n = Pl} ;
+lin pot111 =
+ {s = \\g => table {_ => cardOrd g "onze" "onzième"} ; n = Pl} ;
+lin pot1to19 d =
+ {s = \\g => table {indep => d.s ! g ! teen ; attr => d.s ! g ! teen} ; n = Pl} ;
+lin pot0as1 n =
+ {s = \\g => table {indep => n.s ! g ! {p1 = unit ; p2 = indep} ;
+ attr => n.s ! g ! {p1 = unit ; p2 = attr}} ; n = n.inh} ;
+lin pot1 d =
+ {s = \\g => table {indep => d.s ! g ! jten ; attr => d.s ! g ! ten}
+ ; n = Pl} ;
+lin pot1plus d e =
+ {s = \\g => table {indep => (d.s ! (NCard Masc) ! tenplus) ++ (table {{p1 = Sg
+ ; p2 = Sg} => "et" ; {p1 = Sg ; p2 = pl} => "-" ; {p1 = Pl ; p2 =
+ Sg} => "-" ; {p1 = Pl ; p2 = pl} => "-"} ! {p1 = d.n ; p2 =
+ e.inh}) ++ e.s ! g ! {p1 = d.inh ; p2 = indep} ; attr => (d.s ! (NCard Masc) !
+ tenplus) ++ (table {{p1 = Sg ; p2 = Sg} => "et" ; {p1 = Sg ; p2 =
+ pl} => "-" ; {p1 = Pl ; p2 = Sg} => "-" ; {p1 = Pl ; p2 = pl} =>
+ "-"} ! {p1 = d.n ; p2 = e.inh}) ++ e.s ! g ! {p1 = d.inh ; p2 =
+ indep}} ; n = Pl} ;
+lin pot1as2 n = n ;
+lin pot2 d =
+ {s = \\g => table {indep => (d.s ! NCard Masc ! {p1 = unit ; p2 = attr})
+ ++ table {Sg => cardOrd g "cent" "centième" ; Pl => cardOrd g "cents" "centième"} ! (d.inh) ; attr => (d.s !
+ NCard Masc ! {p1 = unit ; p2 = attr}) ++ cardOrd g "cent" "centième"} ; n = Pl} ;
+lin pot2plus d e =
+ {s = \\g => table {indep => (d.s ! NCard Masc ! {p1 = unit ; p2 = attr})
+ ++ "cent" ++ e.s ! g ! indep ; attr => (d.s ! NCard Masc ! {p1 = unit ; p2
+ = attr}) ++ "cent" ++ e.s ! g ! indep} ; n = Pl} ;
+lin pot2as3 n =
+ {s = \\g => n.s ! g ! indep ; n = n.n} ;
+lin pot3 n =
+ {s = \\g => (n.s ! NCard Masc ! attr) ++ cardOrd g "mille" "millième" ; n = Pl} ;
+lin pot3plus n m =
+ {s = \\g => (n.s ! NCard Masc ! attr) ++ "mille" ++ m.s ! g ! indep ; n =
+ Pl} ;
+
+
+-- numerals as sequences of digits
+
+ lincat
+ Dig = TDigit ;
+
+ lin
+ IDig d = d ;
+
+ IIDig d i = {
+ s = \\o => d.s ! NCard Masc ++ i.s ! o ;
+ n = Pl
+ } ;
+
+ D_0 = mkDig "0" ;
+ D_1 = mk3Dig "1" "1er" Sg ; ---- gender
+ D_2 = mk2Dig "2" "2ème" ;
+ D_3 = mk2Dig "3" "3ème" ;
+ D_4 = mkDig "4" ;
+ D_5 = mkDig "5" ;
+ D_6 = mkDig "6" ;
+ D_7 = mkDig "7" ;
+ D_8 = mkDig "8" ;
+ D_9 = mkDig "9" ;
+
+ oper
+ mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
+ mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ème") ;
+
+ mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
+ s = table {NCard _ => c ; NOrd _ _ => o} ; ---- gender
+ n = n
+ } ;
+
+ TDigit = {
+ n : Number ;
+ s : CardOrd => Str
+ } ;
+
+}
diff --git a/deprecated/old-lib/resource/french/ParadigmsFre.gf b/deprecated/old-lib/resource/french/ParadigmsFre.gf
new file mode 100644
index 000000000..b5406b558
--- /dev/null
+++ b/deprecated/old-lib/resource/french/ParadigmsFre.gf
@@ -0,0 +1,447 @@
+--# -path=.:../romance:../common:../abstract:../../prelude
+
+--1 French Lexical Paradigms
+--
+-- Aarne Ranta 2001 - 2006
+--
+-- This is an API for the user of the resource grammar
+-- for adding lexical items. It gives functions for forming
+-- expressions of open categories: nouns, adjectives, verbs.
+--
+-- Closed categories (determiners, pronouns, conjunctions) are
+-- accessed through the resource syntax API, $Structural.gf$.
+--
+-- The main difference with $MorphoFre.gf$ is that the types
+-- referred to are compiled resource grammar types. We have moreover
+-- had the design principle of always having existing forms, rather
+-- than stems, as string arguments of the paradigms.
+--
+-- The structure of functions for each word class $C$ is the following:
+-- first we give a handful of patterns that aim to cover all
+-- regular cases. Then we give a worst-case function $mkC$, which serves as an
+-- escape to construct the most irregular words of type $C$.
+-- However, this function should only seldom be needed: we have a
+-- separate module [``IrregFre`` ../../french/IrregFre.gf],
+-- which covers all irregularly inflected verbs.
+
+resource ParadigmsFre =
+ open
+ (Predef=Predef),
+ Prelude,
+ CommonRomance,
+ ResFre,
+ MorphoFre,
+ CatFre in {
+
+ flags optimize=all ;
+
+--2 Parameters
+--
+-- To abstract over gender names, we define the following identifiers.
+
+oper
+ Gender : Type ;
+
+ masculine : Gender ;
+ feminine : Gender ;
+
+-- To abstract over number names, we define the following.
+
+ Number : Type ;
+
+ singular : Number ;
+ plural : Number ;
+
+-- Prepositions used in many-argument functions are either strings
+-- (including the 'accusative' empty string) or strings that
+-- amalgamate with the following word (the 'genitive' "de" and the
+-- 'dative' "à").
+
+ accusative : Prep ;
+ genitive : Prep ;
+ dative : Prep ;
+
+ mkPrep : Str -> Prep ;
+
+
+--2 Nouns
+
+ mkN : overload {
+
+-- The regular function uses heuristics to compute the
+-- plural and the gender from the singular. The plural
+-- heuristic currently
+-- covers the cases "pas-pas", "prix-prix", "nez-nez",
+-- "bijou-bijoux", "cheveu-cheveux", "plateau-plateaux", "cheval-chevaux".
+-- The gender heuristic is less reliable: it treats as feminine all
+-- nouns ending with "e" and "ion", all others as masculine.
+
+ mkN : (cheval : Str) -> N ;
+
+-- Adding gender information widens the scope of the regular pattern.
+
+ mkN : (foie : Str) -> Gender -> N ;
+
+-- In the worst case, both singular and plural forms and the gender are needed.
+
+ mkN : (oeil,yeux : Str) -> Gender -> N ;
+
+--3 Compound nouns
+--
+-- Some nouns are ones where the first part is inflected as a noun but
+-- the second part is not inflected. e.g. "numéro de téléphone".
+-- They could be formed in syntax, but we give a shortcut here since
+-- they are frequent in lexica.
+
+ mkN : N -> Str -> N
+ } ;
+
+
+
+
+--3 Relational nouns
+--
+-- Relational nouns ("fille de x") need a case and a preposition.
+
+ mkN2 : N -> Prep -> N2 ;
+
+-- The most common cases are the genitive "de" and the dative "à",
+-- with the empty preposition.
+
+ deN2 : N -> N2 ;
+ aN2 : N -> N2 ;
+
+-- Three-place relational nouns ("la connection de x à y") need two prepositions.
+
+ mkN3 : N -> Prep -> Prep -> N3 ;
+
+
+--3 Relational common noun phrases
+--
+-- In some cases, you may want to make a complex $CN$ into a
+-- relational noun (e.g. "la vieille église de"). However, $N2$ and
+-- $N3$ are purely lexical categories. But you can use the $AdvCN$
+-- and $PrepNP$ constructions to build phrases like this.
+
+--
+--3 Proper names and noun phrases
+--
+-- Proper names need a string and a gender. If no gender is given, the
+-- feminine is used for strings ending with "e", the masculine for other strings.
+
+ mkPN : overload {
+ mkPN : Str -> PN ;
+ mkPN : Str -> Gender -> PN
+ } ;
+
+
+
+--2 Adjectives
+
+ mkA : overload {
+
+-- For regular adjectives, all forms are derived from the
+-- masculine singular. The heuristic takes into account certain
+-- deviant endings: "banal-banale-banaux", "chinois-chinoise-chinois",
+-- "heureux-heureuse-heureux", "italien-italienne", "jeune-jeune",
+-- "amer-amère", "carré- - -carrément", "joli- - -joliment".
+
+ mkA : (cher : Str) -> A ;
+
+-- Often just the feminine singular is deviant.
+
+ mkA : (sec,seche : Str) -> A ;
+
+-- This is the worst-case paradigm for the positive forms.
+
+ mkA : (banal,banale,banaux,banalement : Str) -> A ;
+
+-- If comparison forms are irregular (i.e. not formed by "plus", e.g.
+-- "bon-meilleur"), the positive and comparative can be given as separate
+-- adjectives.
+
+ mkA : A -> A -> A
+ } ;
+
+-- The functions create by default postfix adjectives. To switch
+-- them to prefix ones (i.e. ones placed before the noun in
+-- modification, as in "petite maison"), the following function is
+-- provided.
+
+ prefixA : A -> A ;
+
+
+--3 Two-place adjectives
+--
+-- Two-place adjectives need a preposition for their second argument.
+
+ mkA2 : A -> Prep -> A2 ;
+
+
+--2 Adverbs
+
+-- Adverbs are not inflected. Most lexical ones have position
+-- after the verb.
+
+ mkAdv : Str -> Adv ;
+
+-- Some appear next to the verb (e.g. "toujours").
+
+ mkAdV : Str -> AdV ;
+
+-- Adverbs modifying adjectives and sentences can also be formed.
+
+ mkAdA : Str -> AdA ;
+
+
+--2 Verbs
+--
+-- Irregular verbs are given in the module $IrregFre$.
+-- If a verb should be missing in that list, the module
+-- $BeschFre$ gives all the patterns of the "Bescherelle" book.
+--
+-- Regular verbs are ones with the infinitive "er" or "ir", the
+-- latter with plural present indicative forms as "finissons".
+-- The regular verb function in the first conjugation recognizes
+-- these endings, as well as the variations among
+-- "aimer, céder, placer, peser, jeter, placer, manger, assiéger, payer".
+--
+-- Sometimes, however, it is not predictable which variant of the "er"
+-- conjugation is to be selected. Then it is better to use the function
+-- that gives the third person singular present indicative and future
+-- (("il") "jette", "jettera") as second argument.
+
+ mkV : overload {
+ mkV : (finir : Str) -> V ;
+ mkV : (jeter,jette,jettera : Str) -> V ;
+
+-- The $IrregFre$ list gives some verbs as two-place. These verbs can be
+-- reused as one-place verbs.
+
+ mkV : V2 -> V
+ } ;
+
+-- The function $mkV$ gives the default compound auxiliary "avoir".
+-- To change it to "être", use the following function.
+
+ etreV : V -> V ;
+
+-- This function turns a verb into reflexive, which implies the auxiliary "être".
+
+ reflV : V -> V ;
+
+
+--3 Two-place verbs
+--
+-- Two-place verbs need a preposition, except the special case with direct object.
+-- (transitive verbs).
+
+ mkV2 = overload {
+ mkV2 : V -> V2 = dirV2 ;
+ mkV2 : V -> Prep -> V2 = mmkV2
+ } ;
+
+
+--3 Three-place verbs
+--
+-- Three-place (ditransitive) verbs need two prepositions, of which
+-- the first one or both can be absent.
+
+ mkV3 : overload {
+ mkV3 : V -> V3 ; -- donner,_,_
+ mkV3 : V -> Prep -> V3 ; -- placer,_,dans
+ mkV3 : V -> Prep -> Prep -> V3 -- parler, à, de
+ } ;
+
+--3 Other complement patterns
+--
+-- Verbs and adjectives can take complements such as sentences,
+-- questions, verb phrases, and adjectives.
+
+ mkV0 : V -> V0 ;
+ mkVS : V -> VS ;
+ mkV2S : V -> Prep -> V2S ;
+ mkVV : V -> VV ; -- plain infinitive: "je veux parler"
+ deVV : V -> VV ; -- "j'essaie de parler"
+ aVV : V -> VV ; -- "j'arrive à parler"
+ mkV2V : V -> Prep -> Prep -> V2V ;
+ mkVA : V -> VA ;
+ mkV2A : V -> Prep -> Prep -> V2A ;
+ mkVQ : V -> VQ ;
+ mkV2Q : V -> Prep -> V2Q ;
+
+ mkAS : A -> AS ;
+ mkA2S : A -> Prep -> A2S ;
+ mkAV : A -> Prep -> AV ;
+ mkA2V : A -> Prep -> Prep -> A2V ;
+
+-- Notice: categories $AS, A2S, AV, A2V$ are just $A$,
+-- and the second argument is given as an adverb. Likewise
+-- $V0$ is just $V$.
+
+ V0 : Type ;
+ AS, A2S, AV, A2V : Type ;
+
+--.
+--2 Definitions of the paradigms
+--
+-- The definitions should not bother the user of the API. So they are
+-- hidden from the document.
+
+
+ Gender = MorphoFre.Gender ;
+ Number = MorphoFre.Number ;
+ masculine = Masc ;
+ feminine = Fem ;
+ singular = Sg ;
+ plural = Pl ;
+
+ Preposition = Compl ;
+ accusative = complAcc ** {lock_Prep = <>} ;
+ genitive = complGen ** {lock_Prep = <>} ;
+ dative = complDat ** {lock_Prep = <>} ;
+ mkPrep p = {s = p ; c = CPrep PNul ; isDir = False ; lock_Prep = <>} ;
+
+ --- obsolete
+ Preposition : Type ;
+ mkPreposition : Str -> Preposition ;
+ mkPreposition = mkPrep ;
+
+ regGenN : Str -> Gender -> N ;
+ regN : Str -> N ;
+ mk2N : (oeil,yeux : Str) -> Gender -> N ;
+ mk2N x y g = mkCNomIrreg x y g ** {lock_N = <>} ;
+ regN x = regGenN x g where {
+ g = case <x : Str> of {
+ _ + ("e" | "ion") => Fem ;
+ _ => Masc
+ }
+ } ;
+ regGenN x g = mkNomReg x g ** {lock_N = <>} ;
+ compN : N -> Str -> N ;
+ compN x y = {s = \\n => x.s ! n ++ y ; g = x.g ; lock_N = <>} ;
+
+ mkN = overload {
+ mkN : Str -> N = regN ;
+ mkN : Str -> Gender -> N = regGenN ;
+ mkN : (oeil,yeux : Str) -> Gender -> N = mk2N ;
+ mkN : N -> Str -> N = compN
+ } ;
+
+
+ mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ;
+ deN2 n = mkN2 n genitive ;
+ aN2 n = mkN2 n dative ;
+ mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p ; c3 = q} ;
+
+ regPN x = mk2PN x g where {
+ g = case last x of {
+ "e" => feminine ;
+ _ => masculine
+ }
+ } ;
+
+ mkPN = overload {
+ mkPN : Str -> PN = regPN ;
+ mkPN : Str -> Gender -> PN = \x,g -> {s = x ; g = g} ** {lock_PN = <>} ;
+ } ;
+
+ mk4A a b c d = compADeg {s = \\_ => (mkAdj a c b d).s ; isPre = False ; lock_A = <>} ;
+ regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; lock_A = <>} ;
+ prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
+
+ mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
+
+ mkA = overload {
+ mkA : Str -> A = regA ;
+ mkA : (sec,seche : Str) -> A = \sec,seche -> mk4A sec seche (sec + "s") (seche + "ment") ;
+ mkA : (banal,banale,banaux,banalement : Str) -> A = mk4A ;
+ mkA : A -> A -> A = mkADeg
+ };
+
+ prefixA a = {s = a.s ; isPre = True ; lock_A = <>} ;
+
+ mkAdv x = ss x ** {lock_Adv = <>} ;
+ mkAdV x = ss x ** {lock_AdV = <>} ;
+ mkAdA x = ss x ** {lock_AdA = <>} ;
+
+ regV x = let v = vvf (mkVerbReg x) in {s = v ; vtyp = VHabere ; lock_V = <>} ;
+ reg3V x y z = let v = vvf (mkVerb3Reg x y z) in {s = v ; vtyp = VHabere ; lock_V = <>} ;
+ etreV v = {s = v.s ; vtyp = VEsse ; lock_V = <>} ;
+ reflV v = {s = v.s ; vtyp = VRefl ; lock_V = <>} ;
+
+ mmkV3 v p q = v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
+ dirV3 v p = mmkV3 v accusative p ;
+ dirdirV3 v = dirV3 v dative ;
+
+ mkV3 = overload {
+ mkV3 : V -> V3 = dirdirV3 ; -- donner,_,_
+ mkV3 : V -> Prep -> V3 = dirV3 ; -- placer,_,sur
+ mkV3 : V -> Prep -> Prep -> V3 = mmkV3 -- parler, à, de
+ } ;
+
+ V0 : Type = V ;
+ AS, AV : Type = A ;
+ A2S, A2V : Type = A2 ;
+
+ mkV0 v = v ** {lock_V0 = <>} ;
+ mkVS v = v ** {m = \\_ => Indic ; lock_VS = <>} ; ---- more moods
+ mkV2S v p = mmkV2 v p ** {mn,mp = Indic ; lock_V2S = <>} ;
+ mkVV v = v ** {c2 = complAcc ; lock_VV = <>} ;
+ deVV v = v ** {c2 = complGen ; lock_VV = <>} ;
+ aVV v = v ** {c2 = complDat ; lock_VV = <>} ;
+ mkV2V v p q = mmkV3 v p q ** {lock_V2V = <>} ;
+ mkVA v = v ** {lock_VA = <>} ;
+ mkV2A v p q = mmkV3 v p q ** {lock_V2A = <>} ;
+ mkVQ v = v ** {lock_VQ = <>} ;
+ mkV2Q v p = mmkV2 v p ** {lock_V2Q = <>} ;
+
+ mkAS v = v ** {lock_AS = <>} ; ---- more moods
+ mkA2S v p = mkA2 v p ** {lock_A2S = <>} ;
+ mkAV v p = v ** {c = p.p1 ; s2 = p.p2 ; lock_AV = <>} ;
+ mkA2V v p q = mkA2 v p ** {s3 = q.p2 ; c3 = q.p1 ; lock_A2V = <>} ;
+
+--------------------------- obsolete
+
+ makeNP : Str -> Gender -> Number -> NP ;
+ makeNP x g n = {s = (pn2np {s=x;g= g}).s; a = agrP3 g n ; hasClit = False} ** {lock_NP = <>} ;
+ regPN : Str -> PN ;
+ mk2PN : Str -> Gender -> PN = \x,g -> {s = x ; g = g} ** {lock_PN = <>} ;
+
+ mkADeg : A -> A -> A ;
+ compADeg : A -> A ;
+
+ regA : Str -> A ;
+ mk4A : (banal,banale,banaux,banalement : Str) -> A ;
+
+ prefA : A -> A ;
+
+ mkADeg a b =
+ {s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ; isPre = a.isPre ; lock_A = <>} ;
+ compADeg a =
+ {s = table {Posit => a.s ! Posit ; _ => \\f => "plus" ++ a.s ! Posit ! f} ;
+ isPre = a.isPre ;
+ lock_A = <>} ;
+ prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
+
+ mkV = overload {
+ mkV : Str -> V = regV ;
+ mkV : (jeter,jette,jettera : Str) -> V = reg3V ;
+ mkV : V2 -> V = v2V
+ } ;
+
+ regV : Str -> V ;
+ reg3V : (jeter,jette,jettera : Str) -> V ;
+
+ mmkV2 : V -> Prep -> V2 ;
+ mmkV2 v p = v ** {c2 = p ; lock_V2 = <>} ;
+ dirV2 : V -> V2 = \v -> mmkV2 v accusative ;
+ v2V : V2 -> V ;
+ v2V v = v ** {lock_V = <>} ;
+
+ mmkV3 : V -> Prep -> Prep -> V3 ; -- parler, à, de
+ dirV3 : V -> Prep -> V3 ; -- donner,_,à
+ dirdirV3 : V -> V3 ; -- donner,_,_
+
+
+} ;
diff --git a/deprecated/old-lib/resource/french/PhonoFre.gf b/deprecated/old-lib/resource/french/PhonoFre.gf
new file mode 100644
index 000000000..f2ef797fc
--- /dev/null
+++ b/deprecated/old-lib/resource/french/PhonoFre.gf
@@ -0,0 +1,28 @@
+resource PhonoFre = open Prelude in {
+
+flags coding=utf8 ;
+
+oper
+ voyelle : Strs = strs {
+ "a" ; "à" ; "â" ; "e" ; "é" ; "è" ; "ê¨" ;
+ "h" ;
+ "i" ; "î" ; "o" ; "ô" ; "u" ; "û" ; "y"
+ } ;
+
+ elision : Str -> Str = \d -> d + pre {"e" ; "'" / voyelle} ;
+
+-- The following morphemes are the most common uses of elision.
+
+ elisDe = elision "d" ;
+ elisLa = pre {"la" ; "l'" / voyelle} ;
+ elisLe = elision "l" ;
+ elisNe = elision "n" ;
+ elisQue = elision "qu" ;
+
+-- The subjunction "si" has a special kind of elision. The rule is
+-- only approximatively correct, for "si" is not really elided before
+-- the string "il" in general, but before the pronouns "il" and "ils".
+
+ elisSi = pre {"si" ; "s'" / strs {"il"}} ;
+
+}
diff --git a/deprecated/old-lib/resource/french/PhraseFre.gf b/deprecated/old-lib/resource/french/PhraseFre.gf
new file mode 100644
index 000000000..defc9fa14
--- /dev/null
+++ b/deprecated/old-lib/resource/french/PhraseFre.gf
@@ -0,0 +1,2 @@
+concrete PhraseFre of Phrase = CatFre ** PhraseRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/QuestionFre.gf b/deprecated/old-lib/resource/french/QuestionFre.gf
new file mode 100644
index 000000000..979b7226d
--- /dev/null
+++ b/deprecated/old-lib/resource/french/QuestionFre.gf
@@ -0,0 +1,2 @@
+concrete QuestionFre of Question = CatFre ** QuestionRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/RelativeFre.gf b/deprecated/old-lib/resource/french/RelativeFre.gf
new file mode 100644
index 000000000..cc84b6cb1
--- /dev/null
+++ b/deprecated/old-lib/resource/french/RelativeFre.gf
@@ -0,0 +1,2 @@
+concrete RelativeFre of Relative = CatFre ** RelativeRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/ResFre.gf b/deprecated/old-lib/resource/french/ResFre.gf
new file mode 100644
index 000000000..3641d1da7
--- /dev/null
+++ b/deprecated/old-lib/resource/french/ResFre.gf
@@ -0,0 +1,13 @@
+--1 French auxiliary operations.
+--
+---- This module contains operations that are needed to make the
+---- resource syntax work. To define everything that is needed to
+---- implement $Test$, it moreover contains regular lexical
+---- patterns needed for $Lex$.
+--
+
+instance ResFre of ResRomance = DiffFre ** open CommonRomance, Prelude in {
+
+flags optimize=noexpand ;
+
+} ;
diff --git a/deprecated/old-lib/resource/french/SentenceFre.gf b/deprecated/old-lib/resource/french/SentenceFre.gf
new file mode 100644
index 000000000..ac2fe131d
--- /dev/null
+++ b/deprecated/old-lib/resource/french/SentenceFre.gf
@@ -0,0 +1,2 @@
+concrete SentenceFre of Sentence = CatFre ** SentenceRomance with
+ (ResRomance = ResFre) ;
diff --git a/deprecated/old-lib/resource/french/StructuralFre.gf b/deprecated/old-lib/resource/french/StructuralFre.gf
new file mode 100644
index 000000000..4b197664d
--- /dev/null
+++ b/deprecated/old-lib/resource/french/StructuralFre.gf
@@ -0,0 +1,153 @@
+--# -path=.:../abstract:../romance:../common:prelude
+
+concrete StructuralFre of Structural = CatFre **
+ open PhonoFre, MorphoFre, ParadigmsFre, IrregFre, Prelude in {
+
+ flags optimize=all ; coding=utf8 ;
+
+lin
+
+ above_Prep = {s = ["au dessus"] ; c = MorphoFre.genitive ; isDir = False} ;
+ after_Prep = mkPreposition "après" ;
+ all_Predet = {
+ s = \\a,c => prepCase c ++ aagrForms "tout" "toute" "tous" "toutes" ! a ;
+ c = Nom
+ } ;
+ almost_AdA, almost_AdN = ss "presque" ;
+ always_AdV = ss "toujours" ;
+ although_Subj = ss ("bien" ++ elisQue) ** {m = Conjunct} ;
+ and_Conj = {s1 = [] ; s2 = "et" ; n = Pl} ;
+ because_Subj = ss ("parce" ++ elisQue) ** {m = Indic} ;
+ before_Prep = mkPreposition "avant" ;
+ behind_Prep = mkPreposition "derrière" ;
+ between_Prep = mkPreposition "entre" ;
+ both7and_DConj = {s1,s2 = "et" ; n = Pl} ;
+ but_PConj = ss "mais" ;
+ by8agent_Prep = mkPreposition "par" ;
+ by8means_Prep = mkPreposition "par" ;
+ can8know_VV = mkVV (savoir_V2 ** {lock_V = <>}) ;
+ can_VV = mkVV pouvoir_V ;
+ during_Prep = mkPreposition "pendant" ;
+ either7or_DConj = {s1,s2 = "ou" ; n = Pl} ;
+ everybody_NP = pn2np (mkPN ["tout le monde"] Masc) ;
+ every_Det = {s = \\_,_ => "chaque" ; n = Sg} ;
+ everything_NP = pn2np (mkPN ["tout"] Masc) ;
+ everywhere_Adv = ss "partout" ;
+ few_Det = {s = \\g,c => prepCase c ++ "peu" ++ elisDe ; n = Pl} ;
+--- DEPREC first_Ord = {s = \\ag => (regA "premier").s ! Posit ! AF ag.g ag.n} ;
+ for_Prep = mkPreposition "pour" ;
+ from_Prep = complGen ; ---
+ he_Pron =
+ mkPronoun
+ "il" (elision "l") "lui" "lui" "son" (elisPoss "s") "ses"
+ Masc Sg P3 ;
+ here7from_Adv = ss "d'ici" ;
+ here7to_Adv = ss "ici" ;
+ here_Adv = ss "ici" ;
+ how_IAdv = ss "comment" ;
+ how8many_IDet = {s = \\_,c => prepCase c ++ "combien" ++ elisDe ; n = Pl} ;
+ if_Subj = ss elisSi ** {m = Indic} ;
+ in8front_Prep = mkPreposition "devant" ;
+ i_Pron =
+ mkPronoun
+ (elision "j") (elision "m") (elision "m") "moi" "mon" (elisPoss "m") "mes"
+ Masc Sg P1 ;
+ in_Prep = mkPreposition "dans" ;
+ it_Pron =
+ mkPronoun
+ "il" (elision "l") "lui" "lui" "son" (elisPoss "s") "ses"
+ Masc Sg P3 ;
+ less_CAdv = ss "moins" ;
+ many_Det = {s = \\_,c => prepCase c ++ "plusieurs" ; n = Pl} ;
+ more_CAdv = ss "plus" ;
+ most_Predet = {s = \\_,c => prepCase c ++ ["la plupart"] ; c = CPrep P_de} ;
+ much_Det = {s = \\_,c => prepCase c ++ "beaucoup" ++ elisDe ; n = Pl} ;
+ must_VV = mkVV (devoir_V2 ** {lock_V = <>}) ;
+---b no_Phr = ss "non" ;
+ no_Utt = ss "non" ;
+ on_Prep = mkPreposition "sur" ;
+--- DEPREC one_Quant = {s = \\g,c => prepCase c ++ genForms "un" "une" ! g} ;
+ only_Predet = {s = \\_,c => prepCase c ++ "seulement" ; c = Nom} ; --- seul(e)(s)
+ or_Conj = {s1 = [] ; s2 = "ou" ; n = Sg} ;
+ otherwise_PConj = ss "autrement" ;
+ part_Prep = complGen ;
+ please_Voc = ss ["s'il vous plaît"] ;
+ possess_Prep = complGen ;
+ quite_Adv = ss "assez" ;
+ she_Pron =
+ mkPronoun
+ "elle" elisLa "lui" "elle" "son" (elisPoss "s") "ses"
+ Fem Sg P3 ;
+
+ so_AdA = ss "si" ;
+ somebody_NP = pn2np (mkPN ["quelqu'un"] Masc) ;
+ somePl_Det = {s = \\_,c => prepCase c ++ "quelques" ; n = Pl} ;
+ someSg_Det = {s = \\_,c => prepCase c ++ elision "quelqu" ; n = Sg} ;
+ something_NP = pn2np (mkPN ["quelque chose"] Masc) ;
+ somewhere_Adv = ss ["quelque part"] ; --- ne - pas
+ that_Quant = {s =
+ table {
+ Sg => \\g,c => prepCase c ++ genForms "ce" "cette" ! g ; ---- cet ; là
+ Pl => \\_,_ => "ces"
+ }
+ } ;
+---b that_NP = makeNP ["cela"] Masc Sg ;
+ there7from_Adv = ss ["de là"] ;
+ there7to_Adv = ss "là" ; --- y
+ there_Adv = ss "là" ;
+ therefore_PConj = ss "donc" ;
+---b these_NP = makeNP ["ceux-ci"] Masc Pl ;
+ they_Pron = mkPronoun
+ "ils" "les" "leur" "eux" "leur" "leur" "leurs"
+ Masc Pl P3 ;
+ this_Quant = {s =
+ table {
+ Sg => \\g,c =>
+ prepCase c ++
+ genForms (pre {"ce" ; "cet" / voyelle}) "cette" ! g ; --- ci
+ Pl => \\_,_ => "ces"
+ }
+ } ;
+---b this_NP = pn2np (mkPN ["ceci"] Masc) ;
+---b those_NP = makeNP ["ceux-là"] Masc Pl ;
+ through_Prep = mkPreposition "par" ;
+ too_AdA = ss "trop" ;
+ to_Prep = complDat ;
+ under_Prep = mkPreposition "sous" ;
+ very_AdA = ss "très" ;
+ want_VV = mkVV (vouloir_V2 ** {lock_V = <>}) ;
+ we_Pron =
+ mkPronoun "nous" "nous" "nous" "nous" "notre" "notre" "nos"
+ Masc Pl P1 ;
+ whatSg_IP =
+ {s = \\c => prepCase c ++ "quoi" ; a = a}
+ where {a = aagr Masc Sg} ;
+ whatPl_IP =
+ {s = \\c => prepCase c ++ "quoi" ; a = a}
+ where {a = aagr Masc Pl} ;
+ when_IAdv = ss "quand" ;
+ when_Subj = ss "quand" ** {m = Indic} ;
+ where_IAdv = ss "où" ;
+ which_IQuant = {
+ s = \\n,g,c =>
+ prepCase c ++ aagrForms "quel" "quelle" "quels" "quelles" ! aagr g n
+ } ;
+---b whichSg_IDet = {s = \\g,c => prepCase c ++ genForms "quel" "quelle" ! g ; n = Sg} ;
+---b whichPl_IDet = {s = \\g,c => prepCase c ++ genForms "quels" "quelles" ! g; n = Pl} ;
+ whoPl_IP = {s = \\c => prepCase c ++ "qui" ; a = aagr Masc Pl} ;
+ whoSg_IP = {s = \\c => prepCase c ++ "qui" ; a = aagr Masc Sg} ;
+ why_IAdv = ss "pourquoi" ;
+ without_Prep = mkPreposition "sans" ;
+ with_Prep = mkPreposition "avec" ;
+ yes_Utt = ss "oui" ; --- si
+---b yes_Phr = ss "oui" ; --- si
+ youSg_Pron = mkPronoun
+ "tu" (elision "t") (elision "t") "toi" "ton" (elisPoss "t") "tes"
+ Masc Sg P2 ;
+ youPl_Pron, youPol_Pron =
+ mkPronoun
+ "vous" "vous" "vous" "vous" "votre" "votre" "vos"
+ Masc Pl P2 ;
+
+}
+
diff --git a/deprecated/old-lib/resource/french/VerbFre.gf b/deprecated/old-lib/resource/french/VerbFre.gf
new file mode 100644
index 000000000..9630ec92d
--- /dev/null
+++ b/deprecated/old-lib/resource/french/VerbFre.gf
@@ -0,0 +1,4 @@
+--# -path=.:romance:abstract:../common:prelude
+
+concrete VerbFre of Verb = CatFre ** VerbRomance with
+ (ResRomance = ResFre) ;