Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -1969,29 +1969,29 @@ [ne|n’|me|m’|te|t’|se|s’] [le|la|l’|les|leur|en|y] <<- =>> select(\2, ":Ov") l’ *WORD - <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and morph(\2, ":[NA]", "*") =>> select(\1, ":D") + <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D") <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov") le *WORD - <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and morph(\2, ":[NA]", "*") =>> select(\1, ":D") + <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D") <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov") la *WORD - <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and morph(\2, ":[NA]", "*") =>> select(\1, ":D") + <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D") <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov") <<- __else__ and not value(<1, "|le|ce|du|") =>> exclude(\1, ":N") les *WORD - <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and morph(\2, ":[NA]", "*") =>> select(\1, ":D") + <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D") <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov") leur *WORD <<- not value(<1, "|le|du|") =>> exclude(\1, ":N") - <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and morph(\2, ":[NA]", "*") =>> select(\1, ":D") + <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D") <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov") leurs *WORD <<- not value(<1, "|les|des|") =>> exclude(\1, ":N") @@ -2021,11 +2021,11 @@ [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") + <<- =>> select(\-1, ":[ISKYPE]") <<- /-1>> neg [ne|n’] [lui|en|leur|le|la|l’|les|nous|vous|y] [me|m’|te|t’|se|s’] [en|le|la|l’|les|y] <<- =>> select(\2, ":Ov") @@ -2035,26 +2035,30 @@ lui <<- morph(<1, ":R") =>> exclude(\1, ":(?:Q|Os)") [me|m’|te] ?[le|la|l’|les|en|y]¿ @:¬:[OX] - <<- =>> select(\-1, ":V") + <<- =>> select(\-1, ":[ISKYPE]") [se|s’] ?[le|la|l’|les|en|y]¿ @:¬:[OX] - <<- =>> select(\-1, ":[ISKQYP]") + <<- =>> select(\-1, ":[ISKYP]") c’ ?[en|y]¿ @:¬:[OX] <<- =>> select(\-1, ":V") + s’ *WORD + <<- not value(\2, "|il|ils|iel|iels") =>> select(\1, ":Ov") + <<- __else__ =>> select(\1, ":C") + t’ [le|la|l’|les|en|y] @:(?:[123][sp]|P|Y)¬:X|>rien/ - <<- =>> select(\3, ":(?:[123][sp]|P|Y)") + <<- =>> select(\3, ":[ISKYPE]") t’ @:¬:X|>(?:rien|ie?ls?|elles?|on)/ - <<- =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- =>> select(\2, ":[ISKYPE]") y @:¬:[OX] - <<- =>> select(\2, ":(?:[123][sp]|P|Y)") + <<- =>> select(\2, ":[ISKYPE]") [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] @@ -2081,11 +2085,17 @@ [le|la|l’|les] [lui|leur|en] @:¬:[OXW] leur en @:¬:[OXW] <<- =>> select(\2, ":(?:[123][sp]|P|Y)") - $:M @:[123]s¬:[QW] + nous @:[ISKYPE]¬:1p + <<- =>> select(\1, ":Ov") + + vous @:[ISKYPE]¬:2p + <<- =>> select(\1, ":Ov") + + $:M @:[123]s¬:[QWA] <<- \2.islower() and morph(<1, ":Cs|") =>> select(\2, ":[123][sp]") $:M @:(?:[123]s|Ov)¬:A <<- =>> =select(\2, ":M") @@ -2138,11 +2148,11 @@ autour [de|du|d’|des] <<- not morph(<1, ":D.*:[me]") =>> exclude(\1, ":N") avant [que|qu’|$:D] - <<- not value(<1, "|l’|quel|cet|un|mon|ton|son|notre|votre|leur|") =>> select(\2, ":R") + <<- not value(<1, "|l’|quel|cet|un|mon|ton|son|notre|votre|leur|") =>> select(\1, ":R") c’ [>avoir|>être] <<- =>> select(\1, ":O") ce @:[NA].*:[me]:[si]¬:V0e @@ -2161,21 +2171,31 @@ [|,|(] cela [le|la|l’|les] [lui|leur|en|y] @:(?:[123]s|P) [|,|(] cela [lui|leur|y] en @:(?:[123]s|P) [|,|(] cela @:(?:[123]s|P) <<- =>> exclude(\2, ":V") + certains @:[NA].*:[me]:[pi]¬:(?:G|3[sp]) + <<- =>> exclude(\1, ":O") + + certaines @:[NA].*:[fe]:[pi]¬:(?:G|3[sp]) + <<- =>> exclude(\1, ":O") + dans <<- not morph(<1, ":D.*:p|>[a-zé-]+ième/") =>> select(\1, ":R") [de|d’] [me|m’|te|t’|se|s’|en|y|nous|vous|moi|toi|soi|lui|elle|iel|eux|elles|iels] [de|d’] @:[MYB] + [de|d’] *NUM [de|d’] [un|une|le|la|l’|les|ce|cet|cette|ces|ma|ta|sa|mon|notre|votre|leur|mes|tes|ses|nos|vos|leurs|quelque|quelques|plusieurs|certains|certaines|maints|maintes] <<- =>> select(\1, ":R") [de|d’] @:[NA]¬:[YMGB] <<- not \2[0:1].isupper() =>> select(\1, ":D") + [devant|derrière] $:D + <<- morph(<1, ":V||>,", ":G") =>> select(\1, ":R") + entre *WORD et *WORD <<- (morph(\2, ":[NA]") and morph(\4, ":[NA]")) or (morph(\2, ":Y") and morph(\4, ":Y")) or (morph(\2, ":M") and morph(\4, ":M")) =>> define(\1, ":R") @@ -2218,10 +2238,19 @@ <<- morph(<1, "|>,|:[ISKYP]", "*") =>> select(\1, ":W") [le|la|l’|les|du|chaque|ces|des|mes|tes|ses|nos|vos|leurs|quelques|quels|quelles] même <<- =>> select(\2, ":A") + en outre + <<- not value(<1, "|il|on|elle|iel|n’|l’|") =>> select(\1, ":R") and select(\2, ":N") + + [une|cette|quelle|mon|notre|votre] outre + <<- =>> select(\2, ":N") + + outre $:D + <<- morph(<1, ":V", ":[GA]") =>> select(\1, ":R") + [le|l’|un|mon|notre|votre|leur|chaque|mes|tes|ses|nos|vos|leurs|quel|quels|quelle|quelles] point <<- =>> select(\2, ":N") nos @¬:B <<- =>> select(\1, ":D") @@ -2228,11 +2257,12 @@ parmi *WORD <<- =>> select(\1, ":R") [plus|moins] - <<- morph(<1, ":V") =>> select(\1, ":W") + <<- value(<1, "|le|la|l’|les|leur|") =>> select(\1, ":[NW]") + <<- __else__ and morph(<1, ":V") =>> select(\1, ":W") plus ou moins <<- =>> select(\1, ":W") and select(\-1, ":W") [plus|moins] @:[WA] @@ -2239,21 +2269,24 @@ <<- morph(<1, ":N", ":Ov") =>> select(\1, ":W") [plus|moins] @:[WA] [que|qu’] <<- not value(<1, "|je|ne|n’|") =>> select(\1, ":W") + [un|une|des|le|la|l’|les|mon|ton|son|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs] [plus|moins] @:[AW]¬:G + <<- =>> select(\2, ":W") + puis <<- not value(<1, "|je|ne|n’|le|l’|leur|") =>> exclude(\1, ":V") pas <<- morph(<1, ":[VWX]") =>> exclude(\1, ":N") passé [|,|$:R] <<- =>> exclude(\1, ":G") - [un|une|des|le|la|l’|les|mon|ton|son|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs] [plus|moins] @:[AW]¬:G - <<- =>> select(\2, ":W") + personne [ne|n’] + <<- not morph(<1, ":[DA].*:[fe]:[si]") =>> select(\1, ":O") pourvu <<- not value(>1, "|que|qu’|") =>> exclude(\1, ":G") SA @@ -2266,11 +2299,10 @@ <<- =>> select(\1, ":W") si @:[OD] s’ [il|ils] <<- =>> select(\1, ":C") - sur @:[BD] <<- morph(<1, "|>,|:(?:V|N.*:f)", ":V[0123]e") =>> select(\1, ":R") tous @:N.*:[me]:[pi]¬:(?:[AGW]|3p) @@ -2644,10 +2676,14 @@ !!!! Fusions et immunités !! __fusions_mots_grammaticaux__ + c’ est-à-dire + <<- ~>> ␣ + <<- =>> setmeta(\1, "WORD") + le ou la *WORD la ou le *WORD <<- morph(\-1, ":[NA]") ~1:3>> ␣ alors [que|qu’] @@ -2673,10 +2709,11 @@ <<- ~>> ␣ <<- =>> define(\1, ":N:m:i") n’ importe [qui|quoi|quel|quelle|quels|quelles|où|ou|lequel|laquelle|lesquels|lesquelles] <<- ~1:2>> ␣ + <<- =>> setmeta(\1, "WORD") and define(\1, ":ÉO") [cultural|gender] studies <<- ~>> ␣ <<- =>> define(\1, ":N:f:p") @@ -3177,14 +3214,14 @@ [|,] [‘|'|’|`] *SIGN [‘|'|’|`] est [un|le] signe [|,] ‹ *SIGN › est [un|le] signe <<- !3>> <<- !5>> - [|,] >écrire  [“|”|"] ?*WORDELD¿ *WORD [“|”|"] - [|,] >écrire  « ?*WORDELD¿ *WORD » - [|,] >écrire  [‘|'|’|`] ?*WORDELD¿ *WORD [‘|'|’|`] - [|,] >écrire  ‹ ?*WORDELD¿ *WORD › + [|,|s’] >écrire  [“|”|"] ?*WORDELD¿ *WORD [“|”|"] + [|,|s’] >écrire  « ?*WORDELD¿ *WORD » + [|,|s’] >écrire  [‘|'|’|`] ?*WORDELD¿ *WORD [‘|'|’|`] + [|,|s’] >écrire  ‹ ?*WORDELD¿ *WORD › <<- !-2>> 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. @@ -19264,10 +19301,25 @@ @@@@ @@@@ @@@@ @@@@ + + +!! +!! +!!!! Désambiguïsation !! +!! +!! + +__da_formes_verbales__ + >avoir été $:Q¬:G + <<- =>> select(\2, ":Q") and select(\3, ":Q") + + [>falloir|>imaginer|>penser|>pouvoir|>savoir|>vouloir] [aller|avoir|être|dire|savoir|manger] + <<- =>> select(\2, ":Y") + !! !! !!!! Confusions !! !!