Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -3797,29 +3797,31 @@ TEST: elles sont pas mal ainsi, voire élégantes pourrait-on dire. TEST: il y en a peu, voire très peu. TEST: car elles pénètrent dans les poumons voire le système sanguin. TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants. - - -#### Pronoms +!! +!! +!!!! Pronoms + incohérences +!! +!! __[i](p_m_enfin)__ m’enfin <<- ~>> * __[i]/conf(conf_j_y_en_qqch)__ (j’(?:en +|y +|))({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])") - -2>> =suggSimil(\2, ":1s") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":1s") # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_ne_qqch)__ (n(?:e +|’))({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)|>(?:[lmtsn]|surtout|guère|presque|même|tout|parfois|vraiment|réellement) ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet. __[i]/conf(conf_n_y_en_qqch)__ (n’(?:en|y)) ({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) -2>> =suggSimil(\2, ":(?:[123][sp]|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_ne_pronom_qqch)__ - (ne l(?:es? +|a +|’))({w_1}) @@0,$ + (ne (?:l(?:es? +|eur +|a +|’)|[nv]ous))({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) -2>> =suggSimil(\2, ":(?:[123][sp]|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_me_te_se_qqch)__ ([mts]e +(?:les? |la |l’|))(?!voi(?:là|ci))({w_1}) @@0,$ <<- not re.search("(?i)^se que?", \0) @@ -3864,10 +3866,11 @@ TEST: il est normal de ne presque pas payer des gens qui effectuent un travail TEST: j’ai l’impression de ne même pas savoir ce qu’est un « juif français ». TEST: C’que j’comprends, c’est qu’il y a des limites à ce qu’on peut supporter. TEST: la tentation pour certains médias de ne tout simplement pas rémunérer notre travail si celui-ci n’est finalement pas publié. TEST: Ne parfois pas être celui qui sabote l’ambiance. + !! !! !!!! Formes verbales sans sujet !! @@ -4604,10 +4607,14 @@ (d[eouû]\w+|cr[ouû]\w+|pens\w+|imagin\w+|estim\w+) (l(?:eur|ui)|nous|vous) être @@0,w <<- morph(\1, ">(?:croire|devoir|estimer|imaginer|penser) ") ~2>> * __[i](p_en_partie)__ (en partie) ({w_2}) @@0,$ <<- morph(\1, ":(?:R|D|[123]s|X)", False) ~1>> * +__[i](p_en_plus)__ + en plus + <<- morph(word(1), ":A", False, True) ~>> en + <<- __else__ ~>> * __[i](p_en_quelques_tps1)__ (en quelques (?:années|décennies|semaines|heures|minutes)) +({w_2}) @@0,$ <<- not morph(\2, ":[AQ]:[ef]:[si]", False) ~1>> * __[i](p_en_quelques_tps2)__ (en quelques (?:jours|mois|trimestres|semestres|siècles|millénaires)) +({w_2}) @@0,$ @@ -9724,53 +9731,156 @@ !!! !!! -!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”. +!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”. !!! !!! # Brainfuck (ici, prudence !) -__[i](p_pro_per_obj01)__ ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> > -__[i](p_pro_per_obj02)__ ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> > -__[i](p_pro_per_obj03)__ [mts]e +l(?:a|es?) <<- ~>> > -__[i](p_pro_per_obj04)__ [nmsl]’(?:en|y) <<- ~>> > -__[i](p_pro_per_obj05)__ l(?:a|es?) +(?:lui|en) <<- ~>> > -__[i](p_pro_per_obj06)__ lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> > -__[i](p_pro_per_obj07)__ leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> > -__[i](p_pro_per_obj08)__ (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~1>> > -__[i](p_pro_per_obj09)__ (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$ - <<- \1 == "le" and not morph(\2, ":N.*:[me]:[si]") ~1>> > - <<- \1 == "la" and not morph(\2, ":N.*:[fe]:[si]") ~1>> > - <<- \1 == "les" and not morph(\2, ":N.*:.:[pi]") ~1>> > -__[i](p_pro_per_obj10)__ (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> > -__[i](p_pro_per_obj11)__ ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> > -__[i](p_pro_per_obj12)__ (?> > -__[i](p_pro_per_obj13)__ (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> > -__[i](p_pro_per_obj14)__ (?> > -__[i](p_pro_per_obj15)__ (?> > -__[i](p_pro_per_obj16)__ ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> > -__[i](p_pro_per_obj17)__ (?> > -__[i](p_pro_per_obj18)__ (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> > -__[i](p_pro_per_obj19)__ (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> > -__[i](p_pro_per_obj20)__ (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> > -__[i](p_pro_per_obj21)__ (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> > -__[s](p_pro_per_obj22)__ [lL]’a <<- ~>> > a -__[i](p_pro_per_obj23)__ (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> > -__[i](p_pro_per_obj24)__ (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> > -__[i](p_pro_per_obj25)__ (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> > -__[i](p_pro_per_obj26)__ (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> > -__[i](p_pro_per_obj27)__ (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- isStart() ~1>> > -__[i](p_pro_per_obj28)__ (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> > -__[i](p_pro_per_obj29)__ (t’(?:en|y)) ({w_2}) @@0,$ <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> > -__[i](p_pro_per_obj30)__ (t’)({w_2}) @@0,$ <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> > -__[i>(p_pro_per_obj31)__ ne [mtsl]’ <<- ~>> > -__[i>(p_pro_per_obj32)__ [mts]e +l’ <<- ~>> > -__[i>(p_pro_per_obj33)__ [nm]’ <<- ~>> > -__[i](p_pro_per_obj34)__ [nmts]e <<- ~>> > -__(p_pro_per_obj35)__ > +> <<- ~>> > +__[i](p_pro_per_obj01)__ + (ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y)) +({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i](p_pro_per_obj02)__ + (ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y)))) +({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i](p_pro_per_obj03)__ + ([mts]e +l(?:a|es?)) +({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i](p_pro_per_obj04)__ + ([nmsl]’(?:en|y)) +({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i](p_pro_per_obj05)__ + (l(?:a|es?) +(?:lui|en)) +({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i](p_pro_per_obj06)__ + (lui +(?:la|les?|en|y)) +({w_1}) @@0,$ + <<- not morph(word(-1), ":R", False, True) ~1>> * + <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj07)__ + (leur +(?:en|y)) +({w_1}) @@0,$ + <<- not morph(word(-1), ":R", False, False) ~1>> * + <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj08)__ + (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) +({w_1}) @@*,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +__[i](p_pro_per_obj09)__ + (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$ + <<- (\1 == "le" and not morph(\2, ":N.*:[me]:[si]")) + or (\1 == "la" and not morph(\2, ":N.*:[fe]:[si]")) + or (\1 == "les" and not morph(\2, ":N.*:.:[pi]")) ~1>> * + <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj10)__ + (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1}) @@*,$ + <<- not morph(word(-1), ":R", False, False) ~1>> * + <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj11)__ + ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1}) @@*,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +__[i](p_pro_per_obj12)__ + (?> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +__[i](p_pro_per_obj13)__ + (?:tu|il|on) (en) +({w_1}) @@w,$ + <<- not morph(word(-1), ":[123]s", False, False) ~1>> * + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj14)__ + (?> * + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj15)__ + (?> * + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj16)__ + ils (en) +({w_1}) @@4,$ + <<- not morph(word(-1), ":3p", False, False) ~1>> * + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj17)__ + (?> * + <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj18)__ + (le) ({w_2}) @@0,3 + <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> * + <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj19)__ + (la) ({w_2}) @@0,3 + <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> * + <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj20)__ + (l’)({w_2}) @@0,2 + <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> * + <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)") +__[i](p_pro_per_obj21)__ + (leur) ({w_2}) @@0,5 + <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> * + <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)") +__[s](p_pro_per_obj22)__ + [lL]’(a) @@$ + <<- =>> select(\1, ":V") + <<- ~>> " a" +__[i](p_pro_per_obj23)__ + (nous) ({w_2}) @@0,5 + <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|1p)") =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +__[i](p_pro_per_obj24)__ + (vous) ({w_2}) @@0,5 + <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|2p)") =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +__[i](p_pro_per_obj25)__ + (?:à|de) ([nv]ous|lui|les?|en) (?!qui)({w_2}) @@w,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i](p_pro_per_obj26)__ + (s’)({w4}) @@0,2 + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +__[i](p_pro_per_obj27)__ + (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +)({w_2}) @@*,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- isStart() ~1>> * +__[i](p_pro_per_obj28)__ + (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +__[i](p_pro_per_obj29)__ + (t’(?:en|y)) ({w_2}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> * +__[i](p_pro_per_obj30)__ + (t’)({w_2}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> * +__[i>(p_pro_per_obj31)__ + (ne [mtsl]’)({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i>(p_pro_per_obj32)__ + ([mts]e +l’)({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- ~1>> * +__[i>(p_pro_per_obj33)__ + [nm]’({w_1}) @@2 + <<- morph(\1, ":(?:[123][sp]|P|Y)", False) =>> select(\1, ":(?:[123][sp]|P|Y)") + <<- ~>> " \1" +__[i](p_pro_per_obj34)__ + ([nmts]e +)({w_1}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- __also__ ~1>> * +#__(p_pro_per_obj35)__ +# > +> +# <<- ~>> > # Fin du Brainfuck !! @@ -9798,12 +9908,12 @@ TEST: Nous les donnons {{a}} ces gens. TEST: j’arrive {{a}} la gare #### CONFUSION fasse / face -__ +(face)(?! à) @@$ <<- -1>> fasse # Confusion probable. Pour le subjonctif de “faire”, écrivez “fasse”. +#__ +(face)(?! à) @@$ <<- -1>> fasse # Confusion probable. Pour le subjonctif de “faire”, écrivez “fasse”. TEST: j’ai peur qu’il ne leur {{face}} quelque chose de mal #### CONFUSION ÊTRE / AVOIR @@ -9884,12 +9994,12 @@ TEST: Mieux vaut {{consacré}} son temps à des occupations utiles. __[i]/infi(infi_à)__ - à +> +({w_2}(?:ée?|ez)) @@$ - <<- morphex(\1, ":V1", ":[NM]") and not \1.istitle() and not before("> +$") + à +({w_2}(?:ée?s?|ez|ai[st]?)) @@$ + <<- morphex(\1, ":V1", ":[NM]") and not \1.istitle() and not before(r"(?i)\b(?:les|en) +$") -1>> =suggVerbInfi(@) # Le verbe devrait être à l’infinitif. TEST: elle parvenait à y {{songez}} souvent TEST: je vais à Rodez. @@ -9901,11 +10011,11 @@ TEST: Ils ont beau {{consacré}} le plus clair de leur temps à ce projet, ça n’avance guère. __[i]/infi(infi_par_pour_sans)__ - (?:p(?:a|ou)r|sans) +> +({w_2}(?:ée?s?|ai[st]?|ez)) @@$ + (?:p(?:a|ou)r|sans) +({w_2}(?:ée?s?|ai[st]?|ez)) @@$ <<- morphex(\1, ":[Q123][sp]?", ":Y") -1>> =suggVerbInfi(@) # Le verbe devrait être à l’infinitif. TEST: pour s’y {{donnait}} le plus souvent. @@ -9993,11 +10103,11 @@ TEST: toi qui n’y {{connait}} rien, ne nous ennuie pas avec tes théories. ## 3sg __[i]/conj(conj_il)__ - (il) +({w_1}) @@0,$ + (?> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier. <<- __also__ and morph(\2, ":3p", False) -1>> ils # Accord avec « \2 ». __[i]/conj(conj_il_pronom)__ (il) +> +({w_1}) @@0,$ @@ -10157,11 +10267,11 @@ TEST: avec toi qui ne sais rien de rien, mieux {{vaux}} ne rien dire. TEST: Mais là-bas mieux {{valais}} ouvrir sa gueule que se taire. __[i]/conj(conj_personne_aucun_rien_nul)__ - (personne|aucun|rien|nul(?:le|)) +(?:qui +|)> +({w_1}) @@0,$ + (personne|aucun|rien|nul(?:le|)) +(?:qui +|)({w_1}) @@0,$ <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True) and not( \1.endswith("ien") and before("> +$") and morph(\2, ":Y", False) ) -2>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier. TEST: Personne ne {{peux}} me le dire. @@ -10185,11 +10295,11 @@ TEST: un des ingénieurs {{vinrent}} nous dire quoi faire. TEST: une des femmes présente ses résultats. __[i]/conj(conj_un_une_des_pronom)__ - (une? des {w_2}) +(?:qui +>? *|> +)({w_1}) @@0,$ + (une? des {w_2}) +qui +({w_1}) @@0,$ <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True) -2>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier. TEST: un des membres présents au conseil {{demandent}} un vote à bulletin secret TEST: une des femmes de ce conseil ne {{céderaient}} jamais au chantage. @@ -10270,19 +10380,19 @@ TEST: Une partie de ces propositions étaient naïves ## 1pl __[i]/conj(conj_nous_pronom)__ - ^ *nous +> +({w1}) @@$ + ^ *nous +({w1}) @@$ <<- morphex(\1, ":V", ":(?:1p|3[sp])") and not after("^ +(?:je|tu|ils?|elles?|on|[vn]ous)") -1>> =suggVerb(@, ":1p") # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel. __[i]/conj(conj_nous_qui)__ - ^ *nous +qui +>? *({w1}) @@$ + ^ *nous +qui +({w1}) @@$ <<- morphex(\1, ":V", ":[13]p") and not after("^ +(?:je|tu|il|elle|on|[vn]ous)") -1>> =suggVerb(@, ":1p") # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel. __[i]/conj(conj_nous)__ - ^ *nous +(?:qui +(?:> +|)|> +)(\w+ont) @@$ + ^ *nous +(?:qui +|)(\w+ont) @@$ <<- morphex(\1, ":V", ":1p") and not after("^ +(?:ils|elles)") -1>> =suggVerb(@, ":1p") # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel. TEST: nous {{donné}} trop de considération TEST: nous vous {{donnerez}} trop de considération @@ -10290,15 +10400,15 @@ TEST: nous qui {{mourront}} pour toi. ## 2pl __[i]/conj(conj_vous_pronom)__ - ^ *vous +> +({w1}) @@$ + ^ *vous +({w1}) @@$ <<- morphex(\1, ":V", ":(?:2p|3[sp])") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)") -1>> =suggVerb(@, ":2p") # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel. __[i]/conj(conj_vous_qui)__ - ^ *vous +qui +>? *({w1}) @@$ + ^ *vous +qui +({w1}) @@$ <<- morphex(\1, ":V", ":2p") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)") -1>> =suggVerb(@, ":2p") # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel. TEST: vous {{donné}} du bonheur TEST: vous lui {{donner}} du temps @@ -10321,20 +10431,20 @@ TEST: Ils ne m’{{attends}} pas. TEST: {{Ils}} vous le {{donne}}. __[i]/conj(conj_ceux_celles_qui)__ - (ce(?:ux|lles) +qui) +>? *({w_1}) @@0,$ + (ce(?:ux|lles) +qui) +({w_1}) @@0,$ <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") -2>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier. TEST: Ceux qui {{chante}} toute la journée… TEST: Celles qui {{pense}}. __[i]/conj(conj_ceux_là_celles_ci_lesquels)__ - (ce(?:ux-(?:ci|là)|lles-(?:ci|là))|lesquel(?:le|)s)(?: +qui|) +>? *({w_1}) @@0,$ + (ce(?:ux-(?:ci|là)|lles-(?:ci|là))|lesquel(?:le|)s) (?:qui +|)({w_1}) @@0,$ <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False) and not (morph(\2, ":Y", False) and re.search(r"(?i)lesquel", \1) and not re.search(" qui |>", \0)) -2>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier. TEST: lesquels {{devienne}} des ennuyeux incomparables. @@ -10377,16 +10487,16 @@ # L’accord par syllepse est obligatoire après /la plupart/, ainsi qu’après /nombre/ et /quantité/ employés sans déterminant. L’accord se fait avec le « pseudo-complément ». __[i]/conj(conj_beaucoup_d_aucuns_la_plupart)__ - (beaucoup|d’aucuns|la plupart) +>? *({w_2}) @@0,$ + (beaucoup|d’aucuns|la plupart) +({w_2}) @@0,$ <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]|>de ", False, False) -2>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel. __[i]/conj(conj_beaucoup_d_aucuns_la_plupart_qui)__ - (beaucoup|d’aucuns|la plupart) +qui +>? *({w_2}) @@0,$ + (beaucoup|d’aucuns|la plupart) +qui +({w_2}) @@0,$ <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False) -2>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel. TEST: la plupart des hommes {{vienne}} TEST: La plupart {{admet}} @@ -10395,11 +10505,11 @@ TEST: beaucoup qui ne {{pense}} jamais à rien, mais qui ont quand même des avis sur tout. TEST: beaucoup entre la peste et le choléra. __[i]/conj(conj_certains_tous_plusieurs)__ - (?? *({w_2}) @@0,$ + (?> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel. TEST: certains {{prenne}} leur temps TEST: Plusieurs qui {{pense}} que c’est une arnaque se sont quand même trompés. @@ -10549,11 +10659,11 @@ #### NOMS PROPRES # 3sg __[s]/conj(conj_nom_propre)__ - ([A-ZÉÈ][\w-]+) +>? *({w_1}) @@0,$ + ([A-ZÉÈ][\w-]+) +({w_1}) @@0,$ <<- not before(r"\b(?:et |ou |[dD][eu] |ni |[dD]e l’) *$") and morph(\1, ":M", False) and morphex(\2, ":[123][sp]", ":(?:G|3s|3p!|P|M|[AQ].*:[si])") and not morph(word(-1), ":[VRD]", False, False) and not before(r"([A-ZÉÈ][\w-]+), +([A-ZÉÈ][\w-]+), +$") and not (morph(\2, ":3p", False) and word(-1)) -2>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier. @@ -10567,11 +10677,11 @@ TEST: Des femmes de l’administration Obama y racontent qu’elles ont constaté qu’il leur arrivait régulièrement de ne pas être invitées # 3pl __[s]/conj(conj_nom_propre_et_nom_propre)__ - (?? *({w_1}) @@0,w,$ + (?> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 et \2 ». Le verbe devrait être à la 3ᵉ personne du pluriel. @@ -10759,11 +10869,11 @@ __[i]/conf(conf_avoir_sujet_participe_passé)__ ({avoir})-(?:je|tu|ils?|elles?|on) +({ppas}) @@0,$ <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _ # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”. __[i]/conf(conf_sujet_avoir_participe_passé)__ - (?:j’|je |tu |ils? |elles? |on ) *>? *({avoir}) +({ppas}) @@*,$ + (?:j’|je |tu |ils? |elles? |on ) *({avoir}) +({ppas}) @@*,$ <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _ # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”. TEST: {{Ait}}-il arrivé à ses fins ? TEST: je n’{{avais}} pas parti avec eux. TEST: Avais-je partie liée avec lui ? @@ -10779,55 +10889,51 @@ # conditionnel / futur __[i]/vmode(vmode_j_aimerais_vinfi)__ j(?:e +|’)(aimerai|préf[éè]rerai|apprécierai|voudrai|souhaiterai) +({w_1}) @@w,$ - <<- morphex(\2, ":[YX]|>y ", "R") -1>> \1s # Si vous exprimez un souhait, utilisez le conditionnel et non le futur. -__[i>/vmode(vmode_j_aimerais_pronom)__ - j(?:e +|’)(aimerai|préf[éè]rerai|apprécierai|voudrai|souhaiterai) +(?:que? |>) @@w - <<- -1>> \1s # Si vous exprimez un souhait, utilisez le conditionnel et non le futur. + <<- morphex(\2, ":[YX]|>(?:y|ne|que?) ", ":R") -1>> \1s # Si vous exprimez un souhait, utilisez le conditionnel et non le futur. TEST: J’{{aimerai}} savoir ce dont il retourne. TEST: dans tous les cas j’{{aimerai}} ne rien savoir TEST: Je {{voudrai}} qu’il soit déjà là. TEST: J’aimerai ces cours-là autant que les autres. TEST: J’aimerai la danse et la musique, puisque vous l’exigez. -__[i>/vmode(vmode_j_aurais_aimé_que_avoir_être1)__ - j’(aurai) +(?:aimé|souhaité|préféré|voulu) +(?:que? |ne |> ) @@2 - <<- -1>> aurais|eusse # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… » -__[i]/vmode(vmode_j_aurais_aimé_que_avoir_être2)__ - j’(aurai) +(?:aimé|souhaité|préféré|voulu) +(?:[nmtsl]’|)({infi}) @@2,$ - <<- morph(\2, ":Y", False) +__[i]/vmode(vmode_j_aurais_aimé_que_avoir_être)__ + j’(aurai) +(?:aimé|souhaité|préféré|voulu) +(que?|ne|{infi}) @@2,$ + <<- morph(\2, ":Y|>(?:ne|que?) ", False) -1>> aurais|eusse # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… » TEST: J’{{aurai}} aimé nous offrir ce magnifique cadeau. TEST: j’{{aurai}} voulu être un artiste. TEST: j’{{aurai}} préféré ne pas avoir à l’entendre. +TEST: j’{{aurai}} préféré l’entendre un autre jour. +TEST: j’{{aurai}} aimé que vous m’en parliez. TEST: Quand j’en aurai fini avec eux, vous aurez du mal à les reconnaître. TEST: Quand j’aurai fini ce boulot, je ne sais pas ce que je ferai. TEST: Quand j’aurai soif et faim, je m’arrêterai. # Si suivi du conditionnel ou du subjonctif __[i]/vmode(vmode_si_sujet1)__ - si +({w1}) +>? *({w_2}) @@w,$ + si +({w1}) +({w_2}) @@w,$ <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":[SK]", ":(?:G|V0|I)") and isStart() -2>> _ # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif. __[i]/vmode(vmode_si_sujet2)__ - (?:si [jt]’|s’ils? )>? *({w_2}) @@$ + (?:si [jt]’|s’ils? +)({w_2}) @@$ <<- morphex(\1, ":[SK]", ":(?:G|V0|I)") and isStart() -1>> _ # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif. TEST: Si Pierre {{avancerait}} sa voiture de quelques mètres, ça nous permettrait de passer. TEST: s’ils ne {{mangeraient}} pas tous les jours, ils seraient moins gros. # Dès que + indicatif __[i]/vmode(vmode_dès_que)__ - dès +que? +({w1}) +>? *({w_2}) @@w,$ + dès +que? +({w1}) +({w_2}) @@w,$ <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":S", ":[IG]") -2>> =suggVerbMode(@, ":I", \1) # Ce verbe ne devrait pas être au subjonctif. # <<- morph(\1, ":(?:Os|M)", False) and morph(\2, ":K", False) -2>> =suggVerbMode(@, ":If", \1) # Ce verbe ne devrait pas être au conditionnel. #TEST: dès que je le {{verrais}} TEST: dès qu’il le {{voie}} @@ -10834,11 +10940,11 @@ TEST: donnant à entendre qu’il avait l’intention de violer Laura dès qu’il en aurait l’occasion # verbe que + subjonctif __[i]/vmode(vmode_qqch_que_subjonctif1)__ - (afin|pour|quoi|(?:perm|fa|v[oe]|ordonn|exig|désir|dout|suff|préf[éè]r)\w+) +que? +({w1}) +>? *({w_2}) @@0,w,$ + (afin|pour|quoi|(?:perm|fa|v[oe]|ordonn|exig|désir|dout|suff|préf[éè]r)\w+) +que? +({w1}) +({w_2}) @@0,w,$ <<- morph(\1, ">(?:afin|pour|quoi|permettre|falloir|vouloir|ordonner|exiger|désirer|douter|préférer|suffire) ", False) and morph(\2, ":(?:Os|M)", False) and morphex(\3, ":I", ":[GYS]") and not (morph(\1, ">douter ", False) and morph(\3, ":(?:If|K)", False)) -3>> =suggVerbMode(@, ":S", \2) # Ce verbe devrait être au subjonctif. @@ -10852,21 +10958,21 @@ TEST: il ne fait aucun doute qu’Amazon le sait. TEST: quoi que nous autres hommes ayons pu faire __[i]/vmode(vmode_qqch_que_subjonctif2)__ - (?:à condition|pour peu|il > peut) +que? +({w1}) +>? *({w_2}) @@w,$ + (?:à condition|pour peu|il +peut) +que? +({w1}) +({w_2}) @@w,$ <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":", ":[GYS]") -2>> =suggVerbMode(@, ":S", \1) # Ce verbe devrait être au subjonctif. TEST: à condition qu’il {{finit}} son boulot. TEST: pour peu qu’il {{prend}} son devoir sérieux… TEST: il se peut que nous {{avons}} tort. # indicatif nécessaire __[i]/vmode(vmode_sujet_indicatif)__ - ^ *(je|j’(?:en|y)|tu|ils?|elles?|on|nous|vous) +>? *({w_2}) @@*,$ + ^ *(je|j’(?:en|y)|tu|ils?|elles?|on|nous|vous) +({w_2}) @@*,$ <<- morphex(\2, ":S", ":[GIK]") and not re.search("^e(?:usse|û[mt]es|ût)", \2) -2>> =suggVerbMode(@, ":I", \1) # Ce verbe ne devrait pas être au subjonctif. __[i]/vmode(vmode_j_indicatif)__ ^ *j’({w_2}) @@$ <<- morphex(\1, ":S", ":[GIK]") and \1 != "eusse" -1>> =suggVerbMode(@, ":I", "je") # Ce verbe ne devrait pas être au subjonctif. @@ -10877,11 +10983,11 @@ TEST: j’{{aie}} faim # Après que + indicatif __[i]/vmode(vmode_après_que_indicatif)__ - après que? ({w_2}) +>? *({w_2}) @@w,$ + après que? ({w_2}) +({w_2}) @@w,$ <<- morph(\1, ":(?:Os|M)", False) and (morph(\2, ":V.*:S") or morph(\2, ":V0e.*:S", False)) -2>> =suggVerbMode(@, ":I", \1) # Après « après que », le verbe s’emploie pas au subjonctif mais à l’indicatif, si l’action s’est déroulée de façon certaine. TEST: Après qu’il {{ait}} allé