Overview
Comment: | [fr] conversion: regex rules -> graph rules |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | fr | rg |
Files: | files | file ages | folders |
SHA3-256: |
e4432fc50960d33c57027382ead28e28 |
User & Date: | olr on 2018-07-28 12:55:10 |
Other Links: | branch diff | manifest | tags |
Context
2018-07-28
| ||
13:52 | [fr] conversion: regex rules -> graph rules check-in: 80a447ed74 user: olr tags: fr, rg | |
12:55 | [fr] conversion: regex rules -> graph rules check-in: e4432fc509 user: olr tags: fr, rg | |
10:20 | [fr] conversion: regex rules -> graph rules check-in: e8b896692d user: olr tags: fr, rg | |
Changes
Modified gc_lang/fr/rules.grx from [a00bc0bacb] to [5187580cc8].
︙ | ︙ | |||
8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 | TEST: c’est une catastrophe, {{le}} {{profits}} a baissé ces deux derniers trimestres TEST: {{Le}} démoralisation. ->> La TEST: {{Le}} Guyane française. ->> La TEST: avec {{le}} {{pile}} TEST: {{le}} {{publique}} TEST: {{Le}} {{pendue}} __gn_la_1m__ , la *WORD <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|P|G|W|[1-3][sp]|Y)") -2>> le # Accord de genre erroné : « \3 » est masculin. <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemSing(\3, True) # Accord de genre erroné : « \2 » est un déterminant féminin. <<- /gn/ __else__ and morph(\3, ":[NA].*:p") -3>> =suggFemSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. | > > > > > > > > > > > > > > > > > > > > | 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 | TEST: c’est une catastrophe, {{le}} {{profits}} a baissé ces deux derniers trimestres TEST: {{Le}} démoralisation. ->> La TEST: {{Le}} Guyane française. ->> La TEST: avec {{le}} {{pile}} TEST: {{le}} {{publique}} TEST: {{Le}} {{pendue}} __gn_le_2m__ le *WORD *WORD <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) -3>> =suggMasSing(\3, True) # Accord de genre erroné : « \1 \2 » est masculin, « \3 » est féminin. <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\2, \3) -3>> =suggMasSing(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier. [et|ou] le *WORD *WORD <<- /gn/ morph(\2, ":D") and not morph(<1, ":[NA]") and not \4.startswith("seul") >>> <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f") and not apposition(\3, \4) -4>> =suggMasSing(\4, True) # Accord de genre erroné : « \2 \3 » est masculin, « \4 » est féminin. <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\4, \4) -4>> =suggMasSing(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. TEST: le test très {{cons}} qu’on a passé hier. TEST: c’était le chien {{perdue}} des voisins. TEST: viens vite ou le pari {{imperdables}} sera moins facile… __gn_la_1m__ , la *WORD <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|P|G|W|[1-3][sp]|Y)") -2>> le # Accord de genre erroné : « \3 » est masculin. <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemSing(\3, True) # Accord de genre erroné : « \2 » est un déterminant féminin. <<- /gn/ __else__ and morph(\3, ":[NA].*:p") -3>> =suggFemSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. |
︙ | ︙ | |||
8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 | TEST: {{La}} tableau. ->> Le TEST: dans la {{parties}} ->> partie TEST: de {{la}} vin ->> le TEST: {{la}} {{véhicule}} TEST: {{La}} {{pris}} TEST: la force de la {{formes}} parfaite __gn_leur_1m__ , leur *WORD <<- /gn/ morph(\3, ":[NA].*:p", "*") -2>> leurs # Accord de nombre erroné avec « \3 ». <<- /gn/ __also__ -3>> =suggSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. *WORD leur *WORD | > > > > > > > > > > > > > > > > > > > | 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 | TEST: {{La}} tableau. ->> Le TEST: dans la {{parties}} ->> partie TEST: de {{la}} vin ->> le TEST: {{la}} {{véhicule}} TEST: {{La}} {{pris}} TEST: la force de la {{formes}} parfaite __gn_la_2m__ la *WORD *WORD <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NA].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3) -3>> =suggFemSing(\3, True) # Accord de genre erroné : « \1 \2 » est féminin, « \3 » est masculin. <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\2, \3) -3>> =suggFemSing(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier. [et|ou|de] la *WORD *WORD <<- /gn/ morph(\2, ":D") and not morph(<1, ":[NA]|>(?:et|ou)/") and not \4.startswith("seul") >>> <<- /gn/ morph(\3, ":[NA].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NA].*:m", "*") and not apposition(\3, \4) -4>> =suggFemSing(\4, True) # Accord de genre erroné : « \2 \3 » est féminin, « \4 » est masculin. <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4) -4>> =suggFemSing(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. TEST: La plus grande {{cinglé}}. TEST: il imaginait de la pluie {{noir}} tombant sur une terre dévastée. __gn_leur_1m__ , leur *WORD <<- /gn/ morph(\3, ":[NA].*:p", "*") -2>> leurs # Accord de nombre erroné avec « \3 ». <<- /gn/ __also__ -3>> =suggSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. *WORD leur *WORD |
︙ | ︙ | |||
8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 | <<- /gn/ __also__ -3>> =suggSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. TEST: Tu sais, {{leur}} {{impatiences}} est notoire. TEST: J’en ai assez de {{leur}} {{délires}} TEST: {{Leur}} {{perceptions}} des choses m’exaspère. TEST: dans {{leur}} {{usines}} __gn_ledit_1m__ ledit *WORD <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> ladite # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. | > > > > > > > > > > > > > > > > > > > > > > > > > | 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 | <<- /gn/ __also__ -3>> =suggSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. TEST: Tu sais, {{leur}} {{impatiences}} est notoire. TEST: J’en ai assez de {{leur}} {{délires}} TEST: {{Leur}} {{perceptions}} des choses m’exaspère. TEST: dans {{leur}} {{usines}} __gn_leur_2m__ leur *WORD *WORD <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ ((morph(\2, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\3, ":[NA].*:m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3, False) # Accord de genre erroné entre « \2 » et « \3 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2, False) # Accord de genre erroné avec « \3 ». <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\2, \3) -3>> =suggSing(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier. [et|ou|de] leur *WORD *WORD <<- /gn/ morph(\2, ":D") and 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(\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: leur puissance {{perdues}} TEST: leur arbre {{élaguée}} TEST: je me souviens de leur verve {{décalé}} TEST: ils arrivent et leur arrogance {{insupportables}} nous fatigue tous. __gn_ledit_1m__ ledit *WORD <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> ladite # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. |
︙ | ︙ | |||
9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 | TEST: un {{fromages}}. ->> fromage TEST: Un {{ballons}} ->> ballon TEST: Une {{cinglées}} ->> cinglée TEST: {{une}} des {{chats}} TEST: {{une}} kyste ->> un TEST: {{une}} des {{joueurs}} TEST: mille et une merveilles ## un / une __gn_un_2m__ un *WORD *WORD <<- /gn/ not value(<1, "|et|ou|d’|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) -3>> =suggMasSing(\3, True) # Accord de genre erroné : « \1 \2 » est masculin, « \3 » est féminin. | > | 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 | TEST: un {{fromages}}. ->> fromage TEST: Un {{ballons}} ->> ballon TEST: Une {{cinglées}} ->> cinglée TEST: {{une}} des {{chats}} TEST: {{une}} kyste ->> un TEST: {{une}} des {{joueurs}} TEST: mille et une merveilles ## un / une __gn_un_2m__ un *WORD *WORD <<- /gn/ not value(<1, "|et|ou|d’|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) -3>> =suggMasSing(\3, True) # Accord de genre erroné : « \1 \2 » est masculin, « \3 » est féminin. |
︙ | ︙ | |||
9498 9499 9500 9501 9502 9503 9504 | <<- /gn/ -3>> =suggMasSing(\3) # Trouver \2 + [adjectif] : l’adjectif s’accorde avec “\2” (au masculin singulier). TEST: ils trouvent ça de plus en plus {{idiots}} ->> idiot !! !! | | | 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 | <<- /gn/ -3>> =suggMasSing(\3) # Trouver \2 + [adjectif] : l’adjectif s’accorde avec “\2” (au masculin singulier). TEST: ils trouvent ça de plus en plus {{idiots}} ->> idiot !! !! !!!! Groupe nominal (sans déterminant) !! !! !! ## Sans article __gn_start_2m__ <start> @:[NA]¬* @:[NA]¬* <<- /gn/ ((morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*"))) and not apposition(\2, \3) |
︙ | ︙ | |||
9597 9598 9599 9600 9601 9602 9603 | @@@@ @@@@END_GRAPH _ @@@@ ## articles divers | < < < < < < < < < < < < < < < < < < < < < < < < < < < | 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 | @@@@ @@@@END_GRAPH _ @@@@ ## articles divers __[i]/gn(gn_2m_det_mas_sing)__ (?<!et |ou |de )(?:cet?|quel|au|ledit) +({w_2}) +({w_2}) @@w,$ <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0)") and morph(\2, ":[NAQ].*:f") and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$") -2>> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. |
︙ | ︙ | |||
9675 9676 9677 9678 9679 9680 9681 | and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. TEST: il brandissait avec fougue son drapeau {{déchirés}} TEST: comment osez-vous médire de mon héritage {{glorieuse}} | < < < < < < < < < < < < < < < < < < < < < < < < < < < | 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 | and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. TEST: il brandissait avec fougue son drapeau {{déchirés}} TEST: comment osez-vous médire de mon héritage {{glorieuse}} __[i]/gn(gn_2m_det_fem_sing)__ (?<!et |ou |de )(?:[mts]a|cette|quelle|ladite) +({w_2}) +({w_2}) @@w,$ <<- \1 != "fois" and not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0)") and morph(\2, ":[NAQ].*:m") and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$") -2>> =suggFemSing(@, True) # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin. |
︙ | ︙ | |||
9728 9729 9730 9731 9732 9733 9734 | and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggFemSing(@) # Accord de nombre erroné avec « \1 » : « \2 » 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}} ? | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 | and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggFemSing(@) # Accord de nombre erroné avec « \1 » : « \2 » 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}} ? __[i]/gn(gn_2m_det_epi_sing)__ (?<!et |ou |de )(?:chaque|quelque|[nv]otre) +({w_2}) +({w_2}) @@w,$ <<- \1 != "fois" and not \2.startswith("seul") and not re.search("(?i)^quelque chose", \0) and ((morphex(\1, ":[NAQ].*:m", ":(?:B|e|G|V0|f)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:B|e|G|V0|m)") and morph(\2, ":[NAQ].*:m"))) and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$") -2>> =switchGender(@, False) # Accord de genre erroné entre « \1 » et « \2 ». |
︙ | ︙ |