Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -2011,21 +2011,21 @@ __da_préverbes_verbes__ [ne|n’] ?[le|la|l’|les|nous|vous|lui|leur]¿ @:¬:[OX] [ne|n’] [nous|vous] [le|la|l’|les|en] @:¬:[OX] [ne|n’] [le|la|l’|les] [lui|leur|en] @:¬:[OX] [ne|n’] [lui|leur] en @:¬:[OX] + n’ ?[en|y]¿ @:¬:[OX] <<- =>> select(\-1, ":V") <<- /-1>> neg - [me|m’|te|se|s’] ?[le|la|l’|les]¿ @:¬:[OX] + [me|m’|te] ?[le|la|l’|les|en|y]¿ @:¬:[OX] <<- =>> select(\-1, ":V") - n’ ?[en|y]¿ @:¬:[OX] - <<- =>> select(\-1, ":V") - <<- /-1>> neg + [se|s’] ?[le|la|l’|les|en|y]¿ @:¬:[OX] + <<- =>> select(\-1, ":[ISKQYP]") - [c’|m’|s’] ?[en|y]¿ @:¬:[OX] + c’ ?[en|y]¿ @:¬:[OX] <<- =>> select(\-1, ":V") t’ [le|la|l’|les|en|y] @:(?:[123][sp]|P|Y)¬:X|>rien/ <<- =>> select(\3, ":(?:[123][sp]|P|Y)") @@ -2033,21 +2033,27 @@ <<- =>> select(\2, ":(?:[123][sp]|P|Y)") y @:¬:[OX] <<- =>> select(\2, ":(?:[123][sp]|P|Y)") - [je|j’|il|ils|on] ?[le|la|l’|les|en|nous|vous|lui|leur|y]¿ @:¬:[OX] - [je|j’|il|ils|on] [nous|vous] [le|la|l’|les|en|y] @:¬:[OX] - [je|j’|il|ils|on] [le|la|l’|les] [lui|leur|en|y] @:¬:[OX] - [je|j’|il|ils|on] [lui|leur] en @:¬:[OX] - <<- =>> select(\-1, ":[123][sp]") - - tu ?[le|la|l’|les|en|nous|vous|lui|leur|y]¿ @:¬:[OX] - tu [nous|vous] [le|la|l’|les|en|y] @:¬:[OX] - tu [le|la|l’|les] [lui|leur|en|y] @:¬:[OX] - tu [lui|leur] en @:¬:[OX] - <<- not morph(<1, ":V0") =>> select(\-1, ":[123][sp]") + [je|j’|il|ils|on] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:¬:[OX] + [je|j’|il|ils|on] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:¬:[OX] + [je|j’|il|ils|on] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:¬:[OX] + [je|j’|il|ils|on] ?[ne|n’]¿ [lui|leur|y] en @:¬:[OX] + <<- =>> select(\-1, ":[ISKP]") + + [elle|elles|iel|iels] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:¬:[OX] + [elle|elles|iel|iels] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:¬:[OX] + [elle|elles|iel|iels] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:¬:[OX] + [elle|elles|iel|iels] ?[ne|n’]¿ [lui|leur|y] en @:¬:[OX] + <<- not morph(<1, ":R") =>> select(\-1, ":[ISKP]") + + tu ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:¬:[OX] + tu ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:¬:[OX] + tu ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:¬:[OX] + tu ?[ne|n’]¿ [lui|leur|y] en @:¬:[OX] + <<- not morph(<1, ":V0") =>> select(\-1, ":[ISKP]") lui [la|le|l’|les] @:(?:[123][sp]|P|Y)¬:W <<- not morph(<1, ":R") =>> select(\3, ":(?:[123][sp]|P|Y)") [nous|vous] [le|la|l’|les|en] @:¬:[OXW] @@ -2125,10 +2131,15 @@ [|,|(] cela @:(?:[123]s|P) <<- =>> exclude(\2, ":V") dans <<- not morph(<1, ":D.*:p|>[a-z]+ième/") =>> select(\1, ":R") + + [de|d’] [me|m’|te|t’|se|s’|nous|vous|leur|moi|toi|soi|lui|elle|iel|eux|elles|iels] + [de|d’] @:[MY] + [de|d’] [un|une|le|la|l’|ce|cet|cette|ma|ta|sa|mon|notre|votre|leur|mes|tes|ses|nos|vos|leurs|quelque|quelques|plusieurs|certains|certaines] + <<- =>> select(\1, ":R") face à <<- not morph(<1, ":(?:D|A.*:[fe]:[si])") =>> exclude(\1, ":N") mais @@ -2211,12 +2222,16 @@ <<- not value(<1, "|semblant|") =>> exclude(\-1, ":V") du @:[NA].*:[me]:[si]¬:[GY] <<- =>> select(\2, ":[NA]") - aucun @:[NA].*:[me] - <<- =>> exclude(\2, ":V") + aucun @:[NA].*:[me]:s¬:G + <<- =>> select(\1, ":D") and select(\2, ":N") + + certains @:[NA].*:[me]:p¬:(?:G|3p|V0) + certaines @:[NA].*:[fe]:p¬:(?:G|3p|V0) + <<- =>> select(\1, ":D") and select(\2, ":[NA]") d’ [un|une] *WORD <<- =>> exclude(\3, ":V") l’ [un|une] *WORD @@ -2262,10 +2277,13 @@ <<- =>> exclude(\2, ":[123][sp]") plein [de|d’] @:[AN] <<- not morph(<1, ":(?:D.*:m|V[0-3]e)") =>> =define(\1, ":G") + plusieurs @:[NA].*:p¬:(?:G|3p|V0) + <<- =>> select(\1, ":D") and select(\2, ":[NA]") + source [de|d’] <<- morph(<1, ":V[0-3]e") =>> define(\1, ":ÉV") très *WORD <<- =>> exclude(\2, ":[123][sp]") @@ -2622,11 +2640,11 @@ [la|cette|the] ~^[A-ZÀÂÉÈÊÎÔ]. ?~^[A-ZÀÂÉÈÊÎÔ].¿ ?~^[A-ZÀÂÉÈÊÎÔ].¿ [Administration|Area|Army|Assocation|Avenue|Chamber|Church|City|Community|Court|Company|Corporation|Cup|Enterprise|Foundation|Fraternity|Gallery|Highway|House|Initiative|League|Library|Mansion|Nation|Navy|Organization|Reserve|Road|River|Sea|Society|Station|Sorority|Tavern|Tower|University|Valley] <<- ~2:0>> ␣ <<- =>> define(\2, ":MP:f:s") - [le|au|du|ce|the] ~^[A-ZÀÂÉÈÊÎÔ]. ?~^[A-ZÀÂÉÈÊÎÔ].¿ ?~^[A-ZÀÂÉÈÊÎÔ].¿ [Act|Building|Bureau|Casino|Castle|Center|Challenge|Championship|Chronicle|Club|College|Comity|Consortium|Cottage|Covent|Day|Desert|Forum|Hall|Garden|Hospital|Hostel|Institute|Magazine|Manor|Monastery|Mount|Museum|News|Newspaper|Ocean|Office|Opera|Park|Party|Palace|Post|Restaurant|State|Theatre|Tournament] + [le|au|du|ce|the] ~^[A-ZÀÂÉÈÊÎÔ]. ?~^[A-ZÀÂÉÈÊÎÔ].¿ ?~^[A-ZÀÂÉÈÊÎÔ].¿ [Act|Building|Bureau|Casino|Castle|Center|Challenge|Championship|Chronicle|Club|College|Comity|Consortium|Cottage|Covent|Day|Desert|Forum|Hall|Garden|Hospital|Hostel|Institute|Magazine|Manor|Memorial|Monastery|Mount|Museum|News|Newspaper|Ocean|Office|Opera|Park|Party|Palace|Post|Restaurant|State|Theatre|Tournament] <<- ~2:0>> ␣ <<- =>> define(\2, ":MP:m:s") ~^[A-ZÀÂÉÈÊÎÔ]. Airways <<- ~>> ␣ @@ -2670,11 +2688,11 @@ <<- morph(\1, ":V") !-2>> soit pour soit contre <<- !3>> - y a ?@:[WX]¿ faute + y [a|avait|eut|aura|aurait|eût] ?@:[WX]¿ faute <<- !-1>> TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics. TEST: de Bordeaux ou de n’importe où TEST: il n’y a pas faute. @@ -10890,19 +10908,19 @@ TEST: {{pare mont est par veau}} # pause /pose __conf_pause_pose__ - >pose [gourmande|café|carrière|crédit|déjeuner|détente|dîner|pipi|repas|thé] + >pose [café|carrière|>cigarette|>clope|crédit|déjeuner|détente|dîner|gourmande|pipi|repas|thé] >pose du [matin|soir] >pose de midi >pose de l’ après-midi <<- /conf/ -1>> =\1.replace("o", "au").replace("O", "AU") && Confusion probable. Une pose consiste à poser quelque chose, tandis qu’une pause est un laps de temps de repos. >pause [de|du|des] [>câble|>carrelage|>dallage|>lino|>linoléum|>marbre|>panneau|>papier|>parquet|>prélart|>revêtement|>stérilet|tapis|>tapisserie|>vernis|>vitrage] >pause des [ardoises|agrafes|bollards|briques|câbles|carreaux|carrelages|dalles|fenêtres|panneaux|parquets|pavés|plaques|plinthes|tapis|tapisseries|tuiles|vitres|vitrages] - >pause de la [charpente|couronne|dalle|fenêtre|moquette|prothèse|tapisserie|toiture|vitre] + >pause de la [charpente|couronne|dalle|fenêtre|fibre|moquette|prothèse|tapisserie|toiture|vitre] >pause de la [première|1ʳᵉ|1re|1ère] [brique|couche|pierre] <<- /conf/ -1>> =\1.replace("au", "o").replace("AU", "O") && Confusion probable. Une pose consiste à poser quelque chose, tandis qu’une pause est un laps de temps de repos. TEST: Nous assistons à la {{pause}} de la première brique. TEST: c’est la {{pose}} du matin. @@ -15309,11 +15327,11 @@ du moins ?,¿ pas du [nord|sud] au [nord|sud] du tac au tac du tout au tout eh bien - en [aparté|apparence|arrière|avance|avant|catimini|cachette|ceci|cela|clair|commun|conséquence|continu|contrebas|contrepartie|dedans|définitive|détail|direct|douce|effet|émoi|filigrane|général|goguette|hâte|loucedé|majorité|moyenne|outre|pâmoison|parallèle|partie|particulier|permanence|personne|pratique|prime|privé|principe|priorité|public|retour|revanche|rien|rogne|route|secret|silence|somme|suspens|tapinois|théorie|trompe-l’œil|vain|vérité] + en [aparté|apparence|arrière|avance|avant|catimini|cachette|ceci|cela|clair|commun|conséquence|continu|contrebas|contrepartie|dedans|définitive|détail|direct|distanciel|douce|effet|émoi|filigrane|général|goguette|hâte|loucedé|majorité|moyenne|outre|pâmoison|parallèle|partie|particulier|permanence|personne|pratique|présentiel|prime|privé|principe|priorité|public|retour|revanche|rien|rogne|route|secret|silence|somme|suspens|tapinois|théorie|trompe-l’œil|vain|vérité] en réalité ?[augmentée|virtuelle]¿ en âge [de|d’] procréer en aucun cas en aucune [façon|manière] en ?[assez|si|très|trop]¿ bas âge @@ -15658,11 +15676,11 @@ quoi qu’ il en [coûte|coûtât|coute|coutât] ric et rac rien [que|qu’] d’ y penser sauf >erreur [de|d’] [ma|ta|sa|notre|votre|leur] part sans ?grand¿ succès - sans [déconner|tarder] + sans [broncher|déconner|réagir|tarder] sans [ambages|arrêt|cesse|conteste|doute|encombre|encombres|équivalent|fin|relâche|répit|trêve|vergogne] sans [grande|grosse] difficulté ?[apparente|aucune|financière|majeure|particulière]¿ sans aucun doute sans autre forme [de|d’] procès sans commune mesure @@ -16323,13 +16341,13 @@ <<- ~>> * plus que tout autre @¬:[AQ].*:m:[si] <<- ~1:4>> * - [plus|moins|aussi] @:[AW]¬:G que [les|nous|vous] autres - [plus|moins|aussi] @:[AW]¬:G que l’ autre - [plus|aussi] @:[AW] les [uns|unes] que les autres + [plus|moins|aussi] @:[AQW]¬:G que [les|nous|vous] autres + [plus|moins|aussi] @:[AQW]¬:G que l’ autre + [plus|aussi] @:[AQW] les [uns|unes] que les autres <<- ~3:0>> * pour autant [que|qu’] [je|il|elle|on] le sache pour autant [que|qu’] tu le saches pour autant [que|qu’] nous le sachions @@ -16538,10 +16556,11 @@ >chauffeur [de|d’] bus >chef [de|d’] [cabinet|file|gare|secteur] >chef d’ [état-major|entreprise] >chef d’ orchestre ?[moderne|symphonique]¿ >chemin [de|d’] [croix|fer|traverse] + >chemin à parcourir >chemise à jabot >chemise [de|d’] nuit >chemise sans >manche >chèque en blanc >chèque sans provision @@ -16660,11 +16679,11 @@ >enquête à charge >épée à deux mains >épingle à cravate >épreuve [de|d’] force >erreur [de|d’] [calcul|jeunesse|jugement|positionnement] - >erreur d’ [appréciation|orthographe] + >erreur d’ [appréciation|interprétation|orthographe] >escalier [de|d’] secours >escroquerie à l’ assurance >espérance [de|d’] vie >espérance [de|d’] vie en bonne santé >état [de|d’] [âme|conservation|esprit|fait|service|urgence] @@ -16707,10 +16726,11 @@ >fille au pair >film X fils à [papa|maman] fils [de|d’] pute >figure de proue + >fin [de] non-recevoir >fleuve à sec >flocon [de|d’] neige ?électronique¿ >foire d’ >empoigne fonds d’ investissement fonds [de|d’] pension @@ -22801,11 +22821,11 @@ TEST: Cent quarante-neuvième épisode __gn_nombre_chiffres_1m__ [0|1|01] @:[NAQ].*:p¬* - <<- /gn/ space_after(\1, 1, 1) and not value(\2, "|Rois|Corinthiens|Thessaloniciens|") + <<- /gn/ space_after(\1, 1, 1) and not value(\2, "|Rois|Corinthiens|Thessaloniciens|") and not (value(<1, "|à|") and meta(<2, "NUM")) -2>> =suggSing(\2) && Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. *NUM *WORD <<- /gn/ space_after(\1, 1, 1) and not value(<1, "|/|") and not re.search("^0*[01](?:[,.][0-9]+|)$", \1) and morph(\2, ":[NA].*:s", "*") and not morph(<1, ":(?:N|D.*:s)") and not value(\2, "|maximum|minimum|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|") @@ -22842,10 +22862,11 @@ TEST: elle vit dans un 24 m carré. TEST: elle vit dans un 24 m² triste de la banlieue de Paris. TEST: dans son 240 m2 lumineux, c’est la belle vie. TEST: Une correction de +0.5 dioptrie. TEST: zéro compassion +TEST: puis il y a entre 4 à 1 millions d’années sous une forme proche de la nôtre ## det nom et det nom adj __gn_det_nom_et_det_nom__ [le|l’|un|ce|cet|mon|ton|son|notre|votre|leur] *WORD [et|ou] [le|l’|un|ce|cet|mon|ton|son|notre|votre|leur] *WORD @:A.*¬:(?:A.*:[me]|3[sp]|G) @@ -28540,11 +28561,11 @@ --1>> =\-1[:-1]+"s" && S’il s’agit d’un impératif, la terminaison est “is”, non “it”. ~\w\w+t$ <<- /imp/ not value(>1, "|il|elle|on|ils|elles|iel|iels|") and not value(\-1, "|provient|") - and not (value(\-1, "|vient|dit|surgit|survient|périt|") and morph(>1, ":(?:[MD]|Oo)|>[A-Z]/")) + and not (value(\-1, "|vient|dit|surgit|survient|périt|") and morph(>1, ":(?:[MDR]|Oo)|>[A-Z]/")) and morph(\-1, ":V[23].*:Ip.*:3s", ":[GNA]|>(?:devoir|suffire|para[îi]tre)/") and analyseWord(\-1[:-1]+"s", ":E:2s") --1>> =\-1[:-1]+"s" && S’il s’agit d’un impératif, la terminaison est “is”, non “it”. TEST: {{Finit}} ton assiette. ->> Finis TEST: Ne {{pourrit}} pas l’ambiance. ->> pourris @@ -29317,27 +29338,27 @@ tu en @:(?:[123][sp]|P|Y) <<- not morph(<1, ":(?:[123]s|V0)") or not morph(\3, ":[NA]") ~2>> * <<- /-1>> _ngn_ - [lui|celui-là|celui-ci] le @:(?:[123][sp]|P|Y) + [ça|ceci|cela|lui|celui-là|celui-ci] le @:(?:[123][sp]|P|Y) <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[me]:[si]") ~2>> * <<- /-1>> _ngn_ - [lui|celui-là|celui-ci] la @:(?:[123][sp]|P|Y) + [ça|ceci|cela|lui|celui-là|celui-ci] la @:(?:[123][sp]|P|Y) <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[fe]:[si]") ~2>> * <<- /-1>> _ngn_ - [lui|celui-là|celui-ci] [l’|leur] @:(?:[123][sp]|P|Y) + [ça|ceci|cela|lui|celui-là|celui-ci] [l’|leur] @:(?:[123][sp]|P|Y) <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[si]") ~2>> * <<- /-1>> _ngn_ - [lui|celui-là|celui-ci] les @:(?:[123][sp]|P|Y) + [ça|ceci|cela|lui|celui-là|celui-ci] les @:(?:[123][sp]|P|Y) <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[pi]") ~2>> * <<- /-1>> _ngn_ - [lui|celui-là|celui-ci] en @:(?:[123][sp]|P|Y) + [ça|ceci|cela|lui|celui-là|celui-ci] en @:(?:[123][sp]|P|Y) <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":[NA]") ~2>> * <<- /-1>> _ngn_ [elle|iel|celle-là|celle-ci] le @:(?:[123][sp]|P|Y) <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[me]:[si]") ~2>> * @@ -29465,15 +29486,15 @@ tu [nous|vous|lui] @:(?:[123][sp]|P|Y) <<- not morph(<1, ":V0") ~2>> * <<- /-1>> _ngn_ - [lui|celui-là|celui-ci] [nous|vous|lui] @:(?:[123][sp]|P|Y) - [elle|celle-là|celle-ci|iel] [nous|vous|lui] @:(?:[123][sp]|P|Y) - [nous|vous] [nous|vous|lui] @:(?:[123][sp]|P|Y) - [eux|ceux-là|ceux-ci] [nous|vous|lui] @:(?:[123][sp]|P|Y) - [elles|celles-là|celles-ci|iels] [nous|vous|lui] @:(?:[123][sp]|P|Y) + [cela|ceci|ça|lui|celui-là|celui-ci] [nous|vous|lui] @:(?:[123][sp]|P|Y) + [elle|celle-là|celle-ci|iel] [nous|vous|lui] @:(?:[123][sp]|P|Y) + [nous|vous] [nous|vous|lui] @:(?:[123][sp]|P|Y) + [eux|ceux-là|ceux-ci] [nous|vous|lui] @:(?:[123][sp]|P|Y) + [elles|celles-là|celles-ci|iels] [nous|vous|lui] @:(?:[123][sp]|P|Y) <<- not morph(<1, ":R") ~2>> * <<- /-1>> _ngn_ __purge_préverbes2__ @@ -30716,11 +30737,11 @@ TEST: les marchandes {{paie}} TEST: les marchandes {{marchande}} TEST: les chattes {{finis}} TEST: les chattes {{manges}} TEST: les religieux qui n’en {{finisse}} pas de mentir. -TEST: Les tests grand public de Jean-Paul {{montre}} des résultats surprenants.I +TEST: Les tests grand public de Jean-Paul {{montre}} des résultats surprenants. TEST: les malades que tu as servis {{outrepasse}} leur droit TEST: l’écart entre les riches et les pauvres n’était pas si grand. TEST: Les grands hommes politiques TEST: les charmantes petites mines de toutes les jeunes filles TEST: Les pauvres petites dames sont folles @@ -30728,10 +30749,12 @@ TEST: L’un comme l’autre devaient y renoncer. TEST: Les écrivaines Marie Darrieussecq et Annie Ernaux TEST: Les femmes candidates à ce poste doivent se présenter cet après-midi. TEST: Toutes les personnes candidates seront évaluées plusieurs fois. TEST: il les a sélectionnés, les a améliorées pour accroître leur rendement +TEST: les femmes enceintes +TEST: les souris enceintes __conj_certains_certaines_plusieurs_nom__ [certains|maints] @:[NA].*:[pi] @:V¬:(?:3p|P|Y|G|M) <<- /conj/ morph(<1, ":Cs||>,")