Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -2108,11 +2108,11 @@ __fusions_noms_communs__ au revoir <<- ~>> ␣ <<- =>> define(\1, [":N:m:i"]) - n’ importe [qui|quoi|quel|quelle|quels|quelles] + n’ importe [qui|quoi|quel|quelle|quels|quelles|où] <<- ~1:2>> ␣ [cultural|gender] studies <<- ~>> ␣ <<- =>> define(\1, [":N:f:p"]) @@ -2196,10 +2196,12 @@ soit pour soit contre <<- !3>> TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics. +TEST: de Bordeaux ou de n’importe où + !!!! Noms composés !! __tag_noms__ @@ -13619,14 +13621,17 @@ TEST: Que ferons-nous de {{leur}} gros {{grains}} __gn_le_la_leur_3m__ [le|la|leur] *WORD *WORD *WORD - <<- /gn/ morph(\1, ":D") and morph(\2, ":[NA].*:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G)") and morph(\4, ":[NA].*:p", "*") and \4.islower() + <<- /gn/ not value(<1, "|et|ou|") and morph(\1, ":D") and morph(\2, ":[NA].*:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:p", "*") and \4.islower() -4>> =suggSing(\4) # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier. +TEST: La petite fille {{devenues}} infirmière. TEST: leur grande passion {{délirantes}} pour le cosplay. +TEST: le jour venu prises par surprise elles durent s’enfuir. +TEST: sous la forme d’un baromètre comparant différents moyens pour alléger ses émissions TEST: non seulement met en péril la logique industrielle mais contribue à détruire peu à peu le substrat sur lequel repose le marché lui-même, à savoir la société des hommes. TEST: qu’ils fassent tourner le système économique, assez concrètement, mais sans faire chier avec leurs petits problèmes de gens de rien. TEST: avec le peuple, contre le capitalisme mortifère sous tous ses visages. @@ -13870,10 +13875,11 @@ <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4) -4>> =suggMasSing(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. TEST: cet outil {{terribles}} qu’il a dans les mains TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle. +TEST: au petit {{publique}} TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}. __gn_mon_ton_son_1m__ [mon|ton|son] *WORD @@ -13942,10 +13948,11 @@ -4>> =suggFemSing(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. TEST: quelle belle {{étourdi}}, cette gamine TEST: j’en ai assez de cette ville {{stressées}} en permanence. TEST: Peut-on imaginer de plus {{beaux}} {{enfant}} ? +TEST: de ma grande {{ami}} TEST: il fut cette fois ulcéré de voir son entreprise une fois de plus ruinée par la malchance. __gn_notre_votre_chaque_1m__ [notre|votre|chaque] *WORD @@ -13976,35 +13983,29 @@ <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not \4.startswith("seul") >>> <<- /gn/ ((morph(\3, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\4, ":[NA].*:f", "*")) or (morph(\3, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\4, ":[NA].*:m", "*"))) and not apposition(\3, \4) -4>> =switchGender(\4, False) # Accord de genre erroné entre « \3 » et « \4 ». <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, False) # Accord de genre erroné avec « \4 ». - <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4) + <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4) -4>> =suggSing(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. TEST: chaque élément {{terrestres}} TEST: notre {{belle}} {{avenu}} TEST: ils viennent de chaque coin {{ignorée}} du pays. TEST: que faire de votre {{ennuyeuse}} {{avocat}} TEST: de quelque cartable {{vides}} +TEST: de notre petit {{amis}} TEST: Quelque chose tombé dans le puits a souillé l’eau. __gn_det_sing_3m__ [ledit|ladite|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|au|quel|quelle|dudit] *WORD *WORD *WORD <<- /gn/ not value(<1, "|et|ou|") and morph(\2, ":[NA].*:[si]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:p", "*") and \4.islower() -4>> =suggSing(\4) # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier. - [le|la|leur] *WORD *WORD *WORD - <<- /gn/ not value(<1, "|et|ou|") and morph(\2, ":[NA].*:[si]", ":[123][sp]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:p", "*") - -4>> =suggSing(\4) # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier. - TEST: un gros connard {{pathétiques}} -TEST: La petite fille {{devenues}} infirmière. -TEST: le jour venu prises par surprise elles durent s’enfuir. TEST: servi pas un style et une exigence historique remarquables -TEST: sous la forme d’un baromètre comparant différents moyens pour alléger ses émissions ## Pluriels __gn_les_1m__ @@ -14055,11 +14056,12 @@ TEST: les pitres {{imbécile}} TEST: il faut en convenir et les femmes {{oubliés}} seront satisfaites. TEST: les {{petites}} {{oubliés}} TEST: c’est ça, et les femmes {{retrouvés}} seront emmenées à l’hôpital. -TEST: ça n’en vaut pas la peine, et les éléments {{perdu}} le seront à jamais +TEST: fais ce que tu peux, ou les {{petites}} {{perdus}} le seront à jamais +TEST: ça ou les éternels {{imbécile}} du coin TEST: les moins éloignées possible TEST: Les besoins minimums en matière de sommeil sont-ils les mêmes d’un individu à l’autre ? TEST: cette attention de tous les instants portée à la boussole. @@ -14121,10 +14123,12 @@ <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A")) and not (\1.startswith("de") and value(<1, "|un|une|")) -4>> =suggPlur(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. TEST: ces {{beaux}} {{institutions}} +TEST: nos petites {{fille}} +TEST: de plusieurs {{grands}} {{avocates}} TEST: de vos défauts {{terrible}}, je connais presque tout. TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale TEST: Une des pierres veinée de rouge… TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie. TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion. @@ -14187,17 +14191,17 @@ [lesdits|lesdites|desdits|desdites|auxdits|auxdites] *WORD *WORD *WORD <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)") and morph(\4, ":[NA].*:s", "*") and \4.islower() and not before("(?i)\\bune? de +$") and not \4.startswith("seul") -4>> =suggPlur(\4) # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel. - [les|leurs] *WORD *WORD *WORD + leurs *WORD *WORD *WORD <<- /gn/ morph(\2, ":[NA].*:[pi]", "[123][sp]") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)") and morph(\4, ":[NA].*:s", "*") and not before("(?i)\\bune? de +$") and not \4.startswith("seul") -4>> =suggPlur(\4) # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel. TEST: ces petites sottes {{déjantée}} -TEST: Les grandes volontés {{dépassée}} par les évènements +TEST: Leurs grands plans {{dépassé}} par les évènements TEST: Prendre goût aux heures passées seul à marcher ## certains / certaines __gn_certains_1m__ @@ -14337,18 +14341,19 @@ __gn_quelles_accord_être_sujet__ quelles [sont|étaient|seront|serons|seraient|furent|fussent] [les|ces|mes|tes|ses|nos|vos|leurs] *WORD <<- /gn/ not value(<1, "|tels|telles|") and morph(\4, ":[NA].*:m", ":[fe]") -1>> quels # Accord de genre erroné avec « \3 \4 ». -TEST: {{Quel}} sont ces hommes. ->> Quels -TEST: {{Quel}} est cette force ? ->> Quelle -TEST: {{Quelle}} est mon animal favori ? ->> Quel -TEST: {{Quels}} sont ces femmes ? ->> Quelles -TEST: {{Quelles}} est cette imbécillité ? ->> Quelle -TEST: {{Quelles}} sont ces hommes ? ->> Quels -TEST: {{Quel}} est la politique ? ->> Quelle -TEST: {{Quelle}} est le politique ? ->> Quel +TEST: {{Quel}} sont ces hommes. ->> Quels +TEST: {{Quel}} est cette force ? ->> Quelle +TEST: {{Quel}} serait notre peine ? ->> Quelle +TEST: {{Quel}} est la politique ? ->> Quelle +TEST: {{Quelle}} est mon animal favori ? ->> Quel +TEST: {{Quelle}} est le politique ? ->> Quel +TEST: {{Quelles}} est cette imbécillité ? ->> Quelle +TEST: {{Quelles}} sont ces hommes ? ->> Quels +TEST: {{Quels}} sont ces femmes ? ->> Quelles TEST: Il s’agit de définir quelle est notre propre orientation. #### Quel(le) que soit … @@ -14450,10 +14455,11 @@ TEST: certaines idioties {{stupide}} TEST: quelles grandes {{idiots}} TEST: je ne sais guère de quelles âneries {{proférés}} on parle. TEST: quelles étonnantes {{petits}} +TEST: ici ou auxdites lointaines {{contrée}} ## quelque adverbe __gn_quelque_adverbe__ quelques *NUM @@ -20118,12 +20124,12 @@ *WORD moi <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|je|j’|me|m’|te|t’|se|s’|nous|vous|lui|leur|") ->> \1-\2 # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 - , *WORD moi - <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + [|,] *WORD moi + <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-moi" # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Apporte moi}} ce dictionnaire. ->> Apporte-moi TEST: {{Apportez moi}} ce dictionnaire TEST: tu me dois bien ça, {{Achèves moi}}, je t’en prie. @@ -20136,12 +20142,12 @@ *WORD toi <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E:2s", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|me|m’|te|t’|se|s’|nous|vous|lui|leur|") ->> \1-\2 # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 - , *WORD toi - <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + [|,] *WORD toi + <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-toi" # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Donne toi}} du temps. TEST: j’en ai marre, {{instruit toi}} avant de parler. @@ -20150,11 +20156,11 @@ *WORD [nous|vous|lui] <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|", ":(?:Y|3[sp]|Oo)|>(?:en|y)/") and morph(<1, ":Cc||>,") ->> \1-\2 # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 - , *WORD [nous|vous|lui] + [|,] *WORD [nous|vous|lui] <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and not morph(>1, ":Y") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3 # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Donne nous}} du café. TEST: si ça se peut, {{apprend nous}} à réussir. @@ -20175,12 +20181,12 @@ *WORD les <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)") and morph(>1, ":||>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") and morph(<1, ":Cc||>,") ->> \1-les # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 - , *WORD les - <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + [|,] *WORD les + <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":||>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-les" # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{chante les}} avec conviction TEST: tu dois finir, {{finit les}}. @@ -20223,20 +20229,21 @@ *WORD en <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":||>,", ":(?:N|A|Q|Y|M|P|H|T|D)|>(?:pour|plus|moins|mieux|peu|plupart|trop|très|une?)/") and morph(<1, ":Cc||>,") ->> \1-\2 # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 - , *WORD en - <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") - and morph(>1, ":||>,", ":(?:N|A|Y|M|P|B|3[sp]|D)|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") + [|,] *WORD en + <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + and morph(>1, ":||>,", ":(?:N|A|Y|M|P|B|3[sp]|D|Ov)|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3 # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{restons en}} là. TEST: tu crois ça, {{donnes en}} encore TEST: Intercède en ma faveur TEST: Même l’implacable guerrier-capitaine de la Fédération, James T. Kirk, apprend en rechignant à enterrer le phaser avec les bâtards Klingons qui ont tué son fils. TEST: Terminons en réservant une place de choix à l’un des relais les plus fervents de la pensée +TEST: Le Souffle puisé à la Parole nous met en synergie avec le Père Qui souffre, souffre en nous sûrement de voir que Sa Parole déjà transmise autrefois peine à être accomplie. __imp_laisser_le_la_les_infi__ >laisser [le|la|les] *WORD <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E") and morph(\3, ":(?:Y|X|Oo)", ":[NAB]") and not morph(<1, ":O[sv]")