Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -6582,10 +6582,22 @@ en cours ~¬^(?:de|d’)$ <<- ~1:2>> * de [mes|tes|ses|nos|vos|leurs] yeux [vu|vue|vus|vues] <<- ~1:3>> * + + elle aussi @:A:[fe]:s + <<- ~1:2>> * + + elle aussi @:W¬:(?:3s|X) [|@:A:[fe]:s] + <<- ~1:2>> * + + elles aussi @:A:[fe]:p + <<- ~1:2>> * + + elle aussi @:W¬:(?:3p|X) [|@:A:[fe]:p] + <<- ~1:2>> * en lieu et place [de|des|du] <<- ~2:4>> * en l’ [absence|honneur] [de|des|du] @@ -7089,31 +7101,166 @@ ~^[A-ZÉÈÊ] et [moi|toi|lui|elle|nous|vous|eux|elles] <<- morph(\2, ":M") ~2:0>> =rewriteSubject(\2,\4) + "||" + +__purge_après_être__ + >être [bon|meilleur] marché + >être avant tout + >être cousin et cousine + >être de passage + >être du moins + >être en partie + >être frère et sœur + >être mari et femme + >être mission impossible + >être monnaie courante + >être papa et maman + >être partie [intégrante|prenante] + >être pieds et poings liés + >être pieds nus + >être père et mère + >être somme toute + >être sous peu + >être tous [deux|trois] + >être un jour + >être à jamais + >être [pas|jamais|plus|point] + <<- ~2:0>> * + + ~-ils$ [bon|meilleur] marché + ~-ils$ avant tout + ~-ils$ cousin et cousine + ~-ils$ de passage + ~-ils$ du moins + ~-ils$ en partie + ~-ils$ frère et sœur + ~-ils$ mari et femme + ~-ils$ mission impossible + ~-ils$ monnaie courante + ~-ils$ papa et maman + ~-ils$ partie [intégrante|prenante] + ~-ils$ pieds et poings liés + ~-ils$ pieds nus + ~-ils$ père et mère + ~-ils$ somme toute + ~-ils$ sous peu + ~-ils$ tous [deux|trois] + ~-ils$ un jour + ~-ils$ à jamais + ~-ils$ [pas|jamais|plus|point] + <<- morph(\1, ">V0e", 0, -4) ~2:0>> * + + ~-[nv]ous$ [bon|meilleur] marché + ~-[nv]ous$ avant tout + ~-[nv]ous$ cousin et cousine + ~-[nv]ous$ de passage + ~-[nv]ous$ du moins + ~-[nv]ous$ en partie + ~-[nv]ous$ frère et sœur + ~-[nv]ous$ mari et femme + ~-[nv]ous$ mission impossible + ~-[nv]ous$ monnaie courante + ~-[nv]ous$ papa et maman + ~-[nv]ous$ partie [intégrante|prenante] + ~-[nv]ous$ pieds et poings liés + ~-[nv]ous$ pieds nus + ~-[nv]ous$ père et mère + ~-[nv]ous$ somme toute + ~-[nv]ous$ sous peu + ~-[nv]ous$ tous [deux|trois] + ~-[nv]ous$ un jour + ~-[nv]ous$ à jamais + ~-[nv]ous$ [pas|jamais|plus|point] + <<- morph(\1, ">V0e", 0, -5) ~2:0>> * + + ~-elles$ [bon|meilleur] marché + ~-elles$ avant tout + ~-elles$ cousin et cousine + ~-elles$ de passage + ~-elles$ du moins + ~-elles$ en partie + ~-elles$ frère et sœur + ~-elles$ mari et femme + ~-elles$ mission impossible + ~-elles$ monnaie courante + ~-elles$ papa et maman + ~-elles$ partie [intégrante|prenante] + ~-elles$ pieds et poings liés + ~-elles$ pieds nus + ~-elles$ père et mère + ~-elles$ somme toute + ~-elles$ sous peu + ~-elles$ tous [deux|trois] + ~-elles$ un jour + ~-elles$ à jamais + ~-elles$ [pas|jamais|plus|point] + <<- morph(\1, ">V0e", 0, -6) ~2:0>> * + + >être beaucoup + >être bien entendu + >être dans [l’|leur|son] ensemble + >être [à|en] ce moment ?précis¿ + >être [à|en] cet instant ?précis¿ + >être sans peine + >être un [moment|peu|minimum] + >être un petit peu + >être un tout petit peu + <<- morph(>1, ":[QY]") ~2:0>> * + + ~-ils$ beaucoup + ~-ils$ bien entendu + ~-ils$ dans [l’|leur|son] ensemble + ~-ils$ [à|en] ce moment ?précis¿ + ~-ils$ [à|en] cet instant ?précis¿ + ~-ils$ sans peine + ~-ils$ un [moment|peu|minimum] + ~-ils$ un petit peu + ~-ils$ un tout petit peu + <<- morph(\1, ">V0e", 0, -4) and morph(>1, ":[QY]") ~2:0>> * + + ~-[nv]ous$ beaucoup + ~-[nv]ous$ bien entendu + ~-[nv]ous$ dans [l’|leur|son] ensemble + ~-[nv]ous$ [à|en] ce moment ?précis¿ + ~-[nv]ous$ [à|en] cet instant ?précis¿ + ~-[nv]ous$ sans peine + ~-[nv]ous$ un [moment|peu|minimum] + ~-[nv]ous$ un petit peu + ~-[nv]ous$ un tout petit peu + <<- morph(\1, ">V0e", 0, -5) and morph(>1, ":[QY]") ~2:0>> * + + ~-elles$ beaucoup + ~-elles$ bien entendu + ~-elles$ dans [l’|leur|son] ensemble + ~-elles$ [à|en] ce moment ?précis¿ + ~-elles$ [à|en] cet instant ?précis¿ + ~-elles$ sans peine + ~-elles$ un [moment|peu|minimum] + ~-elles$ un petit peu + ~-elles$ un tout petit peu + <<- morph(\1, ">V0e", 0, -6) and morph(>1, ":[QY]") ~2:0>> * + + on ne peut [plus|moins] + on ne peut pas [plus|moins] + plus que + <<- morph(<1, ":(?:V0e|N)") and morph(>1, ":[AQ]") ~>> * + + @@@@ @@@@END_GRAPH _ @@@@ -# après être, après avoir -__[i](p_être_qqch)__ - ({etre}) +(à jamais|un jour|sous peu|du moins|avant tout|de passage|frère et sœur|mari et femme|père et mère|papa et maman|mission impossible|monnaie courante|pieds (?:et poings liés|nus)|partie (?:intégrante|prenante)) @@0,$ - <<- morph(\1, ":V0e", False) ~2>> * -__[i](p_être_pronom_qqch)__ - ([ésf]\w+)-(?:ils|[nv]ous|elles) +(frère et sœur|mari et femme|père et mère|papa et maman|bon marché|meilleur marché|mission impossible) @@0,$ - <<- morph(\1, ":V0e", False) ~2>> * -__[i](p_qqch_on_ne_peut_plus_que)__ - ({w1}) +(on ne peut (?:pas |)(?:plus|moins)|plus que) +({w2}) @@0,w,$ - <<- morph(\1, ":(?:V0e|N)", False) and morph(\3, ":[AQ]", False) ~2>> * +# après avoir __[i](p_avoir_être_loc_adv1)__ - ({avoir_etre}) +(pas|jamais|plus|en partie|point|tous (?:deux|trois)|somme toute) @@0,$ + ({avoir}) +(pas|jamais|plus|en partie|point|tous (?:deux|trois)|somme toute) @@0,$ <<- morph(\1, ":V0", False) ~2>> * __[i](p_avoir_être_loc_adv2)__ - ({avoir_etre}) +(beaucoup|bien entendu|dans (?:leur |son |l’)ensemble|à ce(?:t (?:instant|endroit)| moment)|sans peine|un (?:moment|peu|minimum|petit peu|tout petit peu)) +({w_2}) @@0,w,$ + ({avoir}) +(beaucoup|bien entendu|dans (?:leur |son |l’)ensemble|à ce(?:t (?:instant|endroit)| moment)|sans peine|un (?:moment|peu|minimum|petit peu|tout petit peu)) +({w_2}) @@0,w,$ <<- morph(\1, ":V0", False) and morph(\3, ":[QY]", False) ~2>> * __[i](p_avoir_loc_adv)__ ({avoir}) +(besoin|bon (?:dos|pied,? bon œil)|carte blanche|confiance|conscience|crainte|faim|forme humaine|honte|partie (?:gagnée|liée)|peur|soif|voix au chapitre) @@0,$ <<- morph(\1, ":V0a", False) and not (\2 == "crainte" and before(r"\w")) ~2>> * __[i](p_avoir_pronom_loc_adv)__ @@ -7121,19 +7268,10 @@ <<- morph(\1, ":V0a", False) ~2>> * __[i](p_avoir_tous_toutes_les)__ ({avoir}) +(tou(?:te|)s les ({w_2})) +({w_2}) @@0,w,>3:$,$ <<- morph(\1, ":V0a", False) and morph(\3, ":B", False) and morph(\4, ">besoin/|:(?:Q|V1.*:Y)", False) ~2>> * -# elle aussi + adj -__[i](p_elle_aussi)__ - (elle aussi) +({w_3}) @@0,$ - <<- morph(\2, ":A:[fe]:s", False) ~1>> * - <<- __else__ and morphex(\2, ":W", ":3s") and morph(word(1), ":A:[fe]:s", False, True) ~1>> * -__[i](p_elles_aussi)__ - (elles aussi) +({w_3}) @@0,$ - <<- morph(\2, ":A:[fe]:p", False) ~1>> * - <<- __else__ and morphex(\2, ":W", ":3p") and morph(word(1), ":A:[fe]:p", False, True) ~1>> * # après verbe __[i](p_verbe_loc_adv1)__ ({w1}) (?:pas |)(jour et nuit|quand même(?: pas|)) @@0,$ <<- morph(\1, ":V", False) ~2>> * __[i](p_verbe_loc_adv2)__ ({w_2}) (bien entendu|juste|ensemble) @@0,$ <<- morph(\1, ":V[123]") ~2>> * __[i](p_verbe_loc_adv3)__ ({w_2}) ((?:fort|très|super) (?:bien|mal)|bien|mal) @@0,$ <<- morph(\1, ":V[123]", False) ~2>> * @@ -13799,33 +13937,33 @@ TEST: C’était elle qui avait pris le contrôle. __[i]/inte(inte_je)__ ({w1})-je @@0 - <<- morphex(\1, ":V", ":1[sśŝ]") -1>> =suggVerb(@, ":1ś") # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier. + <<- analysex(\1, ":V", ":1[sśŝ]") -1>> =suggVerb(@, ":1ś") # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier. <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":1[sśŝ]", False) # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier. TEST: {{Vas}}-je ->> Vais TEST: {{Prit}}-je ->> Pris TEST: {{prix}}-je le temps d’y parvenir ? Oui. __[i]/inte(inte_tu)__ ({w1})-tu @@0 - <<- morphex(\1, ":V", ":[ISK].*:2s") -1>> =suggVerb(@, ":2s") # Forme interrogative. « \1 » n’est pas un verbe à la 2ᵉ personne du singulier. - <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":2s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 2ᵉ personne du singulier. + <<- analysex(\1, ":V", ":[ISK].*:2s") -1>> =suggVerb(@, ":2s") # Forme interrogative. « \1 » n’est pas un verbe à la 2ᵉ personne du singulier. + <<- not analyse(\1, ":V", False) -1>> =suggSimil(\1, ":2s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 2ᵉ personne du singulier. TEST: {{Peut}}-tu ->> Peux TEST: {{peu}}-tu revenir chez moi ? __[i]/inte(inte_il_elle_on)__ ({w1})-(?:t-|)(il|elle|on) @@0,$ - <<- morphex(\1, ":V", ":3s") -1>> =suggVerb(@, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier. - <<- \1 != "t" and (not \1.endswith("oilà") or \2 != "il") and morphex(\1, ":", ":V") + <<- analysex(\1, ":V", ":3s") -1>> =suggVerb(@, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier. + <<- \1 != "t" and (not \1.endswith("oilà") or \2 != "il") and analysex(\1, ":", ":V") -1>> =suggSimil(\1, ":3s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier. - <<- not \2.endswith(("n", "N")) and morphex(\1, ":3p", ":3s") -2>> \2s # Forme interrogative : accordez “\2” avec le verbe à la 3ᵉ personne du pluriel. + <<- not \2.endswith(("n", "N")) and analysex(\1, ":3p", ":3s") -2>> \2s # Forme interrogative : accordez “\2” avec le verbe à la 3ᵉ personne du pluriel. TEST: {{Peux}}-il ->> Peut TEST: {{Attaques}}-t-on ->> Attaque TEST: {{Prends}}-elle ->> Prend TEST: {{Menthe}}-t-elle souvent ? @@ -13833,12 +13971,12 @@ TEST: Le moteur choisi convient-il ? __[s]/inte(inte_ce)__ ({w_2})-([cs]e) @@0,$ - <<- morphex(\1, ":V", ":(?:3s|V0e.*:3p)") -1>> =suggVerb(@, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 - <<- morphex(\1, ":", ":V") -1>> =suggSimil(\1, ":3s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 + <<- analysex(\1, ":V", ":(?:3s|V0e.*:3p)") -1>> =suggVerb(@, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 + <<- analysex(\1, ":", ":V") -1>> =suggSimil(\1, ":3s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 <<- \2 == "se" -2>> ce # Forme interrogative. Confusion.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 TEST: était-{{se}} cela, la vérité ineffable ? TEST: {{étai}}-ce notre destinée de souffrir ? TEST: étaient-{{se}} ces hommes-là qui allaient nous guider dans les montagnes ? @@ -13846,32 +13984,32 @@ TEST: Eh ! dit Athos, ne sont-ce pas des braconniers qu’on arrête là-bas ? __[i]/inte(inte_nous)__ ({w1})-nous @@0 - <<- morphex(\1, ":V", ":(?:1p|E:2[sp])") -1>> =suggVerb(@, ":1p") # Forme interrogative ou impérative incorrecte. - <<- morphex(\1, ":", ":V|>chez/") -1>> =suggSimil(\1, ":1p", False) # Forme interrogative ou impérative incorrecte. + <<- analysex(\1, ":V", ":(?:1p|E:2[sp])") -1>> =suggVerb(@, ":1p") # Forme interrogative ou impérative incorrecte. + <<- analysex(\1, ":", ":V|>chez/") -1>> =suggSimil(\1, ":1p", False) # Forme interrogative ou impérative incorrecte. TEST: {{Prendront}}-nous ->> Prendrons TEST: {{Attendront}}-nous le train ->> Attendrons __[i]/inte(inte_vous)__ ({w1})-vous @@0 - <<- morphex(\1, ":V", ":2p") -1>> =suggVerb(@, ":2p") # Forme interrogative ou impérative incorrecte. - <<- not morph(\1, ":V|>chez/", False) -1>> =suggSimil(\1, ":2p", False) # Forme interrogative ou impérative incorrecte. + <<- analysex(\1, ":V", ":2p") -1>> =suggVerb(@, ":2p") # Forme interrogative ou impérative incorrecte. + <<- not analyse(\1, ":V|>chez/", False) -1>> =suggSimil(\1, ":2p", False) # Forme interrogative ou impérative incorrecte. TEST: {{Attaquait}}-vous ->> Attaquiez TEST: Elle a de nombreux rendez-vous ce matin. TEST: êtes-vous là ? __[i]/inte(inte_ils_elles)__ ({w1})-(?:ils|elles) @@0 - <<- morphex(\1, ":V", ":3p") and spell(\1) + <<- analysex(\1, ":V", ":3p") and spell(\1) -1>> =suggVerb(@, ":3p") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel. - <<- \1 != "t" and not morph(\1, ":V", False) and spell(\1) + <<- \1 != "t" and not analyse(\1, ":V", False) and spell(\1) -1>> =suggSimil(\1, ":3p", False) # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel. TEST: {{attaquant}}-ils ->> attaquent TEST: {{prendrons}}-elles un verre avec moi ? @@ -13879,11 +14017,11 @@ !!!! Verbe auxiliaire !! __[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”. + <<- analyse(\1, ">avoir/", False) and analyse(\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}) @@*,$ <<- 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 ?