Grammalecte  Check-in [101d54de7e]

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: 101d54de7e204acb691acbf4484121d985f887049231d76c72128cd972848b20
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: core, trunk
18:22
[build][core] new function: suggAgree() [fr] ajustements et nouvelles règles check-in: 101d54de7e user: olr tags: build, core, fr, trunk
13:48
[cli] clear text beginning by TEST: check-in: b5ba52c145 user: olr tags: cli, trunk
Changes

Modified compile_rules_graph.py from [0195f7a15c] to [82cd1181fb].

    38     38       sCode = sCode.replace("__also__", "bCondMemo")
    39     39       sCode = sCode.replace("__else__", "not bCondMemo")
    40     40       sCode = sCode.replace("sContext", "_sAppContext")
    41     41       sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\(\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    42     42       sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
    43     43       sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    44     44       sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
           45  +    sCode = re.sub(r"\b(agreement|suggAgree)[(][\\](\d+), *[\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], lToken[nTokenOffset+\\3]', sCode)
           46  +    sCode = re.sub(r"\b(agreement|suggAgree)[(][\\](\d+), *[\\]-(\d+)", 'g_\\1(lToken[nTokenOffset+\\2], lToken[nLastToken-\\3+1]', sCode)
           47  +    sCode = re.sub(r"\b(agreement|suggAgree)[(][\\]-(\d+), *[\\](\d+)", 'g_\\1(lToken[nLastToken-\\2+1], lToken[nTokenOffset+\\3]', sCode)
           48  +    sCode = re.sub(r"\b(agreement|suggAgree)[(][\\]-(\d+), *[\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], lToken[nLastToken-\\3+1]', sCode)
    45     49       sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode)
    46     50       sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode)
    47     51       sCode = re.sub(r"\bspace[(][\\](\d+)", 'g_space(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    48     52       sCode = re.sub(r"\bspace[(][\\]-(\d+)", 'g_space(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    49     53       sCode = re.sub(r"\bmorph2[(][\\](\d+)", 'g_morph2(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    50     54       sCode = re.sub(r"\bmorph2[(][\\]-(\d+)", 'g_morph2(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    51     55       sCode = re.sub(r"\b(morph0?|tag|meta|value|info)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode)                      # next token
................................................................................
    55     59       sCode = re.sub(r"\bspace[(](>1)", 'g_space(lToken[nLastToken+1], g_token(lToken, nLastToken+2)', sCode)     # next token
    56     60       sCode = re.sub(r"\bspace[(](<1)", 'g_space(lToken[nTokenOffset], lToken[nTokenOffset+1]', sCode)            # previous token
    57     61       sCode = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', sCode)
    58     62       sCode = re.sub(r"\bbefore\(\s*", 'look(sSentence[:lToken[1+nTokenOffset]["nStart"]], ', sCode)          # before(sCode)
    59     63       sCode = re.sub(r"\bafter\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode)                 # after(sCode)
    60     64       sCode = re.sub(r"\bbefore0\(\s*", 'look(sSentence0[:lToken[1+nTokenOffset]["nStart"]], ', sCode)        # before0(sCode)
    61     65       sCode = re.sub(r"\bafter0\(\s*", 'look(sSentence0[lToken[nLastToken]["nEnd"]:], ', sCode)               # after0(sCode)
    62         -    sCode = re.sub(r"\bagreement[(]\\(\d+), *\\(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\2]', sCode)
    63         -    sCode = re.sub(r"\bagreement[(]\\(\d+), *\\-(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nLastToken-\\2+1]', sCode)
    64     66       sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode)
    65     67       sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode)
    66     68       sCode = re.sub(r">1", 'lToken[nLastToken+1]["sValue"]', sCode)
    67     69       sCode = re.sub(r"<1", 'lToken[nTokenOffset]["sValue"]', sCode)
    68     70       return sCode
    69     71   
    70     72   

Modified gc_lang/fr/modules-js/cregex.js from [63b1a41c99] to [f6f0552c5d].

     7      7   var cregex = {
     8      8       ///// Lemme
     9      9       _zLemma: new RegExp(">([a-zà-öø-ÿ0-9Ā-ʯ][a-zà-öø-ÿ0-9Ā-ʯ-]+)"),
    10     10   
    11     11       ///// Masculin / féminin / singulier / pluriel
    12     12       _zGender: new RegExp(":[mfe]"),
    13     13       _zNumber: new RegExp(":[spi]"),
           14  +    _zGenderNumber: new RegExp(":[mfe]:[spi]"),
    14     15   
    15     16       ///// Nom et adjectif
    16     17       _zNA: new RegExp(":[NA]"),
    17     18   
    18     19       //// nombre
    19     20       _zNAs: new RegExp(":[NA].*:s"),
    20     21       _zNAp: new RegExp(":[NA].*:p"),
................................................................................
   129    130           return sGender;
   130    131       },
   131    132   
   132    133       getNumber: function (lMorph) {
   133    134           // returns number of word (':s', ':p', ':i' or empty string).
   134    135           let sNumber = "";
   135    136           for (let sMorph of lMorph) {
   136         -            let m = this._zNumber.exec(sWord);
          137  +            let m = this._zNumber.exec(sMorph);
   137    138               if (m) {
   138    139                   if (!sNumber) {
   139    140                       sNumber = m[0];
   140    141                   } else if (sNumber != m[0]) {
   141    142                       return ":i";
   142    143                   }
   143    144               }
   144    145           }
   145    146           return sNumber;
   146    147       },
          148  +
          149  +    getGenderNumber: function (lMorph) {
          150  +        // returns tuple (gender, number) of word: (':m', ':f', ':e' or empty string) and (':s', ':p', ':i' or empty string)
          151  +        let sGender = "";
          152  +        let sNumber = "";
          153  +        for (let sMorph of lMorph) {
          154  +            let m = this._zGenderNumber.exec(sMorph);
          155  +            if (m) {
          156  +                let sGenderx = m[0].slice(0,2);
          157  +                let sNumberx = m[0].slice(2,4);
          158  +                if (!sGender) {
          159  +                    sGender = sGenderx;
          160  +                }
          161  +                else if (sGender != sGenderx) {
          162  +                    sGenderx = ":e";
          163  +                }
          164  +                if (!sNumber) {
          165  +                    sNumber = sNumberx;
          166  +                }
          167  +                else if (sNumber != sNumberx) {
          168  +                    sNumberx = ":i";
          169  +                }
          170  +            }
          171  +        }
          172  +        return [sGender, sNumber];
          173  +    },
          174  +
   147    175   
   148    176       // NOTE :  isWhat (lMorph)    returns true   if lMorph contains nothing else than What
   149    177       //         mbWhat (lMorph)    returns true   if lMorph contains What at least once
   150    178   
   151    179       //// isXXX = it’s certain
   152    180   
   153    181       isNom: function (lMorph) {

Modified gc_lang/fr/modules-js/gce_suggestions.js from [e41e56dec1] to [8fe9942358].

   450    450       }
   451    451       aSugg.delete("");
   452    452       if (aSugg.size > 0) {
   453    453           return Array.from(aSugg).join("|");
   454    454       }
   455    455       return "";
   456    456   }
          457  +
          458  +function g_suggAgree (dTokenDst, dTokenSrc) {
          459  +    // returns suggestions for <dTokenDst> that matches agreement with <dTokenSrc>
          460  +    let lMorphSrc = oTokenSrc.hasOwnProperty("lMorph") ? oTokenSrc["lMorph"] : gc_engine.oSpellChecker.getMorph(oTokenSrc["sValue"]);
          461  +    if (lMorphSrc.length === 0) {
          462  +        return "";
          463  +    }
          464  +    let [sGender, sNumber] = cregex.getGenderNumber(lMorphSrc);
          465  +    if (sGender == ":m") {
          466  +        if (sNumber == ":s") {
          467  +            return suggMasSing(dTokenDst["sValue"]);
          468  +        }
          469  +        else if (sNumber == ":p") {
          470  +            return suggMasPlur(dTokenDst["sValue"]);
          471  +        }
          472  +        return suggMasSing(dTokenDst["sValue"]);
          473  +    }
          474  +    else if (sGender == ":f") {
          475  +        if (sNumber == ":s") {
          476  +            return suggFemSing(dTokenDst["sValue"]);
          477  +        }
          478  +        else if (sNumber == ":p") {
          479  +            return suggFemPlur(dTokenDst["sValue"]);
          480  +        }
          481  +        return suggFemSing(dTokenDst["sValue"]);
          482  +    }
          483  +    else if (sGender == ":e") {
          484  +        if (sNumber == ":s") {
          485  +            return suggSing(dTokenDst["sValue"]);
          486  +        }
          487  +        else if (sNumber == ":p") {
          488  +            return suggPlur(dTokenDst["sValue"]);
          489  +        }
          490  +        return dTokenDst["sValue"];
          491  +    }
          492  +    return "";
          493  +}
   457    494   
   458    495   function hasFemForm (sFlex) {
   459    496       for (let sStem of gc_engine.oSpellChecker.getLemma(sFlex)) {
   460    497           if (mfsp.isMasForm(sStem) || conj.hasConj(sStem, ":PQ", ":Q3")) {
   461    498               return true;
   462    499           }
   463    500       }

Modified gc_lang/fr/modules/cregex.py from [552bd47629] to [cca55d14bc].

     6      6   
     7      7   #### Lemme
     8      8   Lemma = re.compile(r"^>(\w[\w-]*)")
     9      9   
    10     10   #### Analyses
    11     11   Gender = re.compile(":[mfe]")
    12     12   Number = re.compile(":[spi]")
           13  +GenderNumber = re.compile(":[mfe]:[spi]")
    13     14   
    14     15   #### Nom et adjectif
    15     16   NA = re.compile(":[NA]")
    16     17   
    17     18   ## nombre
    18     19   NAs = re.compile(":[NA].*:s")
    19     20   NAp = re.compile(":[NA].*:p")
................................................................................
   125    126           m = Number.search(sMorph)
   126    127           if m:
   127    128               if not sNumber:
   128    129                   sNumber = m.group(0)
   129    130               elif sNumber != m.group(0):
   130    131                   return ":i"
   131    132       return sNumber
          133  +
          134  +def getGenderNumber (lMorph):
          135  +    "returns tuple (gender, number) of word: (':m', ':f', ':e' or empty string) and (':s', ':p', ':i' or empty string)"
          136  +    sGender = ""
          137  +    sNumber = ""
          138  +    for sMorph in lMorph:
          139  +        m = GenderNumber.search(sMorph)
          140  +        if m:
          141  +            sGenderx = m.group(0)[0:2]
          142  +            sNumberx = m.group(0)[2:4]
          143  +            if not sGender:
          144  +                sGender = sGenderx
          145  +            elif sGender != sGenderx:
          146  +                sGender = ":e"
          147  +            if not sNumber:
          148  +                sNumber = sNumberx
          149  +            elif sNumber != sNumberx:
          150  +                sNumber = ":i"
          151  +    return sGender, sNumber
          152  +
   132    153   
   133    154   # NOTE :  isWhat (lMorph)    returns True   if lMorph contains nothing else than What
   134    155   #         mbWhat (lMorph)    returns True   if lMorph contains What at least once
   135    156   
   136    157   ## isXXX = it’s certain
   137    158   
   138    159   def isNom (lMorph):

Modified gc_lang/fr/modules/gce_suggestions.py from [5245c9f027] to [cfe989f25d].

   339    339           for e in phonet.selectSimil(sFlex, ":f:[pi]"):
   340    340               aSugg.add(e)
   341    341       aSugg.discard("")
   342    342       if aSugg:
   343    343           return "|".join(aSugg)
   344    344       return ""
   345    345   
          346  +
          347  +def g_suggAgree (dTokenDst, dTokenSrc):
          348  +    "returns suggestions for <dTokenDst> that matches agreement with <dTokenSrc>"
          349  +    lMorphSrc = dTokenSrc["lMorph"]  if "lMorph" in dTokenSrc  else  _oSpellChecker.getMorph(dTokenSrc["sValue"])
          350  +    if not lMorphSrc:
          351  +        return ""
          352  +    sGender, sNumber = cr.getGenderNumber(lMorphSrc)
          353  +    if sGender == ":m":
          354  +        if sNumber == ":s":
          355  +            return suggMasSing(dTokenDst["sValue"])
          356  +        elif sNumber == ":p":
          357  +            return suggMasPlur(dTokenDst["sValue"])
          358  +        return suggMasSing(dTokenDst["sValue"])
          359  +    elif sGender == ":f":
          360  +        if sNumber == ":s":
          361  +            return suggFemSing(dTokenDst["sValue"])
          362  +        elif sNumber == ":p":
          363  +            return suggFemPlur(dTokenDst["sValue"])
          364  +        return suggFemSing(dTokenDst["sValue"])
          365  +    elif sGender == ":e":
          366  +        if sNumber == ":s":
          367  +            return suggSing(dTokenDst["sValue"])
          368  +        elif sNumber == ":p":
          369  +            return suggPlur(dTokenDst["sValue"])
          370  +        return dTokenDst["sValue"]
          371  +    return ""
          372  +
   346    373   
   347    374   def hasFemForm (sFlex):
   348    375       "return True if there is a feminine form of <sFlex>"
   349    376       for sStem in _oSpellChecker.getLemma(sFlex):
   350    377           if mfsp.isMasForm(sStem) or conj.hasConj(sStem, ":PQ", ":Q3"):
   351    378               return True
   352    379       if phonet.hasSimil(sFlex, ":f"):

Modified gc_lang/fr/rules.grx from [74ea4b8074] to [a21f7c40a2].

  7964   7964   TEST: Le mari répète à l’envi qu’il a découvert la France à travers les mots de sa femme.
  7965   7965   TEST: Il reste de nombreux militants sincères à la FI.
  7966   7966   
  7967   7967   
  7968   7968   __conf_de_vconj__
  7969   7969       [de|d’]  @:[123][sp]¬:[GNA]
  7970   7970           <<- /conf/ not \2.istitle() and not \2.isupper() and not value(\2, "|jure|") and not tag(\2, "eg1mot")
  7971         -        -2>> =suggSimil(\2, ":[NA]", True)                                                          && Incohérence avec « \1 » : “\2” est une forme verbale conjuguée.
         7971  +        -2>> =suggSimil(\2, ":[NA]", True)+"|"+suggVerbInfi(\2)                                     && Incohérence avec « \1 » : “\2” est une forme verbale conjuguée.
  7972   7972   
  7973   7973   TEST: il s’agit de {{mette}} en évidence.
         7974  +TEST: sa façon de {{nettoyez}} était inefficace.                                            ->> nettoyer|nettoyant
  7974   7975   
  7975   7976   
  7976   7977       [de|d’]  [l’|leur]  @:[123][sp]¬:[GNAQ]
  7977   7978           <<- /conf/ not \3.istitle() and not \3.isupper() -3>> =suggSimil(\3, ":[NA]:.:[si]", True)  && Incohérence avec « \1 \2 » : “\3” est une forme verbale conjuguée.
  7978   7979   
  7979   7980   TEST: de l’{{arrivait}}
  7980   7981   TEST: la production d’électricité par des énergies renouvelables aurait encore augmenté de 7 %, selon les calculs de l’AIE
................................................................................
 10061  10062       autour [de|d’] [ce|mon|ton|son|notre|votre|leur] [coup|coût|cout]
 10062  10063       la bride au [coup|coût|cout]
 10063  10064       la bride autour du [coup|coût|cout]
 10064  10065       la bride sur le [coup|coût|cout]
 10065  10066           <<- /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
 10066  10067   
 10067  10068       [>cou|>coût|>cout] [au-dessous|en-dessous] [de|d’] la ceinture
 10068         -    [>cou|>coût|>cout] [de|d’] [>baguette|>barre|>bâton|>bec|>bélier|blues|>botte|>boule|>boutoir|>bol|>bite|>cœur|>chaud|>coude|>couteau|>crayon|>dé|>dent|>déprime|>éponge|>feu|>froid|fil|>filet|>folie|>foudre|>genou|>grâce|>griffe|>grisou|>gueule|>hache|>hachette|>hanche|Jarnac|jus|>jeune|>klaxon|>main|maître|maitre|>massue|>marteau|>menton|>nostalgie|>pied|>poing|>poignard|>pouce|>pute|>queue|>rein|>rabot|>savate|>sang|>sabot|>sabre|>semonce|>sonnette|>sifflet|>soleil|>sonde|>sort|>surin|>tête|>théâtre|>tonnerre|>torchon|>trique|>vent|vieux]
        10069  +    [>cou|>coût|>cout] [de|d’] [>baguette|>barre|>bâton|>bec|>bélier|blues|>botte|>boule|>boutoir|>bol|>bite|>cœur|>chaud|>coude|>couteau|>crayon|>dé|>dent|>déprime|>éponge|>feu|>froid|fil|>filet|>folie|>foudre|>genou|>grâce|>griffe|>grisou|>gueule|>hache|>hachette|>hanche|Jarnac|jus|>jeune|>klaxon|>main|maître|maitre|>massue|>marteau|>menton|monté+s|>nostalgie|>pied|>poing|>poignard|>pouce|>pute|>queue|>rein|>rabot|>savate|>sang|>sabot|>sabre|>semonce|>sonnette|>sifflet|>soleil|>sonde|>sort|>surin|>tête|>théâtre|>tonnerre|>torchon|>trique|>vent|vieux]
 10069  10070       [>cou|>coût|>cout] d’ [>arrêt|>éclat|>épée|>état|>épaule|œil|oeil|>estoc]
 10070  10071       [>cou|>coût|>cout] du sort
 10071  10072       [>cou|>coût|>cout] [dur+s]
 10072  10073       >cou d’ envoi
 10073  10074           <<- /conf/ -1>> coup|coups      && Confusion probable. Le coût est le prix d’une chose. Le cou est la partie joignant le tronc à la tête. Pour ce qui frappe, écrivez “coup”.
 10074  10075   
 10075  10076       violence du [>cou|>coût|>cout]
................................................................................
 16290  16291       ci-dessus
 16291  16292       chaque chose en son temps
 16292  16293       chose promise ?,¿ chose due
 16293  16294       comme [de|d’] juste
 16294  16295       comme bon [me|te|lui|leur|nous|vous] semble
 16295  16296       comme ci ?,¿ comme ça
 16296  16297       comme cul et chemise
        16298  +    comme des fétus [de|d’] paille
 16297  16299       comme [frappé+ses] par la foudre
 16298  16300       comme gage [de|d’] bonne foi
 16299  16301       comme n’importe où ?ailleurs¿
 16300  16302       comme par [enchantement|magie]
 16301  16303       comme par un fait exprès
 16302  16304       comme pas deux
 16303  16305       comme peau [de|d’] chagrin
 16304  16306       comme prévu
 16305  16307       comme promis
 16306  16308       comme qui dirait
 16307  16309       comme si [de|d’] rien n’ était
 16308  16310       comme sur des roulettes
 16309  16311       comme un lion en cage
        16312  +    comme un fétu [de|d’] paille
 16310  16313       comme une lettre à la poste
 16311  16314       contrairement aux apparences
 16312  16315       contre mauvaise fortune ?,¿ bon cœur
 16313  16316       contre nature
 16314  16317       contre toute [attente|vraisemblance]
 16315  16318       contre vents et marées
 16316  16319       contre [mon|ton|son|notre|votre|leur] gré
................................................................................
 16835  16838       pour ça [vaut|valait]
 16836  16839       pourtant
 16837  16840       presque
 16838  16841       primo
 16839  16842       quand bien même
 16840  16843       quand bon [me|te|lui|nous|vous|leur] [semble|semblera|semblait]
 16841  16844       quant à [ça|cela|ceci]
        16845  +    qu’ à cela ne tienne
 16842  16846       [que|qu’] [ça|ceci|cela] [me|te|lui|leur|nous|vous] plaise ou non
        16847  +    ##
 16843  16848       [que|qu’] je [le|l’] veuille ou non
 16844  16849       [que|qu’] tu [le|l’] veuilles ou non
 16845  16850       qu’ [il|elle|on|iel] [le|l’] veuille ou non
 16846  16851       [que|qu’] vous [le|l’] vouliez ou non
 16847  16852       [que|qu’] nous [le|l’] voulions ou non
 16848  16853       qu’ [ils|elles|iels] [le|l’] veuillent ou non
 16849         -    qu’ à cela ne tienne
        16854  +    ##
        16855  +    [que|qu’] [je|j’] m’ en réjouisse ou que [je|j’] le déplore
        16856  +    [que|qu’] tu t’ en réjouisses ou que tu le déplores
        16857  +    qu’ [il|elle|iel|on] s’ en réjouisse ou qu’ [il|elle|iel|on] le déplore
        16858  +    [que|qu’] nous nous en réjouissions ou que nous le déplorions
        16859  +    [que|qu’] vous vous en réjouissez ou que vous le déploriez
        16860  +    qu’ [ils|elles|iels] s’ en réjouissent ou qu’ [ils|elles|iels] le déplorent
        16861  +    ##
 16850  16862       quel qu’ en soit [le|l’] [moyen|prix|danger]
 16851  16863       quel qu’ en soit [le|l’] risque ?[économique|financier|légal|juridique|militaire]¿
 16852  16864       quelle qu’ en soit la [cause|raison]
 16853  16865       quelque peu
 16854  16866       ?[de|d’]¿ quelque part
 16855  16867       qui plus est
 16856  16868       quoi qu’ il [arrive|arrivât|advienne|advînt]
................................................................................
 18242  18254       >résidence d’ [été|hiver]
 18243  18255       >responsable qualité
 18244  18256       [>resto|>restau] u
 18245  18257       >retour à la case départ
 18246  18258       >retour à la normale
 18247  18259       >retour [de|d’] [bâton|flamme]
 18248  18260       >retour en arrière
        18261  +    revers [de|d’] fortune
 18249  18262       >revue [de|d’] presse
 18250  18263       >rivière à sec
 18251  18264       >robe [de|d’] [chambre|soirée]
 18252  18265       >robe du soir
 18253  18266       >robe sans >manche
 18254  18267       >roi [de|d’] [carreau|cœur|pique|trèfle]
 18255  18268       >roman à [>sensation|suspense]
................................................................................
 18974  18987   
 18975  18988       complètement
 18976  18989           <<- not morph(<1, ":D.*:m") ~>> *
 18977  18990   
 18978  18991       ~.ment$  ?[parlant|pas]¿
 18979  18992           <<- morph(\1, ":W", ":(?:3p|N)") ~>> *
 18980  18993   
        18994  +    , *WORD et $:W¬* ,
        18995  +        <<- morph(\2, ":W", "*") ~>> *
 18981  18996   
 18982  18997   
 18983  18998   @@@@
 18984  18999   @@@@
 18985  19000   @@@@
 18986  19001   @@@@
 18987  19002   @@@@GRAPH: intergraphe12a|ig12a                                                                    _
................................................................................
 24851  24866   
 24852  24867   !!
 24853  24868   !!
 24854  24869   !!!! Groupe nominal (sans déterminant)                                                            !!
 24855  24870   !!
 24856  24871   !!
 24857  24872   
 24858         -## Sans article
        24873  +
        24874  +__gn_start_prn_1m__
        24875  +    <start>  $:M1 ?,¿  @:[NA]¬:([ISKYPEGW]|e:[si])
        24876  +        <<- /gn/ morph(\2, ":M1.*:m", ":[fe]") and morph(\-1, ":[NA]", ":[me]:[si]")
        24877  +        --1>> =suggMasSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec le prénom masculin “\2”.
        24878  +        <<- /gn/ __else__ and morph(\2, ":M1.*:f", ":[me]") and morph(\-1, ":[NA]", ":[fe]:[si]")
        24879  +        --1>> =suggFemSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec le prénom féminin “\2”.
        24880  +
        24881  +TEST: Patrick {{partie}} à la boulangerie depuis une heure.                         ->> parti
        24882  +TEST: Antonina, {{oublié}} par ses parents chez leur grand-mère                     ->> oubliée
        24883  +TEST: Pauline, {{surnuméraires}} parmi les employés de cette boîte                  ->> surnuméraire
        24884  +TEST: Ahmed, {{psychologues}} à l’hôpital de Strasbourg                             ->> psychologue
        24885  +TEST: il fronça les sourcils, inquiet pour son avenir
        24886  +TEST: elles préservaient ce secret, conscientes du danger.
        24887  +
        24888  +
 24859  24889   __gn_start_2m__
 24860  24890       <start>  @:[NA]¬*  @:[NA]¬*
 24861  24891           <<- /gn/ ((morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*"))) and not apposition(\2, \3)
 24862  24892           -3>> =switchGender(\3)                                                                      && Accord de genre erroné avec « \2 ».
 24863  24893           <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                 && Accord de genre erroné avec « \3 ».
 24864  24894           <<- /gn/ ((morph(\2, ":s", "*") and morph(\3, ":p", "*")) or (morph(\2, ":p", "*") and morph(\3, ":s", "*"))) and not apposition(\2, \3)
 24865  24895           -3>> =switchPlural(\3)                                                                      && Accord de nombre erroné avec « \2 ».
 24866  24896           <<- /gn/ __also__ -2>> =switchPlural(\2)                                                    && Accord de nombre erroné avec « \3 ».
 24867  24897   
 24868         -TEST: {{serrurière}} {{intelligent}}.
 24869         -TEST: {{serrurier}} {{intelligente}}.
 24870         -TEST: {{Femmes}} {{mariée}}
 24871         -TEST: {{hommes}} {{marié}}
        24898  +TEST: {{serrurière}} {{intelligent}}.                                               ->> serrurier|||intelligente
        24899  +TEST: {{serrurier}} {{intelligente}}.                                               ->> serrurière|||intelligent
        24900  +TEST: {{Femmes}} {{mariée}}                                                         ->> Femme|||mariées
        24901  +TEST: {{hommes}} {{marié}}                                                          ->> homme|||mariés
 24872  24902   
 24873  24903   
 24874  24904   __gn_start_3m__
 24875  24905       <start>  @:[NA]¬*  @:[NA]¬*  @:[NA]¬*
 24876  24906           <<- /gn/ morph(\2, ":p") and morph(\3, ":[pi]") and morph(\4, ":s", ":[pi]") and \4.islower() -4>> =switchPlural(\4)  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.
 24877  24907           <<- /gn/ morph(\2, ":i") and morph(\3, ":p")    and morph(\4, ":s", ":[pi]") and \4.islower() -4>> =switchPlural(\4)  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.
 24878  24908           <<- /gn/ morph(\2, ":s") and morph(\3, ":[si]") and morph(\4, ":p", ":[si]") and \4.islower() -4>> =switchPlural(\4)  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.
................................................................................
 24925  24955   TEST: {{petite}} et {{grande}} homme                            ->> petit|||grand
 24926  24956   TEST: {{bel}} et {{grand}} nation                               ->> belle|||grande
 24927  24957   TEST: {{stupides}} et {{intellectuels}} psychologue             ->> stupide|||intellectuel
 24928  24958   TEST: {{petite}} et {{grande}} hommes                           ->> petits|||grands
 24929  24959   TEST: {{bel}} et {{grand}} nations                              ->> belles|||grandes
 24930  24960   TEST: {{stupide}} et {{intellectuel}} psychologues              ->> stupides|||intellectuels
 24931  24961   
        24962  +
        24963  +__gn_2m_et__
        24964  +    [<start>|,|(]  *WORD  et  @:A¬:[ISKYPEGW]|;C  [<end>|,|)]
        24965  +        <<- /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”.
        24966  +        <<- /gn/ __also__ -4>> =suggAgree(\4, \2)                                                               && Cet adjectif n’est pas accordé avec l’adjectif “\4”.
        24967  +
        24968  +TEST: cette femme, {{grande}} et {{intelligent}}                ->> grand|||intelligente
        24969  +TEST: cet homme, {{curieuse}} et {{affligé}}                    ->> curieux|||affligée
        24970  +TEST: ces personnes, {{étrangères}} et {{passionnée}}           ->> étrangère|||passionnées
        24971  +TEST: des portes, {{grands}} et {{folles}}                      ->> grandes|||fous
        24972  +TEST: ils marchaient ensemble, ingénieurs et patron, vers leur dernière heure, ignorants du danger.
        24973  +TEST: nous roulions lentement vers cette maison, inquiets et apeurés.
        24974  +
 24932  24975   
 24933  24976   ## Prépositions
 24934  24977   __gn_pfx_en_2m__
 24935  24978       en  @:[NA]¬*  @:[NA]¬*
 24936  24979           <<- /gn/ ( (morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*")) ) and not apposition(\2, \3)
 24937  24980           -3>> =switchGender(\3)                                                                      && Accord de genre erroné avec « \2 ».
 24938  24981           <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                 && Accord de genre erroné avec « \3 ».
................................................................................
 26261  26304   
 26262  26305   
 26263  26306   __infi_commencer_finir_par__
 26264  26307       [>commencer|>finir]  par  ?[le|l’|la|leur|les]¿  @:V¬:[NGMY]
 26265  26308       [>commencer|>finir]  par  [nous|vous|lui]        @:V¬:[GMY]
 26266  26309           <<- /infi/ not \-1[0:1].isupper() --1>> =suggVerbInfi(\3)                       && Après « commencer/finir par », le verbe devrait être à l’infinitif.
 26267  26310   
 26268         -TEST: commence par {{mangé}} le poulet.
 26269         -TEST: enfin la petite finit par {{pleuré}} à chaudes larmes.
        26311  +TEST: commence par {{mangé}} le poulet.                                         ->> manger
        26312  +TEST: enfin la petite finit par {{pleuré}} à chaudes larmes.                    ->> pleurer
 26270  26313   TEST: sa tournée, elle la finit par Rodez.
 26271  26314   
 26272  26315   
 26273  26316   #### Infinitif après “de”
 26274  26317   
 26275  26318   __infi_de_verbe__
 26276  26319       [un|une] [de|d’] [perdu+ses] ?,¿ dix [de|d’] [retrouvé+ses]
................................................................................
 26294  26337       [de|d’] [me|m’|te|t’|se|s’]  [le|la|l’|les|en|y]                             @:V¬:Y
 26295  26338       [de|d’] [nous|vous]          [le|la|l’|les|en|y]                             @:V¬:[YP]
 26296  26339       [de|d’] [le|la|l’|les]       [lui|leur|en|y]                                 @:V¬:Y
 26297  26340       [de|d’] leur                 en                                              @:V¬:Y
 26298  26341       [de|d’] lui                  en                                              @:V¬:[YP]
 26299  26342           <<- /infi/ --1>> =suggVerbInfi(\-1)                                             && Après “de”, le verbe devrait être à l’infinitif.
 26300  26343   
 26301         -    [de|d’]  @:V1.*:(?:Q|Ip.*:2p)¬:N
        26344  +    [de|d’]  @:V1.*:Q¬:N
 26302  26345           <<- /infi/ not \2[0:1].isupper() and not morph(<1, ">(?:en|passer|qualifier)/") and not morph(\2, ">(?:fieffer|sacrer)/") and not tag(<1, "_rien_")
 26303  26346               and not before("(?i)(?:quelqu(?:e chose|’une?)|qu’y a-t-il |\\b(?:l(?:es?|a)|nous|vous|me|te|se) trait|personne|points? +$|autant +$|ça +|rien d(?:e |’)|rien(?: +[a-zéèêâîûù]+|) +$)")
 26304  26347               and not tagbefore(\1, "_ceque_")
 26305  26348           -2>> =suggVerbInfi(\2)                                                          && Le verbe devrait être à l’infinitif.
 26306  26349   
 26307  26350   TEST: d’en {{parlé}} sans cesse                                                             ->> parler
 26308  26351   TEST: cela suffit de les {{aimait}}                                                         ->> aimer
................................................................................
 26311  26354   TEST: je suis certain d’en {{choque}} plusieurs.                                            ->> choquer
 26312  26355   TEST: elle était capable de la {{trouvait}} où qu’elle soit.                                ->> trouver
 26313  26356   TEST: de me le {{facturez}}                                                                 ->> facturer
 26314  26357   TEST: suffit de {{la}} {{finit}}                                                            ->> là|||finir
 26315  26358   TEST: Il s’agit de me {{donnait}} tout ça.                                                  ->> donner
 26316  26359   TEST: j’étais incapable de m’{{orientait}} dans la bonne direction.                         ->> orienter
 26317  26360   TEST: ils étaient susceptibles de m’y {{trouvaient}}                                        ->> trouver
 26318         -TEST: sa façon de {{nettoyez}} était inefficace.                                            ->> nettoyer
 26319  26361   TEST: elle a délibérément omis de les {{inclurent}}.                                        ->> inclure
 26320  26362   TEST: d’{{mangé}} je ne suis pas capable                                                    ->> manger
 26321  26363   TEST: elles n’ont rien touché de souillé
 26322  26364   TEST: elle s’engage de ne les lui donner qu’en dernier recours.
 26323  26365   TEST: l’idée consiste de la lui donner sans contrepartie et voir ce qu’il en fera.
 26324  26366   TEST: de leur plus grand fils, ils attendent beaucoup.
 26325  26367   TEST: de n’importe quelle manière
................................................................................
 26619  26661   
 26620  26662   
 26621  26663   __infi_que_faire_sinon__
 26622  26664       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]?)$
 26623  26665       que faire ?,¿ sinon  ?[ne|n’]¿  [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]        ~..(?:ée?s?|ez|ai[ts]?)$
 26624  26666       que faire ?,¿ sinon  ?[ne|n’]¿  [le|la|l’|les]                  [lui|leur|en|y]            ~..(?:ée?s?|ez|ai[ts]?)$
 26625  26667       que faire ?,¿ sinon  ?[ne|n’]¿  [lui|leur|y]                    en                         ~..(?:ée?s?|ez|ai[ts]?)$
 26626         -        <<- /infi/ morph(\-1, ":V", ":M") --1>> =suggVerbInfi(\-1)                      && Après “que faire”, mettez le verbe à l’infinitif.
        26668  +        <<- /infi/ morph(\-1, ":V", ":M") --1>> =suggVerbInfi(\-1)                                  && Après “que faire”, mettez le verbe à l’infinitif.
 26627  26669   
 26628  26670   TEST: que faire, sinon s’{{adonnait}} à sa passion                                          ->> adonner
 26629  26671   TEST: que croire sinon la pensée qu’il y a toujours une solution
 26630  26672   
 26631  26673   
 26632  26674   __infi_rien_à_faire_que_sinon__
 26633  26675       rien à faire [que|qu’|sinon]          ?[ne|n’]¿  ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ée?s?|ez|ai[ts]?)$
................................................................................
 26634  26676       rien à faire [que|qu’|sinon]          ?[ne|n’]¿  [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]        ~..(?:ée?s?|ez|ai[ts]?)$
 26635  26677       rien à faire [que|qu’|sinon]          ?[ne|n’]¿  [le|la|l’|les]                  [lui|leur|en|y]            ~..(?:ée?s?|ez|ai[ts]?)$
 26636  26678       rien à faire [que|qu’|sinon]          ?[ne|n’]¿  [lui|leur|y]                    en                         ~..(?:ée?s?|ez|ai[ts]?)$
 26637  26679       rien d’ autre à faire [que|qu’|sinon] ?[ne|n’]¿  ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ée?s?|ez|ai[ts]?)$
 26638  26680       rien d’ autre à faire [que|qu’|sinon] ?[ne|n’]¿  [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]        ~..(?:ée?s?|ez|ai[ts]?)$
 26639  26681       rien d’ autre à faire [que|qu’|sinon] ?[ne|n’]¿  [le|la|l’|les]                  [lui|leur|en|y]            ~..(?:ée?s?|ez|ai[ts]?)$
 26640  26682       rien d’ autre à faire [que|qu’|sinon] ?[ne|n’]¿  [lui|leur|y]                    en                         ~..(?:ée?s?|ez|ai[ts]?)$
 26641         -        <<- /infi/ morph(\-1, ":V", ":M") --1>> =suggVerbInfi(\-1)                      && Après “rien à faire que”, mettez le verbe à l’infinitif.
        26683  +        <<- /infi/ morph(\-1, ":V", ":M") --1>> =suggVerbInfi(\-1)                                  && Après “rien à faire que”, mettez le verbe à l’infinitif.
 26642  26684   
 26643  26685   TEST: rien à faire sinon {{expliqué}} ce qu’il faisait là           ->> expliquer
 26644  26686   TEST: rien d’autre à faire que lui {{donnait}} à manger             ->> donner
 26645  26687   
 26646  26688   
 26647  26689   __infi_nous_vous_verbe!3__
 26648  26690       nous  ~ée?s?$
 26649  26691           <<- /infi/ space(\1, 1, 3) and morph(\2, ":Q") and not morph(<1, "V0.*:1p")
 26650         -        -2>> =suggVerbInfi(\2)                                                          && Après “\1”, le verbe ne devrait pas être un participe passé.
        26692  +        -2>> =suggVerbInfi(\2)                                                                      && Après “\1”, le verbe ne devrait pas être un participe passé.
 26651  26693   
 26652  26694       vous  ~ée?s?$
 26653  26695           <<- /infi/ space(\1, 1, 3) and morph(\2, ":Q") and not morph(<1, "V0.*:2p")
 26654         -        -2>> =suggVerbInfi(\2)+"|"+suggVerbTense(\2, ":Ip", ":2p")                      && Après “\1”, le verbe ne devrait pas être un participe passé.
        26696  +        -2>> =suggVerbInfi(\2)+"|"+suggVerbTense(\2, ":Ip", ":2p")                                  && Après “\1”, le verbe ne devrait pas être un participe passé.
 26655  26697   
 26656  26698   TEST: oui, pourquoi pas, puisque nous {{intéressé}} à la question ne suffit pas à faire de nous des experts.   ->> intéresser
 26657  26699   TEST: il faut croire que vous {{mangé}} ne nous nourrirait guère                                               ->> manger|mangez
 26658  26700   TEST: Sommes-nous désespérés à ce point ?
 26659  26701   TEST: Vous d’habitude si réservée.
 26660  26702   
 26661  26703   
 26662  26704   __infi_y_verbe!3__
 26663  26705       y ~ée?s?$
 26664         -        <<- /infi/ morph(\2, ":V", ":[123][sp]") -2>> _                                 && Le verbe ne devrait pas être un participe passé.
        26706  +        <<- /infi/ \1.islower() and morph(\2, ":V", ":[123][sp]") -2>> =suggVerbInfi(\2)            && Le verbe ne devrait pas être un participe passé.
 26665  26707   
 26666         -TEST: y {{mangée}} était un supplice
        26708  +TEST: y {{mangée}} était un supplice                                ->> manger
 26667  26709   TEST: j’y crée une nouvelle maison.
 26668  26710   
 26669  26711   
 26670  26712   
 26671  26713   #### Infinitif directement après verbe
 26672  26714   
 26673  26715   __infi_devoir!5__
................................................................................
 27951  27993   TEST: En outre, les grosses institutions comme l’Éducation Nationale ne développent pas forcément en interne
 27952  27994   TEST: Le mieux serait de le faire glisser
 27953  27995   
 27954  27996   
 27955  27997   __tag_locutions_verbales_d_état__
 27956  27998       ## verbes d’état
 27957  27999   
 27958         -    [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]
        28000  +    [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre|>apparaître|>apparaitre]
 27959  28001           <<- /1>> _VE_
 27960  28002   
 27961  28003       /_VCint_
 27962  28004           <<- morph(\1, ":V[0-3]e") /1>> _VEI_
 27963  28005   
 27964  28006   
 27965  28007       ## locutions verbales d’état
 27966  28008   
 27967  28009       >avoir [été|semblé|paru]
 27968         -    >avoir [cru|imaginé|pensé|pu|su|voulu]                      [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27969         -    >avoir [besoin|crainte|envie|horreur|peur]                  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27970         -    >avoir l’ [envie|exigence|illusion|impression|intention]    [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27971         -    >avoir le [désir|sentiment]                                 [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27972         -    >avoir la ?ferme¿ [intention|volonté]                       [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27973         -    [>être|>sembler|>demeurer|>paraître|>paraitre] [loin|près]  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
        28010  +    >avoir [cru|imaginé|pensé|pu|su|voulu]                      [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre]
        28011  +    >avoir [besoin|crainte|envie|horreur|peur]                  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre]
        28012  +    >avoir l’ [envie|exigence|illusion|impression|intention]    [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre]
        28013  +    >avoir le [désir|sentiment]                                 [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre]
        28014  +    >avoir la ?ferme¿ [intention|volonté]                       [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre]
        28015  +    [>être|>sembler|>demeurer|>paraître|>apparaître|>apparaitre] [loin|près]  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre]
 27974  28016       [>être|>sembler] [devenu+ses|redevenu+ses|resté+ses|demeuré+ses]
 27975  28017       [>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]
 27976         -        || ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
        28018  +        || ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
 27977  28019       [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]
 27978         -        || ?[en|y]¿ être [devenu+ses|redevenu+ses|resté+ses|demeuré+ses]
        28020  +        || ?[en|y]¿ être [devenu+ses|redevenu+ses|resté+ses|demeuré+ses|apparu+ses]
 27979  28021       [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]
 27980  28022           || ?[en|y]¿ avoir [été|semblé|paru]
 27981         -    [>arriver|>continuer|>commencer|>parvenir|>renoncer|>réussir|>travailler]                       à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
 27982         -    [>cesser|>continuer|>craindre|>demander|>exiger|>redouter|>rêver|>refuser|>risquer|>venir]      [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
 27983         -    [>être|>sembler|>paraître|>paraitre|>devenir|>redevenir|>rester|>demeurer]  [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible]
 27984         -        || [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
        28023  +    [>arriver|>continuer|>commencer|>parvenir|>renoncer|>réussir|>travailler]                   à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
        28024  +    [>cesser|>continuer|>craindre|>demander|>exiger|>redouter|>rêver|>refuser|>risquer|>venir]  [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
        28025  +    [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre|>apparaître|>apparaitre]  [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible]
        28026  +        || [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
 27985  28027           <<- /1>> _LVED_
 27986  28028           <<- />> _LVE_
 27987  28029           <<- /-1>> _LVEF_
 27988  28030   
 27989  28031       /_VCint_  [été|semblé|paru]
 27990         -    /_VCint_  [cru|imaginé|pensé|pu|su|voulu]                       [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27991         -    /_VCint_  [besoin|crainte|envie|horreur|peur]                   [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27992         -    /_VCint_  l’ [envie|exigence|illusion|impression|intention]     [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27993         -    /_VCint_  le [désir|sentiment]                                  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 27994         -    /_VCint_  la ?ferme¿ [intention|volonté]                        [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
        28032  +    /_VCint_  [cru|imaginé|pensé|pu|su|voulu]                       [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre]
        28033  +    /_VCint_  [besoin|crainte|envie|horreur|peur]                   [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre]
        28034  +    /_VCint_  l’ [envie|exigence|illusion|impression|intention]     [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre]
        28035  +    /_VCint_  le [désir|sentiment]                                  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre]
        28036  +    /_VCint_  la ?ferme¿ [intention|volonté]                        [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre]
 27995  28037           <<- morphVC(\1, ">avoir/") >>>
 27996  28038           <<- /1>> _LVEID_
 27997  28039           <<- />> _LVEI_
 27998  28040           <<- /-1>> _LVEIF_
 27999  28041   
 28000         -    /_VCint_  [loin|près]  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre]
 28001         -        <<- morphVC(\1, ">(?:être|sembler|demeurer|para[îi]tre)/") >>>
        28042  +    /_VCint_  [loin|près]  [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre]
        28043  +        <<- morphVC(\1, ">(?:être|sembler|demeurer|para[îi]tre|appara[îi]tre)/") >>>
 28002  28044           <<- /1>> _LVEID_
 28003  28045           <<- />> _LVEI_
 28004  28046           <<- /-1>> _LVEIF_
 28005  28047   
 28006  28048       /_VCint_  [devenu+ses|redevenu+ses|resté+ses|demeuré+ses]
 28007  28049           <<- morphVC(\1, ">(?:être|sembler)/") >>>
 28008  28050           <<- /1>> _LVEID_
 28009  28051           <<- />> _LVEI_
 28010  28052           <<- /-1>> _LVEIF_
 28011  28053   
 28012         -    /_VCint_  ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
        28054  +    /_VCint_  ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
 28013  28055           <<- morphVC(\1, ">(?:aller|adorer|affirmer|aimer|croire|déclarer|désirer|détester|devoir|dire|estimer|imaginer|para[îi]tre|penser|pouvoir|préférer|risquer|savoir|sembler|souhaiter|vouloir)/") >>>
 28014  28056           <<- /1>> _LVEID_
 28015  28057           <<- />> _LVEI_
 28016  28058           <<- /-1>> _LVEIF_
 28017  28059   
 28018  28060       /_VCint_  ?[en|y]¿ être [devenu+ses|redevenu+ses|resté+ses|demeuré+ses]
 28019  28061       /_VCint_  ?[en|y]¿ avoir [été|semblé|paru]
 28020  28062           <<- morphVC(\1, ">(?:adorer|affirmer|aimer|croire|déclarer|désirer|détester|devoir|dire|estimer|imaginer|para[îi]tre|penser|pouvoir|préférer|risquer|savoir|sembler|souhaiter|vouloir)/") >>>
 28021  28063           <<- /1>> _LVEID_
 28022  28064           <<- />> _LVEI_
 28023  28065           <<- /-1>> _LVEIF_
 28024  28066   
 28025         -    /_VCint_  à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
        28067  +    /_VCint_  à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
 28026  28068           <<- morphVC(\1, ">(?:arriver|commencer|continuer|parvenir|renoncer|réussir|travailler)/") >>>
 28027  28069           <<- /1>> _LVEID_
 28028  28070           <<- />> _LVEI_
 28029  28071           <<- /-1>> _LVEIF_
 28030  28072   
 28031         -    /_VCint_  [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
        28073  +    /_VCint_  [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
 28032  28074           <<- morphVC(\1, ">(?:cesser|continuer|craindre|demander|exiger|redouter|rêver|refuser|risquer|venir)/") >>>
 28033  28075           <<- /1>> _LVEID_
 28034  28076           <<- />> _LVEI_
 28035  28077           <<- /-1>> _LVEIF_
 28036  28078   
 28037         -    /_VCint_  [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible] [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre]
        28079  +    /_VCint_  [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible] [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre]
 28038  28080           <<- morphVC(\1, ":V[0-3]e") >>>
 28039  28081           <<- /1>> _LVEID_
 28040  28082           <<- />> _LVEI_
 28041  28083           <<- /-1>> _LVEIF_
 28042  28084   
 28043  28085   
 28044  28086       ## locutions verbales d’état pronominales
................................................................................
 29709  29751   TEST: iel semble être {{ignore}}
 29710  29752   TEST: ouais, on adore avoir été {{persécute}} par ces enfoirés
 29711  29753   TEST: nous préférions être restés {{chagrinait}} par cette perte
 29712  29754   TEST: on déclare avoir été {{choque}} par ces nouvelles
 29713  29755   TEST: ils semblent être redevenus {{élut}}
 29714  29756   TEST: elles aiment avoir paru {{murent}}
 29715  29757   
        29758  +
        29759  +__ppas_fin_loc_verb_état_adj_et_adj__
        29760  +    [/_VE_|/_VEI_|/_LVEF_|/_LVEIF_|/_VEP_|/_LVEPF_|/_LVEPIF_] *WORD et @:A¬:[ISKYPEGW]|;C
        29761  +        <<- /ppas/ morph(\2, ":[AQ]", ":G|;C") and not agreement(\2, \-1, False)
        29762  +        --1>> =suggAgree(\-1, \2)                                                                   && Cet adjectif n’est pas accordé avec l’adjectif “\2”.
        29763  +
        29764  +TEST: il est furieux et {{curieuse}}                                                    ->> curieux
        29765  +TEST: tu es sot et {{ignorants}}                                                        ->> ignorant
        29766  +TEST: elle est belle et {{intelligent}}                                                 ->> intelligente
        29767  +TEST: elle sut apparaître grande et {{humbles}} à la fois                               ->> humble
        29768  +TEST: ils devenaient forts et {{humble}}                                                ->> humbles
        29769  +TEST: ils crurent avoir été trompés et {{volé}}                                         ->> volés
        29770  +TEST: elles déclareront être restées calmes et {{attentive}}                            ->> attentives
        29771  +TEST: nous imaginons devenir riches et {{connu}}                                        ->> connus
        29772  +
 29716  29773   
 29717  29774   __ppas_être_confusion__
 29718  29775       ne [pas|jamais] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p)
 29719  29776           <<- /ppas/ --1>> =suggVerbPpas(\-1)                                                         && Après “ne \2 être”, il faut un participe passé.
 29720  29777   
 29721  29778       avoir [pu|cru|pensé|imaginé] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p)
 29722  29779           <<- /ppas/ not value(<1, "|l’|") and not tagbefore(\1, "_que_") --1>> =suggVerbPpas(\-1)    && Après le verbe “être”, il faut un participe passé.