Index: compile_rules.py ================================================================== --- compile_rules.py +++ compile_rules.py @@ -360,13 +360,10 @@ return [sCondition, cAction, sAction, iGroup] if cAction == "=": ## disambiguator if sAction[0:1] == "=": sAction = sAction[1:] - if "define" in sAction and not re.search(r"define\(dTokenPos, *m\.start.*, \[.*\] *\)", sAction): - print(f"# Error in action at line {sIdAction}: second argument for define must be a list of strings") - print(sAction) lFUNCTIONS.append(("_d_"+sIdAction, sAction)) sAction = "_d_"+sIdAction return [sCondition, cAction, sAction] print(f"# Unknown action at line {sIdAction}") return None Index: compile_rules_graph.py ================================================================== --- compile_rules_graph.py +++ compile_rules_graph.py @@ -382,13 +382,10 @@ if cAction in "!/": ## tags return [sLineId, sOption, sCondition, cAction, sAction, iStartAction, iEndAction] if cAction == "=": ## disambiguator - if "define(" in sAction and not re.search(r"define\(\\-?\d+ *, *\[.*\] *\)", sAction): - print(f"\n# Error in action at line <{sLineId}/{sActionId}>: second argument for must be a list of strings") - exit() sAction = self.createFunction("da", sAction) return [sLineId, sOption, sCondition, cAction, sAction] print("\n# Unknown action at ", sLineId, sActionId) return None Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -1402,12 +1402,12 @@ dTokenPos.get(nPos)["lMorph"] = lDefault; } return true; } -function define (dTokenPos, nPos, lMorph) { - dTokenPos.get(nPos)["lMorph"] = lMorph; +function define (dTokenPos, nPos, sMorphs) { + dTokenPos.get(nPos)["lMorph"] = sMorphs.split("|"); return true; } //// Disambiguation for graph rules @@ -1450,21 +1450,21 @@ oToken["lMorph"] = lDefault; } return true; } -function g_add_morph (oToken, lNewMorph) { +function g_add_morph (oToken, sNewMorph) { "Disambiguation: add a morphology to a token" let lMorph = (oToken.hasOwnProperty("lMorph")) ? oToken["lMorph"] : _oSpellChecker.getMorph(oToken["sValue"]); - lMorph.push(...lNewMorph); + lMorph.push(...sNewMorph.split("|")); oToken["lMorph"] = lMorph; return true; } -function g_define (oToken, lMorph) { +function g_define (oToken, sMorphs) { // set morphologies of , always return true - oToken["lMorph"] = lMorph; + oToken["lMorph"] = sMorphs.split("|"); return true; } function g_define_from (oToken, nLeft=null, nRight=null) { let sValue = oToken["sValue"]; Index: gc_core/py/lang_core/gc_engine.py ================================================================== --- gc_core/py/lang_core/gc_engine.py +++ gc_core/py/lang_core/gc_engine.py @@ -1187,16 +1187,16 @@ elif lDefault: dTokenPos[nPos]["lMorph"] = lDefault return True -def define (dTokenPos, nPos, lMorph): - "Disambiguation: set morphologies of token at with " +def define (dTokenPos, nPos, sMorphs): + "Disambiguation: set morphologies of token at with " if nPos not in dTokenPos: echo("Error. There should be a token at this position: ", nPos) return True - dTokenPos[nPos]["lMorph"] = lMorph + dTokenPos[nPos]["lMorph"] = sMorphs.split("|") return True #### Disambiguation for graph rules @@ -1234,21 +1234,21 @@ dToken["lMorph"] = lDefault #echo("DA:", dToken["sValue"], dToken["lMorph"]) return True -def g_add_morph (dToken, lNewMorph): +def g_add_morph (dToken, sNewMorph): "Disambiguation: add a morphology to a token" lMorph = dToken["lMorph"] if "lMorph" in dToken else _oSpellChecker.getMorph(dToken["sValue"]) - lMorph.extend(lNewMorph) + lMorph.extend(sNewMorph.split("|")) dToken["lMorph"] = lMorph return True -def g_define (dToken, lMorph): +def g_define (dToken, sMorphs): "Disambiguation: set morphologies of , always return True" - dToken["lMorph"] = lMorph + dToken["lMorph"] = sMorphs.split("|") #echo("DA:", dToken["sValue"], lMorph) return True def g_define_from (dToken, nLeft=None, nRight=None): Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -1649,15 +1649,15 @@ !!!! Écritures épicènes invariables !! __[i](d_eepi_écriture_épicène_pluriel)__ ({w_1}[éuitsrn])_(?:[nt]|)e_s @@0 - <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, [":N:A:Q:e:p"]) + <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, ":N:A:Q:e:p") __[i](d_eepi_écriture_épicène_singulier)__ ({w_2}[éuitsrn])_e @@0 - <<- morph(\1, ":[NAQ]") =>> define(\1, [":N:A:Q:e:s"]) + <<- morph(\1, ":[NAQ]") =>> define(\1, ":N:A:Q:e:s") !!!! Purge des références aux notes !! # les références aux notes @@ -1948,11 +1948,11 @@ passé [|,|$:R] <<- =>> exclude(\1, ":G") y compris <<- not value(<1, "|n’|j’|tu|t’|m’|s’|") ~>> ␣ - <<- __also__ =>> define(\1, [":G:R"]) + <<- __also__ =>> define(\1, ":G:R") __da_puis__ puis <<- not value(<1, "|je|ne|n’|le|la|l’|les|lui|nous|vous|leur|") =>> =exclude(\1, ":V") @@ -1977,24 +1977,24 @@ <<- =>> select(\2, ":N") __da_autre_chose_quelque_chose__ quelque chose - <<- =>> define(\2, [":N:m:s"]) + <<- =>> define(\2, ":N:m:s") autre chose <<- not morph(<1, ">entre/|:D") ~>> ␣ - <<- =>> define(\1, [":G"]) + <<- =>> define(\1, ":G") __da_groupe_nominal__ aucun @:[NA].*:[me] <<- =>> exclude(\2, ":V") bac + ~^\d\d?$ <<- ~>> ␣ - <<- =>> define(\1, [":N:e:i"]) + <<- =>> define(\1, ":N:e:i") [de|d’] @:¬:[YD] <<- =>> exclude(\2, ":(?:[123][sp]|P)") d’ [un|une] *WORD @@ -2003,15 +2003,15 @@ l’ [un|une] *WORD <<- not value(\3, "|plus|") =>> select(\3, ":[123][sp]") l’ un comme l’ autre <<- ~>> ␣ - <<- =>> define(\1, [":LN:m:p"]) + <<- =>> define(\1, ":LN:m:p") l’ une comme l’ autre <<- ~>> ␣ - <<- =>> define(\1, [":LN:f:p"]) + <<- =>> define(\1, ":LN:f:p") [des|chaque|quelque|quelques|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs|aucun|aucune] *WORD <<- =>> exclude(\2, ":V") les ~.es$ @@ -2045,25 +2045,25 @@ m’ [dame|sieur] <<- ~>> ␣ nombre [de|d’|des] [@:[NA]||,] <<- not morph(<1, ":D") >>> - <<- morph(<1, ":A.*:[me]:[si]") =>> add_morph(\1, [">nombre/:G:D"]) - <<- __else__ =>> define(\1, [">nombre/:G:D"]) + <<- morph(<1, ":A.*:[me]:[si]") =>> add_morph(\1, ">nombre/:G:D") + <<- __else__ =>> define(\1, ">nombre/:G:D") par *WORD <<- =>> exclude(\2, ":[123][sp]") plein [de|d’] @:[AN] - <<- not morph(<1, ":D.*:m|>(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> =define(\1, [":G"]) + <<- not morph(<1, ":D.*:m|>(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> =define(\1, ":G") source [de|d’] - <<- morph(<1, ">(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> define(\1, [":LV"]) + <<- morph(<1, ">(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> define(\1, ":LV") tout feu ?,¿ tout >flamme <<- ~>> ␣ - <<- =>> define(\1, [":A:e:i"]) + <<- =>> define(\1, ":A:e:i") très *WORD <<- =>> exclude(\2, ":[123][sp]") TEST: il s’agit d’{{un}} {{anagramme}} @@ -2209,28 +2209,28 @@ <<- morph(\-1, ":[NA]") ~1:3>> ␣ alors [que|qu’] dès lors [que|qu’] <<- ~>> ␣ - <<- =>> define(\1, [":Cs"]) + <<- =>> define(\1, ":Cs") quelqu’ [un|une] <<- ~>> ␣ <<- =>> change_meta(\1, "WORD") __fusions_noms_communs__ au revoir <<- ~>> ␣ - <<- =>> define(\1, [":N:m:i"]) + <<- =>> define(\1, ":N:m:i") n’ importe [qui|quoi|quel|quelle|quels|quelles|où|ou|lequel|laquelle|lesquels|lesquelles] <<- ~1:2>> ␣ [cultural|gender] studies <<- ~>> ␣ - <<- =>> define(\1, [":N:f:p"]) + <<- =>> define(\1, ":N:f:p") black [>bloc|>block] jet set machine [learning+s] nec plus ultra @@ -2242,11 +2242,11 @@ jusqu’ [au-boutiste+s|au-boutisme+s] <<- ~>> ␣ notre père <<- morph(<1, ":D.*:[mp]") ~>> ␣ - <<- __also__ =>> define(\1, [":N:m:i"]) + <<- __also__ =>> define(\1, ":N:m:i") presqu’ [>ile|>île] <<- ~>> ␣ <<- =>> change_meta(\1, "WORD") @@ -2258,11 +2258,11 @@ __fusions_noms_communs_séparés_slah__ *WORD / *WORD <<- space_after(\1, 0, 0) and space_after(\2, 0, 0) and morph(\1, ":N") and morph(\-1, ":N") ~>> ␣ - <<- =>> define(\1, [":N:e:i"]) + <<- =>> define(\1, ":N:e:i") __fusions_noms_propres__ d’ Alembert d’ Estaing @@ -2273,50 +2273,50 @@ du Guesclin La Bruyère La Fayette La Fontaine <<- ~>> ␣ - <<- =>> define(\1, [":M2:e:i"]) + <<- =>> define(\1, ":M2:e:i") cac 40 <<- ~>> ␣ France [2|3|4|5|0|O] <<- ~>> ␣ Peugeot ~^\d0\d\d?$ <<- ~>> ␣ - <<- =>> define(\1, [":N:e:i"]) + <<- =>> define(\1, ":N:e:i") Mai 68 <<- ~>> ␣ - <<- =>> define(\1, [":N:m:i"]) + <<- =>> define(\1, ":N:m:i") ~^[A-ZÀÂÉÈÊÎÔ]. ~^[A-ZÀÂÉÈÊÎÔ]. <<- analyse_with_next(\1, " ", ":") ~>> ␣ - <<- __else__ and morph(\1, ":M") and morph(\2, ":V", ":[GM]") =>> define(\2, [":M2"]) + <<- __else__ and morph(\1, ":M") and morph(\2, ":V", ":[GM]") =>> define(\2, ":M2") Me ~^[A-ZÀÂÉÈÊÎÔ]. - <<- =>> define(\1, [":T"]) + <<- =>> define(\1, ":T") <<- ~1>> * [la|cette] ~^[A-ZÀÂÉÈÊÎÔ]. ?~^[A-ZÀÂÉÈÊÎÔ].¿ ?~^[A-ZÀÂÉÈÊÎÔ].¿ [Administration|Area|Army|Assocation|Avenue|Chamber|Church|City|Community|Court|Company|Corporation|Cup|Enterprise|Foundation|Fraternity|Gallery|Highway|House|Initiative|League|Library|Mansion|Nation|Navy|Organization|Reserve|Road|River|Sea|Society|Station|Sorority|Tavern|Tower|University|Valley] <<- ~2:0>> ␣ - <<- =>> define(\2, [":MP:f:s"]) + <<- =>> define(\2, ":MP:f:s") [le|au|du|ce] ~^[A-ZÀÂÉÈÊÎÔ]. ?~^[A-ZÀÂÉÈÊÎÔ].¿ ?~^[A-ZÀÂÉÈÊÎÔ].¿ [Act|Building|Bureau|Casino|Castle|Center|Championship|Club|College|Comity|Consortium|Cottage|Covent|Day|Desert|Forum|Hall|Garden|Hospital|Hostel|Institute|Magazine|Manor|Monastery|Mount|Museum|News|Newspaper|Ocean|Office|Opera|Park|Party|Palace|Post|Restaurant|State|Theatre|Tournament] <<- ~2:0>> ␣ - <<- =>> define(\2, [":MP:m:s"]) + <<- =>> define(\2, ":MP:m:s") the ~^[A-ZÀÂÉÈÊÎÔ]. ?~^[A-ZÀÂÉÈÊÎÔ].¿ ?~^[A-ZÀÂÉÈÊÎÔ].¿ [Administration|Area|Army|Assocation|Avenue|Chamber|Church|City|Community|Court|Company|Corporation|Cup|Enterprise|Foundation|Fraternity|Gallery|Highway|House|Initiative|League|Library|Mansion|Nation|Navy|Organization|Reserve|Road|River|Sea|Society|Station|Sorority|Tavern|Tower|University|Valley] the ~^[A-ZÀÂÉÈÊÎÔ]. ?~^[A-ZÀÂÉÈÊÎÔ].¿ ?~^[A-ZÀÂÉÈÊÎÔ].¿ [Act|Building|Bureau|Casino|Castle|Center|Championship|Club|College|Comity|Consortium|Cottage|Covent|Day|Desert|Forum|Hall|Garden|Hospital|Hostel|Institute|Magazine|Manor|Monastery|Mount|Museum|News|Newspaper|Ocean|Office|Opera|Park|Party|Palace|Post|Restaurant|State|Theatre|Tournament] <<- ~2:0>> ␣ - <<- =>> define(\2, [":MP:e:s"]) + <<- =>> define(\2, ":MP:e:s") ~^[A-ZÀÂÉÈÊÎÔ]. Airways <<- ~>> ␣ - <<- =>> define(\2, [":MP:e:i"]) + <<- =>> define(\2, ":MP:e:i") __immunités__ il y a il n’ y a @@ -2521,11 +2521,11 @@ ne [le|la|les] [lui|leur] rendez-vous ne me [le|la|les] rendez-vous ne [lui|leur] en rendez-vous ne [le|la|les|lui|leur] rendez-vous [me|ne|nous|vous|lui] rendez-vous - <<- =>> define(\-1, [":VCi1:2p"]) + <<- =>> define(\-1, ":VCi1:2p") <<- !-1>> # [un|mon|ton|son|ce|mes|tes|ses|leurs] rendez-vous # rendez-vous seulement défini comme :N:m:i dans le dictionnaire @@ -13310,11 +13310,11 @@ in cauda venenum in vino veritas sursum corda sic transit gloria mundi <<- ~>> ␣ - <<- =>> =define(\1, [":LP"]) + <<- =>> =define(\1, ":LP") __purge_locutions_incises__ [|,|(] [oui|non] [|,|)] [|,|(] ?oui¿ ou non [|,|)] @@ -14406,19 +14406,19 @@ par habitude [de|du|d’|des] sans distinction [de|d’] sous la houlette [de|du|d’|des] sous forme [de|d’] <<- ~1:-2>> ␣ - <<- =>> define(\1, [":G:R:LR"]) + <<- =>> define(\1, ":G:R:LR") tout au [bout|long] [de|du|d’|des] <<- not morph(<1, ":R") ~1>> * à travers $:D à travers >différent <<- ~1:2>> ␣ - <<- =>> define(\1, [":G:R:LR"]) + <<- =>> define(\1, ":G:R:LR") ainsi <<- not value(>1, "|que|qu’|") ~>> * au moins @:[DB] @@ -14494,11 +14494,11 @@ la [nette|bizarre] impression [que|qu’] <<- ~2:3>> _ le pour et le contre <<- ~>> ␣ - <<- =>> define(\1, [":LN:m:p"]) + <<- =>> define(\1, ":LN:m:p") le [pressentiment|sentiment] [que|qu’] <<- ~1>> _ ou bien @@ -14566,11 +14566,11 @@ <<- ~3:0>> * la >numéro un la >numéro $:B la >numéro *NUM - <<- =>> define(\2, [">numéro/:N:f:s"]) + <<- =>> define(\2, ">numéro/:N:f:s") <<- ~3>> * le numéro un @:¬:N:[em]:[is] <<- ~3>> * @@ -14595,20 +14595,20 @@ __simplification_des_nombres__ [vingt|trente|quarante|cinquante|soixante|soixante-dix|septante|quatre-vingt|octante|huitante|quatre-vingt-dix|nonante|mille] et [un|une|onze] <<- ~>> \1-et-\3|| <<- ~2:3>> * - <<- =>> define(\1, [":B:e:p"]) + <<- =>> define(\1, ":B:e:p") [deux|trois|quatre|cinq|six|sept|huit|neuf|onze|douze|treize|quatorze|quinze|seize|dix-sept|dix-huit|dix-neuf] cents @:[NAQ].*:[pi]¬:(?:G|3p) <<- ~1:2>> ␣ - <<- =>> define(\1, [":B:e:p"]) + <<- =>> define(\1, ":B:e:p") [deux|trois|quatre|cinq|six|sept|huit|neuf] ?cent¿ mille cent mille <<- ~>> ␣ - <<- =>> define(\1, [":B:e:p"]) + <<- =>> define(\1, ":B:e:p") __purge_des_nombres__ [les|des|ces|mes|tes|ses|nos|vos|leurs] quelque $:B:e @:[NA].*:[pi]¬:(?:G|3p) [les|des|ces|mes|tes|ses|nos|vos|leurs] quelque *NUM @:[NA].*:[pi]¬:(?:G|3p) @@ -15524,11 +15524,11 @@ rouge [anglais|brique|cardinal|carmin|cerise|cochenille|coquelicot|cuivré|écarlate|feu|fraise|grenat|groseille|incarnat|indien|rubis|sang|sanguin|tomate|vermeille|vermillon] vert [bouteille|céladon|émeraude|épinard|impérial|lichen|olive|perroquet|pistache|poireau|pomme|prairie|printemps|sapin|sauge|tilleul] couleur sable <<- morph(<1, ":[NA]", ":D") ~>> * <<- __else__ and morph(<1, ":D|>(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)") ~>> ␣ - <<- __also__ =>> define(\1, [":A:e:i"]) + <<- __also__ =>> define(\1, ":A:e:i") __simplification_noms_propres__ don Juan <<- ~1>> * @@ -15613,11 +15613,11 @@ [>être|>devenir|>rester] peine perdue [>être|>devenir|>rester] pieds et poings liés [>être|>devenir|>rester] pieds nus [>être|>devenir|>rester] père et mère <<- ~2:0>> ␣ - <<- =>> define(\2, [":LV"]) + <<- =>> define(\2, ":LV") [>être|>devenir|>rester] [pas|jamais|plus|guère|point] [bon|meilleur] marché [>être|>devenir|>rester] [pas|jamais|plus|guère|point] cousin et cousine [>être|>devenir|>rester] [pas|jamais|plus|guère|point] de passage [>être|>devenir|>rester] [pas|jamais|plus|guère|point] frère et sœur @@ -15630,11 +15630,11 @@ [>être|>devenir|>rester] [pas|jamais|plus|guère|point] pieds et poings liés [>être|>devenir|>rester] [pas|jamais|plus|guère|point] pieds nus [>être|>devenir|>rester] [pas|jamais|plus|guère|point] père et mère <<- ~2>> * <<- ~3:0>> ␣ - <<- =>> define(\3, [":LV"]) + <<- =>> define(\3, ":LV") [>être|>devenir|>rester] ?[pas|jamais|plus|guère|point]¿ avant tout [>être|>devenir|>rester] ?[pas|jamais|plus|guère|point]¿ du moins [>être|>devenir|>rester] ?[pas|jamais|plus|guère|point]¿ en partie [>être|>devenir|>rester] ?[pas|jamais|plus|guère|point]¿ somme toute @@ -15657,11 +15657,11 @@ /_VCint_ peine perdue /_VCint_ pieds et poings liés /_VCint_ pieds nus /_VCint_ père et mère <<- morphVC(\1, ">(?:être|devenir|rester)") ~2:0>> ␣ - <<- __also__ =>> define(\2, [":LV"]) + <<- __also__ =>> define(\2, ":LV") /_VCint_ [pas|jamais|plus|guère|point] [bon|meilleur] marché /_VCint_ [pas|jamais|plus|guère|point] cousin et cousine /_VCint_ [pas|jamais|plus|guère|point] de passage /_VCint_ [pas|jamais|plus|guère|point] frère et sœur @@ -15674,11 +15674,11 @@ /_VCint_ [pas|jamais|plus|guère|point] pieds et poings liés /_VCint_ [pas|jamais|plus|guère|point] pieds nus /_VCint_ [pas|jamais|plus|guère|point] père et mère <<- morphVC(\1, ">(?:être|devenir|rester)") ~2>> * <<- __also__ ~3:0>> ␣ - <<- __also__ =>> define(\3, [":LV"]) + <<- __also__ =>> define(\3, ":LV") /_VCint_ ?[pas|jamais|plus|guère|point]¿ avant tout /_VCint_ ?[pas|jamais|plus|guère|point]¿ du moins /_VCint_ ?[pas|jamais|plus|guère|point]¿ en partie /_VCint_ ?[pas|jamais|plus|guère|point]¿ somme toute @@ -15743,11 +15743,11 @@ >avoir carte blanche >avoir forme [humaine|animale] >avoir partie [gagnée|liée] >avoir voix au chapitre <<- ~2:0>> ␣ - <<- =>> define(\2, [":LV"]) + <<- =>> define(\2, ":LV") >avoir [pas|jamais|plus|guère|point] [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] >avoir [pas|jamais|plus|guère|point] bon [dos|fond] >avoir [pas|jamais|plus|guère|point] bon pied ?,¿ bon œil >avoir [pas|jamais|plus|guère|point] carte blanche @@ -15755,11 +15755,11 @@ >avoir [pas|jamais|plus|guère|point] gain de cause >avoir [pas|jamais|plus|guère|point] partie [gagnée|liée] >avoir [pas|jamais|plus|guère|point] quartier libre >avoir [pas|jamais|plus|guère|point] voix au chapitre <<- ~3:0>> ␣ - <<- =>> define(\3, [":LV"]) + <<- =>> define(\3, ":LV") >avoir ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B:e:p [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] >avoir ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B:e:p @:(?:Q|V1.*:Y) <<- ~2:-2>> * @@ -15797,11 +15797,11 @@ /_VCint_ carte blanche /_VCint_ forme [humaine|animale] /_VCint_ partie [gagnée|liée] /_VCint_ voix au chapitre <<- morphVC(\1, ":V0a") ~2:0>> ␣ - <<- __also__ =>> define(\2, [":LV"]) + <<- __also__ =>> define(\2, ":LV") /_VCint_ [pas|jamais|plus|guère|point] [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] /_VCint_ [pas|jamais|plus|guère|point] bon [dos|fond] /_VCint_ [pas|jamais|plus|guère|point] bon pied ?,¿ bon œil /_VCint_ [pas|jamais|plus|guère|point] carte blanche @@ -15809,11 +15809,11 @@ /_VCint_ [pas|jamais|plus|guère|point] gain de cause /_VCint_ [pas|jamais|plus|guère|point] partie [gagnée|liée] /_VCint_ [pas|jamais|plus|guère|point] quartier libre /_VCint_ [pas|jamais|plus|guère|point] voix au chapitre <<- morphVC(\1, ":V0a") ~3:0>> ␣ - <<- __also__ =>> define(\3, [":LV"]) + <<- __also__ =>> define(\3, ":LV") /_VCint_ ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B:e:p [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] /_VCint_ ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B:e:p @:(?:Q|V1.*:Y) <<- morphVC(\1, ":V0a") ~2:-2>> * @@ -16454,11 +16454,11 @@ >vendre à perte >venir à bout [>venir|>revenir] je [ne|n’] sais ?pas¿ ?trop¿ d’ où [>venir|>revenir] on [ne|n’] sait ?pas¿ ?trop¿ d’ où <<- ~2:0>> ␣ - <<- =>> define(\2, [":LV"]) + <<- =>> define(\2, ":LV") __sgpl_faire_plaisir__ >faire plaisirs <<- /sgpl/ --1>> plaisir && Faire plaisir : dans cette locution, “plaisir” doit être au singulier.