Grammalecte  Check-in [340b41b40a]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[build][fr] declensions for tokens
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr | build | new_feature
Files: files | file ages | folders
SHA3-256:340b41b40a3583c4450c4a50451b0738b8a595be29f8866f335a2fa91f947c15
User & Date: olr 2019-07-19 11:34:37
Context
2019-07-19
13:47
[build] remove print() check-in: 284ea35ba0 user: olr tags: build, trunk
11:34
[build][fr] declensions for tokens check-in: 340b41b40a user: olr tags: build, fr, new_feature, trunk
2019-07-18
11:43
[fr] faux positif check-in: 98473c90aa user: olr tags: fr, trunk
Changes

Changes to compile_rules.py.

9
10
11
12
13
14
15

16
17
18
19
20
21
22
23
...
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
...
503
504
505
506
507
508
509
510
511
512
513








514
515
516
517
518
519
520
...
532
533
534
535
536
537
538
539
540
541


542
543
544
545
546
547
548
549
...
629
630
631
632
633
634
635
636
637
638
639
640
641
import colorsys
import time

import compile_rules_js_convert as jsconv
import compile_rules_graph as crg



dDEF = {}
lFUNCTIONS = []

aRULESET = set()     # set of rule-ids to check if there is several rules with the same id
nRULEWITHOUTNAME = 0

dJSREGEXES = {}

................................................................................
        return None

    # quotes ?
    if sRegex.startswith('"') and sRegex.endswith('"'):
        sRegex = sRegex[1:-1]

    ## definitions
    for sDef, sRepl in dDEF.items():
        sRegex = sRegex.replace(sDef, sRepl)

    ## count number of groups (must be done before modifying the regex)
    nGroup = countGroupInRegex(sRegex)
    if nGroup > 0:
        if not tGroups:
            print("# Warning: groups positioning code for JavaScript should be defined at line " + sLineId)
................................................................................
        elif sLine.startswith("#"):
            # comment
            pass
        elif sLine.startswith("DEF:"):
            # definition
            m = re.match("DEF: +([a-zA-Z_][a-zA-Z_0-9]*) +(.+)$", sLine.strip())
            if m:
                dDEF["{"+m.group(1)+"}"] = m.group(2)
            else:
                print("Error in definition: ", end="")
                print(sLine.strip())








        elif sLine.startswith("TEST:"):
            # test
            lTest.append("{:<8}".format(i) + "  " + sLine[5:].strip())
        elif sLine.startswith("TODO:"):
            # todo
            pass
        elif sLine.startswith(("OPTGROUP/", "OPTSOFTWARE:", "OPT/", \
................................................................................
        # Graph rules
        elif sLine.startswith("@@@@GRAPH:"):
            # rules graph call
            m = re.match(r"@@@@GRAPH: *(\w+)", sLine.strip())
            if m:
                printBookmark(0, "GRAPH: " + m.group(1), i)
                lRuleLine.append([i, "@@@@"+m.group(1)])
                bGraph = True
            lGraphRule.append([i, sLine])
            bGraph = True


        elif sLine.startswith("@@@@END_GRAPH"):
            #lGraphRule.append([i, sLine])
            printBookmark(0, "ENDGRAPH", i)
            bGraph = False
        elif re.match("@@@@ *$", sLine):
            pass
        elif bGraph:
            lGraphRule.append([i, sLine])
................................................................................
        "sentence_rules": mergeRulesByOption(lSentenceRules),
        "paragraph_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lParagraphRulesJS)),
        "sentence_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lSentenceRulesJS))
    }
    dVars.update(dOptions)

    # compile graph rules
    dVars2 = crg.make(lGraphRule, dDEF, sLang, dOptPriority)
    dVars.update(dVars2)

    with open("_build/data_cache.json", "w", encoding="utf-8") as hDst:
        hDst.write(json.dumps(dVars, ensure_ascii=False))
    return dVars







>
|







 







|







 







|



>
>
>
>
>
>
>
>







 







<
|
|
>
>
|







 







|





9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
...
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
...
541
542
543
544
545
546
547

548
549
550
551
552
553
554
555
556
557
558
559
...
639
640
641
642
643
644
645
646
647
648
649
650
651
import colorsys
import time

import compile_rules_js_convert as jsconv
import compile_rules_graph as crg


dDEFINITIONS = {}
dDECLENSIONS = {}
lFUNCTIONS = []

aRULESET = set()     # set of rule-ids to check if there is several rules with the same id
nRULEWITHOUTNAME = 0

dJSREGEXES = {}

................................................................................
        return None

    # quotes ?
    if sRegex.startswith('"') and sRegex.endswith('"'):
        sRegex = sRegex[1:-1]

    ## definitions
    for sDef, sRepl in dDEFINITIONS.items():
        sRegex = sRegex.replace(sDef, sRepl)

    ## count number of groups (must be done before modifying the regex)
    nGroup = countGroupInRegex(sRegex)
    if nGroup > 0:
        if not tGroups:
            print("# Warning: groups positioning code for JavaScript should be defined at line " + sLineId)
................................................................................
        elif sLine.startswith("#"):
            # comment
            pass
        elif sLine.startswith("DEF:"):
            # definition
            m = re.match("DEF: +([a-zA-Z_][a-zA-Z_0-9]*) +(.+)$", sLine.strip())
            if m:
                dDEFINITIONS["{"+m.group(1)+"}"] = m.group(2)
            else:
                print("Error in definition: ", end="")
                print(sLine.strip())
        elif sLine.startswith("DECL:"):
            # declensions
            m = re.match(r"DECL: +(\+\w+) (.+)$", sLine.strip())
            if m:
                dDECLENSIONS[m.group(1)] = m.group(2).strip().split()
            else:
                print("Error in declension list: ", end="")
                print(sLine.strip())
        elif sLine.startswith("TEST:"):
            # test
            lTest.append("{:<8}".format(i) + "  " + sLine[5:].strip())
        elif sLine.startswith("TODO:"):
            # todo
            pass
        elif sLine.startswith(("OPTGROUP/", "OPTSOFTWARE:", "OPT/", \
................................................................................
        # Graph rules
        elif sLine.startswith("@@@@GRAPH:"):
            # rules graph call
            m = re.match(r"@@@@GRAPH: *(\w+)", sLine.strip())
            if m:
                printBookmark(0, "GRAPH: " + m.group(1), i)
                lRuleLine.append([i, "@@@@"+m.group(1)])

                lGraphRule.append([i, sLine])
                bGraph = True
            else:
                print("Graph error at line", i)
        elif sLine.startswith(("@@@@END_GRAPH", "@@@@ENDGRAPH")):
            #lGraphRule.append([i, sLine])
            printBookmark(0, "ENDGRAPH", i)
            bGraph = False
        elif re.match("@@@@ *$", sLine):
            pass
        elif bGraph:
            lGraphRule.append([i, sLine])
................................................................................
        "sentence_rules": mergeRulesByOption(lSentenceRules),
        "paragraph_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lParagraphRulesJS)),
        "sentence_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lSentenceRulesJS))
    }
    dVars.update(dOptions)

    # compile graph rules
    dVars2 = crg.make(lGraphRule, sLang, dDEFINITIONS, dDECLENSIONS, dOptPriority)
    dVars.update(dVars2)

    with open("_build/data_cache.json", "w", encoding="utf-8") as hDst:
        hDst.write(json.dumps(dVars, ensure_ascii=False))
    return dVars

Changes to compile_rules_graph.py.

8
9
10
11
12
13
14

15
16
17
18
19
20
21
..
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137




















138
139
140
141
142
143
144
145
146
147
148
...
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
...
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
import darg
import compile_rules_js_convert as jsconv


dACTIONS = {}
dFUNCTIONS = {}
dFUNCNAME = {}



def createFunction (sType, sCode, bStartWithEqual=False):
    "create a function (stored in <dFUNCTIONS>) and return function name"
    sCode = prepareFunction(sCode)
    if sType not in dFUNCNAME:
        dFUNCNAME[sType] = {}
................................................................................
    sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode)
    sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode)
    sCode = re.sub(r">1", 'lToken[nLastToken+1]["sValue"]', sCode)
    sCode = re.sub(r"<1", 'lToken[nTokenOffset]["sValue"]', sCode)
    return sCode


def genTokenLines (sTokenLine, dDef):
    "tokenize a string and return a list of lines of tokens"
    lTokenLines = []
    for sToken in sTokenLine.split():
        # replace merger characters by spaces
        if "␣" in sToken:
            sToken = sToken.replace("␣", " ")
        # optional token?
        bNullPossible = sToken.startswith("?") and sToken.endswith("¿")
        if bNullPossible:
            sToken = sToken[1:-1]
        # token with definition?
        if sToken.startswith("({") and sToken.endswith("})") and sToken[1:-1] in dDef:
            sToken = "(" + dDef[sToken[1:-1]] + ")"
        elif sToken.startswith("{") and sToken.endswith("}") and sToken in dDef:
            sToken = dDef[sToken]
        if ( (sToken.startswith("[") and sToken.endswith("]")) or (sToken.startswith("([") and sToken.endswith("])")) ):
            # multiple token
            bSelectedGroup = sToken.startswith("(") and sToken.endswith(")")
            if bSelectedGroup:
                sToken = sToken[1:-1]
            lNewToken = sToken[1:-1].split("|")
            if not lTokenLines:
                lTokenLines = [ ["("+s+")"]  for s  in lNewToken ]  if bSelectedGroup  else [ [s]  for s  in lNewToken ]
                if bNullPossible:
                    lTokenLines.extend([ []  for i  in range(len(lNewToken)+1) ])
            else:
                lNewTemp = []
                if bNullPossible:
                    for aRule in lTokenLines:
                        for sElem in lNewToken:
                            aNewRule = list(aRule)
                            aNewRule.append(sElem)
                            lNewTemp.append(aNewRule)
                else:
                    sElem1 = lNewToken.pop(0)
                    for aRule in lTokenLines:
                        for sElem in lNewToken:
                            aNewRule = list(aRule)
                            aNewRule.append("(" + sElem + ")"  if bSelectedGroup  else sElem)
                            lNewTemp.append(aNewRule)
                        aRule.append("(" + sElem1 + ")"  if bSelectedGroup  else sElem1)
                lTokenLines.extend(lNewTemp)
        else:
            # simple token
            if not lTokenLines:
                lTokenLines = [[sToken], []]  if bNullPossible  else [[sToken]]
            else:
                if bNullPossible:
                    lNewTemp = []
                    for aRule in lTokenLines:
                        lNew = list(aRule)
                        lNew.append(sToken)
                        lNewTemp.append(lNew)
                    lTokenLines.extend(lNewTemp)
                else:
                    for aRule in lTokenLines:
                        aRule.append(sToken)
    for aRule in lTokenLines:
        yield aRule






















def createRule (iLine, sRuleName, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef):
    "generator: create rule as list"
    # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority)
    for lToken in genTokenLines(sTokenLine, dDef):
        # Calculate positions
        dPos = {}   # key: iGroup, value: iToken
        iGroup = 0
        #if iLine == 15818: # debug
        #    print(" ".join(lToken))
        for i, sToken in enumerate(lToken):
            if sToken.startswith("(") and sToken.endswith(")"):
................................................................................
            print("# Error in action at line " + sActionId + ": second argument for <define> must be a list of strings")
        sAction = createFunction("da", sAction)
        return [sOption, sCondition, cAction, sAction]
    print(" # Unknown action.", sActionId)
    return None


def make (lRule, dDef, sLang, dOptPriority):
    "compile rules, returns a dictionary of values"
    # for clarity purpose, don’t create any file here

    # removing comments, zeroing empty lines, creating definitions, storing tests, merging rule lines
    print("  parsing rules...")
    lTokenLine = []
    sActions = ""
................................................................................

    # processing rules
    print("  preparing rules...")
    for sGraphName, lRuleLine in dAllGraph.items():
        print("{:>8,} rules in {:<24} ".format(len(lRuleLine), "<"+sGraphName+">"), end="")
        lPreparedRule = []
        for i, sRuleGroup, sTokenLine, iActionBlock, sActions, nPriority in lRuleLine:
            for aRule in createRule(i, sRuleGroup, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef):
                lPreparedRule.append(aRule)
        # Graph creation
        oDARG = darg.DARG(lPreparedRule, sLang)
        dAllGraph[sGraphName] = oDARG.createGraph()
        # Debugging
        if False:
            print("\nRULES:")







>







 







|


|

|
|

|

|

|
|
|
|
|

|

|
|

|

|




|




|

|








|





|




|




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|


|







 







|







 







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
..
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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
160
161
162
163
164
165
166
167
168
169
...
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
...
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
import darg
import compile_rules_js_convert as jsconv


dACTIONS = {}
dFUNCTIONS = {}
dFUNCNAME = {}
dDECLENSIONS = {}


def createFunction (sType, sCode, bStartWithEqual=False):
    "create a function (stored in <dFUNCTIONS>) and return function name"
    sCode = prepareFunction(sCode)
    if sType not in dFUNCNAME:
        dFUNCNAME[sType] = {}
................................................................................
    sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode)
    sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode)
    sCode = re.sub(r">1", 'lToken[nLastToken+1]["sValue"]', sCode)
    sCode = re.sub(r"<1", 'lToken[nTokenOffset]["sValue"]', sCode)
    return sCode


def genTokenLines (sTokenLine, dDef, dDecl):
    "tokenize a string and return a list of lines of tokens"
    lTokenLines = []
    for sTokBlock in sTokenLine.split():
        # replace merger characters by spaces
        if "␣" in sTokBlock:
            sTokBlock = sTokBlock.replace("␣", " ")
        # optional token?
        bNullPossible = sTokBlock.startswith("?") and sTokBlock.endswith("¿")
        if bNullPossible:
            sTokBlock = sTokBlock[1:-1]
        # token with definition?
        if sTokBlock.startswith("({") and sTokBlock.endswith("})") and sTokBlock[1:-1] in dDef:
            sTokBlock = "(" + dDef[sTokBlock[1:-1]] + ")"
        elif sTokBlock.startswith("{") and sTokBlock.endswith("}") and sTokBlock in dDef:
            sTokBlock = dDef[sTokBlock]
        if ( (sTokBlock.startswith("[") and sTokBlock.endswith("]")) or (sTokBlock.startswith("([") and sTokBlock.endswith("])")) ):
            # multiple token
            bSelectedGroup = sTokBlock.startswith("(") and sTokBlock.endswith(")")
            if bSelectedGroup:
                sTokBlock = sTokBlock[1:-1]
            lToken = createTokenList(sTokBlock, dDecl)
            if not lTokenLines:
                lTokenLines = [ ["("+s+")"]  for s  in lToken ]  if bSelectedGroup  else [ [s]  for s  in lToken ]
                if bNullPossible:
                    lTokenLines.extend([ []  for i  in range(len(lToken)+1) ])
            else:
                lNewTemp = []
                if bNullPossible:
                    for aRule in lTokenLines:
                        for sElem in lToken:
                            aNewRule = list(aRule)
                            aNewRule.append(sElem)
                            lNewTemp.append(aNewRule)
                else:
                    sElem1 = lToken.pop(0)
                    for aRule in lTokenLines:
                        for sElem in lToken:
                            aNewRule = list(aRule)
                            aNewRule.append("(" + sElem + ")"  if bSelectedGroup  else sElem)
                            lNewTemp.append(aNewRule)
                        aRule.append("(" + sElem1 + ")"  if bSelectedGroup  else sElem1)
                lTokenLines.extend(lNewTemp)
        else:
            # simple token
            if not lTokenLines:
                lTokenLines = [[sTokBlock], []]  if bNullPossible  else [[sTokBlock]]
            else:
                if bNullPossible:
                    lNewTemp = []
                    for aRule in lTokenLines:
                        lNew = list(aRule)
                        lNew.append(sTokBlock)
                        lNewTemp.append(lNew)
                    lTokenLines.extend(lNewTemp)
                else:
                    for aRule in lTokenLines:
                        aRule.append(sTokBlock)
    for aRule in lTokenLines:
        yield aRule


def createTokenList (sTokBlock, dDeclensions):
    "return a list of tokens from a block of tokens"
    lToken = []
    for sToken in sTokBlock[1:-1].split("|"):
        if "+" in sToken and not sToken.startswith("+"):
            print("\n", sToken)
            for sCode in dDeclensions:
                if sToken.endswith(sCode):
                    sToken = sToken[:-len(sCode)]
                    lToken.append(sToken)
                    print(dDeclensions[sCode])
                    for sSuffix in dDeclensions[sCode]:
                        lToken.append(sToken+sSuffix)
                    break
            print(lToken)
        else:
            lToken.append(sToken)
    return lToken


def createRule (iLine, sRuleName, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef, dDecl):
    "generator: create rule as list"
    # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority)
    for lToken in genTokenLines(sTokenLine, dDef, dDecl):
        # Calculate positions
        dPos = {}   # key: iGroup, value: iToken
        iGroup = 0
        #if iLine == 15818: # debug
        #    print(" ".join(lToken))
        for i, sToken in enumerate(lToken):
            if sToken.startswith("(") and sToken.endswith(")"):
................................................................................
            print("# Error in action at line " + sActionId + ": second argument for <define> must be a list of strings")
        sAction = createFunction("da", sAction)
        return [sOption, sCondition, cAction, sAction]
    print(" # Unknown action.", sActionId)
    return None


def make (lRule, sLang, dDef, dDecl, dOptPriority):
    "compile rules, returns a dictionary of values"
    # for clarity purpose, don’t create any file here

    # removing comments, zeroing empty lines, creating definitions, storing tests, merging rule lines
    print("  parsing rules...")
    lTokenLine = []
    sActions = ""
................................................................................

    # processing rules
    print("  preparing rules...")
    for sGraphName, lRuleLine in dAllGraph.items():
        print("{:>8,} rules in {:<24} ".format(len(lRuleLine), "<"+sGraphName+">"), end="")
        lPreparedRule = []
        for i, sRuleGroup, sTokenLine, iActionBlock, sActions, nPriority in lRuleLine:
            for aRule in createRule(i, sRuleGroup, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef, dDecl):
                lPreparedRule.append(aRule)
        # Graph creation
        oDARG = darg.DARG(lPreparedRule, sLang)
        dAllGraph[sGraphName] = oDARG.createGraph()
        # Debugging
        if False:
            print("\nRULES:")

Changes to gc_lang/fr/rules.grx.

288
289
290
291
292
293
294














295
296
297
298
299
300
301
....
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
....
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
....
5308
5309
5310
5311
5312
5313
5314

5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
....
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
....
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
....
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
....
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
....
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
....
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
....
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
....
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
....
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
....
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
....
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
.....
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
.....
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
.....
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
.....
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
.....
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
.....
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
.....
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
.....
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
.....
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
.....
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
.....
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
.....
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
.....
17964
17965
17966
17967
17968
17969
17970
17971
17972
17973
17974
17975
17976
17977
17978
17979
17980
17981
17982
17983
17984
.....
18429
18430
18431
18432
18433
18434
18435
18436
18437
18438
18439
18440
18441
18442
18443
18444
18445
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
18456
18457
18458
18459
18460
18461
18462
18463
18464
.....
18514
18515
18516
18517
18518
18519
18520
18521
18522
18523
18524
18525
18526
18527
18528
18529
18530
18531
18532
18533
18534
18535
18536
18537
18538
18539
18540
18541
18542
18543
18544
18545
18546
18547
18548
18549
18550
18551
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
18562
18563
18564
.....
18577
18578
18579
18580
18581
18582
18583
18584
18585
18586
18587
18588
18589
18590
18591
.....
18600
18601
18602
18603
18604
18605
18606
18607
18608
18609
18610
18611
18612
18613
18614
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
DEF: mois           [>janvier|>février|>mars|>avril|>mai|>juin|>juillet|>août|>aout|>septembre|>octobre|>novembre|>décembre|>vendémiaire|>brumaire|>frimaire|>nivôse|>pluviôse|>ventôse|>germinal|>floréal|>prairial|>messidor|>thermidor|>fructidor]
DEF: mi_mois        [>mi-janvier|>mi-février|>mi-mars|>mi-avril|>mi-mai|>mi-juin|>mi-juillet|>mi-août|>mi-aout|>mi-septembre|>mi-octobre|>mi-novembre|>mi-décembre|mi-vendémiaire|mi-brumaire|mi-frimaire|mi-nivôse|mi-pluviôse|mi-ventôse|mi-germinal|mi-floréal|mi-prairial|mi-messidor|mi-thermidor|mi-fructidor]
DEF: pronom_obj     [moi|toi|soi|lui|elle|nous|vous|eux|elles|moi-même|toi-même|soi-même|lui-même|elle-même|nous-mêmes|vous-même|vous-mêmes|eux-mêmes|elles-mêmes]


!!
!!














!!
!!
!!
!!
!!
!!
!!
................................................................................

    par [dessous|dessus|devant|delà|derrière|dehors|dedans|devers]
        <<- /tu/ ->> par-\2                                     # Il manque un trait d’union.

    par ci ?,¿ par là
        <<- /tu/ ->> par-ci par-là|par-ci, par-là               # Trait(s) d’union manquant(s).

    [le|les|du|des|un|ce|ces|mon|ton|son] [prêt|prêts] [à|a] porter
        <<- /tu/ -2:0>> \2-à-porter                             # Il manque les traits d’union.

    >pied [à|a] terre
        <<- /tu/ morph(<1, ":D") ->> \1-à-terre                 # Il manque les traits d’union.

    [plate|plates] >forme
        <<- /tu/ ->> plate-forme|plates-formes|plateforme|plateformes       # Il manque un trait d’union. Vous pouvez aussi souder les deux mots.
................................................................................
    stock >option
        <<- /tu/ ->>  \1-\2                                     # Il manque un trait d’union.

    soi disant
        <<- /tu/ not ( morph(<1, ":R") and value(>1, "|que|qu’|") )
        ->> soi-disant                                          # Il manque un trait d’union.

    sous [jacent|jacente|jacents|jacentes]
        <<- /tu/ ->> sous-\2                                    # Il manque un trait d’union.

    du sur >mesure
        <<- /tu/ -2:0>> sur-mesures                             # Il manque un trait d’union.

    [un|le|ce|du|mon|ton|son|notre|votre|leur] terre plein
        <<- /tu/ not value(>1, "|de|d’|") -2:3>> terre-plein    # Il manque probablement un trait d’union.|https://fr.wiktionary.org/wiki/terre-plein
................................................................................
    [ne|n’]     [le|la|l’|les]      [lui|leur|en|y]         @:¬:(?:[123][sp]|Y|P|Ov|X)
    [ne|n’]     [lui|leur]          en                      @:¬:(?:[123][sp]|Y|P|Ov|X)
        <<- /conf/ -4>> =suggSimil(\4, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 \2 \3 » : « \4 » devrait être un verbe.

    [ne|n’]     [le|la|l’|les|nous|vous|lui|leur]           @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus)/
    n’          [en|y]                                      @:¬:(?:[123][sp]|Y|P|Ov|X|W)|>(?:pas|presque|jamais|rien|guère|point|plus)/
    [me|m’|te|t’|se|s’]   [le|la|l’|les]                    @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus)/

    [me|m’|te|t’|se|s’]   [en|y]                            @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|voici|voilà)/
        <<- /conf/ -3>> =suggSimil(\3, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 \2 » : « \3 » devrait être un verbe.

    [nous|vous]           y                                 @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|voici|voilà)/
        <<- /conf/ not morph(<1, ":R") -3>> =suggSimil(\3, ":(?:[123][sp]|Y)", False)               # Incohérence avec « \1 \2 » : « \3 » devrait être un verbe.

    [ne|n’]                                                 @:¬:(?:[123][sp]|Y|P|Ov|X|W)|>(?:[mtsl]’|même|pas|presque|jamais|rien|guère|point|plus)/
    [me|m’|te|t’]                                           @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|voici|revoici|voilà|revoilà)/
    se                                                      @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|qu[e’])/
    s’                                                      @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:ils?|qu[e’])/
        <<- /conf/ -2>> =suggSimil(\2, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 » : « \2 » devrait être un verbe.
................................................................................
    [mes|tes|ses|nos|vos|leurs]  différents  <end>
        <<- /conf/ -2>> différends                                      # Confusion probable : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.

    [les|des]  différents  @:G¬:[NAQ]
    les  différents  <end>
        <<- /conf/ -2>> différends                                      # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.

    >être  ?[pas|si]¿   (>différends)
    >être  pas  si      (>différends)
        <<- /conf/ -1>> =\1.replace("nd", "nt")                         # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.

TEST: Très {{différends}} de nous, ces gens-là !
TEST: Régler votre {{différent}}.
TEST: Notre {{différent}} avec eux perdure.
TEST: Un {{différent}} peut toujours se résoudre.
TEST: J’en ai marre de leurs {{différents}}.
TEST: Il y a des {{différents}} que nul ne saurait résoudre.
................................................................................
TEST: Qui faut flinguer pour avoir un bon café ?


# filtre / philtre
__conf_filtre_philtre__
    >filtre d’ [amour|illusion|enchantement|endormissement]
    >filtre de [confusion|guérison|fidélité|longévité|mort|vision]
    >filtre [>aphrodisiaque|empoisonné|empoisonnés|>léthargique|>magique|>narcotique]
        <<- /conf/ -1>> philtre|philtres
        # Confusion probable. Un filtre est un intrument de filtrage, un philtre est une boisson (magique) procurant des effets sur le buveur.|https://fr.wiktionary.org/wiki/philtre

    >philtre à café
        <<- /conf/ -1>> filtre|filtres
        # Confusion probable. Un filtre est un intrument de filtrage, un philtre est une boisson (magique) procurant des effets sur le buveur.|https://fr.wiktionary.org/wiki/filtre

TEST: Elle prépara un {{filtre}} magique.
TEST: un {{philtre}} à café


# flan / flanc
__conf_flanc_flan__
    >flanc [pâtissier|pâtissiers]
    >flanc [au|aux] [>caramel|>café|>citron|>chocolat|>four|>lait|>lard|noix|>pomme|>pruneau|>œuf|>raisin]
    >flanc [de|d’] [or|argent|cuivre]
    >flanc à la [crème|coco|noix]
        <<- /conf/ -1>> =\1.replace("c", "").replace("C", "")               # Confusion. S’il s’agit d’une pâtisserie (ou d’une pièce de métal), écrivez “flan”.|https://fr.wiktionary.org/wiki/flan

    c’ [est|était] ?[que|tout]¿ du (flanc)
    c’ [est|était] rien que du (flanc)
................................................................................


# nouvel / nouveaux
__conf_nouvel_nouveau_euphonie__
    [un|le|ce|du|mon|ton|son|notre|votre|leur|quel]  nouveau  homme
        <<- /conf/ -2>> nouvel                                  # Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

    [un|le|ce|du|mon|ton|son|notre|votre|leur|quel]  nouveau  ~^[aeéiîou]
        <<- /conf/ morph(\3, ":[NA].*:[me]:s") -2>> nouvel      # Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

TEST: ce {{nouveau}} homme
TEST: il se sentait de nouveau homme
TEST: il se sentait à nouveau homme


................................................................................
# palier / pallier
__conf_palier_pallier__
    >voisine de [pallier|pallié|palliés|palliée|palliées]
    >franchir un [pallier|pallié]
    [sur|sous] le ?même¿ [pallier|pallié]
        <<- /conf/ --1>> palier                                             # Confusion.|https://fr.wiktionary.org/wiki/palier

    [pallier|pallié|palliée]  [de|d’] [communication|décompression|imposition]
        <<- /conf/ -1>> palier                                              # Confusion.|https://fr.wiktionary.org/wiki/palier

    [palliés|palliées]  [de|d’] [communication|décompression|imposition]
        <<- /conf/ -1>> paliers                                             # Confusion.|https://fr.wiktionary.org/wiki/palier

    [pallier|pallié|palliés|palliée|palliées] par [pallier|pallié|palliés|palliée|palliées]
        <<- /conf/ ->> palier par palier                                    # Confusion.|https://fr.wiktionary.org/wiki/palier

    de [pallier|pallié|palliés|palliée|palliées] en [pallier|pallié|palliés|palliée|palliées]
        <<- /conf/ ->> de palier en palier                                  # Confusion.|https://fr.wiktionary.org/wiki/palier

TEST: La voisine de {{pallier}} fait un rafut de tous les diables.
TEST: Nous avons franchi un {{pallier}}
TEST: elles progressent {{pallier par pallier}}
TEST: Attention aux {{palliés}} de décompression
TEST: {{De pallier en pallier}}, l’horreur la plus noire
................................................................................
TEST: La {{pause}} des ardoises.
TEST: La {{pause}} de la tapisserie.
TEST: La {{pause}} de la première pierre.


# péché / pêcher
__conf_péché_pêcher__
    [pécher|>pêcher|pêché|pêchés|pêchée|pêchées] [mignon|>capitale]
    [pécher|>pêcher|pêché|pêchés|pêchée|pêchées] de jeunesse
        <<- /conf/ -1>> péché|péchés                                        # Confusion. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    [>absolution|>rémission] [des|du] ([pécher|>pêcher|pêché|pêchés|pêchée|pêchées])
    [>absolution|>rémission] de [mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs] ([pécher|>pêcher|pêché|pêchés|pêchée|pêchées])
        <<- /conf/ -1>> péché|péchés                                        # Confusion. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    >pécheresse [du|d’|de|des|la|le|l’|les|à|au|aux] ([>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques])
    >pécheresse [de|à] [la|l’] ([>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques])
        <<- /conf/ -1>> =\1.replace("pé", "pê").replace("Pé", "Pê").replace("PÉ", "PÊ")     # Confusion probable : pêcheurs (qui pêchent des animaux marins) ≠ pécheurs (qui commettent des péchés).

TEST: Un {{pêcher}} mignon.
TEST: Les sept {{pêchers}} capitaux.
................................................................................

TEST: Vous n’êtes pas sans {{ignorer}} que…
TEST: ne pas être sans {{ignorer}} la cause de ces phénomènes.


# sens / cens / cent / sans / sang
__conf_sens_sans_cent_cens__
    [<start>|,]  [il|ils|on]    [sans|sang|sangs|cens|cent]     @:V
    [<start>|,]  [elle|elles]   [sang|sangs|cens|cent]          @:V
    [<start>|,]  [elle|elles]   sans                            @:V¬:(?:[NYDA]|Oo)|>(?:y|en)
        <<- /conf/ -3>> s’en                                                                        # Confusion probable.

TEST: elle {{sang}} était voulu
TEST: elle sans y penser
TEST: elle sans vergogne
TEST: elle sans la condamner
TEST: elles sans un sou en poche
................................................................................
TEST: {{s’en suivi}} des représailles
TEST: {{S’en suivrons}} une guerre de tous les instants et…
TEST: {{S’en suivre}}.


# soi / soit
__conf_soi_disant__
    [soi|soie|soit|sois] [disants|disante|disantes]
    [soie|soit|sois] disant
    [soi-disants|soi-disante|soi-disantes]
    [sois-disant|sois-disants|sois-disante|sois-disantes]
    [soie-disant|soie-disants|soie-disante|soie-disantes]
    [soies-disant|soies-disants|soies-disante|soies-disantes]
    [soit-disant|soit-disants|soit-disante|soit-disantes]
        <<- /conf/ ->> soi-disant                                                                   # Confusion : “soi-disant” est un adjectif invariable.|http://fr.wiktionary.org/wiki/soi-disant

TEST: Méfiez-vous de cette {{soi-disante}} sorcière.
TEST: Méfiez-vous de cette {{soit-disant}} sorcière.
TEST: Méfiez-vous de cette {{soi disant}} sorcière.


................................................................................

# sot / sceau / seau
__conf_sot_seau_sceau__
    [>sceau|sot|sots] d’ [acier|avoine|eau]
    [>sceau|sot|sots] [d’|de] [bois|boue|ciment|glace|>glaçon|>gravat|>gravier|>gravillon|plage|lait|maçon|nettoyage|peinture|sable]
    [>sceau|sot|sots] à [glace|champagne|>glaçon]
    [>sceau|sot|sots] en [acier|bois|cuivre|fer|inox|métal|plastique|polypropylène|zinc]
    [>sceau|sot|sots] [rempli|remplie|percé|percés|>vide|troué|troués|renversé|renversés|plein|pleins]
        <<- /conf/ -1>> seau|seaux                  # Confusion probable. Pour désigner un récipient, écrivez “seau”.|https://fr.wiktionary.org/wiki/seau

    dans @:D [>sceau|sot|sots]
        <<- /conf/ -3>> seau|seaux                  # Confusion probable. Pour désigner un récipient, écrivez “seau”.|https://fr.wiktionary.org/wiki/seau

    [>seau|sot|sots] du [roi|secret|ministre|ministère|duc|baron|cardinal|pape]
    [>seau|sot|sots] de la [reine|ministre|duchesse|baronne]
................................................................................
__conf_tant_temps_tan_1__
    en [tant] [de|d’] [guerre|paix|crise|doute|pluie]
        <<- /conf/ -2>> temps                               # Confusion. Écrivez « en temps de » si vous évoquez une période de temps.

    de [tant|tan|tans] en [tant|tan|tans]
        <<- /conf/ ->> de temps en temps                    # Confusion. Écrivez « de temps en temps ».

    un [temps|tan|tans] [soi|sois|soie|soies|soit] peu
        <<- /conf/ -2>> tant                                # Confusion. Écrivez « un tant soit peu ».

    un [temps|tan|tans|tant] [soi|sois|soie|soies] peu
        <<- /conf/ -3>> soit                                # Confusion. Écrivez « un tant soit peu ».

    [après|avec] [temps|tan|tans] [de|d’]
        <<- /conf/ -2>> tant                                # Confusion. Écrivez “tant” pour évoquer une quantité de quelque chose.|http://fr.wiktionary.org/wiki/tant

    [à|a] [tan|tans|tant] [partiel|partiels|plein|pleins]
        <<- /conf/ -2>> temps                               # Confusion. Pour ce qui est temporel, écrivez “temps”.
................................................................................
    en fonction de l’ état
        <<- !5>>

    état [français|belge|suisse|canadien|palestinien|souverain|américain|russe|anglais|allemand|espagnol|italien|mexicain|japonais|chinois|australien|polonais|membre|africain|européen|asiatique|voyou|démocratique|totalitaire|fédéral|fédéré|capitaliste|communiste|providence|nation]
    état de droit
        <<- /maj/ \1 == "état" -1>> État                            # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

    états [français|>belge|>suisse|canadien|canadiens|palestinien|palestiniens|souverain|souverains|>membre|américain|américains|africain|africains|européen|européens|>asiatique|>voyou|>démocratique|>totalitaire|>fédérale|>fédérée|>capitaliste|>communiste|>providence|>nation]
    états de droit
        <<- /maj/ \1 == "états" -1>> États                          # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.


    [>affaire|>agent|>administration|>chancellerie|>chef|>cheffe|>conseil|>coup|>diplôme|>doctorat|>emprunt|>lycée|>propriété|>secret|>homme|>femme|>police|>religion|>ministre|>ministère|>subvention|>secrétaire|secret|secrets|>secrétariat|>raison|>ressortissante|>université] d’ état
        <<- /maj/ \3 == "état" -3>> État                            # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

................................................................................
TEST: Ça se passe en Europe du {{nord}}.
TEST: J’ai visité toute l’Afrique du {{sud}}.
TEST: Dans l’Europe de l’{{ouest}}.


# Unités de mesure
__maj_unités__
    *NUM  [Mètre|Watt|Gramme|Seconde|Ampère|Kelvin|Mole|Candela|Candéla|Hertz|Henry|Newton|Pascal|Joule|Coulomb|Volt|Ohm|Farad|Tesla|Weber|Wéber|Radian|Stéradian|Lumen|Lux|Becquerel|Gray|Sievert|Siemens|Katal|Mètres|Watts|Grammes|Secondes|Ampères|Kelvins|Moles|Candelas|Candélas|Hertz|Henrys|Newtons|Pascals|Joules|Coulombs|Volts|Ohms|Farads|Teslas|Webers|Wébers|Radians|Stéradians|Lumens|Becquerels|Grays|Sieverts|Katals]
    @:B   [Mètre|Watt|Gramme|Seconde|Ampère|Kelvin|Mole|Candela|Candéla|Hertz|Henry|Newton|Pascal|Joule|Coulomb|Volt|Ohm|Farad|Tesla|Weber|Wéber|Radian|Stéradian|Lumen|Lux|Becquerel|Gray|Sievert|Siemens|Katal|Mètres|Watts|Grammes|Secondes|Ampères|Kelvins|Moles|Candelas|Candélas|Hertz|Henrys|Newtons|Pascals|Joules|Coulombs|Volts|Ohms|Farads|Teslas|Webers|Wébers|Radians|Stéradians|Lumens|Becquerels|Grays|Sieverts|Katals]
    *NUM  ~(?:Exa|P[ée]ta|Téra|Giga|Méga|Kilo|Hecto|Déc[ai]|Centi|Milli|Micro|Nano|Pico|Femto|Atto|Ze(?:pto|tta)|Yo(?:cto|etta))(?:mètre|watt|gramme|seconde|ampère|kelvin|mole|cand[eé]la|hertz|henry|newton|pascal|joule|coulomb|volt|ohm|farad|tesla|w[eé]ber|radian|stéradian|lumen|lux|becquerel|gray|sievert|siemens|katal)s?$
    @:B   ~(?:Exa|P[ée]ta|Téra|Giga|Méga|Kilo|Hecto|Déc[ai]|Centi|Milli|Micro|Nano|Pico|Femto|Atto|Ze(?:pto|tta)|Yo(?:cto|etta))(?:mètre|watt|gramme|seconde|ampère|kelvin|mole|cand[eé]la|hertz|henry|newton|pascal|joule|coulomb|volt|ohm|farad|tesla|w[eé]ber|radian|stéradian|lumen|lux|becquerel|gray|sievert|siemens|katal)s?$
        <<- /maj/ not \2.isupper() -2:>> =\2.lower()                # Pas de majuscule sur les unités de mesure.|https://fr.wikipedia.org/wiki/Unit%C3%A9_de_mesure

TEST: J’en veux 3 {{Mètres}}.                           ->> mètres
TEST: Elle en prendra vingt {{Grammes}}.                ->> grammes

................................................................................
    >conne comme une valise sans >poignée
    >corvéable à merci
    >coup [de|d’] [avance|balai|barre|bâton|bec|bélier|bite|blues|bol|botte|boule|boutoir|cœur|chaud|coude|couteau|dé|dent|déprime|éclat|épaule|épée|estoc|État|foudre|fil|froid|genou|grâce|>griffe|grisou|gueule|hache|hanche|jarnac|jeune|jus|klaxon|main|maître|maitre|marteau|massue|nostalgie|œil|patte|pied|poignard|poing|poker|pouce|pute|queue|rabot|rein|sabre|sabot|sang|savate|semonce|sifflet|soleil|surin|tête|théâtre|tonnerre|trique|torchon|vent|vieux]
    >coup [de|d’] baguette ?magique¿
    >coup du sort
    >coup d’ un soir
    >course contre la montre
    [cousu|cousue|cousus|cousues] [main]
    [cousu|cousue|cousus|cousues] de fil blanc
    >crayon à [lèvres|sourcils]
    >cour d’ assises
    [>coût|>cout] de revient
    >couteau à cran d’ arrêt
    >cuillère à [café|soupe]
    >déclaration sur l’ honneur
    >délai [de|d’] [attente|carence|connexion|prescription|préavis|rétraction|rigueur]
................................................................................
    >poudre aux yeux
    >presse à >scandale
    preuve suffisante du contraire
    preuves suffisantes du contraire
    prix de revient
    quelqu’un d’ autre
    >rapport de force
    [réglé|réglée|réglés|réglées] comme du papier à musique
    >règlement de comptes
    [remis|remise|remises] à plat
    >requête en nullité
    >requête en non [conciliation|inscription|lieu]
    >requête en non révocation de sursis
    >responsable qualité
    >retour à la case départ
    >robe de soirée
    >roman à l’ eau de rose
................................................................................
    >sac à [dos|main|langer|merde|foutre]
    >sac de [couchage|sport|voyage]
    >salle à manger
    >salle [de|d’] [attente|bain|bains|conférence|séjour]
    >saine [de|d’] [corps|esprit]
    >saine [de|d’] [corps|esprit] et [de|d’] [corps|esprit]
    >sclérose en plaques
    [secret|secrets] défense
    >serpent à sonnette
    >silo à [>grains|blé]
    >soldate d’ élite
    >sonnette d’ alarme
    >sortie de secours
    >soue à >cochonne
    >sourde comme un pot
................................................................................

    >tenir ?[guère|jamais|pas]¿ [comte|comtes|>conte|comptes]
        <<- /conf/ -2>> compte          # Confusion. Locution “tenir compte”.|https://fr.wiktionary.org/wiki/tenir_compte

    >tourner ?[guère|jamais|pas]¿ [coure|courre|cour|cours]
        <<- /conf/ -2>> court           # Confusion. Locution “tourner court”.|https://fr.wiktionary.org/wiki/tourner_court

    [s’|m’|t’]          en  >laisser  ?[guère|jamais|pas]¿  [compter|compté|comptés|comptée|comptées|>comté]
    nous nous           en  >laisser  ?[guère|jamais|pas]¿  [compter|compté|comptés|comptée|comptées|>comté]
    vous vous           en  >laisser  ?[guère|jamais|pas]¿  [compter|compté|comptés|comptée|comptées|>comté]
    ne pas [nous|vous]  en  laisser   [compter|compté|comptés|comptée|comptées|>comté]
        <<- /conf/ --1>> conter         # Confusion. Locution “s’en laisser conter”, c’est-à-dire se laisser raconter des histoires.|https://fr.wiktionary.org/wiki/ne_pas_s%E2%80%99en_laisser_conter

    >compter ?[guère|jamais|pas]¿ fleurette
        <<- /conf/ -1>> =\1.replace("omp", "on").replace("OMP", "ON")   # Confusion. Locution “conter fleurette”.|https://fr.wiktionary.org/wiki/conter_fleurette

TEST: ce contrat arrive {{a}} échéance.
................................................................................
TEST: Des yeux {{marrons}}.
TEST: Des créatures marines.
TEST: Un cageot des premières cerises.


__sgpl_couleurs_composées__
    [>beige|>châtain|>cyan|>écarlate|>jaune|>magenta|>marron|>mauve|>orange|>pourpre|>rouge|>vermeille] [>brillante|>claire|>fluo|>mat|>pâle|>pastel|>sombre|>tendre|>terne|>vive]
    [>beige|>châtain|>cyan|>écarlate|>jaune|>magenta|>marron|>mauve|>orange|>pourpre|>rouge|>vermeille] [foncé|foncés|foncée|foncées|irisé|irisés|irisée|irisées]
        <<- /sgpl/ morph(<1, ":N", ":D") and (not morph(\1, ":[me]:[si]") or morph(\2, ":[pf]"))
        ->> =suggSing(\1) + " " + suggSing(\2)
        # Les couleurs composées de plusieurs termes sont invariables.|https://fr.wikipedia.org/wiki/Accord_des_adjectifs_et_des_noms_de_couleur_en_fran%C3%A7ais

    >jaune [>paille|>sable]
    >rose  [>bonbon|>chair|>corail]
    >rouge [>brique|>carmine|>cerise|>écarlate|rubis|>sang|>tomate|>vermillon]
        <<- /sgpl/ morph(<1, ":N", ":D") and (not morph(\1, ":[me]:[si]") or morph(\2, ":p"))
        ->> =suggSing(\1) + " " + suggSing(\2)
        # Les couleurs composées de plusieurs termes sont invariables.|https://fr.wikipedia.org/wiki/Accord_des_adjectifs_et_des_noms_de_couleur_en_fran%C3%A7ais

    [>blanche|>bleue|>brune|>grise|>noire|>verte|>violette] [>brillante|>claire|>fluo|>mat|>pâle|>pastel|>sombre|>tendre|>terne|>vive]
    [>blanche|>bleue|>brune|>grise|>noire|>verte|>violette] [foncé|foncés|foncée|foncées|irisé|irisés|irisée|irisées]
        <<- /sgpl/ morph(<1, ":N", ":D") and (not morph(\1, ":[me]:[si]") or morph(\2, ":[pf]"))
        ->> =suggMasSing(\1) + " " + suggSing(\2)
        # Les couleurs composées de plusieurs termes sont invariables.|https://fr.wikipedia.org/wiki/Accord_des_adjectifs_et_des_noms_de_couleur_en_fran%C3%A7ais

    >bleue [>ciel|>indigo|>marine|>roi|>saphir|>turquoise|>verte]
    >blonde >platine
    >grise [>acier|>anthracite|>perle|souris]
................................................................................
    quatre-vingts-deux
    quatre-vingts-trois
    quatre-vingts-quatre
    quatre-vingts-cinq
    quatre-vingts-six
    quatre-vingts-sept
    quatre-vingts-huit
    [quatre-vingts-neuf|quatre-vingts-neufs]
    quatre-vingts-dix
    quatre-vingts-onze
    quatre-vingts-douze
    quatre-vingts-treize
    quatre-vingts-quatorze
    quatre-vingts-quinze
    quatre-vingts-seize
................................................................................
TEST: Sur son cheval de {{bas}}.
TEST: ça {{bât}} de l’aile, cette histoire.
TEST: La fête {{bât}} son plein.


# beauté / botté
__conf_beauté__
    [>finir|>terminer|>achever|>conclure|>croître|>croitre|>grandir|>refaire] en    [botter|botté|bootés|bottée|bottées]
    [>faire|>refaire] une                                                           [botter|botté|bootés|bottée|bottées]
    [>canon|concours|>grain|>institut|>pigeon|>produit|>salon]  de                  [botter|botté|bootés|bottée|bottées]
    de toute                                                                        [botter|botté|bootés|bottée|bottées]
    quark                                                                           [botter|botté|bootés|bottée|bottées]
        <<- /conf/ --1>> beauté                                         # Confusion probable. Écrivez “beauté”.|https://fr.wiktionary.org/wiki/beaut%C3%A9

TEST: cette fois, on va finir en {{bottée}}.
TEST: le quark {{botter}}


# bel et bien
................................................................................

TEST: une raclée {{en bonnes et dues formes}}
TEST: remplir son formulaire en bonne et due forme, c’est le minimum pour espérer un retour positif.


## s’en / c’en
__conf_c_en_être__
    s’ en  [es|est|sera|seras|étais|était] [fini|finie|finis|finit|terminé|terminés|terminée|terminées]
        <<- /conf/ morph(<1, ":C|<start>") or value(<1, "|,|")
        -1:2>> c’en                                         # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de

    s’ en  [es|est|sera|seras|étais|était] [assez|trop] [<end>|,|de|d’]
        <<- /conf/ -1:2>> c’en                              # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de

    s’ en  [es|est|sera|seras|étais|était] @:A¬:[GVW]
................................................................................
        <<- /ppas/ \2.islower() -1>> dû                     # Confusion. Ce qui est dû.

TEST: L’échec est {{du}} en partie à un manque de préparation.


# éminent / imminent
__conf_éminent_imminent__
    >imminente [>actrice|>confrère|>collègue|>dirigeante|>dissidente|>entrepreneuse|>experte|>défenseuse|>intellectuelle|>mathématicienne|>musicienne|>pédiatre|>personalité|>personnage|>professeur|>physicienne|>rabbin|>représantante|>savante|>chirurgienne|>neurochirurgienne|>scientifique|>service|>spécialiste|~logue$|~iste]
        <<- /conf/ -1>> =\1.replace("imm", "ém").replace("Imm", "Ém")
        # Confusion probable. Si “\1” se rapporte à “\2”, alors vous voulez probablement dire “éminent” ; “imminent” signifie “qui va survenir prochainement”.|https://fr.wiktionary.org/wiki/%C3%A9minent

    [>actrice|>confrère|>collègue|>dirigeante|>dissidente|>entrepreneuse|>experte|>défenseuse|>intellectuelle|>mathématicienne|>musicienne|>pédiatre|>personalité|>personnage|>professeur|>physicienne|>rabbin|>représantante|>savante|>chirurgienne|>neurochirurgienne|>scientifique|>service|>spécialiste|~logue$|~iste] >imminente
        <<- /conf/ -2>> =\2.replace("imm", "ém").replace("Imm", "Ém")
        # Confusion probable. Si “\2” se rapporte à “\1”, alors vous voulez probablement dire “éminent” ; “imminent” signifie “qui va survenir prochainement”.|https://fr.wiktionary.org/wiki/%C3%A9minent

    [>accouchement|>accord|>arrivée|>assaut|>attaque|>atterrissage|>cataclysme|>catastrophe|>changement|>conflit|>crash|>danger|>décollage|>départ|>désarmement|>déclenchement|>effondrement|>éruption|>fin|>guerre|>lancement|>orage|>ouragan|>péril|>remaniement|>réponse|>résultat|>retour|>séisme|>tempête|>tsunami|>verdict] ?>être¿ >éminente
        <<- /conf/ --1>> =\-1.replace("émi", "immi").replace("Émi", "Immi")
        # Confusion probable. Si “\-1” se rapporte à “\1”, alors vous voulez probablement dire “imminent” ; “éminent” signifie “notable”.|https://fr.wiktionary.org/wiki/%C3%A9minent

................................................................................
TEST: ces conneries donneront {{lieux}} à une enquête approfondie.
TEST: Tout ce qui a {{lieue}} hors de ce pays est ignoré.
TEST: la répression extrêmement violente des diverses manifestations qui ont eu lieu depuis la fin du mois de novembre


# mare / marre
__conf_marre_mare__
    [la|une|cette|quelle|cette|ma|ta|sa] ?petite¿ (marre)
        <<- /conf/ -1>> mare                                    # Confusion. Pour parler d’une petite étendue d’eau, écrivez “mare”. En “avoir marre de” = “en avoir assez de”.

    en >avoir mare
        <<- /conf/ -3>> marre                                   # Confusion. Une mare est une petite étendue d’eau.

TEST: cette {{marre}} est presque sèche.
TEST: j’en ai {{mare}} de tout ça.
TEST: en avoir vraiment {{mare}} de ces conneries.
................................................................................
TEST: Ils étaient partis au restaurant après avoir {{mi}} à jour son profil.
TEST: elles ont dansé, {{mie}} à jour leur carnet et sont parties.
TEST: après avoir {{mi}} ses souliers tenir


# mûr / mur
__conf_mûr_mur__
    [>amandine|>brioche|>charlotte|>cheesecake|>chausson|clafoutis|>confiture|>crème|>crêpe|>croustade|>croustillante|>crumble|>cueillette|>dessert|>far|>flan|jus|>gelée|>glace|>gourmandise|>lapin|>liqueur|>macaron|>milkshake|>milk-shake|>millefeuille|>mille-feuille|>mousse|>muffin|>pancake|>pavlova|>recette|>récolte|>sauce|>soufflé|>smoothie|>sirop|>tarte|>tartelette|>tiramisu|>yaourt|>yoghourt|coulis|>gâteau|>kilo] [de|aux] [mur|mure|murs|mures]
        <<- /conf/ --1>> mûres                                              # Confusion. Le fruit s’écrit “mûre”.|https://fr.wiktionary.org/wiki/m%C3%BBr

    [trop|assez|abcès|>âge|>avocate|>banane|>blé|>brugnon|corps|>enfant|>esprit|>femme|>figue|>fraise|>fruit|>homme|>melon|>personne|>poire|>pomme|>prune|>papaye|>pêche|>raisin|>tomate] [mur|mure|murs|mures]
    [>être|>sembler|>paraître|>paraitre|>rester]  [mur|mure|murs|mures]
        <<- /conf/ --1>> =\-1.replace("u", "û").replace("U", "Û")           # Confusion. Pour décrire ce qui a atteint la maturité, écrivez “mûr”.|https://fr.wiktionary.org/wiki/m%C3%BBr

    des vertes et des pas [mur|mure|murs|mures]
        <<- /conf/ --1>> mûres                                              # Confusion. Pour décrire ce qui a atteint la maturité, écrivez “mûr”.|https://fr.wiktionary.org/wiki/m%C3%BBr

    [mur|mure|murs|mures] [>délibération|>réflexion]
        <<- /conf/ -1>> =\1.replace("u", "û").replace("U", "Û")             # Confusion. Pour décrire ce qui a atteint la maturité, écrivez “mûr”.|https://fr.wiktionary.org/wiki/m%C3%BBr

TEST: cet avocat trop {{mur}} pour être mangé.
TEST: Un pancake aux {{murs}}.
TEST: Ça semble bien assez {{mur}}.
TEST: elle en a vu des vertes et des pas {{murs}}
TEST: Après de {{murs}} délibérations
................................................................................

# péché / pêcher
__conf_péché_pêcher__
    >pêcher par excès [de|d’]
    >pêcher par [insuffisance|omission|orgueil]
        <<- /conf/ -1>> pécher                                  # Confusion : pêcher (capturer des poissons) ≠ pécher (faire un écart de conduite).|https://fr.wiktionary.org/wiki/p%C3%A9cher

    [>commettre|>pardonner|>confesser|>absoudre|>avouer|>reconnaître|>reconnaitre|>expier|>effacer] @:D ([pécher|>pêcher|pêché|pêchés|pêchée|pêchées])
    >repentir de [mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs] ([pécher|>pêcher|pêché|pêchés|pêchée|pêchées])
        <<- /conf/ \1.endswith("s") -1>> péchés                 # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C1%A9ch%C1%A9
        <<- /conf/ __else__ -1>> péché                          # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    [pécher|pêcher|pêchers|pêché|pêchée|pêchés|pêchées] [>capitale|mignon|mignons|>mortelle|>originelle|>vénielle]
        <<- /conf/ \1.endswith("s") -1>> péchés                 # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C1%A9ch%C1%A9
        <<- /conf/ __else__ -1>> péché                          # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    >pécher [du|d’|de|des|la|le|l’|les|à|au|aux] [>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle||>moule|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques]
    >pécher [de|à] [la|l’] [>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques]
        <<- /conf/ -1>> pêcher                                  # Confusion : pêcher (capturer des poissons) ≠ pécher (faire un écart de conduite).|https://fr.wiktionary.org/wiki/p%C3%A9cher

................................................................................
!!

# (plus haut) processeur de texte : risquer d’être -> risquer être

__ppas_je_tu_verbe_état__
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]                                @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru]                                                                                  @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler] [devenu|devenue|redevenu|redevenue|resté|restée|demeuré|demeurée]                        @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿
        || [>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]
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                                        @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿
        || [>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]
        || être [devenu|devenue|redevenu|redevenue|resté|restée|demeuré|demeurée]                                                           @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿
        || [>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]
        || avoir [été|semblé|paru]                                                                                                          @:[NA].*:p¬:[GWYsi]
        <<- /ppas/ not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggSing(\-1)                                   # Accord avec le sujet “\1” : “\-1” devrait être au singulier.

TEST: j’étais {{perdus}}                                                          ->> perdu
TEST: j’aurais été {{perdus}} sans toi                                            ->> perdu
................................................................................


!!!! Participes passés: accord en nombre avec la conjugaison de « être » (et équivalent)            !!

__ppas_être_accord_sing__
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])           @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿  (>avoir) [été|semblé|paru]                                                             @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler])  [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]  @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                                @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                                                   @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                                  @:[NA].*:p¬:[GMWYsi]
        <<- /ppas/ not tag_before(\1, "que") and not morph(\1, ":G") and morph(\2, ":[123]s", ":(?:C|N.*:p)")
        --1>> =suggSing(\-1)                                                                        # Accord avec la forme verbale précédente (être ou équivalent) : “\-1” devrait être au singulier.

    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])           @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿  (>avoir) [été|semblé|paru]                                                             @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler])  [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]  @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                                @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                                                   @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                                  @:[NA].*:p¬:[GMWYsi]
        <<- /ppas/ morph(\1, ":[123]s", ":(?:C|N.*:p)") --1>> =suggSing(\-1)                        # Accord avec la forme verbale précédente (être ou équivalent) : “\-1” devrait être au singulier.

TEST: ces emmerdeurs, qui ne sont toujours pas {{parti}}, ont encore eu une idée pour nous pourrir la vie.
TEST: cette petite chienne avait été longtemps {{malades}}.
................................................................................


!!!! Participes passés: accord en genre avec le substantif précédent                              !!

__ppas_sujet_être_accord_genre__
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]    *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                                       *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[me]", ":[GWf]") and morph(\-1, ":A.*:f", ":[GWme]") and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]    *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                                       *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[fe]", ":[GWm]") and morph(\-1, ":A.*:m", ":[GWfe]") and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]    *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                                       *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|@:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])                   *WORD
................................................................................
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                   *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>

TEST: la danse est {{fini}}…
TEST: Un orage est {{annoncée}}.
................................................................................
TEST: Ma mémoire a aussi été {{effacé}}.
TEST: Les tortures que ce journaliste pense être “normales”.


__ppas_nom_propre_être_accord_genre__
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿  [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]            *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                            *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée] *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                   *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ ((morph(\1, ":M.*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":M.*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                   *WORD
    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>

TEST: Antoine est {{mariée}}.
TEST: Antoine n’est pas {{mariés}}.







>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|







 







|







 







>
|


|







 







|
|
|







 







|













|







 







|







 







|





|


|







 







|
|


|
|
|







 







|
|
|







 







|
|

|
|
|
|







 







|







 







|


|







 







|







 







|
|







 







|
|







 







|

|







 







|







 







|
|
|







 







|












|







 







|







 







|
|
|
|
|







 







|







 







|



|







 







|
|







 







|


|
|


|


|







 







|
|
|
|

|







 







|





|







 







|





|








|





|







 







|





|








|





|








|





|







 







|







 







|





|











|







288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
....
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
....
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
....
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
....
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
....
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
....
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
....
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
....
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
....
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
....
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
....
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
....
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
....
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
....
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
.....
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
.....
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
.....
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
.....
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
.....
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
.....
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
.....
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
.....
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
.....
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
.....
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
.....
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
.....
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
.....
17979
17980
17981
17982
17983
17984
17985
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995
17996
17997
17998
17999
.....
18444
18445
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
18456
18457
18458
18459
18460
18461
18462
18463
18464
18465
18466
18467
18468
18469
18470
18471
18472
18473
18474
18475
18476
18477
18478
18479
.....
18529
18530
18531
18532
18533
18534
18535
18536
18537
18538
18539
18540
18541
18542
18543
18544
18545
18546
18547
18548
18549
18550
18551
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
.....
18592
18593
18594
18595
18596
18597
18598
18599
18600
18601
18602
18603
18604
18605
18606
.....
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
18633
18634
18635
18636
18637
18638
18639
18640
18641
18642
18643
18644
18645
18646
18647
DEF: mois           [>janvier|>février|>mars|>avril|>mai|>juin|>juillet|>août|>aout|>septembre|>octobre|>novembre|>décembre|>vendémiaire|>brumaire|>frimaire|>nivôse|>pluviôse|>ventôse|>germinal|>floréal|>prairial|>messidor|>thermidor|>fructidor]
DEF: mi_mois        [>mi-janvier|>mi-février|>mi-mars|>mi-avril|>mi-mai|>mi-juin|>mi-juillet|>mi-août|>mi-aout|>mi-septembre|>mi-octobre|>mi-novembre|>mi-décembre|mi-vendémiaire|mi-brumaire|mi-frimaire|mi-nivôse|mi-pluviôse|mi-ventôse|mi-germinal|mi-floréal|mi-prairial|mi-messidor|mi-thermidor|mi-fructidor]
DEF: pronom_obj     [moi|toi|soi|lui|elle|nous|vous|eux|elles|moi-même|toi-même|soi-même|lui-même|elle-même|nous-mêmes|vous-même|vous-mêmes|eux-mêmes|elles-mêmes]


!!
!!
!! Déclinaisons de tokens                                                                         !!
!!
!!

DECL: +s    s
DECL: +e    e
DECL: +ses  s e es
DECL: +es   e es
DECL: +les  s le les
DECL: +x    x


!!
!!
!!
!!
!!
!!
!!
!!
!!
................................................................................

    par [dessous|dessus|devant|delà|derrière|dehors|dedans|devers]
        <<- /tu/ ->> par-\2                                     # Il manque un trait d’union.

    par ci ?,¿ par là
        <<- /tu/ ->> par-ci par-là|par-ci, par-là               # Trait(s) d’union manquant(s).

    [le|les|du|des|un|ce|ces|mon|ton|son] [prêt+s] [à|a] porter
        <<- /tu/ -2:0>> \2-à-porter                             # Il manque les traits d’union.

    >pied [à|a] terre
        <<- /tu/ morph(<1, ":D") ->> \1-à-terre                 # Il manque les traits d’union.

    [plate|plates] >forme
        <<- /tu/ ->> plate-forme|plates-formes|plateforme|plateformes       # Il manque un trait d’union. Vous pouvez aussi souder les deux mots.
................................................................................
    stock >option
        <<- /tu/ ->>  \1-\2                                     # Il manque un trait d’union.

    soi disant
        <<- /tu/ not ( morph(<1, ":R") and value(>1, "|que|qu’|") )
        ->> soi-disant                                          # Il manque un trait d’union.

    sous [jacent+ses]
        <<- /tu/ ->> sous-\2                                    # Il manque un trait d’union.

    du sur >mesure
        <<- /tu/ -2:0>> sur-mesures                             # Il manque un trait d’union.

    [un|le|ce|du|mon|ton|son|notre|votre|leur] terre plein
        <<- /tu/ not value(>1, "|de|d’|") -2:3>> terre-plein    # Il manque probablement un trait d’union.|https://fr.wiktionary.org/wiki/terre-plein
................................................................................
    [ne|n’]     [le|la|l’|les]      [lui|leur|en|y]         @:¬:(?:[123][sp]|Y|P|Ov|X)
    [ne|n’]     [lui|leur]          en                      @:¬:(?:[123][sp]|Y|P|Ov|X)
        <<- /conf/ -4>> =suggSimil(\4, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 \2 \3 » : « \4 » devrait être un verbe.

    [ne|n’]     [le|la|l’|les|nous|vous|lui|leur]           @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus)/
    n’          [en|y]                                      @:¬:(?:[123][sp]|Y|P|Ov|X|W)|>(?:pas|presque|jamais|rien|guère|point|plus)/
    [me|m’|te|t’|se|s’]   [le|la|l’|les]                    @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus)/
    [me|m’|te|t’]   [en|y]                                  @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|voici|revoici|voilà|revoilà)/
    [se|s’]         [en|y]                                  @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus)/
        <<- /conf/ -3>> =suggSimil(\3, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 \2 » : « \3 » devrait être un verbe.

    [nous|vous]           y                                 @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|voici|revoici|voilà|revoilà)/
        <<- /conf/ not morph(<1, ":R") -3>> =suggSimil(\3, ":(?:[123][sp]|Y)", False)               # Incohérence avec « \1 \2 » : « \3 » devrait être un verbe.

    [ne|n’]                                                 @:¬:(?:[123][sp]|Y|P|Ov|X|W)|>(?:[mtsl]’|même|pas|presque|jamais|rien|guère|point|plus)/
    [me|m’|te|t’]                                           @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|voici|revoici|voilà|revoilà)/
    se                                                      @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:pas|presque|jamais|rien|guère|point|plus|qu[e’])/
    s’                                                      @:¬:(?:[123][sp]|Y|P|Ov|X)|>(?:ils?|qu[e’])/
        <<- /conf/ -2>> =suggSimil(\2, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 » : « \2 » devrait être un verbe.
................................................................................
    [mes|tes|ses|nos|vos|leurs]  différents  <end>
        <<- /conf/ -2>> différends                                      # Confusion probable : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.

    [les|des]  différents  @:G¬:[NAQ]
    les  différents  <end>
        <<- /conf/ -2>> différends                                      # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.

    >être  ?[pas|si]¿   >différends
    >être  pas  si      >différends
        <<- /conf/ --1>> =\-1.replace("nd", "nt")                       # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.

TEST: Très {{différends}} de nous, ces gens-là !
TEST: Régler votre {{différent}}.
TEST: Notre {{différent}} avec eux perdure.
TEST: Un {{différent}} peut toujours se résoudre.
TEST: J’en ai marre de leurs {{différents}}.
TEST: Il y a des {{différents}} que nul ne saurait résoudre.
................................................................................
TEST: Qui faut flinguer pour avoir un bon café ?


# filtre / philtre
__conf_filtre_philtre__
    >filtre d’ [amour|illusion|enchantement|endormissement]
    >filtre de [confusion|guérison|fidélité|longévité|mort|vision]
    >filtre [>aphrodisiaque|empoisonné+ses|>léthargique|>magique|>narcotique]
        <<- /conf/ -1>> philtre|philtres
        # Confusion probable. Un filtre est un intrument de filtrage, un philtre est une boisson (magique) procurant des effets sur le buveur.|https://fr.wiktionary.org/wiki/philtre

    >philtre à café
        <<- /conf/ -1>> filtre|filtres
        # Confusion probable. Un filtre est un intrument de filtrage, un philtre est une boisson (magique) procurant des effets sur le buveur.|https://fr.wiktionary.org/wiki/filtre

TEST: Elle prépara un {{filtre}} magique.
TEST: un {{philtre}} à café


# flan / flanc
__conf_flanc_flan__
    >flanc [pâtissier+s]
    >flanc [au|aux] [>caramel|>café|>citron|>chocolat|>four|>lait|>lard|noix|>pomme|>pruneau|>œuf|>raisin]
    >flanc [de|d’] [or|argent|cuivre]
    >flanc à la [crème|coco|noix]
        <<- /conf/ -1>> =\1.replace("c", "").replace("C", "")               # Confusion. S’il s’agit d’une pâtisserie (ou d’une pièce de métal), écrivez “flan”.|https://fr.wiktionary.org/wiki/flan

    c’ [est|était] ?[que|tout]¿ du (flanc)
    c’ [est|était] rien que du (flanc)
................................................................................


# nouvel / nouveaux
__conf_nouvel_nouveau_euphonie__
    [un|le|ce|du|mon|ton|son|notre|votre|leur|quel]  nouveau  homme
        <<- /conf/ -2>> nouvel                                  # Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

    [un|le|ce|du|mon|ton|son|notre|votre|leur|quel]  nouveau  ~^[aâeéiîou]
        <<- /conf/ morph(\3, ":[NA].*:[me]:s") -2>> nouvel      # Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

TEST: ce {{nouveau}} homme
TEST: il se sentait de nouveau homme
TEST: il se sentait à nouveau homme


................................................................................
# palier / pallier
__conf_palier_pallier__
    >voisine de [pallier|pallié|palliés|palliée|palliées]
    >franchir un [pallier|pallié]
    [sur|sous] le ?même¿ [pallier|pallié]
        <<- /conf/ --1>> palier                                             # Confusion.|https://fr.wiktionary.org/wiki/palier

    [pallier|pallié+e]  [de|d’] [communication|décompression|imposition]
        <<- /conf/ -1>> palier                                              # Confusion.|https://fr.wiktionary.org/wiki/palier

    [palliés|palliées]  [de|d’] [communication|décompression|imposition]
        <<- /conf/ -1>> paliers                                             # Confusion.|https://fr.wiktionary.org/wiki/palier

    [pallier|pallié+ses] par [pallier|pallié+ses]
        <<- /conf/ ->> palier par palier                                    # Confusion.|https://fr.wiktionary.org/wiki/palier

    de [pallier|pallié+ses] en [pallier|pallié+ses]
        <<- /conf/ ->> de palier en palier                                  # Confusion.|https://fr.wiktionary.org/wiki/palier

TEST: La voisine de {{pallier}} fait un rafut de tous les diables.
TEST: Nous avons franchi un {{pallier}}
TEST: elles progressent {{pallier par pallier}}
TEST: Attention aux {{palliés}} de décompression
TEST: {{De pallier en pallier}}, l’horreur la plus noire
................................................................................
TEST: La {{pause}} des ardoises.
TEST: La {{pause}} de la tapisserie.
TEST: La {{pause}} de la première pierre.


# péché / pêcher
__conf_péché_pêcher__
    [pécher|>pêcher|pêché+ses] [mignon|>capitale]
    [pécher|>pêcher|pêché+ses] de jeunesse
        <<- /conf/ -1>> péché|péchés                                        # Confusion. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    [>absolution|>rémission] [des|du] [pécher|>pêcher|pêché+ses]
    [>absolution|>rémission] de [mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs] [pécher|>pêcher|pêché+ses]
        <<- /conf/ --1>> péché|péchés                                       # Confusion. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    >pécheresse [du|d’|de|des|la|le|l’|les|à|au|aux] ([>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques])
    >pécheresse [de|à] [la|l’] ([>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques])
        <<- /conf/ -1>> =\1.replace("pé", "pê").replace("Pé", "Pê").replace("PÉ", "PÊ")     # Confusion probable : pêcheurs (qui pêchent des animaux marins) ≠ pécheurs (qui commettent des péchés).

TEST: Un {{pêcher}} mignon.
TEST: Les sept {{pêchers}} capitaux.
................................................................................

TEST: Vous n’êtes pas sans {{ignorer}} que…
TEST: ne pas être sans {{ignorer}} la cause de ces phénomènes.


# sens / cens / cent / sans / sang
__conf_sens_sans_cent_cens__
    [<start>|,]  [il|ils|on]    [sans|>sang|cens|>cent]     @:V
    [<start>|,]  [elle|elles]   [>sang|cens|>cent]          @:V
    [<start>|,]  [elle|elles]   sans                        @:V¬:(?:[NYDA]|Oo)|>(?:y|en)
        <<- /conf/ -3>> s’en                                                                        # Confusion probable.

TEST: elle {{sang}} était voulu
TEST: elle sans y penser
TEST: elle sans vergogne
TEST: elle sans la condamner
TEST: elles sans un sou en poche
................................................................................
TEST: {{s’en suivi}} des représailles
TEST: {{S’en suivrons}} une guerre de tous les instants et…
TEST: {{S’en suivre}}.


# soi / soit
__conf_soi_disant__
    soi [disants|disante|disantes]
    [soie|soit|sois] [disant+ses]
    [soi-disants|soi-disante|soi-disantes]
    [sois-disant+ses]
    [soie-disant+ses]
    [soies-disant+ses]
    [soit-disant+ses]
        <<- /conf/ ->> soi-disant                                                                   # Confusion : “soi-disant” est un adjectif invariable.|http://fr.wiktionary.org/wiki/soi-disant

TEST: Méfiez-vous de cette {{soi-disante}} sorcière.
TEST: Méfiez-vous de cette {{soit-disant}} sorcière.
TEST: Méfiez-vous de cette {{soi disant}} sorcière.


................................................................................

# sot / sceau / seau
__conf_sot_seau_sceau__
    [>sceau|sot|sots] d’ [acier|avoine|eau]
    [>sceau|sot|sots] [d’|de] [bois|boue|ciment|glace|>glaçon|>gravat|>gravier|>gravillon|plage|lait|maçon|nettoyage|peinture|sable]
    [>sceau|sot|sots] à [glace|champagne|>glaçon]
    [>sceau|sot|sots] en [acier|bois|cuivre|fer|inox|métal|plastique|polypropylène|zinc]
    [>sceau|sot|sots] [rempli+ses|percé+ses|>vide|troué+ses|renversé+ses|plein+s]
        <<- /conf/ -1>> seau|seaux                  # Confusion probable. Pour désigner un récipient, écrivez “seau”.|https://fr.wiktionary.org/wiki/seau

    dans @:D [>sceau|sot|sots]
        <<- /conf/ -3>> seau|seaux                  # Confusion probable. Pour désigner un récipient, écrivez “seau”.|https://fr.wiktionary.org/wiki/seau

    [>seau|sot|sots] du [roi|secret|ministre|ministère|duc|baron|cardinal|pape]
    [>seau|sot|sots] de la [reine|ministre|duchesse|baronne]
................................................................................
__conf_tant_temps_tan_1__
    en [tant] [de|d’] [guerre|paix|crise|doute|pluie]
        <<- /conf/ -2>> temps                               # Confusion. Écrivez « en temps de » si vous évoquez une période de temps.

    de [tant|tan|tans] en [tant|tan|tans]
        <<- /conf/ ->> de temps en temps                    # Confusion. Écrivez « de temps en temps ».

    un [temps|tan|tans] [soi|sois|>soie|soit] peu
        <<- /conf/ -2>> tant                                # Confusion. Écrivez « un tant soit peu ».

    un [temps|tan|tans|tant] [soi|sois|>soie] peu
        <<- /conf/ -3>> soit                                # Confusion. Écrivez « un tant soit peu ».

    [après|avec] [temps|tan|tans] [de|d’]
        <<- /conf/ -2>> tant                                # Confusion. Écrivez “tant” pour évoquer une quantité de quelque chose.|http://fr.wiktionary.org/wiki/tant

    [à|a] [tan|tans|tant] [partiel|partiels|plein|pleins]
        <<- /conf/ -2>> temps                               # Confusion. Pour ce qui est temporel, écrivez “temps”.
................................................................................
    en fonction de l’ état
        <<- !5>>

    état [français|belge|suisse|canadien|palestinien|souverain|américain|russe|anglais|allemand|espagnol|italien|mexicain|japonais|chinois|australien|polonais|membre|africain|européen|asiatique|voyou|démocratique|totalitaire|fédéral|fédéré|capitaliste|communiste|providence|nation]
    état de droit
        <<- /maj/ \1 == "état" -1>> État                            # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

    états [français|>belge|>suisse|canadien+s|palestinien+s|souverain+s|>membre|américain+s|africain+s|européen+s|>asiatique|>voyou|>démocratique|>totalitaire|>fédérale|>fédérée|>capitaliste|>communiste|>providence|>nation]
    états de droit
        <<- /maj/ \1 == "états" -1>> États                          # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.


    [>affaire|>agent|>administration|>chancellerie|>chef|>cheffe|>conseil|>coup|>diplôme|>doctorat|>emprunt|>lycée|>propriété|>secret|>homme|>femme|>police|>religion|>ministre|>ministère|>subvention|>secrétaire|secret|secrets|>secrétariat|>raison|>ressortissante|>université] d’ état
        <<- /maj/ \3 == "état" -3>> État                            # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

................................................................................
TEST: Ça se passe en Europe du {{nord}}.
TEST: J’ai visité toute l’Afrique du {{sud}}.
TEST: Dans l’Europe de l’{{ouest}}.


# Unités de mesure
__maj_unités__
    *NUM  [Mètre+s|Watt+s|Gramme+s|Seconde+s|Ampère+s|Kelvin+s|Mole+s|Candela+s|Candéla+s|Hertz|Henry+s|Newton+s|Pascal+s|Joule+s|Coulomb+s|Volt+s|Ohm+s|Farad+s|Tesla+s|Weber+s|Wéber+s|Radian+s|Stéradian+s|Lumen+s|Lux|Becquerel+s|Gray+s|Sievert+s|Siemens|Katal+s]
    @:B   [Mètre+s|Watt+s|Gramme+s|Seconde+s|Ampère+s|Kelvin+s|Mole+s|Candela+s|Candéla+s|Hertz|Henry+s|Newton+s|Pascal+s|Joule+s|Coulomb+s|Volt+s|Ohm+s|Farad+s|Tesla+s|Weber+s|Wéber+s|Radian+s|Stéradian+s|Lumen+s|Lux|Becquerel+s|Gray+s|Sievert+s|Siemens|Katal+s]
    *NUM  ~(?:Exa|P[ée]ta|Téra|Giga|Méga|Kilo|Hecto|Déc[ai]|Centi|Milli|Micro|Nano|Pico|Femto|Atto|Ze(?:pto|tta)|Yo(?:cto|etta))(?:mètre|watt|gramme|seconde|ampère|kelvin|mole|cand[eé]la|hertz|henry|newton|pascal|joule|coulomb|volt|ohm|farad|tesla|w[eé]ber|radian|stéradian|lumen|lux|becquerel|gray|sievert|siemens|katal)s?$
    @:B   ~(?:Exa|P[ée]ta|Téra|Giga|Méga|Kilo|Hecto|Déc[ai]|Centi|Milli|Micro|Nano|Pico|Femto|Atto|Ze(?:pto|tta)|Yo(?:cto|etta))(?:mètre|watt|gramme|seconde|ampère|kelvin|mole|cand[eé]la|hertz|henry|newton|pascal|joule|coulomb|volt|ohm|farad|tesla|w[eé]ber|radian|stéradian|lumen|lux|becquerel|gray|sievert|siemens|katal)s?$
        <<- /maj/ not \2.isupper() -2:>> =\2.lower()                # Pas de majuscule sur les unités de mesure.|https://fr.wikipedia.org/wiki/Unit%C3%A9_de_mesure

TEST: J’en veux 3 {{Mètres}}.                           ->> mètres
TEST: Elle en prendra vingt {{Grammes}}.                ->> grammes

................................................................................
    >conne comme une valise sans >poignée
    >corvéable à merci
    >coup [de|d’] [avance|balai|barre|bâton|bec|bélier|bite|blues|bol|botte|boule|boutoir|cœur|chaud|coude|couteau|dé|dent|déprime|éclat|épaule|épée|estoc|État|foudre|fil|froid|genou|grâce|>griffe|grisou|gueule|hache|hanche|jarnac|jeune|jus|klaxon|main|maître|maitre|marteau|massue|nostalgie|œil|patte|pied|poignard|poing|poker|pouce|pute|queue|rabot|rein|sabre|sabot|sang|savate|semonce|sifflet|soleil|surin|tête|théâtre|tonnerre|trique|torchon|vent|vieux]
    >coup [de|d’] baguette ?magique¿
    >coup du sort
    >coup d’ un soir
    >course contre la montre
    [cousu+ses] [main]
    [cousu+ses] de fil blanc
    >crayon à [lèvres|sourcils]
    >cour d’ assises
    [>coût|>cout] de revient
    >couteau à cran d’ arrêt
    >cuillère à [café|soupe]
    >déclaration sur l’ honneur
    >délai [de|d’] [attente|carence|connexion|prescription|préavis|rétraction|rigueur]
................................................................................
    >poudre aux yeux
    >presse à >scandale
    preuve suffisante du contraire
    preuves suffisantes du contraire
    prix de revient
    quelqu’un d’ autre
    >rapport de force
    [réglé+ses] comme du papier à musique
    >règlement de comptes
    [remis+es] à plat
    >requête en nullité
    >requête en non [conciliation|inscription|lieu]
    >requête en non révocation de sursis
    >responsable qualité
    >retour à la case départ
    >robe de soirée
    >roman à l’ eau de rose
................................................................................
    >sac à [dos|main|langer|merde|foutre]
    >sac de [couchage|sport|voyage]
    >salle à manger
    >salle [de|d’] [attente|bain|bains|conférence|séjour]
    >saine [de|d’] [corps|esprit]
    >saine [de|d’] [corps|esprit] et [de|d’] [corps|esprit]
    >sclérose en plaques
    [secret+s] défense
    >serpent à sonnette
    >silo à [>grains|blé]
    >soldate d’ élite
    >sonnette d’ alarme
    >sortie de secours
    >soue à >cochonne
    >sourde comme un pot
................................................................................

    >tenir ?[guère|jamais|pas]¿ [comte|comtes|>conte|comptes]
        <<- /conf/ -2>> compte          # Confusion. Locution “tenir compte”.|https://fr.wiktionary.org/wiki/tenir_compte

    >tourner ?[guère|jamais|pas]¿ [coure|courre|cour|cours]
        <<- /conf/ -2>> court           # Confusion. Locution “tourner court”.|https://fr.wiktionary.org/wiki/tourner_court

    [s’|m’|t’]          en  >laisser  ?[guère|jamais|pas]¿  [compter|compté+ses|>comté]
    nous nous           en  >laisser  ?[guère|jamais|pas]¿  [compter|compté+ses|>comté]
    vous vous           en  >laisser  ?[guère|jamais|pas]¿  [compter|compté+ses|>comté]
    ne pas [nous|vous]  en  laisser   [compter|compté|comptés|comptée|comptées|>comté]
        <<- /conf/ --1>> conter         # Confusion. Locution “s’en laisser conter”, c’est-à-dire se laisser raconter des histoires.|https://fr.wiktionary.org/wiki/ne_pas_s%E2%80%99en_laisser_conter

    >compter ?[guère|jamais|pas]¿ fleurette
        <<- /conf/ -1>> =\1.replace("omp", "on").replace("OMP", "ON")   # Confusion. Locution “conter fleurette”.|https://fr.wiktionary.org/wiki/conter_fleurette

TEST: ce contrat arrive {{a}} échéance.
................................................................................
TEST: Des yeux {{marrons}}.
TEST: Des créatures marines.
TEST: Un cageot des premières cerises.


__sgpl_couleurs_composées__
    [>beige|>châtain|>cyan|>écarlate|>jaune|>magenta|>marron|>mauve|>orange|>pourpre|>rouge|>vermeille] [>brillante|>claire|>fluo|>mat|>pâle|>pastel|>sombre|>tendre|>terne|>vive]
    [>beige|>châtain|>cyan|>écarlate|>jaune|>magenta|>marron|>mauve|>orange|>pourpre|>rouge|>vermeille] [foncé+ses|irisé+ses]
        <<- /sgpl/ morph(<1, ":N", ":D") and (not morph(\1, ":[me]:[si]") or morph(\2, ":[pf]"))
        ->> =suggSing(\1) + " " + suggSing(\2)
        # Les couleurs composées de plusieurs termes sont invariables.|https://fr.wikipedia.org/wiki/Accord_des_adjectifs_et_des_noms_de_couleur_en_fran%C3%A7ais

    >jaune [>paille|>sable]
    >rose  [>bonbon|>chair|>corail]
    >rouge [>brique|>carmine|>cerise|>écarlate|rubis|>sang|>tomate|>vermillon]
        <<- /sgpl/ morph(<1, ":N", ":D") and (not morph(\1, ":[me]:[si]") or morph(\2, ":p"))
        ->> =suggSing(\1) + " " + suggSing(\2)
        # Les couleurs composées de plusieurs termes sont invariables.|https://fr.wikipedia.org/wiki/Accord_des_adjectifs_et_des_noms_de_couleur_en_fran%C3%A7ais

    [>blanche|>bleue|>brune|>grise|>noire|>verte|>violette] [>brillante|>claire|>fluo|>mat|>pâle|>pastel|>sombre|>tendre|>terne|>vive]
    [>blanche|>bleue|>brune|>grise|>noire|>verte|>violette] [foncé+ses|irisé+ses]
        <<- /sgpl/ morph(<1, ":N", ":D") and (not morph(\1, ":[me]:[si]") or morph(\2, ":[pf]"))
        ->> =suggMasSing(\1) + " " + suggSing(\2)
        # Les couleurs composées de plusieurs termes sont invariables.|https://fr.wikipedia.org/wiki/Accord_des_adjectifs_et_des_noms_de_couleur_en_fran%C3%A7ais

    >bleue [>ciel|>indigo|>marine|>roi|>saphir|>turquoise|>verte]
    >blonde >platine
    >grise [>acier|>anthracite|>perle|souris]
................................................................................
    quatre-vingts-deux
    quatre-vingts-trois
    quatre-vingts-quatre
    quatre-vingts-cinq
    quatre-vingts-six
    quatre-vingts-sept
    quatre-vingts-huit
    [quatre-vingts-neuf+s]
    quatre-vingts-dix
    quatre-vingts-onze
    quatre-vingts-douze
    quatre-vingts-treize
    quatre-vingts-quatorze
    quatre-vingts-quinze
    quatre-vingts-seize
................................................................................
TEST: Sur son cheval de {{bas}}.
TEST: ça {{bât}} de l’aile, cette histoire.
TEST: La fête {{bât}} son plein.


# beauté / botté
__conf_beauté__
    [>finir|>terminer|>achever|>conclure|>croître|>croitre|>grandir|>refaire] en    [botter|botté+ses]
    [>faire|>refaire] une                                                           [botter|botté+ses]
    [>canon|concours|>grain|>institut|>pigeon|>produit|>salon]  de                  [botter|botté+ses]
    de toute                                                                        [botter|botté+ses]
    quark                                                                           [botter|botté+ses]
        <<- /conf/ --1>> beauté                                         # Confusion probable. Écrivez “beauté”.|https://fr.wiktionary.org/wiki/beaut%C3%A9

TEST: cette fois, on va finir en {{bottée}}.
TEST: le quark {{botter}}


# bel et bien
................................................................................

TEST: une raclée {{en bonnes et dues formes}}
TEST: remplir son formulaire en bonne et due forme, c’est le minimum pour espérer un retour positif.


## s’en / c’en
__conf_c_en_être__
    s’ en  [es|est|sera|seras|étais|était] [fini+ses|finit|terminé+ses]
        <<- /conf/ morph(<1, ":C|<start>") or value(<1, "|,|")
        -1:2>> c’en                                         # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de

    s’ en  [es|est|sera|seras|étais|était] [assez|trop] [<end>|,|de|d’]
        <<- /conf/ -1:2>> c’en                              # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de

    s’ en  [es|est|sera|seras|étais|était] @:A¬:[GVW]
................................................................................
        <<- /ppas/ \2.islower() -1>> dû                     # Confusion. Ce qui est dû.

TEST: L’échec est {{du}} en partie à un manque de préparation.


# éminent / imminent
__conf_éminent_imminent__
    >imminente [>actrice|>confrère|>collègue|>dirigeante|>dissidente|>entrepreneuse|>experte|>défenseuse|>intellectuelle|>mathématicienne|>musicienne|>pédiatre|>personalité|>personnage|>professeur|>physicienne|>rabbin|>représantante|>savante|>chirurgienne|>neurochirurgienne|>scientifique|>service|>spécialiste|~logues?$|~istes?$]
        <<- /conf/ -1>> =\1.replace("imm", "ém").replace("Imm", "Ém")
        # Confusion probable. Si “\1” se rapporte à “\2”, alors vous voulez probablement dire “éminent” ; “imminent” signifie “qui va survenir prochainement”.|https://fr.wiktionary.org/wiki/%C3%A9minent

    [>actrice|>confrère|>collègue|>dirigeante|>dissidente|>entrepreneuse|>experte|>défenseuse|>intellectuelle|>mathématicienne|>musicienne|>pédiatre|>personalité|>personnage|>professeur|>physicienne|>rabbin|>représantante|>savante|>chirurgienne|>neurochirurgienne|>scientifique|>service|>spécialiste|~logues?$|~istes?$] >imminente
        <<- /conf/ -2>> =\2.replace("imm", "ém").replace("Imm", "Ém")
        # Confusion probable. Si “\2” se rapporte à “\1”, alors vous voulez probablement dire “éminent” ; “imminent” signifie “qui va survenir prochainement”.|https://fr.wiktionary.org/wiki/%C3%A9minent

    [>accouchement|>accord|>arrivée|>assaut|>attaque|>atterrissage|>cataclysme|>catastrophe|>changement|>conflit|>crash|>danger|>décollage|>départ|>désarmement|>déclenchement|>effondrement|>éruption|>fin|>guerre|>lancement|>orage|>ouragan|>péril|>remaniement|>réponse|>résultat|>retour|>séisme|>tempête|>tsunami|>verdict] ?>être¿ >éminente
        <<- /conf/ --1>> =\-1.replace("émi", "immi").replace("Émi", "Immi")
        # Confusion probable. Si “\-1” se rapporte à “\1”, alors vous voulez probablement dire “imminent” ; “éminent” signifie “notable”.|https://fr.wiktionary.org/wiki/%C3%A9minent

................................................................................
TEST: ces conneries donneront {{lieux}} à une enquête approfondie.
TEST: Tout ce qui a {{lieue}} hors de ce pays est ignoré.
TEST: la répression extrêmement violente des diverses manifestations qui ont eu lieu depuis la fin du mois de novembre


# mare / marre
__conf_marre_mare__
    [la|une|cette|quelle|cette|ma|ta|sa] ?petite¿ marre
        <<- /conf/ --1>> mare                                   # Confusion. Pour parler d’une petite étendue d’eau, écrivez “mare”. En “avoir marre de” = “en avoir assez de”.

    en >avoir mare
        <<- /conf/ -3>> marre                                   # Confusion. Une mare est une petite étendue d’eau.

TEST: cette {{marre}} est presque sèche.
TEST: j’en ai {{mare}} de tout ça.
TEST: en avoir vraiment {{mare}} de ces conneries.
................................................................................
TEST: Ils étaient partis au restaurant après avoir {{mi}} à jour son profil.
TEST: elles ont dansé, {{mie}} à jour leur carnet et sont parties.
TEST: après avoir {{mi}} ses souliers tenir


# mûr / mur
__conf_mûr_mur__
    [>amandine|>brioche|>charlotte|>cheesecake|>chausson|clafoutis|>confiture|>crème|>crêpe|>croustade|>croustillante|>crumble|>cueillette|>dessert|>far|>flan|jus|>gelée|>glace|>gourmandise|>lapin|>liqueur|>macaron|>milkshake|>milk-shake|>millefeuille|>mille-feuille|>mousse|>muffin|>pancake|>pavlova|>recette|>récolte|>sauce|>soufflé|>smoothie|>sirop|>tarte|>tartelette|>tiramisu|>yaourt|>yoghourt|coulis|>gâteau|>kilo] [de|aux] [mur+ses]
        <<- /conf/ --1>> mûres                                              # Confusion. Le fruit s’écrit “mûre”.|https://fr.wiktionary.org/wiki/m%C3%BBr

    [trop|assez|abcès|>âge|>avocate|>banane|>blé|>brugnon|corps|>enfant|>esprit|>femme|>figue|>fraise|>fruit|>homme|>melon|>personne|>poire|>pomme|>prune|>papaye|>pêche|>raisin|>tomate] [mur+ses]
    [>être|>sembler|>paraître|>paraitre|>rester]  [mur+ses]
        <<- /conf/ --1>> =\-1.replace("u", "û").replace("U", "Û")           # Confusion. Pour décrire ce qui a atteint la maturité, écrivez “mûr”.|https://fr.wiktionary.org/wiki/m%C3%BBr

    des vertes et des pas [mur+ses]
        <<- /conf/ --1>> mûres                                              # Confusion. Pour décrire ce qui a atteint la maturité, écrivez “mûr”.|https://fr.wiktionary.org/wiki/m%C3%BBr

    [mur+ses] [>délibération|>réflexion]
        <<- /conf/ -1>> =\1.replace("u", "û").replace("U", "Û")             # Confusion. Pour décrire ce qui a atteint la maturité, écrivez “mûr”.|https://fr.wiktionary.org/wiki/m%C3%BBr

TEST: cet avocat trop {{mur}} pour être mangé.
TEST: Un pancake aux {{murs}}.
TEST: Ça semble bien assez {{mur}}.
TEST: elle en a vu des vertes et des pas {{murs}}
TEST: Après de {{murs}} délibérations
................................................................................

# péché / pêcher
__conf_péché_pêcher__
    >pêcher par excès [de|d’]
    >pêcher par [insuffisance|omission|orgueil]
        <<- /conf/ -1>> pécher                                  # Confusion : pêcher (capturer des poissons) ≠ pécher (faire un écart de conduite).|https://fr.wiktionary.org/wiki/p%C3%A9cher

    [>commettre|>pardonner|>confesser|>absoudre|>avouer|>reconnaître|>reconnaitre|>expier|>effacer] @:D [pécher|>pêcher|pêché+ses]
    >repentir de [mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs] [pécher|pêcher+s|pêché+ses]
        <<- /conf/ \1.endswith("s") --1>> péchés                # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C1%A9ch%C1%A9
        <<- /conf/ __else__ --1>> péché                         # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    [pécher|pêcher+s|pêché+ses] [>capitale|mignon|mignons|>mortelle|>originelle|>vénielle]
        <<- /conf/ \1.endswith("s") -1>> péchés                 # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C1%A9ch%C1%A9
        <<- /conf/ __else__ -1>> péché                          # Confusion : un pêcher est un arbre. Pour désigner un écart de conduite, écrivez “péché”.|https://fr.wiktionary.org/wiki/p%C3%A9ch%C3%A9

    >pécher [du|d’|de|des|la|le|l’|les|à|au|aux] [>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle||>moule|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques]
    >pécher [de|à] [la|l’] [>ablette|>oblade|>albacore|>anguille|>baleine|>bar|>barracuda|>blageon|>blennie|>bonite|>bouvière|>brème|>brochet|>bulot|>cabillaud|>cabot|>calamar|>canard|>carassin|>carnassier|>carpe|>chabot|>chevaine|>chevenne|>chevesne|>colin|>congre|>coque|>coquillage|>coquille|>corb|>crabe|>crevette|>crustacé|>dorade|>dauphin|>écrevisse|>éponge|>espadon|>épinoche|>épinochette|>esturgeon|>étrille|>financement|>gardon|>girelle|>gobie|>goujon|>grémille|>grondin|>hareng|>homard|>hotu|>huitre|>huître|>langouste|>langoustine|>leurre|>liche|>loche|>lotte|>marbré|>marsouin|>merlan|>merlu|>mérou|>mollusque|>morue|>mostelle|>mustelle|>mulet|>murène|>omble|>ormeau|>oursin|>pageau|>pagel|>pageot|>palourde|>patelle|>perche|>pétoncle|>moule|>pieuvre|>piranha|>plie|>poisson|>poulpe|>praire|>raie|>rascasse|>requin|>rotengle|>rouget|>sandre|>sardine|>salmonidé|>sar|>saumon|>saupe|>seiche|>silure|>sole|>spirlin|>tanche|>thon|>truite|>turbot|>vairon|>vandoise|>vive|anchois|>barbeau|>bigorneau|black-bass|>couteau|ligne|>maquereau|saint-jacques]
        <<- /conf/ -1>> pêcher                                  # Confusion : pêcher (capturer des poissons) ≠ pécher (faire un écart de conduite).|https://fr.wiktionary.org/wiki/p%C3%A9cher

................................................................................
!!

# (plus haut) processeur de texte : risquer d’être -> risquer être

__ppas_je_tu_verbe_état__
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]                                @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru]                                                                                  @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler] [devenu+e|redevenu+e|resté+e|demeuré+e]                                                  @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿
        || [>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]
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                                        @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿
        || [>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]
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                                     @:[NA].*:p¬:[GWYsi]
    [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿
        || [>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]
        || avoir [été|semblé|paru]                                                                                                          @:[NA].*:p¬:[GWYsi]
        <<- /ppas/ not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggSing(\-1)                                   # Accord avec le sujet “\1” : “\-1” devrait être au singulier.

TEST: j’étais {{perdus}}                                                          ->> perdu
TEST: j’aurais été {{perdus}} sans toi                                            ->> perdu
................................................................................


!!!! Participes passés: accord en nombre avec la conjugaison de « être » (et équivalent)            !!

__ppas_être_accord_sing__
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])           @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿  (>avoir) [été|semblé|paru]                                                             @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                            @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                                @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                             @:[NA].*:p¬:[GMWYsi]
    (*WORD)      ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                                  @:[NA].*:p¬:[GMWYsi]
        <<- /ppas/ not tag_before(\1, "que") and not morph(\1, ":G") and morph(\2, ":[123]s", ":(?:C|N.*:p)")
        --1>> =suggSing(\-1)                                                                        # Accord avec la forme verbale précédente (être ou équivalent) : “\-1” devrait être au singulier.

    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])           @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿  (>avoir) [été|semblé|paru]                                                             @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                            @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                                @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                             @:[NA].*:p¬:[GMWYsi]
    [<start>|,]  ?qui¿  ?[ne|n’]¿  ?[en|y]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                                  @:[NA].*:p¬:[GMWYsi]
        <<- /ppas/ morph(\1, ":[123]s", ":(?:C|N.*:p)") --1>> =suggSing(\-1)                        # Accord avec la forme verbale précédente (être ou équivalent) : “\-1” devrait être au singulier.

TEST: ces emmerdeurs, qui ne sont toujours pas {{parti}}, ont encore eu une idée pour nous pourrir la vie.
TEST: cette petite chienne avait été longtemps {{malades}}.
................................................................................


!!!! Participes passés: accord en genre avec le substantif précédent                              !!

__ppas_sujet_être_accord_genre__
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                              *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|@:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[me]", ":[GWf]") and morph(\-1, ":A.*:f", ":[GWme]") and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                              *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|@:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[fe]", ":[GWm]") and morph(\-1, ":A.*:m", ":[GWfe]") and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                              *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|@:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|@:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])                   *WORD
................................................................................
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                             *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>

TEST: la danse est {{fini}}…
TEST: Un orage est {{annoncée}}.
................................................................................
TEST: Ma mémoire a aussi été {{effacé}}.
TEST: Les tortures que ce journaliste pense être “normales”.


__ppas_nom_propre_être_accord_genre__
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿  [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]            *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                            *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                          *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                             *WORD
    [<start>|,|@:Cs]  (@:M)  ?qui¿  ?[ne|n’]¿
        || ([>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])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ ((morph(\1, ":M.*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":M.*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":[123]s")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                             *WORD
    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>

TEST: Antoine est {{mariée}}.
TEST: Antoine n’est pas {{mariés}}.