Overview
Comment: | [build][core] new function: suggAgree() [fr] ajustements et nouvelles règles |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr | core | build |
Files: | files | file ages | folders |
SHA3-256: |
101d54de7e204acb691acbf4484121d9 |
User & Date: | olr on 2021-01-07 18:22:03 |
Other Links: | manifest | tags |
Context
2021-01-07
| ||
18:36 | [core][js] fix variable name check-in: fb8117df84 user: olr tags: trunk, core | |
18:22 | [build][core] new function: suggAgree() [fr] ajustements et nouvelles règles check-in: 101d54de7e user: olr tags: trunk, fr, core, build | |
13:48 | [cli] clear text beginning by TEST: check-in: b5ba52c145 user: olr tags: trunk, cli | |
Changes
Modified compile_rules_graph.py from [0195f7a15c] to [82cd1181fb].
︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | + + + + - - | sCode = sCode.replace("__also__", "bCondMemo") sCode = sCode.replace("__else__", "not bCondMemo") sCode = sCode.replace("sContext", "_sAppContext") sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\(\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\](\d+), *[\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], lToken[nTokenOffset+\\3]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\](\d+), *[\\]-(\d+)", 'g_\\1(lToken[nTokenOffset+\\2], lToken[nLastToken-\\3+1]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\]-(\d+), *[\\](\d+)", 'g_\\1(lToken[nLastToken-\\2+1], lToken[nTokenOffset+\\3]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\]-(\d+), *[\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], lToken[nLastToken-\\3+1]', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode) sCode = re.sub(r"\bspace[(][\\](\d+)", 'g_space(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) sCode = re.sub(r"\bspace[(][\\]-(\d+)", 'g_space(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\bmorph2[(][\\](\d+)", 'g_morph2(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) sCode = re.sub(r"\bmorph2[(][\\]-(\d+)", 'g_morph2(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\b(morph0?|tag|meta|value|info)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode) # next token sCode = re.sub(r"\b(morph0?|tag|meta|value|info)\(<1", 'g_\\1(lToken[nTokenOffset]', sCode) # previous token sCode = re.sub(r"\b(morph0?|tag|meta|value|info)\(>(\d+)", 'g_\\1(g_token(lToken, nLastToken+\\2)', sCode) # next token sCode = re.sub(r"\b(morph0?|tag|meta|value|info)\(<(\d+)", 'g_\\1(g_token(lToken, nTokenOffset+1-\\2)', sCode) # previous token sCode = re.sub(r"\bspace[(](>1)", 'g_space(lToken[nLastToken+1], g_token(lToken, nLastToken+2)', sCode) # next token sCode = re.sub(r"\bspace[(](<1)", 'g_space(lToken[nTokenOffset], lToken[nTokenOffset+1]', sCode) # previous token sCode = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', sCode) sCode = re.sub(r"\bbefore\(\s*", 'look(sSentence[:lToken[1+nTokenOffset]["nStart"]], ', sCode) # before(sCode) sCode = re.sub(r"\bafter\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode) # after(sCode) sCode = re.sub(r"\bbefore0\(\s*", 'look(sSentence0[:lToken[1+nTokenOffset]["nStart"]], ', sCode) # before0(sCode) sCode = re.sub(r"\bafter0\(\s*", 'look(sSentence0[lToken[nLastToken]["nEnd"]:], ', sCode) # after0(sCode) |
︙ |
Modified gc_lang/fr/modules-js/cregex.js from [63b1a41c99] to [f6f0552c5d].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | + | // Grammalecte - Compiled regular expressions /* jshint esversion:6 */ /* jslint esversion:6 */ var cregex = { ///// Lemme _zLemma: new RegExp(">([a-zà-öø-ÿ0-9Ā-ʯ][a-zà-öø-ÿ0-9Ā-ʯ-]+)"), ///// Masculin / féminin / singulier / pluriel _zGender: new RegExp(":[mfe]"), _zNumber: new RegExp(":[spi]"), _zGenderNumber: new RegExp(":[mfe]:[spi]"), ///// Nom et adjectif _zNA: new RegExp(":[NA]"), //// nombre _zNAs: new RegExp(":[NA].*:s"), _zNAp: new RegExp(":[NA].*:p"), |
︙ | |||
129 130 131 132 133 134 135 | 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | - + + + + + + + + + + + + + + + + + + + + + + + + + + + + | return sGender; }, getNumber: function (lMorph) { // returns number of word (':s', ':p', ':i' or empty string). let sNumber = ""; for (let sMorph of lMorph) { |
︙ |
Modified gc_lang/fr/modules-js/gce_suggestions.js from [e41e56dec1] to [8fe9942358].
︙ | |||
450 451 452 453 454 455 456 457 458 459 460 461 462 463 | 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | } aSugg.delete(""); if (aSugg.size > 0) { return Array.from(aSugg).join("|"); } return ""; } function g_suggAgree (dTokenDst, dTokenSrc) { // returns suggestions for <dTokenDst> that matches agreement with <dTokenSrc> let lMorphSrc = oTokenSrc.hasOwnProperty("lMorph") ? oTokenSrc["lMorph"] : gc_engine.oSpellChecker.getMorph(oTokenSrc["sValue"]); if (lMorphSrc.length === 0) { return ""; } let [sGender, sNumber] = cregex.getGenderNumber(lMorphSrc); if (sGender == ":m") { if (sNumber == ":s") { return suggMasSing(dTokenDst["sValue"]); } else if (sNumber == ":p") { return suggMasPlur(dTokenDst["sValue"]); } return suggMasSing(dTokenDst["sValue"]); } else if (sGender == ":f") { if (sNumber == ":s") { return suggFemSing(dTokenDst["sValue"]); } else if (sNumber == ":p") { return suggFemPlur(dTokenDst["sValue"]); } return suggFemSing(dTokenDst["sValue"]); } else if (sGender == ":e") { if (sNumber == ":s") { return suggSing(dTokenDst["sValue"]); } else if (sNumber == ":p") { return suggPlur(dTokenDst["sValue"]); } return dTokenDst["sValue"]; } return ""; } function hasFemForm (sFlex) { for (let sStem of gc_engine.oSpellChecker.getLemma(sFlex)) { if (mfsp.isMasForm(sStem) || conj.hasConj(sStem, ":PQ", ":Q3")) { return true; } } |
︙ |
Modified gc_lang/fr/modules/cregex.py from [552bd47629] to [cca55d14bc].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | + | """ Grammalecte - Compiled regular expressions """ import re #### Lemme Lemma = re.compile(r"^>(\w[\w-]*)") #### Analyses Gender = re.compile(":[mfe]") Number = re.compile(":[spi]") GenderNumber = re.compile(":[mfe]:[spi]") #### Nom et adjectif NA = re.compile(":[NA]") ## nombre NAs = re.compile(":[NA].*:s") NAp = re.compile(":[NA].*:p") |
︙ | |||
125 126 127 128 129 130 131 132 133 134 135 136 137 138 | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | + + + + + + + + + + + + + + + + + + + + | m = Number.search(sMorph) if m: if not sNumber: sNumber = m.group(0) elif sNumber != m.group(0): return ":i" return sNumber def getGenderNumber (lMorph): "returns tuple (gender, number) of word: (':m', ':f', ':e' or empty string) and (':s', ':p', ':i' or empty string)" sGender = "" sNumber = "" for sMorph in lMorph: m = GenderNumber.search(sMorph) if m: sGenderx = m.group(0)[0:2] sNumberx = m.group(0)[2:4] if not sGender: sGender = sGenderx elif sGender != sGenderx: sGender = ":e" if not sNumber: sNumber = sNumberx elif sNumber != sNumberx: sNumber = ":i" return sGender, sNumber # NOTE : isWhat (lMorph) returns True if lMorph contains nothing else than What # mbWhat (lMorph) returns True if lMorph contains What at least once ## isXXX = it’s certain def isNom (lMorph): |
︙ |
Modified gc_lang/fr/modules/gce_suggestions.py from [5245c9f027] to [cfe989f25d].
︙ | |||
339 340 341 342 343 344 345 346 347 348 349 350 351 352 | 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 | + + + + + + + + + + + + + + + + + + + + + + + + + + + | for e in phonet.selectSimil(sFlex, ":f:[pi]"): aSugg.add(e) aSugg.discard("") if aSugg: return "|".join(aSugg) return "" def g_suggAgree (dTokenDst, dTokenSrc): "returns suggestions for <dTokenDst> that matches agreement with <dTokenSrc>" lMorphSrc = dTokenSrc["lMorph"] if "lMorph" in dTokenSrc else _oSpellChecker.getMorph(dTokenSrc["sValue"]) if not lMorphSrc: return "" sGender, sNumber = cr.getGenderNumber(lMorphSrc) if sGender == ":m": if sNumber == ":s": return suggMasSing(dTokenDst["sValue"]) elif sNumber == ":p": return suggMasPlur(dTokenDst["sValue"]) return suggMasSing(dTokenDst["sValue"]) elif sGender == ":f": if sNumber == ":s": return suggFemSing(dTokenDst["sValue"]) elif sNumber == ":p": return suggFemPlur(dTokenDst["sValue"]) return suggFemSing(dTokenDst["sValue"]) elif sGender == ":e": if sNumber == ":s": return suggSing(dTokenDst["sValue"]) elif sNumber == ":p": return suggPlur(dTokenDst["sValue"]) return dTokenDst["sValue"] return "" def hasFemForm (sFlex): "return True if there is a feminine form of <sFlex>" for sStem in _oSpellChecker.getLemma(sFlex): if mfsp.isMasForm(sStem) or conj.hasConj(sStem, ":PQ", ":Q3"): return True if phonet.hasSimil(sFlex, ":f"): |
︙ |
Modified gc_lang/fr/rules.grx from [74ea4b8074] to [a21f7c40a2].
︙ | |||
7964 7965 7966 7967 7968 7969 7970 | 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 | - + + | TEST: Le mari répète à l’envi qu’il a découvert la France à travers les mots de sa femme. TEST: Il reste de nombreux militants sincères à la FI. __conf_de_vconj__ [de|d’] @:[123][sp]¬:[GNA] <<- /conf/ not \2.istitle() and not \2.isupper() and not value(\2, "|jure|") and not tag(\2, "eg1mot") |
︙ | |||
10061 10062 10063 10064 10065 10066 10067 | 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 | - + | autour [de|d’] [ce|mon|ton|son|notre|votre|leur] [coup|coût|cout] la bride au [coup|coût|cout] la bride autour du [coup|coût|cout] la bride sur le [coup|coût|cout] <<- /conf/ --1>> cou && Confusion probable. Le coût est le prix d’une chose. Le coup est ce qui frappe. Le cou est la partie joignant le tronc à la tête.|https://fr.wiktionary.org/wiki/cou [>cou|>coût|>cout] [au-dessous|en-dessous] [de|d’] la ceinture |
︙ | |||
16290 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 | 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 16317 16318 16319 | + + | ci-dessus chaque chose en son temps chose promise ?,¿ chose due comme [de|d’] juste comme bon [me|te|lui|leur|nous|vous] semble comme ci ?,¿ comme ça comme cul et chemise comme des fétus [de|d’] paille comme [frappé+ses] par la foudre comme gage [de|d’] bonne foi comme n’importe où ?ailleurs¿ comme par [enchantement|magie] comme par un fait exprès comme pas deux comme peau [de|d’] chagrin comme prévu comme promis comme qui dirait comme si [de|d’] rien n’ était comme sur des roulettes comme un lion en cage comme un fétu [de|d’] paille comme une lettre à la poste contrairement aux apparences contre mauvaise fortune ?,¿ bon cœur contre nature contre toute [attente|vraisemblance] contre vents et marées contre [mon|ton|son|notre|votre|leur] gré |
︙ | |||
16835 16836 16837 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 | 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 16850 16851 16852 16853 16854 16855 16856 16857 16858 16859 16860 16861 16862 16863 16864 16865 16866 16867 16868 | + + + + - + + + + + + | pour ça [vaut|valait] pourtant presque primo quand bien même quand bon [me|te|lui|nous|vous|leur] [semble|semblera|semblait] quant à [ça|cela|ceci] qu’ à cela ne tienne [que|qu’] [ça|ceci|cela] [me|te|lui|leur|nous|vous] plaise ou non ## [que|qu’] je [le|l’] veuille ou non [que|qu’] tu [le|l’] veuilles ou non qu’ [il|elle|on|iel] [le|l’] veuille ou non [que|qu’] vous [le|l’] vouliez ou non [que|qu’] nous [le|l’] voulions ou non qu’ [ils|elles|iels] [le|l’] veuillent ou non ## [que|qu’] [je|j’] m’ en réjouisse ou que [je|j’] le déplore |
︙ | |||
18242 18243 18244 18245 18246 18247 18248 18249 18250 18251 18252 18253 18254 18255 | 18254 18255 18256 18257 18258 18259 18260 18261 18262 18263 18264 18265 18266 18267 18268 | + | >résidence d’ [été|hiver] >responsable qualité [>resto|>restau] u >retour à la case départ >retour à la normale >retour [de|d’] [bâton|flamme] >retour en arrière revers [de|d’] fortune >revue [de|d’] presse >rivière à sec >robe [de|d’] [chambre|soirée] >robe du soir >robe sans >manche >roi [de|d’] [carreau|cœur|pique|trèfle] >roman à [>sensation|suspense] |
︙ | |||
18974 18975 18976 18977 18978 18979 18980 18981 18982 18983 18984 18985 18986 18987 | 18987 18988 18989 18990 18991 18992 18993 18994 18995 18996 18997 18998 18999 19000 19001 19002 | + + | complètement <<- not morph(<1, ":D.*:m") ~>> * ~.ment$ ?[parlant|pas]¿ <<- morph(\1, ":W", ":(?:3p|N)") ~>> * , *WORD et $:W¬* , <<- morph(\2, ":W", "*") ~>> * @@@@ @@@@ @@@@ @@@@ @@@@GRAPH: intergraphe12a|ig12a _ |
︙ | |||
24851 24852 24853 24854 24855 24856 24857 | 24866 24867 24868 24869 24870 24871 24872 24873 24874 24875 24876 24877 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 24888 24889 24890 24891 24892 24893 24894 24895 24896 24897 24898 24899 24900 24901 24902 24903 24904 24905 24906 24907 24908 | - + + + + + + + + + + + + + + + + - - - - + + + + | !! !! !!!! Groupe nominal (sans déterminant) !! !! !! |
︙ | |||
24925 24926 24927 24928 24929 24930 24931 24932 24933 24934 24935 24936 24937 24938 | 24955 24956 24957 24958 24959 24960 24961 24962 24963 24964 24965 24966 24967 24968 24969 24970 24971 24972 24973 24974 24975 24976 24977 24978 24979 24980 24981 | + + + + + + + + + + + + + | TEST: {{petite}} et {{grande}} homme ->> petit|||grand TEST: {{bel}} et {{grand}} nation ->> belle|||grande TEST: {{stupides}} et {{intellectuels}} psychologue ->> stupide|||intellectuel TEST: {{petite}} et {{grande}} hommes ->> petits|||grands TEST: {{bel}} et {{grand}} nations ->> belles|||grandes TEST: {{stupide}} et {{intellectuel}} psychologues ->> stupides|||intellectuels __gn_2m_et__ [<start>|,|(] *WORD et @:A¬:[ISKYPEGW]|;C [<end>|,|)] <<- /gn/ morph(\2, ":A", ":[ISKYPEGW]|;C") and not agreement(\2, \4, False) -2>> =suggAgree(\2, \4) && Cet adjectif n’est pas accordé avec l’adjectif “\4”. <<- /gn/ __also__ -4>> =suggAgree(\4, \2) && Cet adjectif n’est pas accordé avec l’adjectif “\4”. TEST: cette femme, {{grande}} et {{intelligent}} ->> grand|||intelligente TEST: cet homme, {{curieuse}} et {{affligé}} ->> curieux|||affligée TEST: ces personnes, {{étrangères}} et {{passionnée}} ->> étrangère|||passionnées TEST: des portes, {{grands}} et {{folles}} ->> grandes|||fous TEST: ils marchaient ensemble, ingénieurs et patron, vers leur dernière heure, ignorants du danger. TEST: nous roulions lentement vers cette maison, inquiets et apeurés. ## Prépositions __gn_pfx_en_2m__ en @:[NA]¬* @:[NA]¬* <<- /gn/ ( (morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*")) ) and not apposition(\2, \3) -3>> =switchGender(\3) && Accord de genre erroné avec « \2 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2) && Accord de genre erroné avec « \3 ». |
︙ | |||
26261 26262 26263 26264 26265 26266 26267 | 26304 26305 26306 26307 26308 26309 26310 26311 26312 26313 26314 26315 26316 26317 26318 26319 | - - + + | __infi_commencer_finir_par__ [>commencer|>finir] par ?[le|l’|la|leur|les]¿ @:V¬:[NGMY] [>commencer|>finir] par [nous|vous|lui] @:V¬:[GMY] <<- /infi/ not \-1[0:1].isupper() --1>> =suggVerbInfi(\3) && Après « commencer/finir par », le verbe devrait être à l’infinitif. |
︙ | |||
26294 26295 26296 26297 26298 26299 26300 | 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 26366 26367 | - + - | [de|d’] [me|m’|te|t’|se|s’] [le|la|l’|les|en|y] @:V¬:Y [de|d’] [nous|vous] [le|la|l’|les|en|y] @:V¬:[YP] [de|d’] [le|la|l’|les] [lui|leur|en|y] @:V¬:Y [de|d’] leur en @:V¬:Y [de|d’] lui en @:V¬:[YP] <<- /infi/ --1>> =suggVerbInfi(\-1) && Après “de”, le verbe devrait être à l’infinitif. |
︙ | |||
26619 26620 26621 26622 26623 26624 26625 | 26661 26662 26663 26664 26665 26666 26667 26668 26669 26670 26671 26672 26673 26674 26675 26676 26677 26678 26679 26680 26681 26682 26683 26684 26685 26686 26687 26688 26689 26690 26691 26692 26693 26694 26695 26696 26697 26698 26699 26700 26701 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 | - + - + - + - + - + - + | __infi_que_faire_sinon__ que faire ?,¿ sinon ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ée?s?|ez|ai[ts]?)$ que faire ?,¿ sinon ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~..(?:ée?s?|ez|ai[ts]?)$ que faire ?,¿ sinon ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] ~..(?:ée?s?|ez|ai[ts]?)$ que faire ?,¿ sinon ?[ne|n’]¿ [lui|leur|y] en ~..(?:ée?s?|ez|ai[ts]?)$ |
︙ | |||
27951 27952 27953 27954 27955 27956 27957 | 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 28016 28017 28018 28019 28020 28021 28022 28023 28024 28025 28026 28027 28028 28029 28030 28031 28032 28033 28034 28035 28036 28037 28038 28039 28040 28041 28042 28043 28044 28045 28046 28047 28048 28049 28050 28051 28052 28053 28054 28055 28056 28057 28058 28059 28060 28061 28062 28063 28064 28065 28066 28067 28068 28069 28070 28071 28072 28073 28074 28075 28076 28077 28078 28079 28080 28081 28082 28083 28084 28085 28086 | - + - - - - - - + + + + + + - + - + - - - - + + + + - - - - - + + + + + - - + + - + - + - + - + | TEST: En outre, les grosses institutions comme l’Éducation Nationale ne développent pas forcément en interne TEST: Le mieux serait de le faire glisser __tag_locutions_verbales_d_état__ ## verbes d’état |
︙ | |||
29709 29710 29711 29712 29713 29714 29715 29716 29717 29718 29719 29720 29721 29722 | 29751 29752 29753 29754 29755 29756 29757 29758 29759 29760 29761 29762 29763 29764 29765 29766 29767 29768 29769 29770 29771 29772 29773 29774 29775 29776 29777 29778 29779 | + + + + + + + + + + + + + + + | TEST: iel semble être {{ignore}} TEST: ouais, on adore avoir été {{persécute}} par ces enfoirés TEST: nous préférions être restés {{chagrinait}} par cette perte TEST: on déclare avoir été {{choque}} par ces nouvelles TEST: ils semblent être redevenus {{élut}} TEST: elles aiment avoir paru {{murent}} __ppas_fin_loc_verb_état_adj_et_adj__ [/_VE_|/_VEI_|/_LVEF_|/_LVEIF_|/_VEP_|/_LVEPF_|/_LVEPIF_] *WORD et @:A¬:[ISKYPEGW]|;C <<- /ppas/ morph(\2, ":[AQ]", ":G|;C") and not agreement(\2, \-1, False) --1>> =suggAgree(\-1, \2) && Cet adjectif n’est pas accordé avec l’adjectif “\2”. TEST: il est furieux et {{curieuse}} ->> curieux TEST: tu es sot et {{ignorants}} ->> ignorant TEST: elle est belle et {{intelligent}} ->> intelligente TEST: elle sut apparaître grande et {{humbles}} à la fois ->> humble TEST: ils devenaient forts et {{humble}} ->> humbles TEST: ils crurent avoir été trompés et {{volé}} ->> volés TEST: elles déclareront être restées calmes et {{attentive}} ->> attentives TEST: nous imaginons devenir riches et {{connu}} ->> connus __ppas_être_confusion__ ne [pas|jamais] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ --1>> =suggVerbPpas(\-1) && Après “ne \2 être”, il faut un participe passé. avoir [pu|cru|pensé|imaginé] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ not value(<1, "|l’|") and not tagbefore(\1, "_que_") --1>> =suggVerbPpas(\-1) && Après le verbe “être”, il faut un participe passé. |
︙ |