diff --git a/src/french/DiffFre.gf b/src/french/DiffFre.gf index c62ad5181..3294224c4 100644 --- a/src/french/DiffFre.gf +++ b/src/french/DiffFre.gf @@ -4,14 +4,16 @@ instance DiffFre of DiffRomance - [ imperClit, invertedClause, verbHyphen, - iAdvQuestionInv - ] + iAdvQuestionInv, + -- for comparative forms + ComparAgr, af2compar, aagr2compar + ] = open CommonRomance, PhonoFre, Prelude in { flags optimize=noexpand ; coding=utf8 ; -- flags optimize=all ; - param + param Prepos = P_de | P_a | PNul ; VType = VTyp VAux VBool ; -- True means that -t- is required as in va-t-il, alla-t-il VAux = VHabere | VEsse | VRefl ; @@ -23,7 +25,7 @@ instance DiffFre of DiffRomance - [ prepCase : Case -> Str = \c -> case c of { Nom => [] ; - Acc => [] ; + Acc => [] ; CPrep P_a => "à" ; CPrep P_de => elisDe ; CPrep PNul => [] @@ -73,9 +75,9 @@ instance DiffFre of DiffRomance - [ ---- pronArg = pronArgGen Neg ; --- takes more space and time - pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str * Bool = + pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str * Bool = \n,p,acc,dat -> - let + let pacc = case acc of { CRefl => elision "s" ; --- use of reflPron incred. expensive @@ -98,9 +100,9 @@ instance DiffFre of DiffRomance - [ -- Positive polarity is used in the imperative: stressed for 1st and -- 2nd persons. - pronArgGen : RPolarity -> Number -> Person -> CAgr -> CAgr -> Str * Str = + pronArgGen : RPolarity -> Number -> Person -> CAgr -> CAgr -> Str * Str = \b,n,p,acc,dat -> - let + let cas : Person -> Case -> Case = \pr,c -> case of { => CPrep P_de ; --- encoding in argPron _ => c @@ -123,9 +125,9 @@ instance DiffFre of DiffRomance - [ _ => } ; - mkImperative b p vp = - \\pol,g,n => - let + mkImperative b p vp = + \\pol,g,n => + let agr = Ag g n p ; num = if_then_else Number b Pl n ; verb = vp.s.s ! vImper num p ; @@ -135,14 +137,14 @@ instance DiffFre of DiffRomance - [ => <"toi",elision "t",True> ; _ => <"vous","vous",True> } ; - _ => <[],[],False> + _ => <[],[],False> } ; clpr = ; compl = vp.comp ! agr ++ vp.ext ! pol in case pol of { - RPos => verb ++ if_then_Str refl.p3 bindHyphen [] ++ refl.p1 ++ - if_then_Str clpr.p2 bindHyphen [] ++ vp.clit3.imp ++ + RPos => verb ++ if_then_Str refl.p3 bindHyphen [] ++ refl.p1 ++ + if_then_Str clpr.p2 bindHyphen [] ++ vp.clit3.imp ++ compl ; RNeg _ => neg.p1 ++ refl.p2 ++ clpr.p1 ++ verb ++ neg.p2 ++ compl } ; @@ -157,6 +159,11 @@ instance DiffFre of DiffRomance - [ bindHyphen : Str = BIND ++ "-" ++ BIND ; + piuComp = "plus" ; + ComparAgr = AAgr ; + af2compar = aform2aagr ; + aagr2compar = id AAgr ; + CopulaType = {} ; selectCopula = \isEstar -> copula ; serCopula = <> ; @@ -175,7 +182,7 @@ instance DiffFre of DiffRomance - [ clitInf _ cli inf = cli ++ inf ; - relPron : Bool => AAgr => Case => Str = \\b,a,c => + relPron : Bool => AAgr => Case => Str = \\b,a,c => let lequel = case of { => "duquel" ; @@ -215,8 +222,8 @@ instance DiffFre of DiffRomance - [ _ => pron } ; - argPron : Gender -> Number -> Person -> Case -> Str = - let + 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 @@ -226,8 +233,8 @@ instance DiffFre of DiffRomance - [ CPrep P_a => leur ; _ => eux } ; - in - \g,n,p -> case of { + in + \g,n,p -> case of { <_,Sg,P1> => cases (elision "m") "moi" ; <_,Sg,P2> => cases (elision "t") "toi" ; <_,Pl,P1> => \_ -> "nous" ; @@ -280,7 +287,7 @@ instance DiffFre of DiffRomance - [ polNegDirSubj = RNeg True ; - invertedClause : + invertedClause : VType -> (RTense * Anteriority * Number * Person) -> Bool -> (Str * Str) -> Str -> (clit,fin,inf,compl,subj,ext : Str) -> Str = \vtyp,vform,hasClit,neg,bindHyph,clit,fin,inf,compl,subj,ext -> case of { diff --git a/src/french/DocumentationFreFunctor.gf b/src/french/DocumentationFreFunctor.gf index dc10b42bb..8dd61dcc8 100644 --- a/src/french/DocumentationFreFunctor.gf +++ b/src/french/DocumentationFreFunctor.gf @@ -1,6 +1,6 @@ --# -path=.:../abstract:../common -incomplete concrete DocumentationFreFunctor of Documentation = CatFre ** open +incomplete concrete DocumentationFreFunctor of Documentation = CatFre ** open Terminology, -- the interface to be instantiated ResFre, CommonRomance, @@ -19,22 +19,22 @@ lincat Definition = {s : Str} ; Document = {s : Str} ; Tag = {s : Str} ; - + {- -} --# notpresent oper heading : N -> Str = \n -> (nounHeading n).s ; - + lin InflectionN, InflectionN3, InflectionN3 = \noun -> { t = "n" ; - s1 = heading1 (heading noun_Category ++ + s1 = heading1 (heading noun_Category ++ case noun.g of { - Masc => "("+heading masculine_Parameter+")" ; + Masc => "("+heading masculine_Parameter+")" ; Fem => "("+heading feminine_Parameter+")" }) ; - s2 = frameTable ( + s2 = frameTable ( tr (th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ tr (td (noun.s ! Sg) ++ td (noun.s ! Pl)) ) @@ -45,8 +45,8 @@ lin s1 = heading1 (nounHeading adjective_Category).s ; s2 = frameTable ( tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++ - tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++ - tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl))) + tr (th (heading masculine_Parameter) ++ td (adj.s ! genNum2Aform Masc Sg) ++ td (adj.s ! genNum2Aform Masc Pl)) ++ + tr (th (heading feminine_Parameter) ++ td (adj.s ! genNum2Aform Fem Sg) ++ td (adj.s ! genNum2Aform Fem Pl)) ) } ; @@ -141,23 +141,23 @@ lin MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph MkTag i = ss i.t ; -oper +oper verbExample : CatFre.Cl -> Str = \cl -> - (S.mkUtt cl).s + (S.mkUtt cl).s ++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent ; - inflVerb : Verb -> Str = \verb -> - let + inflVerb : Verb -> Str = \verb -> + let vfin : CommonRomance.VF -> Str = \f -> - verb.s ! f ; + verb.s ! f ; ttable : TMood -> Str = \tense -> frameTable ( - tr (th "" ++ - th (heading singular_Parameter) ++ - th (heading plural_Parameter)) ++ - tr (th "1.p" ++ + tr (th "" ++ + th (heading singular_Parameter) ++ + th (heading plural_Parameter)) ++ + tr (th "1.p" ++ td (vfin (VFin tense Sg P1)) ++ td (vfin (VFin tense Pl P1))) ++ tr (th "2.p" ++ @@ -170,11 +170,11 @@ oper ttable2 : (Mood -> TMood) -> Str = \f -> frameTable ( - tr (intagAttr "th" "colspan=2" "" ++ - th (heading indicative_Parameter) ++ - th (heading conjunctive_Parameter)) ++ + tr (intagAttr "th" "colspan=2" "" ++ + th (heading indicative_Parameter) ++ + th (heading conjunctive_Parameter)) ++ tr (intagAttr "th" "rowspan=3" (heading singular_Parameter) ++ - th "1.p" ++ + th "1.p" ++ td (vfin (VFin (f Indic) Sg P1)) ++ td (vfin (VFin (f Conjunct) Sg P1))) ++ tr (th "2.p" ++ @@ -182,7 +182,7 @@ oper td (vfin (VFin (f Conjunct) Sg P2))) ++ tr (th "3.p" ++ td (vfin (VFin (f Indic) Sg P3)) ++ - td (vfin (VFin (f Conjunct) Sg P3))) ++ + td (vfin (VFin (f Conjunct) Sg P3))) ++ tr (intagAttr "th" "rowspan=3" (heading plural_Parameter) ++ th "1.p" ++ td (vfin (VFin (f Indic) Pl P1)) ++ @@ -190,7 +190,7 @@ oper tr (th "2.p" ++ td (vfin (VFin (f Indic) Pl P2)) ++ td (vfin (VFin (f Conjunct) Pl P2))) ++ - tr (th "3.p" ++ + tr (th "3.p" ++ td (vfin (VFin (f Indic) Pl P3)) ++ td (vfin (VFin (f Conjunct) Pl P3))) ) ; @@ -209,17 +209,17 @@ oper paragraph (vfin (VInfin False)) ++ heading2 (heading imperative_Parameter) ++ frameTable ( - tr (th "sg.2.p" ++ td (vfin (VImper SgP2))) ++ - tr (th "pl.1.p" ++ td (vfin (VImper PlP1))) ++ + tr (th "sg.2.p" ++ td (vfin (VImper SgP2))) ++ + tr (th "pl.1.p" ++ td (vfin (VImper PlP1))) ++ tr (th "pl.2.p" ++ td (vfin (VImper PlP2))) ) ++ heading2 (heading participle_Parameter) ++ frameTable ( tr (th (heading past_Parameter) ++ td (vfin (VPart Masc Sg))) ++ tr (th (heading present_Parameter) ++ td (vfin VGer)) - ) ; + ) ; {- --# notpresent --} +-} } diff --git a/src/french/LexiconFre.gf b/src/french/LexiconFre.gf index c94efccce..4257d8ca3 100644 --- a/src/french/LexiconFre.gf +++ b/src/french/LexiconFre.gf @@ -1,11 +1,11 @@ --# -path=.:../romance:../common:../abstract:../../prelude -concrete LexiconFre of Lexicon = CatFre ** +concrete LexiconFre of Lexicon = CatFre ** open (M = MorphoFre), PhonoFre, ParadigmsFre, IrregFre in { -flags +flags coding=utf8 ; - optimize=values ; + optimize=values ; lin airplane_N = regGenN "avion" masculine ; @@ -17,8 +17,8 @@ lin baby_N = regGenN "bébé" masculine ; bad_A = prefA (mkADeg (regA "mauvais") (regA "pire")) ; bank_N = regGenN "banque" feminine ; - beautiful_A = - prefA (compADeg (mkA "beau" "bel" "belle" "beaux" "bellement")) ; + beautiful_A = + prefA (mkA "beau" "bel" "belle" "beaux" "bellement") ; become_VA = mkVA devenir_V ; beer_N = regGenN "bière" feminine ; beg_V2V = mkV2V (regV "demander") accusative dative ; @@ -87,7 +87,7 @@ lin girl_N = regGenN "fille" feminine ; glove_N = regGenN "gant" masculine ; gold_N = regGenN "or" masculine ; - good_A = prefA (mkADeg (mkA "bon" "bonne" "bons" "bien") + good_A = prefA (mkADeg (mkA "bon" "bonne" "bons" "bien") (mkA "meilleur" "meilleure" "meilleurs" "mieux")) ; go_V = aller_V ; green_A = regA "vert" ; @@ -104,7 +104,7 @@ lin industry_N = regGenN "industrie" feminine ; iron_N = regGenN "fer" masculine ; king_N = regGenN "roi" masculine ; - know_V2 = connaître_V2 ; + know_V2 = connaître_V2 ; know_VQ = mkVQ (lin V savoir_V2) ; know_VS = mkVS (lin V savoir_V2) ; lake_N = regGenN "lac" masculine ; @@ -115,7 +115,7 @@ lin like_V2 = dirV2 (regV "aimer") ; listen_V2 = dirV2 (regV "écouter") ; live_V = v2V vivre_V2 ; - long_A = compADeg (mkA "long" "longue" "longs" "longuement") ; + long_A = mkA "long" "longue" "longs" "longuement" ; lose_V2 = perdre_V2 ; love_N = regGenN "amour" masculine ; love_V2 = dirV2 (regV "aimer") ; @@ -128,12 +128,12 @@ lin mountain_N = regGenN "montagne" feminine ; music_N = regGenN "musique" feminine ; narrow_A = regA "étroit" ; - new_A = - prefA (compADeg (mkA "nouveau" "nouvel" "nouvelle" "nouveaux" "nouvellement")) ; + new_A = + prefA (mkA "nouveau" "nouvel" "nouvelle" "nouveaux" "nouvellement") ; newspaper_N = regGenN "journal" masculine ; oil_N = regGenN "huile" feminine ; - old_A = - prefA (compADeg (mkA "vieux" "vieil" "vieille" "vieux" "vieillement")) ; + old_A = + prefA (mkA "vieux" "vieil" "vieille" "vieux" "vieillement") ; open_V2 = ouvrir_V2 ; paint_V2A = mkV2A (v2V peindre_V2) accusative (mkPrep "en") ; paper_N = regGenN "papier" masculine ; @@ -193,7 +193,7 @@ lin 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") ; + thick_A = mkA "épais" "épaisse" "épais" "épaissement" ; thin_A = regA "fin" ; train_N = regGenN "train" masculine ; travel_V = regV "voyager" ; @@ -203,13 +203,13 @@ lin understand_V2 = comprendre_V2 ; university_N = regGenN "université" feminine ; village_N = regGenN "village" masculine ; - wait_V2 = attendre_V2 ; + wait_V2 = attendre_V2 ; 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") ; + white_A = mkA "blanc" "blanche" "blancs" "blanchement" ; window_N = regGenN "fenêtre" feminine ; wine_N = regGenN "vin" masculine ; win_V2 = dirV2 (regV "gagner") ; ---- vaincre @@ -309,7 +309,7 @@ lin wing_N = regN "aile" ; worm_N = regN "ver" ; year_N = regN "an" ; --- année - bite_V2 = mordre_V2 ; + bite_V2 = mordre_V2 ; blow_V = regV "souffler" ; breathe_V = regV "respirer" ; burn_V = regV "brûler" ; diff --git a/src/french/ParadigmsFre.gf b/src/french/ParadigmsFre.gf index cccc5ac51..99facb462 100644 --- a/src/french/ParadigmsFre.gf +++ b/src/french/ParadigmsFre.gf @@ -4,12 +4,12 @@ -- -- Aarne Ranta 2001 - 2006 -- --- This is an API for the user of the resource grammar +-- 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$. +-- 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 @@ -24,23 +24,23 @@ -- separate module [``IrregFre`` ../../french/IrregFre.gf], -- which covers all irregularly inflected verbs. -resource ParadigmsFre = - open - (Predef=Predef), - Prelude, - MorphoFre, +resource ParadigmsFre = + open + (Predef=Predef), + Prelude, + MorphoFre, BeschFre, CatFre in { flags optimize=all ; coding=utf8 ; ---2 Parameters +--2 Parameters -- -- To abstract over gender names, we define the following identifiers. oper - Gender : Type ; + Gender : Type ; masculine : Gender ; feminine : Gender ; @@ -72,9 +72,9 @@ oper mkN : overload { -- The regular function uses heuristics to compute the --- plural and the gender from the singular. The plural +-- plural and the gender from the singular. The plural -- heuristic currently --- covers the cases "pas-pas", "prix-prix", "nez-nez", +-- 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. @@ -85,30 +85,30 @@ oper mkN : (foie : Str) -> Gender -> N ; --% --- In the worst case, both singular and plural forms and the gender are needed. +-- In the worst case, both singular and plural forms and the gender are needed. mkN : (oeil,yeux : Str) -> Gender -> N ; -- worst-case noun ---3 Compound nouns +--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". +-- 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 -- compound noun, e.g. numéro + de téléphone - } ; + } ; ---3 Relational nouns --- --- Relational nouns ("fille de x") need a case and a preposition. +--3 Relational nouns +-- +-- Relational nouns ("fille de x") need a case and a preposition. mkN2 : N -> Prep -> N2 ; -- e.g. fille + genitive --- The most common cases are the genitive "de" and the dative "à", +-- The most common cases are the genitive "de" and the dative "à", -- with the empty preposition. deN2 : N -> N2 ; --% @@ -126,7 +126,7 @@ oper -- $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 @@ -146,7 +146,7 @@ oper -- 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", +-- deviant endings: "banal-banale-banaux", "chinois-chinoise-chinois", -- "heureux-heureuse-heureux", "italien-italienne", "jeune-jeune", -- "amer-amère", "carré- - -carrément", "joli- - -joliment". @@ -174,7 +174,7 @@ oper mkA : A -> A -> A ; -- irregular comparison, e.g. bon-meilleur mkA : A -> CopulaType -> A -- force copula type - + } ; -- The functions create by default postfix adjectives. To switch @@ -195,7 +195,7 @@ oper --2 Adverbs -- Adverbs are not inflected. Most lexical ones have position --- after the verb. +-- after the verb. mkAdv : Str -> Adv ; -- ordinary adverb @@ -210,10 +210,10 @@ oper --2 Verbs -- --- Irregular verbs are given in the module $IrregFre$. +-- 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 @@ -222,7 +222,7 @@ oper -- -- 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 +-- that gives the third person singular present indicative and future -- (("il") "jette", "jettera") as second argument. mkV : overload { @@ -249,7 +249,7 @@ oper } ; -- The function $mkV$ gives the default compound auxiliary "avoir". --- To change it to "être", use the following function. +-- To change it to "être", use the following function. etreV : V -> V ; -- force auxiliary to be être (default avoir) @@ -261,13 +261,13 @@ oper --3 Two-place verbs -- -- Two-place verbs need a preposition, except the special case with direct object. --- (transitive verbs). +-- (transitive verbs). mkV2 = overload { mkV2 : Str -> V2 --% = \s -> dirV2 (regV s) ; mkV2 : V -> V2 -- direct transitive - = dirV2 ; + = dirV2 ; mkV2 : V -> Prep -> V2 -- e.g. se fier + genitive = mmkV2 } ; @@ -279,7 +279,7 @@ oper -- the first one or both can be absent. mkV3 : overload { - mkV3 : V -> V3 ; -- donner (+ accusative + dative) + mkV3 : V -> V3 ; -- donner (+ accusative + dative) mkV3 : V -> Prep -> V3 ; -- placer (+ accusative) + dans mkV3 : V -> Prep -> Prep -> V3 -- parler + dative + genitive } ; @@ -319,7 +319,7 @@ oper mkA2V : A -> Prep -> Prep -> A2V ; --% -- Notice: categories $AS, A2S, AV, A2V$ are just $A$, --- and the second argument is given as an adverb. Likewise +-- and the second argument is given as an adverb. Likewise -- $V0$ is just $V$. V0 : Type ; --% @@ -332,7 +332,7 @@ oper -- hidden from the document. - Gender = MorphoFre.Gender ; + Gender = MorphoFre.Gender ; Number = MorphoFre.Number ; masculine = Masc ; feminine = Fem ; @@ -361,7 +361,7 @@ oper g = case of { _ + ("e" | "ion") => Fem ; _ => Masc - } + } } ; regGenN x g = mkNomReg x g ** {lock_N = <>} ; compN : N -> Str -> N ; @@ -369,10 +369,10 @@ oper mkN = overload { mkN : Str -> N = regN ; - mkN : Str -> Gender -> N = regGenN ; + mkN : Str -> Gender -> N = regGenN ; mkN : (oeil,yeux : Str) -> Gender -> N = mk2N ; - mkN : N -> Str -> N = compN - } ; + mkN : N -> Str -> N = compN + } ; mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ; @@ -394,24 +394,24 @@ oper } ; mk4A masc fem mascpl aa = mk5A masc masc fem mascpl aa ; - mk5A masc mascv fem mascpl aa = compADeg {s = \\_ => (mkAdj' masc mascv fem mascpl aa).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ; - regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ; - prefA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ; + mk5A masc mascv fem mascpl aa = compADeg (mkAdj' masc mascv fem mascpl aa) ; + regA a = compADeg (mkAdjReg a); + prefA a = a ** {isPre = True} ; adjCopula a cop = a ** {copTyp = cop} ; 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 : Str) -> A = \sec,seche,secs -> mk4A sec seche secs (seche + "ment") ; + mkA : (sec,seche : Str) -> A = \sec,seche -> mk4A sec seche (sec + "s") (seche + "ment") ; + mkA : (banal,banale,banaux : Str) -> A = \sec,seche,secs -> mk4A sec seche secs (seche + "ment") ; mkA : (banal,banale,banaux,banalement : Str) -> A = mk4A ; mkA : (vieux,vieil,vieille,vieuxs,vieuxment : Str) -> A = mk5A ; mkA : A -> A -> A = mkADeg ; mkA : A -> CopulaType -> A = adjCopula ; }; - prefixA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ; + prefixA = prefA ; mkAdv x = ss x ** {lock_Adv = <>} ; mkAdV x = ss x ** {lock_AdV = <>} ; @@ -437,7 +437,7 @@ oper A2S, A2V : Type = A2 ; mkV0 v = v ** {lock_V0 = <>} ; - mkVS v = v ** {m = \\_ => Indic ; lock_VS = <>} ; + mkVS v = v ** {m = \\_ => Indic ; lock_VS = <>} ; subjVS v = v ** {m = \\_ => Conjunct ; lock_VS = <>} ; mkV2S = overload { @@ -471,13 +471,13 @@ oper --------------------------- obsolete - makeNP : Str -> Gender -> Number -> NP ; + makeNP : Str -> Gender -> Number -> NP ; makeNP x g n = {s = (pn2np {s=x;g= g}).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False ; lock_NP = <>} ; - regPN : Str -> PN ; + regPN : Str -> PN ; mk2PN : Str -> Gender -> PN = \x,g -> {s = x ; g = g} ** {lock_PN = <>} ; mkADeg : A -> A -> A ; - compADeg : A -> A ; + compADeg : Adj -> A ; regA : Str -> A ; mk4A : (banal,banale,banaux,banalement : Str) -> A ; @@ -486,31 +486,34 @@ oper prefA : A -> A ; adjCopula : A -> CopulaType -> A ; - mkADeg a b = - {s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ; isPre = a.isPre ; copTyp = a.copTyp ; lock_A = <>} ; - compADeg a = - {s = table {Posit => a.s ! Posit ; _ => \\f => "plus" ++ a.s ! Posit ! f} ; - isPre = a.isPre ; - copTyp = a.copTyp ; - lock_A = <>} ; + mkADeg a b = a ** { + compar = \\aagr => b.s ! aagr2aform aagr ; -- meilleur, meilleure, meilleurs, meilleures + isDeg = True } ; + compADeg a = lin A + {s = a.s ; + compar = \\_ => nonExist ; -- + isPre = False ; -- default values + copTyp = <> ; + isDeg = False + } ; mkV = overload { mkV : Str -> V = regV ; - mkV : (jeter,jette : Str) -> V = + mkV : (jeter,jette : Str) -> V = \x,y -> let v = vvf (mkVerb2Reg x y) in {s = v ; vtyp = VTyp VHabere (getVerbT v) ; lock_V = <> ; p = []} ; mkV : (jeter,jette,jettera : Str) -> V = reg3V ; mkV : V2 -> V = v2V ; mkV : (tenir,tiens,tenons,tiennent,tint,tiendra,tenu : Str) -> V - = \tenir,tiens,tenons,tiennent,tint,tiendra,tenu -> + = \tenir,tiens,tenons,tiennent,tint,tiendra,tenu -> let v = vvf (mkVerb7 tenir tiens tenons tiennent tint tiendra tenu) in {s = v ; vtyp = VTyp VHabere (getVerbT v) ; lock_V = <> ; p = []} ; mkV : (tenir,tiens,tient,tenons,tenez,tiennent,tienne,tenions,tiensI,tint,tiendra,tenu : Str) -> V - = \tenir,tiens,tient,tenons,tenez,tiennent,tienne,tenions,tiensI,tint,tiendra,tenu -> + = \tenir,tiens,tient,tenons,tenez,tiennent,tienne,tenions,tiensI,tint,tiendra,tenu -> let v = vvf (mkVerb12 tenir tiens tient tenons tenez tiennent tienne tenions tiensI tint tiendra tenu) in {s = v ; vtyp = VTyp VHabere (getVerbT v) ; lock_V = <> ; p = []} ; mkV : V -> V = \v -> v ; - mkV : V -> Str -> V + mkV : V -> Str -> V = \v,p -> v ** {p = p} ; ---- to recognize particles in dict, not yet in lincat V } ;